Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Search Results (Searched for: html)

  • Joffm
  • Joffm's Avatar
04 Jun 2025 14:14
Replied by Joffm on topic Text display randomization
If you use the source code editor you see that there is some HTML in the equation.
 
Remove it and it is fine.
Unfortunately you do not see this if in the WYSIWYG editor.

Joffm
  • Joffm
  • Joffm's Avatar
02 Jun 2025 17:40
Danke fürs Verschieben.
Ja, wir sind etwas empfindlich, was die Sprachdisziplin angeht.

Gut, dann will ich einmal ein paar Ideen kreieren.

1. Baue Deinen eigenen Report in der End-Nachricht.
Da kannst Du "aus dem Vollen" schöpfen mit allem, was HTML, css, bootstrap zu bieten hat.
Und die Werte fügst Du mit ExpressionScript und evtl. gewünschten Funktionen ein.
Z.B.
 

2. Leider hast Du die Fragen am Anfang nicht beantwortet.
Daraus hätten wir schließen können, ob Du überhaupt die Möglichkeit hast, die nächste Idee umzusetzen.
Nämlich mit dem Plugin "pdfReport".
Dann kann der Teilnehmer seine Daten als pdf ausdrucken oder Du kannst Sie ihm auch zuschicken.
 


Allerdings könne Plugins nur in der Community-Edition benutzt werden, bzw. in der Cloud-Version ab "Business" (und gegen eine kleine Gebühr)
 

Ohne Genaueres zu wissen würde ich zur ersten Lösung greifen.
Zusätzlich kannst Du dort auch einen Button einbauen, mit welchem der Teilnehmer dann ausdrucken kann.
 
Dies geschieht dann mit der gewohnten "Windows" Print-Funktion.
 

So, jetzt ist der Ball wieder bei Dir.

Sag uns etwas genauer, was Du vorhast, und wir sehen weiter.

Bis dann
Joffm
  • squidy
  • squidy's Avatar
29 May 2025 18:02
Replied by squidy on topic Upload modal script - LS 6.x
Does anyone know how to adapt this code to work in version 6.x? 

File Attachment:

File Name: Survey - D...odal.lss
File Size:40 KB

Code:
<script type="text/javascript" data-author="Tony Partner">    
 
    $(document).on('ready pjax:scriptcomplete',function(){
 
       $("#answer{SGQ}SQ001_SQ001").mask("999.999.999-99",{ placeholder:" " });
 
      // Listener on the text input
        $('#answer{SGQ}SQ002_SQ002').on('keyup', function(e) {
            $(this).val($(this).val().toUpperCase());
            checkconditions($(this).attr('value'), $(this).attr('name'), $(this).attr('type'));
        });
      
       $("#answer{SGQ}SQ001_SQ002").val(" ");
       $("#answer{SGQ}SQ001_SQ002").hide();
      
        // Identify the questions
        var qArrayID = '{QID}';
        var qArray = $('#question'+qArrayID);
        var arrayLength = $('tr[id^="javatbd"]', qArray).length;
        var qUploads = qArray.nextAll('.upload-files:lt('+arrayLength+')');
 
        // Add some classes
        qArray.addClass('array-with-uploads-question');
        $(qUploads).addClass('d-none');
 
        // Insert the "Upload" buttons
        $('tr[id^="javatbd"] .answer-item:last-child', qArray).each(function(i) {
            $('*', this).remove();
            $(this).append('<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#upload-'+qArrayID+'-'+(i+1)+'" data-bs-backdrop="static" data-bs-keyboard="false">Anexar comprovante</button>');
        });
 
        // Loop through the upload questions
        $(qUploads).each(function(i) {
            // Create a modal
            $('body').append('<div class="modal fade upload-modal" id="upload-'+qArrayID+'-'+(i+1)+'" tabindex="-1" aria-labelledby="uploadModalLabel'+qArrayID+'-'+(i+1)+'" aria-hidden="true">\
                                <div class="modal-dialog">\
                                    <div class="modal-content">\
                                        <div class="modal-header">\
                                            <h5 class="modal-title" id="uploadModalLabel'+qArrayID+'-'+(i+1)+'">'+$('.ls-label-question', this).html()+'</h5>\
                                            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fechar"></button>\
                                        </div>\
                                        <div class="modal-body">\
                                        </div>\
                                        <div class="modal-footer">\
                                            <button type="button" class="btn btn-primary" data-bs-dismiss="modal">OK</button>\
                                        </div>\
                                    </div>\
                                </div>\
                            </div>');
 
            // Move this question into the modal
            $('#upload-'+qArrayID+'-'+(i+1)+' .modal-body').append($(this));
            $(this).removeClass('d-none');
        });
 
        // Interrupt the Previous/Next/Submit function (to put upload questions back in the form)
        $('#limesurvey').on('submit', function(e) {
            $('.upload-modal .upload-files').appendTo($('.group-container:eq(0)')).addClass('d-none');
        });    
    });
</script>
<style data-author="Tony Partner" type="text/css">
.upload-modal .file-upload-modal.in {
        height: max-content;
    }
</style>
  • SabineE
  • SabineE's Avatar
23 May 2025 10:46
Hi,

I want to upgrade from 6.8.2+241203 to the latest version as of 2025-05-23 on our self-hosted instance. I have got a ComfortUpdate key of which I have used three updates which all of them failed.

Before updating, I make all the files writable:

find /var/www/html/limesurvey/ -exec chmod a+w {} +

Running the ComfortUpdate fails with the following message:

touch(): Utime failed: Operation not permitted

According to the output of this command,

find /var/www/html/limesurvey -mmin -3

there are lots of files (345) which have already been updated. Also, the version number which is printed in the admin panel increased to 6.14.0. Now I am afraid if this error tells me that the update was not complete, or can I just ignore it?

Kind regards,
Robert
  • gerism81
  • gerism81's Avatar
22 May 2025 12:46
Replied by gerism81 on topic Some features are not working
Also i have seen other things have disapeared:

Now when I am editing a question, i don't see all the stuf that i had before (changing colors, size...) and now only html code apear.

Text elements: When I am working on an introductory text and I save the progress, a very long code comes out, as if it were an error. The modifications are saved, but I have to reopen the file and go to the text elements screen.

Quick translation: It does not work, I translate different variables and press the "save" button but the modifications are not saved

All this happened to me after the last update.

Thanks
  • Joffm
  • Joffm's Avatar
15 May 2025 21:55 - 15 May 2025 22:02
Hallo,
einmal ganz abgesehen von Deinem "sehr ambitionierten" Ansatz - diese "exakt 24h spätere" Erinnerung ist doch rein akademisch, aber praktisch unsinnig (das schrieb @holch ja schon), hast Du auch durch die Art des Hostings (LimeSurvey Cloud Version 6.13.3) ein kleines - naja, größeres - Problem.
Denn hiermit hast Du weder einen direkten Zugriff auf die Datenbank noch kannst Du Plugins installieren.

Klar, wenn Du ein paar tausend in die Hand nimmst, gibt es sicherlich ein kommerzielles Tool mit diesem Feature. Dasjenige, mit dem ich vor 20 Jahre lange Zeit gearbeitet habe, kostet jetzt wohl an die 5000/Jahr.

Gut, versuchen wir etwas Licht ins Dunkel zu bringen.
1. Die spätere Zusammenführung.
Das bedeutet ja, dass in beiden Datensätzen eines Teilnehmers ein eindeutiges Merkmal vorhanden ist.
Das kann man natürlich in der ersten Umfrage generieren - meist wird man die SAVEDID nehmen.
Dieses muss aber dann im Link zur zweiten Umfrage enthalten sein, damit es auch dort vorhanden ist.
Die manchmal benutzte Lösung, den Teilnehmer selbst einen Code erzeugen zu lassen (Erster Buchstabe Vorname der Mutter + Erster Buchstabe Vorname des Vaters + Hubraum des Autos + Letzter Buchstabe der Heimatstadt + ... +), geht auch; ich bin kein Freund davon.
Gut, zusammenführen können wir also.

Eine andere Möglichkeit wäre auch, dass die Teilnehmer sich registrieren.
Dann kannst Du das Token als Zusammenführungsmerkmal nehmen und hast bereits die Email-Adresse.

2. Einladung 24h nach dem Beenden der ersten Umfrage (es ist doch das Beenden das entscheidende Kriterium - auch wenn der Teilnehmer zwischendurch für einen Tag unterbricht)
a. Meine präferierte Lösung wäre:
Ein kleines php script würde die Datenbank abfragen und an diejenigen, die fällig sind eine neue Einladung schicken mit dem entsprechenden Link und Parameter.
Dieses script würde ich mithilfe eines Cronjobs alle 5 Minuten aufrufen.
Das kannst Du allerdings nicht, da Du keinen Zugriff auf die Datenbank hast.

b. Allerdings kannst Du mithilfe der API
[url] www.limesurvey.org/manual/RemoteControl_2_API [/url]
die benötigte(n) Funktion(en) aufrufen, um die fälligen Teilnehmer herauszufiltern.
[url] api.limesurvey.org/classes/remotecontrol-handle.html [/url]
Dazu schreibst Du wieder ein php script, ruft es mittels Cronjob auf, wie gehabt.

Cronjob-Anbieter gibt es zahlreiche im Internet.

c. Wirklich manuell.
Das ist weniger aufwendig als Du denkst.
Du könntest zum Beispiel den Versand mit dem Add-on "Mail Merge" in Thunderbird durchführen.
[url] herbrand.org/tutorials/e-mail/thunderbir...nderbird-mail-merge/ [/url]
Du musst ja nur ca. alle 10 Minuten in LimeSurvey die Antworten anschauen und die neu hinzugekommenen letzten evtl. mittels Copy/Paste in die für das Mailmerge notwendige Tabelle zu kopieren.
Dann werden diese Teilnehmer wieder eingeladen.
Um in der Antworttabelle gut filtern zu können solltest Du eine eigenes Feld (versteckte Frage vom Typ Gleichung) anlegen, worin der TimeStamp des Beendens gespeichert ist.
Das ist durchaus machbar, wenn man es gut vorbereitet.

3. Die Teilnehmer haben 12h Zeit.
Zeit wozu? Anzufangen oder abzuschließen?
a. Das ist nicht weiter schwierig, wenn Du außer des in (1) beschriebenen Merkmals auch diesen Timestamp mit übergibst.
Dann musst Du nur entweder am Anfang oder am Ende testen, ob weniger als 12 Stunden vergangen sind.
Falls nein: Erstelle eine Quote, um den Teilnehmer rauszuschmeißen.
b. Oder Du benutzt wieder die API.
Hier wäre  die zweite Umfrage geschlossen.
Mit der API legst Du im Moment der Einladung diesen Teilnehmer an - und setzt die zeitliche Gültigkeit für die Beantwortung (valid from - valid to)


Langer Rede kurzer Sinn:
1. Es geht einiges. Allerdings hast Du natürlich die allerungünstigste Umgebung (Cloud, Basic)
Der Ansatz - die erste Einladung irgendwie in den Sozialen Medien hinauszutröten, birgt eben gewaltige Tücken.
Hast Du schon einmal daran gedacht, einen Panel Provider einzuschalten?
Dann liegt der Ball bei ihm. Allerdings hat er auch die Möglichkeiten - er weiß, wann seine Schäfchen den ersten Teil abgeschlossen haben, und kann den Rest sicherlich schnell programmieren.
Klar, kostet wieder.
Ich könnte mich einmal schlau machen, da die verschiedenen Firmen ja auch unterschiedliche Bezahlmodelle haben.

Mehr fällt mir gerade nicht ein.

Joffm

P.S.
Ic sehe gerade, dass holch auch über Antwortraten schrieb.
Gerade ein ganz aktuelles Beispiel.
Ein Dorf hier mit ca. 5000 Einwohnern.
Es gibt seit einem Jahr eine App für das Dorfgeschehen. Über diese sollte befragt werden.
1700 Einwohner haben sie heruntergeladen.
Alle wurden mit Flyern, in der App selbst, im Dorfblättchen, etc.  eingeladen.
Und es haben geantwortet?
146 Completes
60 Abbrüche
Und damit waren wir sehr zufrieden.

 
  • gregory.viel
  • gregory.viel's Avatar
13 May 2025 10:12
Replied by gregory.viel on topic Affichage lors de modifications de texte
Bonjour,

Je vous remercie pour votre réponse.

J'avais déjà effacer le cache à l'aide du bouton mais le problème est toujours présent.
J'ai pu identifier que c'était l'éditeur HTML intégré qui ne fonctionnait pas correctement sur notre installation.
Lorsque je choisi "Source HTML" tout fonctionne bien :
 
Cordialement
  • Joffm
  • Joffm's Avatar
08 May 2025 15:31
Hallo,

Datei sehe ich die Texte:

Ja, das sind aber die Fragentexte.
Ich bin natürlich davon ausgegangen, dass Du die Texte, die man normalerweise als Antwort auf eine Textfrage gibt, meinst. Weshalb solltest Du sonst eine Frage vom Typ "langer Text" nehmen.

Gut, neuerdings geht es also darum, die "Ergebnistexte" mehrerer Einfachfragen darzustellen.
Aber das ist doch kein Problem.
Diese Struktur
 
mit allen T-Fragen als Textanzeige (diese versteckt) Hier kannst Du auch ohne große Probleme HTML-Code einfügen um eben farbig, fett, oder was auch immer anzuzeigen

Um dann eben alle Texte am Ende anzuzeigen, noch einmal eine Textanzeige mit den entsprechenden IFs
 

Gibt dann so etwas
 

Die einfachsten Lösungen sind immer die besten.

Joffm
  • holch
  • holch's Avatar
08 May 2025 15:26
Habe jetzt auch mal meinen Texteditor die LSS durchsuchen lassen und da kamen weder "Darm" noch "sterben" in der LSS vor. Was aber nicht da ist, kann LS auch nicht anzeigen.

Noch ein Punkt den ich witzig fand (und ich bin mir gar nicht so sicher ob das überhaupt funktionieren kann):

Bei der Frage "eqattentionfilter1" findet man das hier:
Code:
<span style="color:#ffffff;">{if(wv_att1!=6,0,1)}</span>

Ich gehe davon aus, dass du hier versuchst zu verstecken, was in der Formel ausgegeben wird. Soweit so gut, das wird funktionieren, solange die Teilnehmer z.B. keinen Dark-Mode aktiviert haben, der den Hintergrund dann eventuell schwarz macht. Aber das grösste Problem, das ich hier sehe (habe das nicht ausprobiert, aber bin mir sicher das das so ist):

In der Equation wird dann in der Datenbank nicht 0 oder 1 abgelet, sondern immer der ganze HTML-Sums mit:

Also entweder:
Code:
<span style="color:#ffffff;">0</span>

oder
Code:
<span style="color:#ffffff;">1</span>

Ich habe zwar nichts gesehen, wo du mit dieser Variable rechnest oder darauf filterst, aber damit kann Limesurvey erstmal später nicht wirklich was anfangen.

Bessere Lösung: Diese Frage über die GUI "immer verstecken". Da es eine Formel/Equation ist, funktioniert sie auch versteckt und es kann später darauf zugegriffen werden.
  • stefanosts
  • stefanosts's Avatar
30 Apr 2025 17:11 - 02 May 2025 11:08
Replied by stefanosts on topic AuthLDAP with Active Directory not working
Hi,

The script I used for testing the ldap connection from the same server limesurvey is installed to the actual LDAP server is this:

Code:
<?php
$ldap_host = "ldap://ldap.server.IP.address";
$ldap_port = 389;
$bind_dn   = "CN=bind_user,OU=User Account,DC=domain,DC=com";
$bind_pwd  = "bind_user_password";
$base_dn   = "ou=actual ou,dc=domain,dc=com";
$username  = "username of actual user on AD";        // sAMAccountName of a real AD user
 
$filter = "(&amp;;(objectClass=user)(sAMAccountName=$username))";
 
$ds = ldap_connect($ldap_host, $ldap_port);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
 
if (!$ds) {
    die("Could not connect to LDAP server");
}
 
echo "Connected to LDAP<br>";
 
if (!ldap_bind($ds, $bind_dn, $bind_pwd)) {
    die("LDAP bind failed<br>");
}
 
echo "Bind successful<br>";
 
$search = ldap_search($ds, $base_dn, $filter);
$entries = ldap_get_entries($ds, $search);
 
if ($entries["count"] == 0) {
    die("User not found in LDAP<br>");
}
 
$user_dn = $entries[0]["dn"];
 
echo "Found user: $user_dn<br>";
 
// Now try binding as the actual user
$user_password = "password_for_test_user"; // AD password
if (@ldap_bind($ds, $user_dn, $user_password)) {
    echo "<strong>LDAP login successful for user $username</strong>";
} else {
    echo "<strong>LDAP login failed for user $username</strong>";
}
?>


Using the above script, both the bind and search as well as the login test worked successfully. 

Activating debug and testing just shows the following, I do not see any LDAP activity in it:

Code:
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM lime_surveys)    1    0.00288    0.00288    0.00288    0.00288
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM lime_plugins)    1    0.00106    0.00106    0.00106    0.00106
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM lime_plugin_settings)    1    0.00100    0.00100    0.00100    0.00100
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM lime_settings_global)    1    0.00098    0.00098    0.00098    0.00098
system.db.CDbCommand.query(SHOW FULL COLUMNS FROM lime_asset_version)    1    0.00094    0.00094    0.00094    0.00094
system.db.CDbCommand.query(SHOW CREATE TABLE lime_surveys)    1    0.00064    0.00064    0.00064    0.00064
system.db.CDbCommand.query(SHOW CREATE TABLE lime_plugins)    1    0.00049    0.00049    0.00049    0.00049
system.db.CDbCommand.query(SELECT * FROM lime_asset_version t WHERE path = :path LIMIT 1. Bound with :path='/var/www/html/limesurvey/application/extensions/yiiwheels/widgets/select2/assets')    1    0.00046    0.00046    0.00046    0.00046
system.db.CDbCommand.query(SELECT t1.message AS message, t2.translation AS translation FROM lime_source_message t1, lime_message t2 WHERE t1.id=t2.id AND t1.category=:category AND t2.language=:language. Bound with :category='', :language='en')    1    0.00045    0.00045    0.00045    0.00045
system.db.CDbCommand.query(SELECT * FROM lime_plugins t WHERE t.active=:yp0 ORDER BY priority DESC. Bound with :yp0=1)    1    0.00045    0.00045    0.00045    0.00045
system.db.CDbCommand.query(SELECT * FROM lime_settings_global t WHERE stg_name=:name LIMIT 1. Bound with :name='DBVersion')    1    0.00044    0.00044    0.00044    0.00044
system.db.CDbCommand.query(SHOW CREATE TABLE lime_asset_version)    1    0.00044    0.00044    0.00044    0.00044
system.db.CDbCommand.query(SHOW CREATE TABLE lime_plugin_settings)    1    0.00042    0.00042    0.00042    0.00042
system.db.CDbCommand.query(SELECT * FROM lime_asset_version t WHERE path = :path LIMIT 1. Bound with :path='/var/www/html/limesurvey/application/extensions/FlashMessage/assets')    1    0.00039    0.00039    0.00039    0.00039
system.db.CDbCommand.query(SELECT * FROM lime_settings_global t)    1    0.00038    0.00038    0.00038    0.00038
system.db.CDbCommand.query(SELECT * FROM lime_asset_version t WHERE path = :path LIMIT 1. Bound with :path='/var/www/html/limesurvey/application/extensions/LimeScript/assets/script.js')    1    0.00037    0.00037    0.00037    0.00037
system.db.CDbCommand.query(SHOW CREATE TABLE lime_settings_global)    1    0.00036    0.00036    0.00036    0.00036
system.db.CDbCommand.query(SELECT * FROM lime_plugin_settings t WHERE t.plugin_id=:yp0 AND t.model IS NULL AND t.model_id IS NULL AND t.key=:yp1. Bound with :yp0='5', :yp1='is_default')    1    0.00033    0.00033    0.00033    0.00033
  • Viniasco
  • Viniasco's Avatar
25 Apr 2025 14:46
Replied by Viniasco on topic Taille de police

Pour fuity (et sans doute vanilla)
Code:
html {
  font-size: 100%;
}
body {
  font-size: 2rem;
}
.form-control{
    font-size: inherit;
}
Celui-ci a fonctionné, merci ! (L'autre peut-être aussi, mais du coup je ne l'ai pas testé).
Par contre, la taille obtenue était plus grande que celle choisie pour les textes des questions. J'ai pensé qu'en mettant un % plus petit ça allait réduire, mais non.
J'ai donc remis la taille par défaut au texte des questions et comme ça tout est dans la même taille.
  • DenisChenu
  • DenisChenu's Avatar
25 Apr 2025 12:57
Replied by DenisChenu on topic Taille de police
Pour fuity (et sans doute vanilla)
Code:
html {
  font-size: 100%;
}
body {
  font-size: 2rem;
}
.form-control{
    font-size: inherit;
}
  • Viniasco
  • Viniasco's Avatar
25 Apr 2025 12:33 - 25 Apr 2025 12:47
Replied by Viniasco on topic Taille de police

Quel modèle ? J'ai testé sur fruity_twentythree : c'est OK.
 
C'est une copie de Fruity.

J'ai donc ça dans custom.css, mais le texte n'a pas changé de taille.

*/
.question-wrapper {font-size: x-large}
html {
  font-size: 500%;
}
.form-control{
font-size: inherit;
}

 

Non, c'est quasi impossible ça.
Tant mieux.
  • Viniasco
  • Viniasco's Avatar
25 Apr 2025 10:14 - 25 Apr 2025 10:18
Replied by Viniasco on topic Taille de police
Merci
Est-ce que ça va aussi doubler les tailles des polices fixées manuellement avec les outils d'édition de texte des questions ?

[Edit]
J'ai testé, mais ça n'a rien changé. J'ai même testé avec ça, mais les tailles sont conservées.

/******************
    User custom CSS
   



    In this file you can add your own custom CSS
    It will be loaded last, so you can override any other property.
    Also, it will never be updated. So if you inheritate a core template and just add here some CSS, you'll still benefit of all the updates
*/
.question-wrapper {font-size: x-large}
html {
  font-size: 500%;
}

  • DenisChenu
  • DenisChenu's Avatar
25 Apr 2025 10:02 - 25 Apr 2025 10:03
Replied by DenisChenu on topic Taille de police
Pour toutes les tailles :

Code:
html {
  font-size: 200%;
}
Dans custom.css de la copie du modèle.
Displaying 16 - 30 out of 4957 results.

Lime-years ahead

Online-surveys for every purse and purpose