[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Addon Entwicklung: Pflichtfelder - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
Cabby
Beiträge: 104
Registriert: 21. Sep 2006, 13:24
Wohnort: Bad Salzuflen
Kontaktdaten: Website

Addon Entwicklung: Pflichtfelder

15. Jan 2013, 12:26

Hallo REDAXO-Gemeinde,

ist es möglich bei der ADDON Erstellung Pflichtfelder zu definieren?

Folgender Hintergrund:

Ich bastel mir einen Eventkalender. Als Grundlage habe ich das Beispiel-Addon "Adressen" verwendet.
Es soll ein Start- und ein Enddatum angegeben werden.

Die Eingabe des Startdatums soll Pflicht sein.
Das Enddatum soll optional sein, es soll sich jedoch das Startdatum eintragen, wenn das Feld leer ist.

Wie gehe ich an die Sache heran?

Ich habe mir schon mal 'rex_form::validate()' angeschaut, finde aber keinen Weg, die Klasse zu nutzen.

Hier mein Skript

Code: Alles auswählen

<?php
$id = rex_request('id', 'int');

// Eintragsliste
if ($func == '') {
$list = new rex_list('SELECT id, start_date, start_time, event_name,event_desc,event_location, status FROM '.$REX['TABLE_PREFIX'].'900_events', 200);
   
$imgHeader = '<a href="'. $list->getUrl(array('func' => 'add')) .'"><img src="media/metainfo_plus.gif" alt="add" title="add" /></a>';
   
// Sortierbare Spaltenkoepfe
$list->setColumnSortable('start_date');
$list->setColumnSortable('event_name');

$list->addColumn(
      $imgHeader, 
      '<img src="media/metainfo.gif" alt="field" title="field" />', 
      0, 
      array(
         '<th class="rex-icon">###VALUE###</th>',
         '<td class="rex-icon">###VALUE###</td>'
      )
   );

   $list->setColumnParams (
      $imgHeader, 
      array('func' => 'edit', 'id' => '###id###')
   );
   
   
   // Beschriftungen für Spaltenköpfe
   $list->setColumnLabel('start_date', 'Startdatum');   
   $list->setColumnLabel('start_time', 'Uhrzeit');
   $list->setColumnLabel('event_name', 'Name');
   $list->setColumnLabel('event_pic', 'Bild');
   $list->setColumnLabel('event_desc', 'Beschreibung');
   $list->setColumnLabel('event_location', 'Location');
   $list->setColumnLabel('status', 'On/Offline');

   
   $list->setColumnLayout (
      'id',
      array(
         '<th class="rex-icon">###VALUE###</th>',
         '<td class="rex-icon">###VALUE###</td>'
      )
   );
   
   $list->setColumnParams('name', array('func' => 'edit', 'id' => '###id###'));
   $list->show();
}

// Formular

elseif ($func == 'edit' || $func == 'add') {

   $form = new rex_form($REX['TABLE_PREFIX'].'900_events',"Events","id=".$id,"post",false);

   // Formularfelder anlegen
   $field = &$form->addTextField('start_date');
   $field->setAttribute('class','date-pick');
   $field->setAttribute('id','start-date');
    $field->setLabel("Startdatum");
    
    $field = &$form->addTextField('start_time');
    $field->setLabel("Uhrzeit");
   $field->setAttribute('size','5');
   
   $field = &$form->addTextField('end_date');
   $field->setAttribute('class','date-pick');
   $field->setAttribute('id','end-date');
    $field->setLabel("Enddatum");
    
    $field = &$form->addTextField('event_name');    
    $field->setLabel("Name der Veranstaltung");
    
    $field = &$form->addMediaField('event_pic');    
    $field->setLabel("Grafik/Bild zur Veranstaltung");

    $field = &$form->addTextAreaField('event_desc');    
    $field->setLabel("Beschreibung");


   $field = &$form->addSelectField('status');
    $field->setLabel("Status");
   $select = &$field->getSelect();
   $select->setSize(1);
   $select->addOption('Online',1);
   $select->addOption('Offline',0);
   $select->setAttribute('style','width: 100px');
   
   // Standardwert: 1
   if ($field->getValue()== "") {
      $field->setValue(1);
   }
   
   // Selectfeld für Veranstaltungsorte
   // Werte werden aus der Locations-Tabelle geholt
   $field = &$form->addSelectField('event_location');
   $field->setLabel("Location");
   $select =& $field->getSelect();
   $select->setSize(1);
    $query = 'SELECT name as label, id FROM '.$REX['TABLE_PREFIX'].'900_locations';
      $select->addSqlOptions($query);
    
   if($func == 'edit') {
      $form->addParam('id', $id);
    }

   $form->show();
}
?>
<love>redaxo</love>
Twitter @tobias_gerlach

Benutzeravatar
rkemmere
Beiträge: 486
Registriert: 6. Feb 2007, 17:47
Kontaktdaten: Website

Re: Addon Entwicklung: Pflichtfelder

15. Jan 2013, 12:47

Ein Eventkalender der zumindest Basisdaten beinhaltet ist das hier

http://webberater.ch/tuned-by-redaxo/rexkalender

Da kannst Du dann auch einfach schauen, wie es mit den Feldern umgesetzt wurde.

Viele Grüße
Ronny

Ingo
Beiträge: 782
Registriert: 24. Jun 2010, 00:34

Re: Addon Entwicklung: Pflichtfelder

16. Jan 2013, 02:38

a) ist die Frage, ob du das Pflichtfeld wirklich brauchst. Wenn kein Datum eingegeben ist, wird eben nix ausgegeben.
b) wenns sein muss, nimm Javascript. Mit jQuery ist das ein Klacks - du fängst den submit Event des Formulares ab und prüfst, ob ein Datum gesetzt ist. Wenn nicht, brichst du den submit ab und blendest ein Hinweisfenster ein, das ein Datum gesetzt werden muss.

Benutzeravatar
Cabby
Beiträge: 104
Registriert: 21. Sep 2006, 13:24
Wohnort: Bad Salzuflen
Kontaktdaten: Website

Re: Addon Entwicklung: Pflichtfelder

16. Jan 2013, 17:54

Vielen Dank für die Antworten.
Ich denke, dass ich den jQuery Ansatz verwende.

Grüße
<love>redaxo</love>
Twitter @tobias_gerlach

Zurück zu „Allgemeines [R4]“