[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Addon Entwicklung: Automatisches Löschen/Offline schalten vo - 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: Automatisches Löschen/Offline schalten vo

14. Jan 2013, 20:35

Hallo liebe REDAXO Gemeinde,

ich versuche mich an der Entwicklung eines Addons und nutze dafür das Beispiel-Addon ADRESSEN (http://www.redaxo.org/de/download/addon ... &cat_id=-1).

Als Test-Objekt habe ich mich an einem Veranstaltungskalender versucht.
Bislang klappt alles super, allerdings komme ich bei einer Sache nicht weiter:

Vergangene Termine sollen automatisch gelöscht werden, bzw. den Status 'offline' bekommen.

Das Script (pages/events.inc.php) sieht folgendermaßen aus:

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();
}
?>
Wo und wie kommt nun die Bedingung hin? Und wie lösche ich 'abgelaufene' Termine?

Ich hoffe ihr könnt mir helfen.

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

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Addon Entwicklung: Automatisches Löschen/Offline schalte

14. Jan 2013, 20:49

Normalerweise stellst du abgelaufene Termin einfach als abgelaufen und laufende oder zukünftige Termine dementsprechend anders dar.

Wichtigstes Merkmal sind hier Start- und Enddatum bzw. Dauer. Du musst nicht extra noch alle Termine mit einem Status versehen.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

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

Re: Addon Entwicklung: Automatisches Löschen/Offline schalte

15. Jan 2013, 09:09

Vielen Dank für die rasche Antwort.
Im Frontend ist es mir klar, dass ich nur Termine anzeigen lasse, die noch ausstehen oder noch laufen.

Aus Usability Gründen fände ich ein automatisches 'offline' im Backend jedoch sinnvoll.
Wie ich die Sache sehe, müsste ich quasi eine if-Abfrage starten, und dann den Status auf 0 setzen, wenn abgelaufen, oder?

An welche Stelle würde ich die Abfrage starten?

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

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Addon Entwicklung: Automatisches Löschen/Offline schalte

15. Jan 2013, 10:13

Hej,

du könntest aber auch im Backend 2 Seiten anlegen. Eine für Archiv und die andere für aktuelle Termine.

vg Thomas

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

Re: Addon Entwicklung: Automatisches Löschen/Offline schalte

15. Jan 2013, 10:58

Hi,

gute Idee. Ist ja sogar noch praktischer :)

Danke!
<love>redaxo</love>
Twitter @tobias_gerlach

Zurück zu „Allgemeines [R4]“