Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 07. Mai 2015 12:17
- antibart
- Server-Pate
- Registriert: 14. Dezember 2010
- Beiträge: 880
formbuilder: Felder in zufälliger Reihenfolge darstellen
Hallo,
ist sowas möglich wie im Titel beschrieben? Dass bestimmte Felder in der Formularausgabe in zufälliger Reihenfolge ausgegeben werden. Also zB die Felder 4-12.
Offline
#2 07. Mai 2015 12:49
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: formbuilder: Felder in zufälliger Reihenfolge darstellen
Wie sieht denn dein Formular-Template aus?
Offline
#3 08. Mai 2015 06:06
- antibart
- Server-Pate
- Registriert: 14. Dezember 2010
- Beiträge: 880
Re: formbuilder: Felder in zufälliger Reihenfolge darstellen
Das Formular besteht aus zwei Seiten. Seite 1 ist nicht betroffen und enthält normale Textfelder. Die betroffenen Felder sind allesamt Kontrollkästchen-Gruppen, betrifft also die numloop-Section in der multiple_parts-Bedingung im Template. Das könnte vielleicht nützlich sein.
[== smarty/html ==]
{* TABLE FORM LAYOUT / Field titles on Top *}
{* next line sets number of columns for things like checkbox groups *}
{assign var="cols" value="3"}
{literal}
<script type="text/javascript">
function fbht(htid)
{
var fbhtc=document.getElementById(htid);
if (fbhtc)
{
if (fbhtc.style.display == 'none')
{
fbhtc.style.display = 'inline';
}
else
{
fbhtc.style.display = 'none';
}
}
}
</script>
{/literal}
{$fb_form_header}
{if $fb_form_done == 1}
{* This first section is for displaying submission errors *}
{if $fb_submission_error}
<div class="error_message">{$fb_submission_error}</div>
{if $fb_show_submission_errors}
<table class="error">
{foreach from=$fb_submission_error_list item=thisErr}
<tr><td>{$thisErr}</td></tr>
{/foreach}
</table>
{/if}
{/if}
{else}
{* this section is for displaying the form *}
{* we start with validation errors *}
{if $fb_form_has_validation_errors}
<div class="error_message">
<ul>
{foreach from=$fb_form_validation_errors item=thisErr}
<li>{$thisErr}</li>
{/foreach}
</ul>
</div>
{/if}
{if $captcha_error}
<div class="error_message">{$captcha_error}</div>
{/if}
{* and now the form itself *}
{$fb_form_start}
<div>{$fb_hidden}</div>
<table{if $css_class != ''} class="{$css_class}"{/if}>
{if $total_pages gt 1}<tr><td colspan="2">{$title_page_x_of_y}</td></tr>{/if}
{foreach from=$fields item=entry}
{if $entry->display == 1 &&
$entry->type != '-Fieldset Start' &&
$entry->type != '-Fieldset End' }
<tr>
{strip}
<td valign="top"
{if $entry->required == 1 || $entry->css_class != ''} class="
{if $entry->required == 1}
required
{/if}
{if $entry->required == 1 && $entry->css_class != ''} {/if}
{if $entry->css_class != ''}
{$entry->css_class}
{/if}
"
{/if}
>
{if $entry->hide_name == 0}
{$entry->name}
{if $entry->required_symbol != ''}
{$entry->required_symbol}
{/if}
{/if}
</td></tr><tr><td align="left" valign="top"{if $entry->css_class != ''} class="{$entry->css_class}"{/if}>
{if $entry->multiple_parts == 1}
<table>
<tr>
{section name=numloop loop=$entry->input}
<td valign="top">{$entry->input[numloop]->input} </td><td valign="top">{$entry->input[numloop]->name}{if $entry->input[numloop]->op} {$entry->input[numloop]->op}{/if}</td></tr><tr>
{if not ($smarty.section.numloop.rownum mod $cols)}
{if not $smarty.section.numloop.last}
{/if}
{/if}
{if $smarty.section.numloop.last}
{math equation = "n - a % n" n=$cols a=$entry->input|@count assign="cells"}
{if $cells ne $cols}
{section name=pad loop=$cells}
<td> </td>
{/section}
{/if}
</tr>
{/if}
{/section}
</table>
{else}
{if $entry->smarty_eval == '1'}{eval var=$entry->input}{else}{$entry->input}{/if}
{/if}
{if $entry->valid == 0} <--- {$entry->error}{/if}
{if $entry->helptext != ''} <a href="javascript:fbht('{$entry->field_helptext_id}')"><img src="modules/FormBuilder/images/info-small.gif" alt="Help" /></a>
<span id="{$entry->field_helptext_id}" style="display:none" class="fbr_helptext">{$entry->helptext}</span>{/if}
</td></tr>
{/strip}
{/if}
{/foreach}
{if $has_captcha == 1}
<tr><td>{$graphic_captcha}</td></tr><tr><td>{$input_captcha}<br />{$title_captcha}</td></tr>
{/if}
<tr><td>{$prev}</td></tr><tr><td>{$submit}</td></tr>
</table>
{$fb_form_end}
{/if}
{$fb_form_footer}
Beitrag geändert von antibart (08. Mai 2015 06:08)
Offline
#4 08. Mai 2015 09:22
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: formbuilder: Felder in zufälliger Reihenfolge darstellen
Du hast eine Variable namens {$fields}.
Das ist ein Array.
Die Reihenfolge der Elemente kannst Du vor der {foreach} Schleife mit {$fields|shuffle} auf eine zufällige Reihenfolge ändern.
Das betrifft aber dann alle Felder.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#5 08. Mai 2015 10:05
- antibart
- Server-Pate
- Registriert: 14. Dezember 2010
- Beiträge: 880
Re: formbuilder: Felder in zufälliger Reihenfolge darstellen
Danke schonmal. Alle Felder wäre nicht so gut.
Offline
#6 08. Mai 2015 13:18
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: formbuilder: Felder in zufälliger Reihenfolge darstellen
Hmm, evtl so?
Zuerst die nicht zu mischenden Elemente manuell im Template aufrufen, diese Elemente dann aus $fields entfernen und dann den Rest shufflen (ungetestet)?
Offline
#7 08. Mai 2015 14:04
- antibart
- Server-Pate
- Registriert: 14. Dezember 2010
- Beiträge: 880
Re: formbuilder: Felder in zufälliger Reihenfolge darstellen
Das klingt doch schonmal gut. Danke.
Offline
Seiten: 1