Index: ipk/source/infos_sportportal/CONTROL/control
===================================================================
--- ipk/source/infos_sportportal/CONTROL/control	(revision 7423)
+++ ipk/source/infos_sportportal/CONTROL/control	(revision 7423)
@@ -0,0 +1,10 @@
+Package: enigma2-plugin-infos-sportportal
+Version: 1.1
+Architecture: sh4
+OE: Sportinfo
+Section: extra
+Priority: optional
+Maintainer: dirtylion
+Homepage: http://www.aaf-digital.info
+Source: dirtylion
+Description: Sportinfo Plugin
Index: ipk/source/infos_sportportal/CONTROL/postinst
===================================================================
--- ipk/source/infos_sportportal/CONTROL/postinst	(revision 7423)
+++ ipk/source/infos_sportportal/CONTROL/postinst	(revision 7423)
@@ -0,0 +1,12 @@
+#!/bin/sh
+TMP=/tmp/.infos
+
+echo "successfully installed"
+echo "syncing disk"
+sync
+if [ `df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1 | wc -l` -eq 1 ]; then
+	SPACE=`df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1`
+	FREE=`expr $SPACE - 100`
+	echo new freespace size $FREE kb
+fi
+exit 0
Index: ipk/source/infos_sportportal/CONTROL/postrm
===================================================================
--- ipk/source/infos_sportportal/CONTROL/postrm	(revision 7423)
+++ ipk/source/infos_sportportal/CONTROL/postrm	(revision 7423)
@@ -0,0 +1,14 @@
+#!/bin/sh
+TMP=/tmp/.infos
+PLUGINDIR=/usr/lib/enigma2/python/Plugins/Extensions/SportPortal
+rm -r $PLUGINDIR > /dev/null 2>&1
+
+echo "successfully removed"
+echo "syncing disk"
+sync
+if [ `df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1 | wc -l` -eq 1 ]; then
+	SPACE=`df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1`
+	FREE=`expr $SPACE - 100`
+	echo new freespace size $FREE kb
+fi
+exit 0
Index: ipk/source/infos_sportportal/CONTROL/preinst
===================================================================
--- ipk/source/infos_sportportal/CONTROL/preinst	(revision 7423)
+++ ipk/source/infos_sportportal/CONTROL/preinst	(revision 7423)
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+TMP=/tmp/.infos
+echo "syncing disk"
+sync
+
+model=`cat /etc/model`
+echo""
+echo "Checking your Boxtype...."
+echo "Some Plugins will not work correctly on your $model!"
+echo ""
+if [ "$model" = "" ]; then
+	echo "Sorry! This Plugin is not available for your $model because it will not work correctly!!!"
+	echo "Aborting installation..."
+	exit 1
+else
+	echo "Boxtype: $model OK"
+fi
+
+if [ `df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1 | wc -l` -eq 1 ]; then
+	SPACE=`df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1`
+	FREE=`expr $SPACE - 100`
+	SIZE=180
+	echo "checking freespace"
+	echo packege size $SIZE kb
+	echo freespace size $FREE kb
+	if  [ "$FREE" -lt "$SIZE" ]; then
+		echo "sorry no freespace left on device"
+		exit 1
+	else
+		echo ok
+	fi
+fi   
+echo "install Sportportal Plugin ..."
+echo "checking OS"
+if  [ `cat /etc/motd | grep AAF | grep M | grep rev | wc -l` -eq 0 ]; then                      
+	echo ---------------------------
+	echo DONT USE this IPK Package!!
+	echo ---
+	echo Only for AAF Image!!
+	echo ---------------------------
+	exit 1
+fi
+exit 0
Index: ipk/source/infos_sportportal/CONTROL/prerm
===================================================================
--- ipk/source/infos_sportportal/CONTROL/prerm	(revision 7423)
+++ ipk/source/infos_sportportal/CONTROL/prerm	(revision 7423)
@@ -0,0 +1,11 @@
+#!/bin/sh
+TMP=/tmp/.infos
+echo "syncing disk"
+sync
+if [ `df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1 | wc -l` -eq 1 ]; then
+	SPACE=`df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1`
+	FREE=`expr $SPACE - 100`
+	echo freespace size $FREE kb
+fi
+echo "removing Sportportal Plugin"
+exit 0
Index: ipk/source/infos_sportportal/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/plugin.py
===================================================================
--- ipk/source/infos_sportportal/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/plugin.py	(revision 7423)
+++ ipk/source/infos_sportportal/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/plugin.py	(revision 7423)
@@ -0,0 +1,223 @@
+# -*- coding: utf-8 -*-
+#alphabetisch sortieren, damit das ganze uebersichtlicher bleibt
+from Components.ActionMap import ActionMap
+from Components.Label import Label
+from Components.MenuList import MenuList
+from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
+from Components.Pixmap import Pixmap
+from Components.Sources.StaticText import StaticText
+from Plugins.Plugin import PluginDescriptor
+from Screens.Screen import Screen
+from Tools.Directories import fileExists
+
+from enigma import eListboxPythonMultiContent, eListbox, gFont, RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_HALIGN_CENTER, loadPNG
+from enigma import getDesktop
+
+import urllib, re
+
+#eigene Liste basierend auf MenuList
+class BuLiTabList(MenuList):
+	def __init__(self, list):
+		MenuList.__init__(self, list, False, eListboxPythonMultiContent)
+		self.l.setFont(0, gFont("Regular", 18))
+		self.l.setItemHeight(20)
+
+#eigener Eintrag fuer eigene Liste
+def BuLiTabListEntry(platz_aktuell, platz_alt, team, spiele, siege, remis, niederlagen, torverhaeltnis, tordifferenz, punkte, logoverein, tendenz):
+	res = [ (platz_aktuell, platz_alt, team, spiele, siege, remis, niederlagen, torverhaeltnis, tordifferenz, punkte, logoverein, tendenz) ]
+	teamlogo = team.replace('ü','ue').replace('ö','oe').replace('ä','ae')
+	logoverein = logoverein.replace('.gif','')
+	png = "/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/logos/%s.png" %(logoverein)
+	png2 = "/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/logos/%s.png" %(tendenz)
+	if fileExists(png):
+		res.append(MultiContentEntryPixmapAlphaTest(pos=(105, 0), size=(20, 20), png=loadPNG(png)))
+		#todo: aligns
+	if fileExists(png2):
+                res.append(MultiContentEntryPixmapAlphaTest(pos=(0, 0), size=(20, 20), png=loadPNG(png2)))
+	res.append(MultiContentEntryText(pos=(16, 0), size=(50, 20), font=0, text=platz_aktuell, flags=RT_HALIGN_CENTER))
+	res.append(MultiContentEntryText(pos=(52, 0), size=(50, 20), font=0, text=platz_alt, flags=RT_HALIGN_CENTER))
+	res.append(MultiContentEntryText(pos=(130, 0), size=(250, 20), font=0, text=team))
+	res.append(MultiContentEntryText(pos=(380, 0), size=(50, 20), font=0, text=spiele, flags=RT_HALIGN_RIGHT))
+	res.append(MultiContentEntryText(pos=(430, 0), size=(50, 20), font=0, text=siege, flags=RT_HALIGN_RIGHT))
+	res.append(MultiContentEntryText(pos=(480, 0), size=(50, 20), font=0, text=remis, flags=RT_HALIGN_RIGHT))
+	res.append(MultiContentEntryText(pos=(530, 0), size=(50, 20), font=0, text=niederlagen, flags=RT_HALIGN_RIGHT))
+	res.append(MultiContentEntryText(pos=(580, 0), size=(70, 20), font=0, text=torverhaeltnis, flags=RT_HALIGN_RIGHT))
+	res.append(MultiContentEntryText(pos=(650, 0), size=(50, 20), font=0, text=tordifferenz, flags=RT_HALIGN_RIGHT))
+	res.append(MultiContentEntryText(pos=(700, 0), size=(50, 20), font=0, text=punkte, flags=RT_HALIGN_RIGHT))
+	return res
+
+#eigene Liste basierend auf MenuList
+class MatchList(MenuList):
+	def __init__(self, list):
+		MenuList.__init__(self, list, False, eListboxPythonMultiContent)
+		self.l.setFont(0, gFont("Regular", 18))
+		self.l.setFont(1, gFont("Regular", 16))
+		self.l.setItemHeight(45)
+
+#eigener Eintrag fuer eigene Liste
+def MatchListEntry(match, resultat, datum, uhrzeit, logo_heim, logo_gast, status):
+	res = [ (match, resultat, datum, uhrzeit, logo_heim, logo_gast, status) ]
+	png = "/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/logos/%s.png" %(logo_heim)
+        png2 = "/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/logos/%s.png" %(logo_gast)
+	live = "/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/live.png"
+        if fileExists(png):
+                res.append(MultiContentEntryPixmapAlphaTest(pos=(105, 0), size=(20, 20), png=loadPNG(png)))
+                #todo: aligns
+        if fileExists(png2):
+                res.append(MultiContentEntryPixmapAlphaTest(pos=(135, 20), size=(20, 20), png=loadPNG(png2)))
+	if status == "yes":
+		res.append(MultiContentEntryPixmapAlphaTest(pos=(165, 10), size=(25, 25), png=loadPNG(live)))
+	res.append(MultiContentEntryText(pos=(0, 0), size=(200, 20), font=1, text=datum, flags=RT_HALIGN_LEFT))
+	res.append(MultiContentEntryText(pos=(0, 20), size=(200, 20), font=1, text=uhrzeit, flags=RT_HALIGN_LEFT))
+	res.append(MultiContentEntryText(pos=(200, 0), size=(550, 20), font=0, text=match, flags=RT_HALIGN_CENTER))
+	res.append(MultiContentEntryText(pos=(200, 20), size=(550, 20), font=0, text=resultat, flags=RT_HALIGN_CENTER))
+	return res
+
+class BuLiTabScreen(Screen):
+	if getDesktop(0).size().width() == 1280:
+		skin = """
+			<screen name="BuLiTabScreen" position="center,center" size="800,450" title="Sport Portal">
+				<ePixmap position="0,0" zPosition="-1" size="710,380" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/SportPortal/logo.png"/>
+				<widget name="menulist" position="10,10" size="750,380" scrollbarMode="showOnDemand" transparent="1"/>
+				<ePixmap name="green" position="10,410" zPosition="4" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
+				<ePixmap name="blue" position="330,410" zPosition="4" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
+				<ePixmap name="red" position="650,410" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
+				<widget source="key_green" render="Label" position="10,410" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;18" backgroundColor="#1f771f" transparent="1" />
+				<widget source="key_blue" render="Label" position="330,410" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;18" backgroundColor="#1f771f" transparent="1" />
+				<widget source="key_red" render="Label" position="650,410" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;18" backgroundColor="#9f1313" transparent="1" />
+			</screen>"""
+			
+	else:
+		skin = """
+			<screen name="BuLiTabScreen" position="center,center" size="720,450" title="Sport Portal">
+				<widget name="menulist" position="10,10" size="710,380" scrollbarMode="showOnDemand" />
+				<ePixmap name="green" position="10,410" zPosition="4" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
+				<ePixmap name="blue" position="290,410" zPosition="4" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
+				<ePixmap name="red" position="570,410" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
+				<widget source="key_green" render="Label" position="10,410" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;18" backgroundColor="#1f771f" transparent="1" />
+				<widget source="key_blue" render="Label" position="290,410" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;18" backgroundColor="#1f771f" transparent="1" />
+				<widget source="key_red" render="Label" position="570,410" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;18" backgroundColor="#9f1313" transparent="1" />
+			</screen>"""
+
+	def __init__(self, session, args=0):
+		Screen.__init__(self, session)
+
+		self["actions"] = ActionMap(["SetupActions", "ColorActions"],
+		{
+			"green":		self.settings,
+			"blue":			self.showMatchDayInNewScreen,
+			"cancel":		self.close,
+		}, -1)
+
+		self.url = "http://fussballdaten.de/bundesliga/"
+		self["key_green"] = StaticText(_("Tabelle"))
+		self["key_blue"] = StaticText(_("Spieltag"))
+		self["key_red"] = StaticText(_("Exit"))
+		self.menulist = []
+		self["menulist"] = BuLiTabList([])
+		self.settings()
+
+	def settings(self, info="ranking"):
+		self.info = info
+		self.menulist = []
+
+		#Daten holen
+		data = urllib.urlopen(self.url).read()
+
+		#Daten auswerten
+		platz = re.findall("<tr.*?<td class=.Platz.*?.>(.*?)</td>", data)
+		lplatz = re.findall("<td class=.VPlatz.>(.*?)</td>", data)
+		logoverein = re.findall("<td class=.Verein.><span class=.Logo.><img alt=.*? src=./bilder/t-vereine/15x15/(.*?)...>", data)
+		verein = re.findall("<td class=.Verein.><span class=.Logo.><img alt=.*?src=.*?></span><a href=.*?>(.*?)</a></td>", data)
+		spiele = re.findall("<td class=.Spiele.>(.*?)</td>", data)
+		siege = re.findall("<td class=.S.>(.*?)</td>", data)
+		unen = re.findall("<td class=.U.>(.*?)</td>", data)
+		nieder = re.findall("<td class=.N.>(.*?)</td>", data)
+		torver = re.findall("<td class=.Torverhaeltnis.>(.*?)</td>", data)
+		diff = re.findall("<td class=.Diff.>(.*?)</td>", data)
+		punkte = re.findall("<td class=.Punkte.>(.*?)</td>", data)
+
+		#Daten an Menuliste uebergeben
+		#besser waere die Laenge auszulesen, da aber im Quelltext mehrere Tabellen drin sind, geht das nicht
+		for i in range(18):
+			ok_platz = platz[i].replace('.','')
+			ok_lplatz = lplatz[i].replace('.','').replace('(','').replace(')','')
+			if ok_platz == ok_lplatz:
+				tendenz = "ok"
+			elif ok_platz < ok_lplatz:
+				tendenz = "up"
+			else:
+				tendenz = "down"
+
+			self.menulist.append(BuLiTabListEntry(platz[i], lplatz[i], verein[i], spiele[i], siege[i], unen[i], nieder[i], torver[i], diff[i], punkte[i], logoverein[i], tendenz))
+	
+		self["menulist"].l.setList(self.menulist)
+
+	def showMatchDayInNewScreen(self):
+		self.session.open(SpieltagScreen)
+
+class SpieltagScreen(Screen):
+	if getDesktop(0).size().width() == 1280:
+		skin = """
+		<screen name="BuLiTabScreen" position="center,center" size="800,450" title="Sport Portal">
+			<widget name="menulist" position="10,10" size="750,405" scrollbarMode="showOnDemand" />
+			<ePixmap name="red" position="650,410" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
+			<widget source="key_red" render="Label" position="650,410" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;18" backgroundColor="#9f1313" transparent="1" />
+		</screen>"""
+			
+	else:
+		skin = """
+		<screen name="BuLiTabScreen" position="center,center" size="720,450" title="Sport Portal">
+			<widget name="menulist" position="10,10" size="710,405" scrollbarMode="showOnDemand" />
+			<ePixmap name="red" position="570,410" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
+			<widget source="key_red" render="Label" position="570,410" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;18" backgroundColor="#9f1313" transparent="1" />
+		</screen>"""
+
+	def __init__(self, session, args=0):
+		Screen.__init__(self, session)
+
+		self["actions"] = ActionMap(["SetupActions", "ColorActions"],
+		{
+			"cancel":		self.close,
+		}, -1)
+
+		self.url = "http://fussballdaten.de/bundesliga/"
+		
+		self["key_red"] = StaticText(_("Back"))
+		self.menulist = []
+		self["menulist"] = MatchList([])
+
+		self.menulist = []
+
+		#Daten holen
+		data = urllib.urlopen(self.url).read()
+
+		#Daten auswerten
+		datum = re.findall("<td class=.Tag.>(.*?)</td>", data)
+		uhrzeit = re.findall("<td class=.Uhrzeit.>(.*?)</td>", data)
+		heim = re.findall("<td class=.Heim.*?><span class=.Logo.><img alt=.*?src=.*?></span><a href=.*?>(.*?)</a></td>", data)
+		gast = re.findall("<td class=.Gast.*?><span class=.Logo.><img alt=.*?src=.*?></span><a href=.*?>(.*?)</a></td>", data)
+		result = re.findall("<td class=.Ergebnis.*?><a href=.*?>(.*?)</a></td>", data)
+		live_info = re.findall('<td class="Kurzinfo(.*?)></td>', data)
+		lheim = re.findall("<td class=.Heim.*?><span class=.Logo.><img alt=.*?src=./bilder/t-vereine/15x15/(.*?).......></span><a href=.*?>.*?</a></td>", data)
+		lgast = re.findall("<td class=.Gast.*?><span class=.Logo.><img alt=.*?src=./bilder/t-vereine/15x15/(.*?).......></span><a href=.*?>.*?</a></td>", data)
+		
+		#Daten an Menuliste uebergeben
+		#besser waere die Laenge auszulesen, da aber im Quelltext mehrere Tabellen drin sind, geht das nicht
+		for i in range(9):
+			match = "%s vs %s" %(heim[i], gast[i])
+			if re.match(".*?live.*?",live_info[i]):
+				self.menulist.append(MatchListEntry(match, result[i].replace('&#8213;',"(-:-)").replace('&#160;'," "), datum[i], uhrzeit[i], lheim[i], lgast[i], "yes"))
+			else:
+				self.menulist.append(MatchListEntry(match, result[i].replace('&#8213;',"(-:-)").replace('&#160;'," "), datum[i], uhrzeit[i], lheim[i], lgast[i], "no"))
+
+		self["menulist"].l.setList(self.menulist)
+
+def main(session, **kwargs):
+	session.open(BuLiTabScreen)
+
+def Plugins(**kwargs):
+	return [
+		PluginDescriptor(name="Sport Portal", description="Bundesliga-Tabelle",where = [PluginDescriptor.WHERE_PLUGINMENU], icon="sport.png",fnc=main),
+		PluginDescriptor(name="Sport Portal", description="Bundesliga-Tabelle", where = [PluginDescriptor.WHERE_EXTENSIONSMENU], fnc=main)
+		]
