Mehrfachauswahl bei SELECT in xform

Alles über die Anwendung und Entwicklung von AddOns.

Mehrfachauswahl bei SELECT in xform

Beitragvon rob_bark » 21. Okt 2010, 12:13

Hallo,

ich wollte dass man in xform Formular mehrere Sprache im "select" Box auswählen kann, z.B. durch drücken und halten von "Strg"-Taste. Dafür habe ich so was in xform ausprobiert:

select|sprachen|Sprachen:|Dänisch=1;Deutsch=2;Englisch=3,Französisch=4;Holländisch=5,Italienisch=6;|||multiple=1

funktioniert aber nicht; ich dachte "multiple" macht das.

Wie realisiere ich so was?
Firmenseite: www.internetcrew.eu
Benutzeravatar
rob_bark
 
Beiträge: 70
Registriert: 17. Feb 2009, 07:55
Wohnort: Berlin Kreuzberg

Beitragvon Xong » 21. Okt 2010, 18:57

Das ist ein Dokufehler. Es muss 1 statt multiple=1 heißen:
Code: Alles auswählen
select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|1
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1560
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Beitragvon rob_bark » 22. Okt 2010, 15:26

Hallo Xong,

stimmt, hattest Du Recht. Jetzt funktioniert, kann man mehrere Optionen gleichzeitig auswählen.
Was wiederum nicht funktioniert ist, wenn ich in xform die vorher gespeichrten Werte aufrufe - mit default - klappt nicht.

xform sieht so aus:
Code: Alles auswählen
select|sprachen|Sprachen:|Dänisch=1;Deutsch=2;Englisch=3,Französisch=4;Holländisch=5,Italienisch=6;||3,4|1


sollte, weil 3 und 4 als Defaultwert, die Sprachen Englisch und Französisch im Select Auswahl als markiert zeigen (also normaleweise mit selected="selected"). Macht aber nicht.
Ich vermute in der Klasse class.xform.select.inc.php stimmt was nicht; dort gibt zwar die Methode
Code: Alles auswählen
$SEL->setSelected()

aber die macht anscheinend nicht richtig. Ich habe schon probiert mit:
class.xform.select.inc.php
Code: Alles auswählen
// ...
if ($this->value == "" && !$send){
         if(isset($this->elements[5])){

            if($multiple){
               foreach(explode(",", $this->elements[5]) as $val3){
                  $SEL->setSelected($val3);
               }
            }
            else{
               $SEL->setSelected($this->elements[5]);
            }
         }
      }
      else{
         if (is_array($this->value)){
            foreach($this->value as $val){
               $SEL->setSelected($val);
            }
         }
         else{
            $SEL->setSelected($this->value);
         }
      }
// ...

Kann jemand helfen?
Firmenseite: www.internetcrew.eu
Benutzeravatar
rob_bark
 
Beiträge: 70
Registriert: 17. Feb 2009, 07:55
Wohnort: Berlin Kreuzberg

Beitragvon ceekay82 » 23. Okt 2010, 20:08

Sorry, hab was falsch gelesen, meine Antwort stimmt nicht, daher habe ich sie gelöscht!
Für mehr Selbstständigkeit an PCs:
Frage + Google = Antwort
ceekay82
 
Beiträge: 15
Registriert: 5. Aug 2008, 11:55

Re:

Beitragvon alli » 23. Nov 2011, 12:19

Xong hat geschrieben:Das ist ein Dokufehler. Es muss 1 statt multiple=1 heißen:
Code: Alles auswählen
select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|1



Hallo zusammen! Ich setze das XForm-Addon im Redaxo 4.2.1 ein und bekomme leider das multiple select-Feld nicht zum Laufen.

Selbst das hier vorgeführte Beispiel:

select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|1


liefert in der E-Mail an den Admin einfach nur "Array". :( Woran könnte es denn liegen? Bitte um Hilfe!
alli
 
Beiträge: 10
Registriert: 10. Mär 2011, 10:55

Re: Mehrfachauswahl bei SELECT in xform

Beitragvon alli » 28. Nov 2011, 16:44

Hallo zusammen!

Hat jemand ne Idee? Oder bin ich im falschen Thema? Gibt es ein Formular-AddOn/Modul für Redaxo 4.2, das Mehrfachauswahl-Felder erlaubt? Ich habe nichts in der Art gefunden. Bitte um Hilfe.
alli
 
Beiträge: 10
Registriert: 10. Mär 2011, 10:55

Re: Mehrfachauswahl bei SELECT in xform

Beitragvon Xong » 28. Nov 2011, 19:56

Hallo alli!
alli hat geschrieben:Hat jemand ne Idee? Oder bin ich im falschen Thema? Gibt es ein Formular-AddOn/Modul für Redaxo 4.2, das Mehrfachauswahl-Felder erlaubt? Ich habe nichts in der Art gefunden. Bitte um Hilfe.

Es kann sein, dass die XForm-Select-Klasse einen Bug hat. Den musst du korrigieren. Wenn du dabei Hilfe brauchst, dann poste einfach deren Code hier.
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1560
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Re: Mehrfachauswahl bei SELECT in xform

Beitragvon alli » 29. Nov 2011, 10:02

Xong hat geschrieben:Es kann sein, dass die XForm-Select-Klasse einen Bug hat. Den musst du korrigieren. Wenn du dabei Hilfe brauchst, dann poste einfach deren Code hier.


Hallo Xong, vielen Dank für die Antwort und das Hilfeangebot! Auf die Redaxo-Community ist immer Verlass!

ich benutze die Standartklassen von xForm, an denen ich keine Änderungen vorgenommen habe. Hier ist die select-classe, ob der Quellcode uns weiterhelfen kann?

Code: Alles auswählen
<?php

class rex_xform_select extends rex_xform_abstract
{

   /*
    * Werte setzen
    */
   function preAction()
   {
      foreach (explode(";", $this->elements[3]) as $v)
      {
         $teile = explode("=", $v);
         $wert = $teile[0];
         if (is_array($teile) && isset ($teile[1]))
         {
            $bezeichnung = $teile[1];
         }else
         {
            $bezeichnung = $teile[0];
         }
         $this->setKey($bezeichnung,$wert);
      }
   }

   function enterObject(&$email_elements,&$sql_elements,&$warning,&$form_output,$send = 0)
   {
   
      $this->label = $this->elements[1];
      $multiple = FALSE;
      if(isset($this->elements[6]) && $this->elements[6]==1)
         $multiple = TRUE;
   
      $SEL = new rex_select();
      $SEL->setId("el_" . $this->id);
      if($multiple)
      {
         $SEL->setName("FORM[" . $this->params["form_name"] . "][el_" . $this->id . "][]");
         $SEL->setSize(5);
         $SEL->setMultiple(1);
         if(!is_array($this->value))
            $this->value = array();
      }else
      {
         $SEL->setName("FORM[" . $this->params["form_name"] . "][el_" . $this->id . "]");
         $SEL->setSize(1);
         $this->value = stripslashes($this->value);   }

      foreach($this->getKeys() as $k => $v)
      {
         $SEL->addOption($v, $k);
      }

      if ($this->value == "" && !$send)
      {
         if (isset($this->elements[5])) $SEL->setSelected($this->elements[5]);
      }else
      {
         if (is_array($this->value))
         {
            foreach($this->value as $val) $SEL->setSelected($val);
         }else
         {
            $SEL->setSelected($this->value);
         }
      }

      $wc = "";
      if (isset($warning["el_" . $this->getId()])) $wc = $warning["el_" . $this->getId()];
      $SEL->setStyle(' class="select ' . $wc . '"');

      $form_output[] = '
         <p class="formselect formlabel-'.$this->label.'">
         <label class="select ' . $wc . '" for="el_' . $this->id . '" >' . $this->elements[2] . '</label>' .
         $SEL->get() . '
         </p>';

      $email_elements[$this->elements[1]] = $this->value;
      if (!isset($this->elements[4]) || $this->elements[4] != "no_db") $sql_elements[$this->elements[1]] = $this->value;

   }
   
   function getDescription()
   {
      return "select -> Beispiel: select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|multiple=1";
   }
}

?>


Leider funktioniert das Beispiel :
select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|1


nicht ... :(
alli
 
Beiträge: 10
Registriert: 10. Mär 2011, 10:55

Re: Mehrfachauswahl bei SELECT in xform

Beitragvon Xong » 29. Nov 2011, 10:18

Hi alli,

das ist aber nicht die aktuelle XForm-Version. Du findest diese unter: https://github.com/dergel/redaxo4_xform

Die Klasse, die du verwendest, ist auf jeden Fall alt. Da ist es schwierig dir richtig zu helfen, da sich die XForm-Versionen untereinander zum Teil erheblich unterscheiden.
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1560
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Re: Mehrfachauswahl bei SELECT in xform

Beitragvon alli » 29. Nov 2011, 10:45

Xong hat geschrieben:Hi alli, das ist aber nicht die aktuelle XForm-Version. Du findest diese unter: https://github.com/dergel/redaxo4_xform.


Hi, Xong! Die neue Version sollte erst ab 4.3 laufen, ich habe aktuell die 4.2 im Einsatz, daher die alte Klasse. Oder kann ich die neue Version doch dazu "überreden" unter 4.2 zu laufen? :oops:
alli
 
Beiträge: 10
Registriert: 10. Mär 2011, 10:55

Re: Mehrfachauswahl bei SELECT in xform

Beitragvon Xong » 29. Nov 2011, 12:11

Hi alli,

ohje, du hast recht. Das würde ich nicht riskieren.

Ich habe hier noch eine alte XForm-Version in der die Select-Klasse so aussieht:
Code: Alles auswählen
<?php

class rex_xform_select extends rex_xform_abstract
{

   /*
    * Werte setzen
    */
   function init()
   {
      foreach (explode(";", $this->elements[3]) as $v)
      {
         $teile = explode("=", $v);
         $wert = $teile[0];
         if (is_array($teile) && isset ($teile[1]))
         {
            $bezeichnung = $teile[1];
         }else
         {
            $bezeichnung = $teile[0];
         }
         $this->setKey($bezeichnung,$wert);
      }
   }

   function enterObject(&$email_elements,&$sql_elements,&$warning,&$form_output,$send = 0)
   {
   
      $multiple = FALSE;
      if(isset($this->elements[6]) && $this->elements[6]==1)
         $multiple = TRUE;
   
      $SEL = new rex_select();
      $SEL->setId("el_" . $this->getId());
      if($multiple)
      {
         $SEL->setName("FORM[" . $this->params["form_name"] . "][el_" . $this->getId() . "][]");
         $SEL->setSize(5);
         $SEL->setMultiple(1);
         if(!is_array($this->getValue()))
            $this->value = array();
      }else
      {
         $SEL->setName("FORM[" . $this->params["form_name"] . "][el_" . $this->getId() . "]");
         $SEL->setSize(1);
         $this->value = stripslashes($this->getValue());   }

      foreach($this->getKeys() as $k => $v)
      {
         $SEL->addOption($v, $k);
      }

      if ($this->getValue() == "" && !$send)
      {
         if (isset($this->elements[5])) $SEL->setSelected($this->elements[5]);
      }else
      {
         if (is_array($this->getValue()))
         {
            foreach($this->value as $val) $SEL->setSelected($val);
         }else
         {
            $SEL->setSelected($this->getValue());
         }
      }

      $wc = "";
      if (isset($warning["el_" . $this->getId()])) $wc = $warning["el_" . $this->getId()];
      $SEL->setStyle(' class="select ' . $wc . '"');

      $form_output[] = '
         <p class="formselect formlabel-'.$this->getName().'">
         <label class="select ' . $wc . '" for="el_' . $this->id . '" >' . $this->elements[2] . '</label>' .
         $SEL->get() . '
         </p>';

      $email_elements[$this->elements[1]] = $this->getValue();
      if (!isset($this->elements[4]) || $this->elements[4] != "no_db") $sql_elements[$this->elements[1]] = $this->getValue();

   }
   
   function getDescription()
   {
      return "select -> Beispiel: select|gender|Geschlecht *|Frau=w;Herr=m|[no_db]|defaultwert|multiple=1";
   }
   
  function getDefinitions()
  {
    return array(
            'type' => 'value',
            'name' => 'select',
            'values' => array(
              array( 'type' => 'name',   'label' => 'Feld' ),
              array( 'type' => 'text',    'label' => 'Bezeichnung'),
              array( 'type' => 'text',     'label' => 'Selektdefinition',   'example' => 'Frau=w;Herr=m'),
              array( 'type' => 'no_db',   'label' => 'Datenbank',          'default' => 1),
              array( 'type' => 'text',    'label' => 'Defaultwert'),
              // array( 'type' => 'boolean', 'label' => 'Mehrfachselektion',  'default' => 0),
            ),
            'description' => 'Ein Selektfeld mit festen Definitionen',
            'dbtype' => 'text'
      );     
     
  }
   
   
}

?>
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1560
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Re: Mehrfachauswahl bei SELECT in xform

Beitragvon alli » 29. Nov 2011, 14:19

Xong hat geschrieben:Hi alli,

ohje, du hast recht. Das würde ich nicht riskieren.

Ich habe hier noch eine alte XForm-Version in der die Select-Klasse so aussieht:


Danke Xong! Soeben die Klasse getestet - leider stolpert Redaxo über diese Stelle
Code: Alles auswählen
<p class="formselect formlabel-'.$this->getName().'">
:evil:

Muss ich wohl mir was anderes einfallen lassen....
alli
 
Beiträge: 10
Registriert: 10. Mär 2011, 10:55


Zurück zu AddOns [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast