Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 08. Mai 2014 12:21

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 265

Re:

Moderator Edit: Fortsetzung von http://forum.cmsmadesimple.de/viewtopic.php?id=2357

Ich gehe hier nochmal ran, weil ich eine Idee habe, wie man zwei Probleme gleichzeitig lösen könnte, nämlich

  • das hier beschriebene, die Werte des Tags <content> aufspalten zu müssen

  • und weitere Weichen einbauen zu müssen, wenn man unterschiedliche Eintragstypen hat, als da wären single Events (1), wiederkehrende Events mit (2a) und ohne Einzeländerung (2b)

Generell besteht bei wiederkehrenden Terminen das Problem, dass keine Angaben zum Veranstaltungsdatum der einzelnen Einträge verfügbar sind, sondern nur, wann der erste Termin mal war.
Allerdings: Innerhalb von <entry> stehen in der full-Ausgabe des Feeds wohlgeordnet weitere Tags des Musters <gd:diesunddas>, siehe folgenden Ausschnitt:

[== XML (Kalenderfeed full, Ausschnitt) ==]
<entry>
		<id>http://www.google.com/calendar/feeds/palimpalimgroup.calendar.google.com/public/full/palimpalim</id>
		<published>2014-02-26T16:10:52.000Z</published>
		<updated>2014-04-02T12:57:22.000Z</updated>
		<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'/>
		<title type='text'>Posaunenchor</title>
		<content type='text'>Posaunenbeschreibung</content>
		<link rel='alternate' type='text/html' href='https://www.google.com/calendar/event?eid=palimpalim' title='alternate'/>
		<link rel='self' type='application/atom+xml' href='https://www.google.com/calendar/feeds/palimpalim40group.calendar.google.com/public/full/palimpalim'/>
		<author>
			<name>palimpalim@gmail.com</name>
			<email>palimpalim@gmail.com</email>
		</author>
		<gd:comments>
			<gd:feedLink href='https://www.google.com/calendar/feeds/palimpalim40group.calendar.google.com/public/full/palimpalim/comments'/>
		</gd:comments>
		<gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'/>
		<gd:where valueString='Pfarrhaus'/>
		<gd:who email='palimpalim@group.calendar.google.com' rel='http://schemas.google.com/g/2005#event.organizer' valueString='Kirchenmusik'/>
		<gd:when endTime='2014-04-30T21:00:00.000+02:00' startTime='2014-04-30T19:45:00.000+02:00'/>
		<gd:transparency value='http://schemas.google.com/g/2005#event.opaque'/>
		<gCal:anyoneCanAddSelf value='false'/>
		<gCal:guestsCanInviteOthers value='true'/>
		<gCal:guestsCanModify value='false'/>
		<gCal:guestsCanSeeGuests value='true'/>
		<gCal:sequence value='0'/>
		<gCal:uid value='palimpalim@google.com'/>
</entry>

Langer Rede kurze Frage: Wie komme ich an die Werte von <gd:where> <gd:when endTime startTime> ran? {$xml|print_r} gibt nix aus.

Beitrag geändert von cyberman (21. Mai 2014 04:27)

Offline

#2 08. Mai 2014 16:54

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

COR9 schrieb:

Langer Rede kurze Frage: Wie komme ich an die Werte von <gd:where> <gd:when endTime startTime> ran? {$xml|print_r} gibt nix aus.

Ähmm, wo kommt den plötzlich $xml her?

Hast du dir schon mal $feeds angeschaut (wenn ich mal von deinem obigen Template ausgehe)?


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#3 08. Mai 2014 18:32

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 265

Re:

{$xml|print_r} gibt mehr aus als {$feeds|print_r}, die gd-Teile ignorieren beide.

Offline

#4 09. Mai 2014 22:04

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

Müsste man mal in die Sourcen schauen, ob es sich an dem ":" verschluckt ... nur fehlt mir momentan die Zeit sad


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#5 09. Mai 2014 10:26

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 265

Re:

cyberman schrieb:

... ob es sich an dem ":" verschluckt ...

So ist es. Hab es mal andersherum getestet und eine geänderte statische XML-Datei ohne Doppelpunkte eingebunden. Und siehe da, die Tags werden ausgegeben und können verwendet werden.
Dieses einfache Template funktioniert mit meinem statischen Testfeed:

[== Smarty ==]
{foreach from=$feeds item='item'}
{assign var="titel" value=$item->title}
{assign var="beschreibung" value=$item->content}
{assign var="ort" value=$item->gdwhere.valueString}
{assign var="beginn" value=$item->gdwhen.startTime|date_format:"%d. %B %Y · %R Uhr"}
<p>Titel: {$titel}<br>
Beschreibung: {$beschreibung}<br>
Wo: {$ort}<br>
Wann: {$beginn}
</p>
{/foreach}

Im eingehenden Feed müsste also z.B. automatisch <gd:where> durch <gdwhere> ersetzt werden. Ich weiß aber leider nicht, in welche Datei man das einbaut oder ob das ein Plugin bewerkstelligen kann.

Offline

#6 09. Mai 2014 10:44

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

Da es ja nicht nur gd:where, sondern alle gd: Werte betrifft, würde ich eher "gd:" pauschal durch "gd" ersetzen. Dieses replace sollte im Normalfall in der action.default.php passieren.


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#7 12. Mai 2014 16:37

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

cyberman schrieb:

Dieses replace sollte im Normalfall in der action.default.php passieren.

Probier mal dies (ungetestet) - Zeile 35 ändern von

    $xml = $feed->getFeed();

in

    $xml = str_replace('gd: ','gd',$feed->getFeed());

1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#8 12. Mai 2014 19:15

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 265

Re:

Gibt leider nur eine 1 aus.

Kann man irgednwie herausfinden, ob die Doppelpunkt-Tags den Ruf überhaupt hören oder gar nicht erst ankommen?

Offline

#9 13. Mai 2014 17:03

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

Das Modul ist möglicherweise nicht optimal für die Ausgabe der gd Daten gerüstet.

Probier mal, ob du mit der folgenden Variablen im Template den gesuchten Wert erhältst:

{$entry->children('http://schemas.google.com/g/2005')->when->attributes()->startTime}

1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#10 14. Mai 2014 15:31

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 265

Re:

Daraufhin meckert die Smartybase und haut einen Fatal error raus:

Fatal error: Call to a member function children() on a non-object in /home/sagichnicht/public_html/lib/smarty/libs/sysplugins/smarty_internal_templatebase.php(151) : eval()'d code on line 50

Allerdings gibt es ein Add-on für den Feed-Parser SimplePie, das genauso agiert, ich habe auch gleich mit dem CMSMS-Modul RSSSimplePie experimentiert, kriege das Add-on dort wg. mangelhafter PHP-Kenntnisse nicht eingebaut.

Link zum Add-on (Scrollen bis zum Example): http://simplepie.org/wiki/reference/sim … item_class

Und der entscheidende Auszug:

[== PHP ==]
// Retrieve the <gd:when startTime="" /> value.
	function get_gcal_starttime($format = false)
	{
		// We want to grab the Google-namespaced <gd:when> tag.
		// http://simplepie.org/wiki/tutorial/grab_custom_tags_or_attributes
		$when = $this->get_item_tags('http://schemas.google.com/g/2005', 'when');
 
		// Once we grab the tag, let's grab the startTime attribute
		$date = $when[0]['attribs']['']['startTime'];
 
		if ($format)
		{
			// Let's pass it through strtotime() and then format it with date(). This will be the date we display.
			return date($format, strtotime($date));
		}
		else
		{
			// Otherwise we'll return it as-is with no modifications.
			return $date;
		}
	}

Und damit bin ich dann leider wieder off beat.

Beitrag geändert von COR9 (14. Mai 2014 15:33)

Offline

#11 15. Mai 2014 16:11

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

Hmm, zu blöd, dass Smarty dazwischen funkt - unter PHP funktioniert es bestens  hmm ...


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#12 20. Mai 2014 14:51

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 265

Re:

Eine Bitte @cyberman:

Da für mich ein wesentlicher Teil eines Projektes daran hängt und so eine Kompletteinbindung eines Google-Kalenders auch von allgemeinem Interesse ist: Bitte trenne doch den Thread bei z.B. #19 ab und gib dem neuen einen Titel wie »Feed mit XMLMadeSimple - Google Data Elemente einbinden« o.ä.

Vielleicht nimmt dann noch jemand an der Diskussion teil.
Vielen Dank.

Offline

#13 21. Mai 2014 04:22

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

Schon geschehen!


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#14 04. Juni 2014 11:04

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 265

Re:

Ich mache jetzt mal hier weiter mit dem Versuch, das Modul GoogleCalendar zu reanimieren.

Vorarbeiten
Auf einem alten System nötige Module installiert mit folgenden Versionen:
Core 1.6.1
CGExtensions 1.15
GoogleCalendar 0.1.1
ZendFramework 1.0.4

GoogleCalendar will daraufhin den korrekten Pfad zum Zend-Framework. Deshalb ZendFramework installiert und dies auskommentiert:

[== GoogleCalendar.module.php(115) ==]
#require_once 'Zend/Loader.php';

Daraufhin wird vom Kalendermodul nur noch die Überschrift und der Hilfe-Link angezeigt. Der Aufruf des Feeds bringt im Frontend einen Fatal error:

Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with message 'Expected response code 200, got 400' in /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata/App.php:286 Stack trace: #0 /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata/App.php(132): Zend_Gdata_App::import('http://www.goog...', Object(Zend_Http_Client), 'Zend_Gdata_Cale...') #1 /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata.php(109): Zend_Gdata_App->getFeed('http://www.goog...', 'Zend_Gdata_Cale...') #2 /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata/Calendar.php(98): Zend_Gdata->getFeed('http://www.goog...', 'Zend_Gdata_Cale...') #3 /home/meineseite/public_html/modules/GoogleCalendar/GoogleCalendar.module.php(130): Zend_Gdata_Calendar->getCalendarEventFeed(Object(Zend_Gdata_Calendar_EventQuery)) #4 /home/meineseite/public_html/modules/GoogleCalendar/action.default.php(22): GoogleCalendar->get_events(Array, '') #5 /home/meineseite/public_html/lib/classes/cl in /home/meineseite/public_html/modules/ZendFramework/library/Zend/Gdata/App.php on line 286


An allen Fehlerstellen steht $uri, also werden entweder meine Queries (z.B. full statt basic) nicht unterstützt oder eine anders strukturierte URL (alte Calendar-API?) wird erwartet oder die korrekte falsch verarbeitet.

Kann mir hier jemand weiterhelfen?

Offline

Fußzeile des Forums

Powered by FluxBB