Hey,
i want to customize the "\src\knockout\templates\question-imagepicker.html" template - but don't want to do that in
the survery library because I want to be able to update the sources again later.
Is there any best practice to do that?
I want to change from this
HTML<script type="text/html" id="survey-question-imagepicker">
<fieldset data-bind="css: question.koCss().root">
<legend data-bind="attr: { 'aria-label': question.locTitle.renderedHtml }"></legend>
<!-- ko foreach: { data: question.visibleChoices, as: 'item', afterRender: question.koAfterRender} -->
<div data-bind="css: question.getItemClass(item)">
<label data-bind="css: question.koCss().label">
<input style="display: none;" data-bind="attr: {type: question.multiSelect ? 'checkbox' : 'radio', name: question.name + '_' + question.id, value: item.value, id: ($index() == 0) ? question.inputId : '', 'aria-required': question.isRequired, 'aria-label': question.locTitle.renderedHtml}, checked: question.koValue, enable: !question.isReadOnly && item.isEnabled, css: question.koCss().itemControl"
/>
<div>
<!-- ko if: question.contentMode === "image" -->
<img data-bind="css: question.koCss().image, attr: { src: $data.imageLink, width: question.imageWidth ? question.imageWidth + 'px' : undefined, height: question.imageHeight ? question.imageHeight + 'px' : undefined }, style: { objectFit: question.imageFit }"/>
<!-- /ko -->
<!-- ko if: question.contentMode === "video" -->
<embed data-bind="css: question.koCss().image, attr: { src: $data.imageLink, width: question.imageWidth ? question.imageWidth + 'px' : undefined, height: question.imageHeight ? question.imageHeight + 'px' : undefined }, style: { objectFit: question.imageFit }"/>
<!-- /ko -->
<!-- ko if: question.showLabel -->
<span data-bind="text: text || value, attr: { title: text || value }, css: question.koCss().itemText"></span>
<!-- /ko -->
</div>
</label>
</div>
<!-- /ko -->
</fieldset>
</script>
to this:
HTML<script type="text/html" id="survey-question-imagepicker">
<fieldset data-bind="css: question.koCss().root">
<legend data-bind="attr: { 'aria-label': question.locTitle.renderedHtml }"></legend>
<!-- ko foreach: { data: question.visibleChoices, as: 'item', afterRender: question.koAfterRender} -->
<div data-bind="css: question.getItemClass(item)">
<label data-bind="css: question.koCss().label">
<input style="display: none;" data-bind="attr: {type: question.multiSelect ? 'checkbox' : 'radio', name: question.name + '_' + question.id, value: item.value, id: ($index() == 0) ? question.inputId : '', 'aria-required': question.isRequired, 'aria-label': question.locTitle.renderedHtml}, checked: question.koValue, enable: !question.isReadOnly && item.isEnabled, css: question.koCss().itemControl"
/>
<div>
<!-- ko if: question.contentMode === "image" -->
<img data-bind="css: question.koCss().image, attr: { src: $data.imageLink, width: question.imageWidth ? question.imageWidth + 'px' : undefined, height: question.imageHeight ? question.imageHeight + 'px' : undefined }, style: { objectFit: question.imageFit }"/>
<!-- /ko -->
<!-- ko if: question.contentMode === "video" -->
<embed data-bind="css: question.koCss().image, attr: { src: $data.imageLink, width: question.imageWidth ? question.imageWidth + 'px' : undefined, height: question.imageHeight ? question.imageHeight + 'px' : undefined }, style: { objectFit: question.imageFit }"/>
<!-- /ko -->
<!-- ko if: question.showLabel -->
<span data-bind="text: text || value, attr: { title: text || value }, css: question.koCss().itemText"></span>
<!-- /ko -->
<!-- ko if: question.showPrice -->
<span data-bind="text: getPriceFormatted(), attr: { title: price}, css: question.koCss().price"></span>
<!-- /ko -->
</div>
</label>
</div>
<!-- /ko -->
</fieldset>
</script>
Maybe you can tell me how can I do that without changing the source files.
Thank you very much!
Patrick