def _choiceItems(self, question=None): """ generates HTML code for showing the choice items. Params: question -- (optional) object of type Question. """ #check if self._questionType not in Question._CHOICE_SUBTYPES: return "" #choice items if isinstance(question, Choice): choiceItemsNb = question.getNbOfChoiceItems() else: choiceItemsNb = self._CHOICEITEMS_NB_MIN #depending on question type... if self._questionType == Question._CHECKBOX: type = "checkbox" elif self._questionType in [Question._SELECT, Question._RADIO]: type = "radio" #images addImg = WUtils.createImg("add", _("add one more choice item")) removeImg = WUtils.createImg("remove", _("remove one choice item")) ############################################################################## #return HTML string when question is a Choice (e.g. Checkbox, Select, Radio).# ############################################################################## html = "%s" #I insert <span> with <input>s for each choice item. for i in range(1, choiceItemsNb+1): #play with choice items itemText = "" isSelected = "" if question!=None and i<=choiceItemsNb: itemText = question.getChoiceItemsKeyAt(i) isSelected = question.getChoiceItemsCorrespondingValue(itemText) if isSelected == True: isSelected = "checked='checked'" else: isSelected = "" #play with html text htmlInsert = """<span id='field_"""+str(i)+"""'> <input type='"""+type+"""' name='selectedChoiceItems' value='"""+str(i)+"""' """+isSelected+"""/> <input name='choiceItem_"""+str(i)+"""' type='text' class='choiceItemText' value=\""""+itemText+"""\"/><br/> %s </span>""" html = html%(htmlInsert) #I finally insert the span containing links for adding/removing a choice item. htmlInsert= """<span id='field_"""+str(choiceItemsNb+1)+"""'> <a href='javascript:addField("""+str(choiceItemsNb+1)+""")' style='padding-left:40px;'> """+addImg+""" </a> <a href='javascript:removeField("""+str(choiceItemsNb)+""")'> """+removeImg+""" </a> </span>""" html = html%(htmlInsert) return html
def _createQuestionImgButton(self, url, questionType, qType): """ Depending on selected questionType it creates changing button or fixed image. This short function is just a shortcut. See WUtils.createChangingImgButton() and WUtils.createImg() for more details... """ imgID = "form_"+qType imgOverID= "form_"+qType+"_" info = _("Insert a question of type ")+qType if questionType==qType: return WUtils.createImg(imgOverID, info) else: return WUtils.createChangingImgButton(url, imgID, imgOverID, info)
def getVars( self ): vars = wcomponents.WTemplated.getVars(self) nbQuestions = self._evaluation.getNbOfQuestions() #actionUrl url = urlHandlers.UHConfModifEvaluationEditPerformChanges.getURL(self._conf, mode=self._mode) ########### #Edit mode# ########### if self._mode == Question._EDIT: url.addParam("questionPos", self._question.getPosition()) if self._question.isRequired(): vars["required"] = 'checked="checked"' else: vars["required"] = "" vars["questionValue"]= self._question.getQuestionValue() vars["keyword"] = self._question.getKeyword() vars["description"] = self._question.getDescription() vars["help"] = self._question.getHelp() vars["position"] = WUtils.createSelect(False, range(1,nbQuestions+1), self._question.getPosition(), name="newPos") vars["saveButtonText"] = _("modify question") vars["choiceItems"] = self._choiceItems(self._question); if self._questionType in Question._BOX_SUBTYPES: defaultAnswer = self._question.getDefaultAnswer() else: #Unused, but : Better to prevent than to heal! defaultAnswer = "" url.addParam("questionPos",self._question.getPosition()) ########## #Add mode# ########## else: url.addParam("type", self._questionType) vars["required"] = "" vars["questionValue"]= "" vars["keyword"] = "" vars["description"] = "" vars["help"] = "" vars["position"] = WUtils.createSelect(False, range(1,nbQuestions+2), nbQuestions+1, name="newPos") vars["saveButtonText"]= _("add question") vars["choiceItems"] = self._choiceItems(); defaultAnswer = "" ####### #Other# ####### #defaultAnswer if self._questionType in Question._BOX_SUBTYPES: vars["defaultAnswer"] = i18nformat("""<tr> <td class="titleCellTD"><span class="titleCellFormat"> _("Default answer")</span></td> <td class="inputCelTD"><input type="text" name="defaultAnswer" value="%s"/></td> </tr>""")%(defaultAnswer) else: vars["defaultAnswer"] = "" #javascript for choiceItems vars["choiceItemsNb"] = self._CHOICEITEMS_NB_MIN vars["javascriptChoiceItemsAddImg"] = WUtils.createImg("add", _("add one more choice item")).replace('"',"'") vars["javascriptChoiceItemsRemoveImg"] = WUtils.createImg("remove", _("remove one choice item")).replace('"',"'") if self._questionType == Question._CHECKBOX: vars["javascriptChoiceItemsType"] = "checkbox" elif self._questionType in [Question._SELECT, Question._RADIO]: vars["javascriptChoiceItemsType"] = "radio" else: vars["javascriptChoiceItemsType"] = "" #error if self._error!="": vars["error"] = "%s<br/><br/><br/>"%(self._error) else: vars["error"] = "" #actionUrl vars["actionUrl"] = url return vars