Creare una proprietà di tipo select con il tag <optgroup> (risolto)

La discussione sul CMS Made Simple in italiano.

Moderator: magallo

Post Reply
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Creare una proprietà di tipo select con il tag <optgroup> (risolto)

Post by protempore »

Ho scorso il forum e mi pare non sia possibile creare in FrontEndUsers una proprietà di tipo select con il tag ...

avrei trovato la maniera per aggirare l'ostacolo, ma sono bloccato dalla mia incapacità di applicare le funzioni di modifica delle variabili Smarty con le Regular Expression... ammesso che la mia idea sia buona... :P

l'idea è questa:

creo la lista delle opzioni della select in questo modo:

Code: Select all

#Europe#=start
Italia
Francia
Germania
...
stop
#Asia#=start
Cina
India
...
stop
in questo modo la variabile "{$control->marker}" genererà un html che conterrà stringhe di questo tipo:

Code: Select all

<option value="start">#Europe#</option><option value="italia">italia</option><option value="stop">stop</option>
la mia idea è di riuscire a sostituire:
'#' con '' con '">'
'stop' con ''

in questa maniera otterrei un output di questo tipo:

Code: Select all

<optgroup label="Europe">
     <option value="Italia">Italia</option>
     <option value="Francia">Francia</option>
     <option value="Germania">Germania</option>
     ...
</optgroup>
<optgroup label="Asia">
     <option value="Cina">Cina</option>
     <option value="India">India</option>
     ...
</optgroup>
dite che è fattibile e, soprattutto, mi dite come fare a ricercare e sostituire le stringhe?

grazie
;)
Last edited by protempore on Thu Jul 24, 2008 2:08 am, edited 1 time in total.
An eye for an eye will make the whole world blind
Mahatma Gandhi (1869-1948)
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Re: Creare una proprietà di tipo select con il tag <optgroup> (risolto)

Post by protempore »

Eureka!!!

ho risolto da me e funzia  :D :D :D

intento la variabile da modificare non era "{$control->marker}" , bensì: "{$control->control}"

per quento riguarda la ricerca e sostituzione non servivano le regular expression, ma semplicemente combinare più volte il modificatore "replace" di Smarty...

quindi la modifica del template di registrazione di SelfRegistration l'ho messo così:

Code: Select all

<!-- Registration 1 template -->
{$title}
{if isset($message) && $message != ''}
  {if isset($error) && $error != ''}
    <p><font color="red">{$message}</font></p>
  {else}
    <p>{$message}</p>
  {/if}
{/if}
{$startform}
{if $controlcount > 0}
  <center>
  <table width="75%">
{foreach from=$controls item=control}
  <tr>
    <td>{$control->hidden}
    {if $control->color != ''}
      <font color="{$control->color}">{$control->prompt}{$control->marker}</font>
    {else}
      {$control->prompt}{$control->marker}
    {/if}
    </td>
    <td>{$control->control|replace:'<option value="start">#':'<optgroup label="'|replace:'#</option>':'">'|replace:'<option value="stop">stop</option>':'</optgroup>'}</td>
  </tr>
{/foreach}
  </table>
  </center>
<br/>
{/if}
{if isset($captcha)}
{$captcha_title}: {$input_captcha}<br />
  {$captcha}<br />
{/if}
 {$hidden}{if isset($hidden2)}{$hidden2}{/if}{$submit}<br/>
{$msg_sendanotheremail} {$link_sendanotheremail}
{$endform}
<!-- Registration 1 template -->
 
{$control->control|replace:'#':'':'">'|replace:'stop':''}
;)
An eye for an eye will make the whole world blind
Mahatma Gandhi (1869-1948)
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Re: Creare una proprietà di tipo select con il tag <optgroup> (risolto)

Post by protempore »

ulteriori modifiche:
{$control->control|replace:'#':'':'">'|replace:'stop':''|replace:'-':'choose...'|replace:'*"':'" selected="selected"'|replace:'*<':'<'}

con queste modifiche è possibile inserire la prima opzione della select "vuota"...

con un "-" posto all'inizio delle opzioni previste...

Code: Select all

-
Mr.
Ms.
si ottiene un codice di questo tipo:

Code: Select all

<select name="m3input_courtesy">
   <option value="">choose...</option>
   <option value="Mr.">Mr.</option>
   <option value="Ms.">Ms.</option>
</select>
mentre, se si vuole rendere preselezionata una delle opzioni impostate, basta mettere un "*" come suffisso dell'opzione...

Code: Select all

Italia
Francia*
Germania
Gran Bretagna
si ottiene un codice di questo tipo:

Code: Select all

<select name="m3input_addresscountry">
    <option value="Italia">Italia</option>
    <option value="Francia" selected="selected">Francia</option>
    <option value="Germania">Germania</option>
    <option value="Gran Bretagna">Gran Bretagna</option>
</select>
An eye for an eye will make the whole world blind
Mahatma Gandhi (1869-1948)
nervino
Power Poster
Power Poster
Posts: 448
Joined: Sun Dec 28, 2008 12:15 pm
Location: Roma, Italy

Re: Creare una proprietà di tipo select con il tag <optgroup

Post by nervino »

A 4 anni di distanza: Grazie!
Post Reply

Return to “Italian - Italiano”