Welcome, Guest
Username: Password: Remember me

TOPIC: Les QIDs changent à chaque nouvel import ?!

Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54828

  • davidge
  • davidge's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 5
  • Karma: 0
Bonjour,

J'ai créé un questionnaire et un template.
J'utilise une feuille de style CSS pour modifier l'apparence et la dispositions de certaines questions, ceci grâce à leurs QID.

Maintenant j'exporte ce questionnaire et son template, pour l'importer sur un autre serveur.

Surprise, tous les QID ont changés, et je dois adapter toute ma feuille CSS.

C'est très gênant, aussi je veux importer 2 fois mon questionnaire, pour conduire 2 enquêtes similaires, j'ai le même problème -> CSS à refaire.

Sauriez-vous s'il existe une autre solution ?

David
The administrator has disabled public write access.

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54835

  • bdizzle
  • bdizzle's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 8
  • Thank you received: 1
  • Karma: 0
J'ai posé une question similaire ici. D'après les noms d'utilisateurs/programmeurs, la plupart sont germanophones ... tu auras sûrement une réponse plus vite en posant ta question en anglais !
The administrator has disabled public write access.
The following user(s) said Thank You: davidge

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54872

  • Nickko
  • Nickko's Avatar
  • NOW ONLINE
  • LimeSurvey Team
  • Posts: 1940
  • Thank you received: 219
  • Karma: 45
Et avec un peu de JS ?
Il doit être possible en déterminant l'identifiant de la 1° question de déterminer ensuite celui des questions que tu modifies.

Limesurvey embarque Jquery, il est possible assez facilement de modifier des styles CSS par son intermédiaire.
Nickko
Ergonome / Usability expert
The administrator has disabled public write access.
The following user(s) said Thank You: davidge

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54875

  • davidge
  • davidge's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 5
  • Karma: 0
D'après la réponse donnée par Mazi ici, cette contrainte est liée à la conception de la base.

Nickko ta solution semble être ingénieuse !
Mais j'aurais du dès le départ à faire comme cà à mon avis. Car j'ai eu beaucoup de mal à adapter le style de mes questions car j'en ai un grand nombre, et c'est parfois assez complexe, comme afficher 3 questions côte-à-côte et le tout doit marcher sous Excel et Firefox. Je suppose qu'il faut tout ré-écrire en JS que je ne connais pas bien :S

David
Last Edit: 3 years 3 months ago by davidge.
The administrator has disabled public write access.

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54876

  • Nickko
  • Nickko's Avatar
  • NOW ONLINE
  • LimeSurvey Team
  • Posts: 1940
  • Thank you received: 219
  • Karma: 45
"Excel et Firefox" on a compris ;-)

Tout réécrire, non pas forcement.
Mon idée serait d'ajouter un attribue style aux balises que tu veux modifier.

Donc plutot que de faire en CSS #taquestion tu fais l'applique en JS avec un "getElementByID("taquestion"). Tu mets ton style CSS tout sur une ligne et tu le place dans la valeur de l'attribut style.
var taquestion document.getElementById("answer23577X141X544") ;
if (document.all) { //Pour IE qui a un comportement différent d'Opera et consort.
  taquestion.style.setAttribute("cssText","color:red;width:200px;");
} else { // Pour les autres navigateur Opera, Konqueror, Safari...
  taquestion.setAttribute("style","color:red;width:200px;");
}

Plus d'info ici www.nanoum.net/blog/9_setAttribute.html
Nickko
Ergonome / Usability expert
The administrator has disabled public write access.

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54900

  • davidge
  • davidge's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 5
  • Karma: 0
J'ai aussi des problèmes avec Excel, mais je préfère ceux de IE :silly:

Rappel, mon questionnaire contient des questions (:woohoo:) dont le style CSS est modifié individuellement par un fichier CSS en utilisant les QID (par ex. "#question233").

Je voudrais pouvoir exporter mon questionnaire et l'importer à nouveau, sans avoir à bidouiller, malgré le changement de tous les QID qui se produit lors d'un import.

Niccko, ta solution est bonne, elle m'a inspiré deux nouvelles possibilités, qui permettraient "d'embarquer" définitivement ces modifications de style, même si on modifie le questionnaire (l'ajout ou la suppression de question aurait un impact, si on utilise une méthode avec incrémentation).

Voici les solutions sur lesquels je travail, malheuresement ma méconnaissance de javascript me bloque un peu :S :

1) Ecrire du code JS dans le texte de la question, on peut, je pense, de cette manière, modifier son apparence, mais aussi modifier l'apparence du père (par ex. un <table>), et aussi d'un autre fils du père (par ex. un "questiontip"), en utilisant je suppose des "this" et des "parentNode", mais ça ne fonctionne pas, syntaxe certainement... je cherche.

2) Toujours dans le texte de la question, insérer une balise
<div id="QS000">texte question</div>
.
Puis, depuis un script JS, on pourrait accéder à "QS000" et de la même manière au père, ou au frère...

Si quelqu'un à déjà fait ceci je suis preneur!
The administrator has disabled public write access.

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54903

  • Nickko
  • Nickko's Avatar
  • NOW ONLINE
  • LimeSurvey Team
  • Posts: 1940
  • Thank you received: 219
  • Karma: 45
Ton sondage est-il visible sur le web.
Si tel est le cas je pourrais jeter un œil à ta syntaxe.

Sinon, tu peux toujours me copier coller ton code JS et je tacherais de me faire une idée. (mais moins efficace car là je ne peux me prononcer que sur la syntaxe).
Nickko
Ergonome / Usability expert
The administrator has disabled public write access.

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54937

  • davidge
  • davidge's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 5
  • Karma: 0
Malheureusement je n'ai pas de serveur public.

J'ai bien avancé sur ma solution n°1 qui consiste à placer du code directement dans le texte de la question. (Préalablement il faut désactiver le fckeditor et le XSS filter).

Grâce à l'exemple de code joint, je suis parvenu à embarquer dans une question, ses modifications de style. Ce qui permet d'exporter le sondage, sans ce soucier des numéros de question QID, et sans avoir à gérer un fichier CSS.

J'ajoute un identifiant dans le texte de la question grâce aux balises "div", ici l'identifiant est "QS001". Puis j'ajoute du code dans les balises "script".

Grâce à cette identifiant, je peux changer la couleur du texte, ou bien le supprimer.

Le plus intéressant est que l'on peut, en remontant dans l'arborescence des objets (.parentNode.parentNode), supprimer toute la question par exemple.

Ce que je n'arrive pas à faire, c'est accéder à un frère, comme le "survey-question-help", il faudrait remonter dans l'arborescence puis redescendre vers une balise "TD", mais comment ? sais pas

:woohoo:
En écrivant ce texte, je viens de trouver la solution, il suffit d'écrire du code dans le champs "aide question", pas le temps de tester ce soir, mais ca doit marcher, mais il serait quand même interessant de pouvoir accéder à un frère.

Excellente soirée
David

<div id="question974" class="text-long">
<table class="question-wrapper">
<tr>
<td class="questiontext">
 
	<span class="asterisk"></span>
	<div id="QS001">Ceciestunequestion</div>
 
	<SCRIPT language="JavaScript">
 
	var taquestion = document.getElementById('QS001')
 
	if (document.all) {  
		// Pour IE
 
 
		// Change la couleur de "Ceciestunequestion"
		// taquestion.style.setAttribute("cssText","color:red;")
 
		// Supprime "Ceciestunequestion"
		// taquestion.style.setAttribute("cssText","display:none;")
 
		// Remonte dans la hiérarchie des objets et supprime toute la question
		taquestion.parentNode.parentNode.style.setAttribute("cssText","display:none;")
 
	} else {  
 
		// Même chose mais pour les autres navigateurs
 
		//taquestion.setAttribute("style","color:red;")
 
		// taquestion.setAttribute("style","display:none;")
 
		taquestion.parentNode.parentNode.parentNode.parentNode.setAttribute("style","display:none;")
	}
 
	alert('Ce script fonctionne')
 
	</SCRIPT>
	<br />
	<span class="questionhelp"></span>
 
 
</td>
</tr>
<tr>
<td class="answer">
	<script type='text/javascript'>
               <!--
               function textLimit(field, maxlen) {
                if (document.getElementById(field).value.length > maxlen)
                document.getElementById(field).value = document.getElementById(field).value.substring(0, maxlen);
                }
               //-->
        </script>
	<textarea class="textarea" name="23661X35X974" id="answer23661X35X974" alt="Answer" rows="5" cols="40" onkeyup="textLimit('answer23661X35X974', 65525); noop_checkconditions(this.value, this.name, this.type)"></textarea>
	<input type='hidden' name='display23661X35X974' id='display974' value='on' />
</td>
</tr>
<tr>
<td class="survey-question-help">
	<img src='http://serveur/limesurvey/images/help.gif' alt='Help' align='left' />Ceciestuneaide
</td>
</tr>
</table>
</div>
Last Edit: 3 years 3 months ago by davidge.
The administrator has disabled public write access.

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #54939

  • Nickko
  • Nickko's Avatar
  • NOW ONLINE
  • LimeSurvey Team
  • Posts: 1940
  • Thank you received: 219
  • Karma: 45
Nickko
Ergonome / Usability expert
The administrator has disabled public write access.

Re: Les QIDs changent à chaque nouvel import ?! 3 years 3 months ago #55013

  • davidge
  • davidge's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 5
  • Karma: 0
En effet, bien vu, je pense que ça devrait fonctionner grâce à ton lien. Je ne vais pas tester car mon problème est résolu en mettant du code au bon endroit.

Merci et à bientôt.
David
The administrator has disabled public write access.
Moderators: Nickko
Time to create page: 0.186 seconds
Donation Image