Auslesen der iPhone Library Persistent ID und Synchronisation mit mehreren Rechnern

[toc]

Vor Kurzem bin ich in die Bedrängnis gekommen, meine iPhone „Library Persistent ID“ wieherherstellen zu müssen, nachdem ich meinen bisher für iTunes genutzten Laptop gewechselt habe, ohne davor ein Backup von iTunes zu machen. Bei der Library Persistent ID handelt es sich um den eindeutigen Schlüssel, der bei der Erstaktivierung jedes iPhones über iTunes erstellt wird und das iPhone an das jeweilige iTunes-Account bindet. Der Schlüssel wird z.B. benötigt um Apps oder Musik synchronisieren zu können. Falls er nicht übereinstimmt, bekommt man die Nachricht, dass iPhone sei schon mit einem anderen Rechner synchronisiert, worauf die Synchronisation abbricht. Sofern man den Rechner, mit dem man das iPhone erstmalig aktiviert hat, noch parat hat, ist die Wiederherstellung der ID kein allzu großes Problem. Schwieriger wird es allerdings, wenn der Rechner wie in meinem Fall nicht mehr verfügbar ist. Mit ein paar kleinen Hilfsmitteln ist allerdings auch das gut machbar. Hier die erforderlichen Schritte[ref]Die Anleitung basiert u.a. auf dem  Forenbeitrag http://modmyi.com/forums/iphone-ipod-touch-sdk-development-discussion/252971-iphone-itunes-library-persistent-id-match-2.html sowie auf den Blogposts http://tarrinho.blog.com/2010/06/16/obtain-library-persistent-id-from-iphone/ und http://www.iclarified.com/entry/index.php?enid=2137.[/ref]:

Installation der benötigten Software

Update 25.11.2011: Mit aktuellen Versionen von iTunes (> 10.4) funktioniert der iPhoneBrowser unter Umständen nicht mehr[ref]Problem ist hier primär eine neue Version der iTunesMobileDevice.dll, wie beispielsweise der Diskussion auf http://code.google.com/p/iphonebrowser/issues/detail?id=196 zu entnehmen ist. Allerdings funktionieren die verschiedenen in diesem Thread beschriebenen Lösungsansätze leider ebenfalls nicht mehr für iOS ab Version 5 bzw. iTunes ab Version 10.5.[/ref]. Sinnvollerweise sollte deshalb direkt der Weg über die Software i-FunBox (s.u.) verwendet werden

iPhoneBrowser (für iTunes < 10.4)

Zur Kommunikation mit dem iPhone wird zunächst der iPhoneBrowser[ref]Auf der Projektseite http://code.google.com/p/iphonebrowser/ steht zwar wörtlich, das Tool sei eine „Windows XP/Vista/Windows 7 GUI for manipulating files on the jailbroken iPhone“, die Software funktioniert allerdings auch einwandfrei mit „normalen“ iPhones ohne Jailbreak.[/ref] benötigt, der bei Google Code als Open Source Tool zur Verfügung steht: http://code.google.com/p/iphonebrowser/downloads/list. Zum Entstehungszeitpunkt dieses Artikels ist Version 1.93 aktuell, die hier direkt heruntergeladen werden kann. Nach dem Download muss der iPhoneBrowser zunächst installiert werden, anschließend sieht das Ganze dann so aus:

[nggtags gallery=iPhoneBrowser+Benutzeroberfläche]

i-FunBox (für iTunes >= 10.4)

Zur Kommunikation mit iPhones bei Verwendung neuerer Firmware- bzw. iTunes-Versionen kann u.a. die Software i-FunBox verwendet werden. Zum Entstehungszeitpunkt dieses Artikels ist Version 1.6.658 aktuell, die auf der Website der Entwickler heruntergeladen werden kann. Nach dem Download muss die i-FunBox zunächst installiert werden, anschließend sieht das Ganze dann so aus:

[nggtags gallery=i-FunBox+Benutzeroberfläche]

Hex-Editor

Zusätzlich ist noch ein Hex-Editor erforderlich. Falls man wie ich nicht zu der Personengruppe gehört, die so etwas standardmäßig zum Arbeiten verwendet, muss man diesen ebenfalls zunächst herunterladen. Schöne Open Source Tools sind mir hier leider nicht bekannt, aber zumindest gibt es mehrere sehr brauchbare Freeware-Hex-Editoren[ref]Einen ganz guten Überblick hierzu liefert die englischsprachige Wikipedia unter http://en.wikipedia.org/wiki/Comparison_of_hex_editors[/ref], darunter u.a. XVI32 und HxD.

[nggtags gallery=XVID32,HxD]

Nachdem man XVID32 nicht extra installieren muss, sondern direkt nach dem Entpacken starten kann, dient er im Folgenden für Screenshots. Prinzipiell sollten die nächsten Schritte aber auch in jedem anderen Hex-Editor nachvollzogen werden können.

Speichern der iTunesPrefs

Nach dem Starten des iPhoneBrowsers bzw. der i-FunBox muss das iPhone mit dem Rechner verbunden werden. Die gesuchte Datei befindet sich unter [root]\iTunes_Control\iTunes\ und heißt „iTunesPrefs“ ohne Dateiendung. Wichtig: Da man als Windows-Benutzer vermutlich dazu neigen würde, aufgrund der dort verfügbaren Auto-Vorschau die Datei „iTunesPrefs.plist“ auszuwählen, bitte hier besonders auf die Auswahl ohne Dateiendung gemäß folgenden Screenshots achten:

[singlepic id=269 w=618 h= float=]

[singlepic id=730 w=618 h= float=]

Die Datei speichern wir uns per Rechtsklick und „Save as …“ an eine Stelle, an der wir sie wiederfinden und öffnen Sie anschließend in XVID32.

Auslesen der Library Persistent ID in XVID32

Bevor die benötigte Zeichenfolge ausgelesen werden kann, sollte zunächst durch Verändern der Fenstergröße die Anzahl der angezeigten Spalten in XVID32 wie im Screenshot auf 20 eingestellt werden, damit die Library ID einfacher identifiziert werden kann.

[singlepic id=270 w=618 h= float=]

In dieser Darstellung zeigt sich die für den nächsten Schritt benötigte und aus acht Hexgruppen bestehende Zeichenfolge am Ende der ersten Zeile (0) und am Anfang der neunten Zeile (A0). Im Screenshot ist die erste Hex-Gruppe der hier vorhandenen (selbstverständlich an dieser Stelle manipulierten bzw. willkürlich erstellt) ID „F87B958BC328E599“ jeweils hervorgehoben. Die Zeichenfolge ist allerdings in „reverse order“, muss also noch gruppenübergreifend umgekehrt werden, d.h. aus „F87B958BC328E599“ wird „99E528C38B957BF8“ und damit die Library Persistent ID.

Anpassen der lokalen iTunes Library Persistent ID

Damit iTunes die Library Persistent ID des iPhones und nicht die bei seiner Neuinstallation erzeugte ID verwendet, muss als nächstes die lokale Library Konfigurationsdatei editiert werden.

iTunes Music Library.xml

Unter Windows befinden sich die gesuchten Dateien im Ordner „Eigene Musik\iTunes“. Zunächst muss aus der Datei „iTunes Music Library.xml“ mit einem einfachen Texteditor der dort im Abschnitt „dict“ zum key „Library Persistent ID“ vorhandene String kopiert bzw. notiert werden:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Major Version</key><integer>1</integer>
 <key>Minor Version</key><integer>1</integer>
 [...]
 <key>Library Persistent ID</key><string>B4032468C9D484</string>

In gezeigten Quelltext wäre der zu kopierende String, welcher der von iTunes automatisch erstellten ID entspricht, „B4032468C9D484“. Anschließend wird dieser String durch die zuvor ausgelesene und umgekehrte alte ID ersetzt, die Datei gespeichert und geschlossen.

Im vorliegenden Beispiel sähe das Endergebnis damit folgendermaßen aus:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Major Version</key><integer>1</integer>
 <key>Minor Version</key><integer>1</integer>
 [...]
 <key>Library Persistent ID</key><string>99E528C38B957BF8</string>

iTunesLibrary.itl

Seit Version 10.X hat Apple die manuelle Anpassung der .itl-Datei gemäß der nachfolgenden Passage durch das Hinzufügen einer zusätzlichen Prüfsumme unmöglich gemacht, d.h. eine Änderung dort wird inzwischen automatisch erkannt. Bei Verwendung einer neueren iTunes-Version funktioniert allerdings ein einfaches Umbenennen und neu erzeugen der Datei, wie unten beschrieben.

Für iTunes-Versionen < 10.0 wird wieder der Hex-Editor benötigt und zwar für die Datei „iTunes Library.itl“ im gleichen Verzeichnis. Nach dem Öffnen ist nur noch ein abschließender Schritt erforderlich und zwar das Ersetzen der alten, bei der Installation erzeugten ID durch die vom iPhone ausgelesene. Hierzu verwendet man in XVID32 am Besten die Ersetzen-Funktion (Strg + R) und fügt im „Find“-Feld den gerade aus der XML-Datei kopierten String B4032468C9D484 sowie im „Replace with“-Feld den zuvor aus dem iPhone ausgelesenen und umgekehrten ID-Wert 99E528C38B957BF8 jeweils als „Hex string“ ein, gefolgt von einem „Replace all“.

In einigen Versionen von XVID32 muss der HEX-String jeweils in Zweiergruppen mit Leerzeichen getrennt eingegeben werden also hier B4 03 24 68 C9 D4 84 bzw. 99 E5 28 C3 8B 95 7B F8.

Nach dem Speichern der Datei sollte iTunes wieder wie gewohne alle Apps und Musik synchronisieren können. Eine genauere und schön bebilderte Beschreibung dieses Schrittes findet sich u.a. im Blog von iClarified unter http://www.iclarified.com/entry/index.php?enid=2137.

Bei Verwendung von neueren iTunes Versionen ( >= 10.0) schafft gemäß der Diskussion auf http://www.corsino.com/blog/?p=153 folgender Umweg Abhilfe: Statt dem Ändern der .itl-Datei wird die alte bzw. ausgelesene und umgekehrte ID nur in der iTunes Music Library.xml geändert. Nachdem die Datei gespeichert und geschlossen ist, wird die iTunes Library.itl an einen anderen Ort verschoben bzw. umbenannt und eine leere Datei mit gleichem Namen erzeugt. Das reine Löschen der Datei erkennt iTunes und setzt die ID auf die ursprüngliche erzeugte Version zurück. Wenn die Datei allerdings noch vorhanden und für iTunes augenscheinlich beschädigt (wie in diesem Fall schlicht leer) ist, wird sie auf Basis der Inhalte der XML-Datei neu erstellt, wodurch auch die dort enthaltene Library ID übernommen wird.

Anschließend kann iTunes gestartet werden, was zu folgendem Hinweis und der gleichzeitigen Neuerzeugung der iTunesLibrary.itl mit geänderter Library Persistent ID führt:

[singlepic id=732 w=381 h= float=]

Synchronisation eines iPhones mit mehreren Rechnern

Auch wenn von Apple sicherlich nicht unbedingt erwünscht, eignet sich der letzte beschriebene Schritt natürlich auch, um ein iPhone mit mehreren Rechnern parallel zu synchronisieren. Hierzu kopiert man die Library Persistent ID einfach statt aus dem iPhone direkt aus der „iTunes Music Library.xml“ eines bereits mit dem iPhone konnektierten Rechners und führt die letztgenannte Ersetzung aus dem Abschnitt „Anpassen der lokalen iTunes Library Persistent ID“ dieses Beitrags auf dem zweiten bzw. noch nicht konnektierten Rechner durch.

Quellenangaben und Fußnoten für NextGEN Gallery

[toc]

NextGen Gallery[ref]Downloaddes Plugins im WordPress-Repository unter http://wordpress.org/extend/plugins/nextgen-gallery/[/ref] ist meiner Meinung nach eine der sinnvollsten und am besten durchdachten Erweiterungen für WordPress. Das Plugin ermöglicht eine galerie- und albumbasierte Verwaltung von Bilder aller Art und darüber hinaus die Zuordnung von Schlagwörtern / Tags zur zusätzlichen (flachen) Strukturierung. Hierdurch wird es möglich, Bilder in Artikeln mithilfe des nggtags-Shortcodes[ref]Dokumentation unter http://nextgen-gallery.com/gallery-tags/.[/ref] dynamisch einzubinden, d.h. statt einer festen Referenz auf eine Auswahl von Bildern wird nur noch festgelegt, welche Schlagwortkombinationen für eine bestimmte Artikelstelle relevant sind. Beispielsweise würden mit folgendem Shortcode alle Bilder als Thumbnails angezeigt, die mit „Auto“ (Groß- und Kleinschreibung egal) verschlagwortet wurden[ref]Achtung: Die Leerzeichen innerhalb der eckigen Klammern müssen nach einem Copy & Paste entfernt werden, damit der Shortcode von WordPress ausgeführt wird.[/ref]

[ nggtags gallery=Auto ]

Das Ganze hat meiner Meinung nach drei entscheidende Vorteile:

  1. Kommen weitere Bilder mit den entsprechenden Tags in irgendeiner Galerie hinzu, werden sie automatisch im Artikel mit angezeigt.
  2. In der Galerie angegebene Metadaten, wie Titel und Beschreibung werden automatisch übernommen und müssen so im Vergleich zur Nutzung der WordPress Mediathek nicht redundant gepflegt werden – v.a. dann nicht, wenn sie sich nachträglich ändern.
  3. Der Tagging-Mechanismus funktioniert galerieübergreifend, d.h. neben der in NextGEN vorhandenen intuitiven Strukturierung in verschiedene Galerien (z.B. zu einem bestimmten Ereignis wie „Doktorandenseminare“ oder einer bestimmten Bilderkategorie wie „WordPress Screenshots“), lassen sich sehr einfach übergreifende Selektionen vornehmen[ref]Beispielsweise würden mithilfe des Shortcodes [ nggtags gallery=Referenzverwaltung ] alle Bilder angezeigt werden, die mit „Referenzverwaltung“ verschalgwortet wurden, sowohl aus der Galerie „Doktorandenseminare“ als auch aus der Galerie „WordPress Screenshots“ (sowie allen ggf. vorhandenen weiteren Galerien).[/ref].

Problem bei externen Bildquellen

Ein „Problem“ mit dem Plugin ergibt sich dann, wenn man Bilder z.B. im wissenschaftlichen Kontext von anderen Quellen referenzieren und dennoch auf den Komfort des Plugins nicht verzichten möchte. Aktuell bietet NextGEN Gallery keine Möglichkeit, Bildquellen oder Ähnliches direkt anzugeben. Natürlich könnte man dafür das Beschreibungsfeld nutzen bzw. zweckentfremden und die entsprechende Quelle einfach als Text dort mit aufnehmen. Für den Fall, dass man die Anzeige der Quelle allerdings gezielter steuern möchte, ist diese Möglichkeit nicht geeignet. Auch widerspräche das Vorgehen klar dem Atomaritätsprinzip bzw. der semantischen Bedeutung des Beschreibungsfeldes. Prinzipiell bietet NextGEN auch hierfür einen eingebauten Mechanismus zur Angabe weiterer Metadaten, allerdings ist dieser in neueren Versionen des Plugins nur sehr umständlich erreichbar und wird v.a. nicht in den Übersichten angezeigt.

Lösungsschritte

Nachdem bis zu einer sinnvoll nutzbaren Lösung zur Quellangabe einige Schritte erforderlich waren, halte ich das hier kurz fest.

1. Zusätzliches Feld zur Quellenangabe bei jedem Bild

Zur Bereitstellung des benötigten Metadatenfeldes im Backend von NextGEN hilft das Plugin NextGEN Custom Fields, mit dem nach erfolgter Installation über den neuen Menüpunkt „NGG Custom Fields“ sehr einfach ein neues  Image Custom Field mit  Bezeichnung „Source“ für Quellenangaben angelegt werden kann. Die Eingabe erfolgt anschließend wie gewohnt über den Punkt „Galerie verwalten“, wie im folgenden Screenshot auf der rechten Seite zu sehen.

[singlepic id=245 w=614 h= float=]

2. Anpassen des Galerie-Templates

Damit das neu erstellte Feld auch in Thumbnail-Übersichten oder bei Einzelbildern im Frontend angezeigt wird, muss es entsprechend eingebunden werden. Mein erster Ansatz war, ein eigenes NextGEN Gallery Template für die Ausgabe zu nutzen, allerdings funktioniert der folgende Shortcode leider nicht, da NextGEN seltsamerweise bei tagbasierten Galerien bisher keine Tamplates unterstützt.

[ nggtags gallery=Auto template=source]

Dieser Missstand ließe sich zwar entsprechend http://wordpress.org/support/topic/plugin-nextgen-gallery-nggtags-caption beseitigen, allerdings müssten hierzu die Funktion nggShowGalleryTags in der nggfunctions.php und die Funktion show_tags in der shortcode.php von NextGEN entsprechend angepasst werden, was logischerweise nicht update-sicher und damit wenig sinnvoll ist. Hier heißt es also abwarten, ob diese durchaus sinnvollen Erweiterungen für nggtags irgendwann durch den Autor Alex Rabe ihren Weg in das Plugin finden, wovon ich fest ausgehe.

Somit blieb nichts anderes, als direkt das gallery.php Template entsprechend anzupassen. Nachdem wir hier im Blog allerdings sowieso ein einheitliches Galerieformat verwenden, ist dem auch nichts entgegenzusetzen – insbesondere da es so (ohne den zusätzlichen template-Parameter im Shortcode) noch einfacher ist, später Galerien in Blogartikeln einzufügen.

Um sicherzustellen, das die Templates nicht bei einem Plugin-Update direkt wieder überschrieben werden, sollten die folgenden Anpassungen ausschließlich (!) in einem zu erstellenden Unterordner „nggallery“ des verwendeten Themes durchgeführt werden:

  1. Kopieren der gallery.php und der singlepic.php aus /wp-content/plugins/nextgen-gallery/view/ nach wp-content/themes/AKTUELLES-THEME/nggallery/.
  2. Einfügen von $image->ngg_custom_fields[„Source“] an der gewünschten Stelle, z.B. hinter echo $image->caption.

Problem hierbei ist, dass die Quellangaben (zumindest in unserem Fall) meist URLs sind, die i.d.R. eine Länge haben, durch welche die schön gefloateten Thumbnail-Übersichten unruhig würden oder falscch umbrechen, sicher aber schlecht lesbar wären (s. Screenshot):

[singlepic id=246 w=614 h= float=]

3. Fußnoten für Quellenangaben

Da wir hier im Blog ein Plugin zur Erzeugung von Fußnoten für zusätzliche Anmerkungen oder wissenschaftliche Quellenangaben verwenden, war es naheliegend, dieses Plugin auch für die Galeriebilder zu nutzen. In unserem Fall handelt es sich um das Plugin Simple Footnotes, das sich durch eine sehr einfache Handhabung sowie Multisite- und WP 3.1-Kompatibilität auszeichnet. Im Prinzip sollten die folgenden Schritte aber auch auf andere Plugins übertragbar sein.

Statt der Einbindung der Quellangabe direkt in der Caption, muss hierzu das Source-Field von oben lediglich mit der entsprechenden Shortcode-Funktion das Simple Footnotes Plugins „gewrappt“ werden. Da das Gallery-Template das Plugin allerdings nicht kennt, ist es erforderlich, zunächst eine entsprechende lokale Instanz zu erzeugen:

n
$footnotes->shortcode('', "Bildquelle: " . imagesourcelink($image->ngg_custom_fields["Source"]) . "."));

Damit die Fußnoten nur dann erzeugt werden, wenn auch tatsächlich eine Quellenangabe vorhanden ist, sollte zusätzlich noch folgende Abfrage integriert werden:

if ($image->ngg_custom_fields["Source"]){
	echo ($footnotes->shortcode('', "Bildquelle: " . imagesourcelink($image->ngg_custom_fields["Source"]) . "."));
}

Mit diesem Code wurden die Fußnoten auch erzeugt, allerdings leider für jedes Bild wieder bei 1 beginnend, da bei jedem Aufruf innerhalb der Bilderschleife des Gallery-Templates eine neue Instanz des Footnote-Plugins erstellt wurde. Abhilfe schafft hier das Auslagern der Instanzerzeugung außerhalb der Schleife und verwenden von $footnotes als globale Variable. Wichtig: Ähnlich wie bei einem Singleton[ref]Informatiker mögen mir die unsaubere Verwendung an dieser Stelle verzeihen.[/ref] sollte die globale Plugin-Referenz nur initialisiert werden, sofern sie noch null ist:

global $footnotes;
if (!$footnotes){
	$footnotes = new nacin_footnotes();
}

Resultat sind wie gewünscht in Fußnoten ausgelagerte Quellenangaben der Bildergalerie. Allerdings tritt das Problem doppelter Fußnoten weiterhin auf, sofern auf einer Seite, wie in diesem Beitrag, normale (textbasierte) Fußnoten und Bildergalerien gleichzeitig verwendet werden. Das liegt daran, dass das Plugin Simple Footnotes seinen Content Filter so angelegt hat, dass es sich selbst bzw. besser gesagt eine Instanz von sich selbst dem Filter übergibt:

add_filter( 'the_content', array( &$this, 'the_content' ), 12 );

Durch den WordPress-Filter-Registrierumgsmechanismus[ref] Siehe dazu auch Diskussion auf http://stackoverflow.com/questions/1524925/howto-use-the-has-filter-wordpress-function-with-an-object-based-callback.[/ref] wird bei jeder neuen Instanz von nacin_footnotes() auch jeweils ein entsprechender Content-Filter eingehängt, was a) inperformant ist und b) dazu führt, dass der Fußnotenblock in seiner Gesamtheit mehrfach am Ende eines Posts angezeigt werden kann. Leider habe ich für dieses Problem keine Optimallösung parat, so dass nur die Anpassung des der Datei simple-footnotes.php des Plugins bleibt. Hier muss ganz am Ende der Datei folgende Änderung durchgeführt werden:

//new nacin_footnotes();
global $footnotes;
$footnotes = new nacin_footnotes();

Hierdurch wird sichergestellt, dass das Plugin nur einmal erzeugt wird, egal ob direkt oder über das Gallery-Template. Zusätzlich ist es ggf. noch erforderlich, die folgende Änderung an der shortcode-Funktion des Plugins vorzunehmen. Hierdurch wird sichergestellt, dass die Fußnoten immer korrekt durchgezählt werden und bei 1 beginnen:

//FO we have to check if the footnote text is already present, otherwise the gallery plugin mechanism will not work (don't know why)
/*
if ( ! isset( $this->footnotes[$id] ) )
	$this->footnotes[$id] = array( 0 => false );
$this->footnotes[$id][] = $content;
$note = count( $this->footnotes[$id] ) - 1;
*/
if (!in_array($content,$this->footnotes[$id])){
	$this->footnotes[$id][] = $content;
	$note = count( $this->footnotes[$id] ) - 1;
}
else{
	$note =  array_search($content,$this->footnotes[$id]);
}

Ersetzt man nun noch den von NextGEN für die Bildunterschriften verwendeten span-Tag im Gallery-Template nun noch durch den von WordPress standardmäßig genutzten p-Tag der Klasse wp-caption-text und fügt dem ngg-gallery-thumbnail-Container die Klasse wp-caption hinzu, erhält man das folgende „fertige“ Gallery-Tempalte:

<?php
/**
Template Page for the gallery overview

Follow variables are useable :

	$gallery     : Contain all about the gallery
	$images      : Contain all images, path, title
	$pagination  : Contain the pagination content

 You can check the content when you insert the tag <?php var_dump($variable) ?>
 If you would like to show the timestamp of the image ,you can use <?php echo $exif['created_timestamp'] ?>
**/

// FO: muss global erzeugt werden, da sonst die Nummerierung für jede Galerie neu beginnt
global $footnotes;
if (!$footnotes){
	$footnotes = new nacin_footnotes();
}
if (!function_exists('imagesourcelink')) {
	function imagesourcelink($text){
		// text starts with http://
		if (strpos($text, "http://") === 0){
			return '<a href="' . $text . '" title="Go to external Source" >' .$text . '</a>';
		}
		else{
			return $text;
		}
	}
}

/*	FO: Da $gallery->ID als Group-ID für jQuery Colorbox / Slimbox nur dann funktioniert,
	wenn echte Gallerien verwendet werden, nicht aber bei nggtags (Tag-basierter Auswahl)
	muss hier noch einmal gesondert mitgezählt werden
*/
global $lightboxgroup;
if (!$lightboxgroup){
	$lightboxgroup = 0;
}

?>
<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>

<div id="<?php echo $gallery->anchor . $lightboxgroup ?>">

<?php if ($gallery->show_slideshow) { ?>
	<!-- Slideshow link -->
	<div>
		<a href="<?php echo $gallery->slideshow_link ?>">
			<?php echo $gallery->slideshow_link_text ?>
		</a>
	</div>
<?php } ?>

<?php if ($gallery->show_piclens) { ?>
	<!-- Piclense link -->
	<div>
		<a href="<?php echo $gallery->piclens_link ?>">
			<?php _e('[View with PicLens]','nggallery'); ?>
		</a>
	</div>
<?php } ?>

	<!-- Thumbnails -->
	<?php foreach ( $images as $image ) : ?>

	<div id="ngg-image-<?php echo $image->pid ?>" <?php echo $image->style ?> >
		<div >
			<a rel="lightbox-<?php echo $lightboxgroup ?>" href="<?php echo $image->imageURL ?>" title="
			<?php
			echo $image->description;
			if ($image->ngg_custom_fields["Source"]){
				echo ', Quelle: ' . $image->ngg_custom_fields["Source"] . ".";
			}
			?>
			" <?php echo $image->thumbcode ?> >
				<?php if ( !$image->hidden ) { ?>
				<img alt="<?php echo $image->description ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
				<?php } ?>
			</a>
			<p-caption-text><?php 

			echo $image->alttext;

			if ($image->ngg_custom_fields["Source"]){
				echo ($footnotes->shortcode('', "Bildquelle: " . imagesourcelink($image->ngg_custom_fields["Source"]) . "."));
			}

			?></p>
		</div>
	</div>
	<?php if ( $image->hidden ) continue; ?>
	<?php if ( $gallery->columns > 0 && ++$i % $gallery->columns == 0 ) { ?>
	<br style="clear: both" />
	<?php }
	endforeach;
	$lightboxgroup++;
	?>

	<!-- Pagination -->
 	<?php echo $pagination ?>

</div>

<?php endif; ?>

Zusätzlich zu den hier beschriebenen Punkten ist in diesem Template von Zeile 32-39 auch eine Zählervariable für Bildergruppen in Lightboxen, wie beispielsweise Slimbox oder Colorbox enthalten, die es auch bei tagbasierten Galerien ermöglicht, Bilder einer Galerie nacheinander durchzuklicken. Außerdem enthält das Template die Funktion imagesourcelink (Zeile 20-30), die im Source-Feld eingetragene URLs in den Fußnoten automatisch verlinkt.

Endergebnis

Das Ergebnis der Bemühungen sieht anschließend wie folgt aus:

[singlepic id=247 w=614 h= float=]

Für den Fall, dass noch kein CSS für die Galerie-Darstellung existiert, sind ggf. noch folgende ergänzenden CSS-Angaben erforderlich, um die Darstellung der Thumbnails gleichmäßig über die Seite zu verteilen. Die Größenangaben basieren hierbei auf einer in NextGEN eingestellten Thumbnail-Größe von 126x100px. Die Pixeldifferenz zu 146px Breite rührt von den CSS-Einstellungen des hier verwendeten Twentyten Child-Themes bzw. den dort vorgegebenen Paddings:

.ngg-gallery-thumbnail{
	width: 146px;
	height: 160px;
	overflow: hidden;
}

Die ggf. erforderlichen Änderungen an der singlepic.php zur Darstellung von Einzelbildern erfolgen analog.

Technik State-of-the-Art: Technische Fortschritte

[toc]

Im Rahmen des EU-Projekts SI-Screen (Social Interaction Screen), an dem wir als einer von zehn Projektpartnern teilnehmen, wird binnen der nächsten drei Jahre ein Gerät entwickelt, das u.a. Älteren einen einfachen Zugang zu sozialen Netzwerken wie z.B. Facebook ermöglicht. Im derzeitigen Stadium untersuchen wir den Markt hinsichtlich relevanter Trends, Konzepte, Technologien und Geräte, die für die Entwicklung eines Prototypen-Konzepts inspirierend sein könnten.

Dieser Teil unserer kleinen Mini-Serie beschäftigt sich mit Bereichen, in deren derzeit große Fortschritte erzielt werden. Insbesondere mit Hinblick auf die 3-jährige Projektlaufzeit könnten die Ergebnisse in diesen Feldern neue Möglichkeiten bei der Konzeptfindung eröffnen.

Die meisten der hier zusammengetragenen Bildern stammen aus entsprechenden Artikeln auf der Internetplattform engadget.com. Des Weiteren wurden Bilder von wired.com, gizmodo.com, it-tech.org, oopsconcept.co.cc und concepte.info übernommen.

Performance

Natürlich ist eine verbesserte Leistungsfähigkeit in allen Bereichen der Technologie zu erwarten. Bei ausreichender Verbesserung der Geschwindigkeit einer Technologie ergibt sich beispielsweise häufig ein vorher undenkbar Echtzeit-Einsatz, was wiederum eine neue Dimension möglicher Anwendungsbereiche eröffnet.
[nggtags gallery=Performance+Technik+Fortschritt]

Displays

[nggtags gallery=Display+Technik+Fortschritt]

Konnektivität

Durch ein gutes Zusammenspiel von verschiedenen Geräten an unterschiedlichen Orten lässt sich eine neuer Grad an Freiheit erzielen.
[nggtags gallery=Konnektivität+Technik+Fortschritt]

Robotik

Fortschritte im Umfeld der Robotik werden in (naher) Zukunft einen ersten produktiven Einsatz zur Unterstützung des Menschen erlauben. Im Rahmen des Projekts birgt eine Erleichterung alltäglicher Aufgaben natürlich ein großes Potential für Ältere.
[nggtags gallery=Robotik+Technik+Fortschritt]

Augmented Reality

Augmented Reality bezeichnet die künstliche Einbettung audiovisueller Inhalte in die reale Welt. Beispielsweise lassen sich in die Echtzeitanzeige des Kamerabilds eines mobilen Geräts Zusatzinformationen einblenden (z.B. zur Routenplanung oder als Stadtführung).
[nggtags gallery=Augmented_Reality+Technik+Fortschritt]

Danksagung

Dieser Beitrag steht im Zusammenhang mit dem Forschungsprojekt SI-Screen, das mit Mitteln des Bundesministeriums für Bildung, und Forschung (Förderkennzeichen 16SV3982), sowie durch das Europäische AAL Joint Programm (AAL-2009-2-088) gefördert wird. Das Vorhaben wird von der innovationsmanufaktur GmbH (ehemals SportKreativWerkstatt GmbH) koordiniert und gemeinsam mit der Universität der Bundeswehr München realisiert. Weiterführende Informationen sind verfügbar unter http://www.si-screen.eu.

Militärische Lagekarte auf dem Microsoft Surface

[toc]

Die „Militärische Lagekarte“ ist eine Anwendung für das Microsoft Surface, die im Sommer 2010 an der Universität der Bundeswehr München in einem Programmierprojekt der Professur für Programmierung kooperativer Systeme an der Fakultät für Informatik entstand. Sie dient in erster Linie dazu, die herkömmlich genutzten Lagekarten in Papierform zu ersetzen und die Vorteile einer mehrbenutzerfähigen digitalen Karte, wie das schnelle Wechseln des dargestellten Kartenausschnitts oder das Zoomen, zu nutzen und gleichzeitig zu einer besseren soziotechnischen Integration beizutragen.

httpvh://www.youtube.com/watch?v=mqG3wuJLyXo

Ein wesentlicher Vorteil liegt in der digitalen Unterstützung der Auswahl zu setzender taktischer Zeichen.

Flexibel nutzbares Kartenmaterial

Im Gegensatz zu papiergebundenen Karten bietet das Surface die Möglichkeit, verschiedene Kartendienste und Detaillierungsgrade je nach angestrebem Einsatzszweck zu nutzen und ggf. zu kombinieren. Auf der Karte eingetragene Zusatzinformationen bleiben beim Wechseln der Karte entsprechend erhalten.

[singlepic id=187 w=618]

Die Interaktionsmöglichkeiten reichen dabei von einfachen Zoom- und Drehaktionen bis hin zum Setzen und Verschieben komplexer taktischer Zeichen.

[nggtags gallery=Militärische_Lagekarte+Karte]

Taktische Zeichen zur Darstellung der Lage

Das Surface ermöglicht durch die große Zahl an zur Verfügung stehenden, intuitiven Touchgesten eine natürliche, leicht zu erlernende und freudvolle Art der Bedienung der digitalen Karte sowie der darauf platzierten taktischen Zeichen. Die taktischen Zeichen repräsentieren jeweils einen Truppenverband, einzelne Fahrzeuge oder Soldaten.

Einen Eindruck davon, wie taktische Zeichen aufgebaut sind und v.a. wie sie zu konkreten Zeicheninstanzen kombiniert werden können, vermittelt nachfolgende Darstellung:

Bezeichnung Taktisches Zeichen
Grundzeichen Beispiel für taktische Zeichen, Grundzeichen
Panzer Beispiel für taktische Zeichen, Modul Panzer
Grenadier Beispiel für taktische Zeichen, Modul Grenadier
Aufklärer Beispiel für taktische Zeichen, Modul Aufklärer
Panzeraufklärer Beispiel für taktische Zeichen, Zeichen für Panzeraufklärer
Panzergrenadier Beispiel für taktische Zeichen, Zeichen für Panzergrenadier

Eine mit taktischen Zeichen versehene Lagekarte könnte beispielsweise folgendermaßen aussehen. Dabei steht die Färbung des Zeichens für den Status des repräsentierten Truppenteils mit den Unterscheidungen, freundlich (blau), feindlich (rot), neutral (gelb) und unbekannt (grau).

[singlepic id=183 w=618]

Setzen taktischer Zeichen

Um schnell durch die Vielzahl von verschiedenen, nach dem oben dargestellten Kombinationsschema modular aufgebauten taktischen Zeichen navigieren zu können, wurde ein kaskadierendes Menü entwickelt. Da es weit über 1.000 verschiedene konkrete taktische Zeichen gibt, zeigt die erste Menüebene jeweils nur die grundlegenden Gattungen an und kaskadiert dann in den folgenden sich automatisch öffnenden Ebenen immer wieder zu konkreteren Instanzen. Hierdurch wird es mit intuitiv verständlichen Mitteln möglich, die ohne ausreichende Übung unüberschaubar große Zahl verfügbarer taktischer Zeichen auf eine kognitiv leicht erfassbare Größenordnung herunterzubrechen.

[singlepic id=180 w=618]

Nichts ist so beständig, wie die Lageänderung – Modifikation von taktischen Zeichen

Durch die Interaktivität des Surface können externe Lageinformationen schnell in die Darstellung auf dem Surface eingebunden werden und von den Nutzern, z.B. den Soldaten in den Führungsstäben der Bundeswehr, zur weiteren Einsatzplanung herangezogen oder zur Planung verschiedener Szenarien modifiziert werden. Auch das Verschieben eines Zeichens auf der Karte kann mit der militärischen Lagekarte auf dem Surface leicht durchgeführt werden, wohingegen ein einmal auf einer Papierkarte eingezeichnetes Zeichen statisch ist und entsprechend nicht mehr modifiziert werden kann.

[singlepic id=185 w=618]

Weitere Interaktionsmöglichkeiten zu taktischen Zeichen

Die folgende Galerie zeigt noch einige weitere Interaktionsmöglichkeiten rund um die Einbindung taktischer Zeichen in die militärische Lagekarte:

[nggtags gallery=Militärische_Lagekarte+taktische_Zeichen]

Hintergrundinformationen zum Projektsetting

Der Prototyp der militärischen Lagekarte auf dem Surface ist das Ergebnis eines Master-Projektes der beiden Wirtschaftsinformatiker Tim Saldik und David Weidt in Kombination mit einem Praktikum der Informatik-Studenten Ronny Vogel, Steffen Schurig und Richard Krug. Im Rahmen des Masterprojekts wurde die Anwendung zunächst konzipiert und anschließend während des Praktikums auf der Basis InfoStrat.VE[ref]Weitere Informationen zur Entwicklung mit InfoStrat.VE sowie der Download des Projekts sind verfügbar unter http://bingmapswpf.codeplex.com/. Andere zum Teil auf Virtual Earth basierende Projekte von InfoStrat für das Microsoft Surface befinden sich unter http://www.infostrat.com/home/solutions/Surface/.[/ref] umgesetzt, das das Kartenmaterial bereitstellte und die Nutzung des Materials auf dem multitouchfähigen Microsoft Surface durch Gestensteuerung ermöglichte. Die Anwendung wurde mittels der agilen Scrum Methode entwickelt, wobei ein Sprint eine Dauer von dreieinhalb Tagen hatte und insgesamt sieben Sprints vorgesehen waren. Den Wirtschaftsinformatikern kam dabei die Rolle der „Product Owner“ zu, während die Informatiker das Scrum-Team bildeten. Als Scrum Master fungierte zusätzlich der Projektbetreuer Florian Ott.

Anwender-Workshop Open Innovation für IT- und Software-Unternehmen am 18. März 2011 im gate in Garching

[toc]

Am 18. März 2011 ist die Forschungsgruppe Kooperationssysteme während des Anwenderworkshops „Open Innovation für IT- und Softwareunternehmen“ u.a. mit einem Vortrag von Herrn Prof. Dr. Michael Koch zum Thema „IdeaMirrors: Soziotechnisch integrierte Benutzerschnittstellen für Innovationsmanagementsysteme“ sowie mit einer Demonstrator-Version der IdeaMirrors vertreten. Die Anmeldung erfolgt auf http://www.gategarching.com/termine/wissenstransfer oder direkt bei anette.keller@gategarching.com.

Innovationsdruck für IT-Unternehmen

Im Vergleich zu Unternehmen anderer Branchen sind Unternehmen im Bereich der Software und IT einem enormen Innovationsdruck ausgeliefert. Denn in kaum einer anderen Branche werden schneller und häufiger neue Innovationen eingeführt. Eine systematische Öffnung von Innovationsprozessen für Einflüsse von außen, kann für die kontinuierliche Entwicklung von Innovationen und den nachhaltigen Unternehmenserfolg wichtige Impulse liefern. Durch eine Integration von Kunden, Geschäfts- und Forschungspartnern in den eigenen Innovationsprozess, können zusätzliche Innovationspotentiale gehoben, Innovationszyklen verkürzt und somit die eigene Innovationskraft nachhaltig verbessert werden. Leider werden diese Möglichkeiten von deutschen Software- und IT-Unternehmen oftmals nur unzureichend genutzt.

Anwenderworkshop Open Innovation

Namhafte Vertreter aus Wissenschaft und Praxis, stellen während des Workshops Methoden und Ansätze vor, wie gemeinsam mit Kunden innovative Ideen generiert und weiterentwickelt werden können. Das Internet, Web 2.0 und neue Technologien wie innovative Benutzerschnittstellen, z. B. der IdeaMirror (großer Touchscreen-Display, der Innovationscommunities in die physische, reale Welt verlangert), ermöglichen dabei auch für Unternehmer kleiner und mittlerer Größe eine effiziente Einbindung von Kunden in den Innovationsprozess.

[nggtags gallery=gate+IdeaMirror+Nutzung]

Zusätzlich haben Sie die Möglichkeit, neuartige, im Rahmen des Forschungsprojektes GENIE (Gemeinschaftsgestützte Innovationsentwicklung für Software-Unternehmen) entwickelte IT-Lösungen, wie z. B. den IdeaMirror oder einen Ideenmarkt zur Community-basierten Ideenbewertung, zur Durchführung von Open Innovation, live zu erproben.

Der IdeaNet Ideenmarkt

[nggtags gallery=gate+IdeaNet]

Screenshots vom IdeaMirror

[nggtags gallery=gate+IdeaMirror+Screenshot]

Agenda

10:00 – 10:30 Uhr Registrierung, Begrüßungs-Kaffee
10:30 – 11:00 Uhr Prof.  Dr. Jan Marco Leimeister: „Gemeinschaftsgestützte Innovationsentwicklung für Software-Unternehmen am Beispiel der SAP AG“
11:00 – 11:30 Uhr Dr. Hagen Habicht: „Open Innovation Maturity: Kompetenzentwicklung für Open Innovation in der IT- und Software-Branche“
11:30 – 12:00 Uhr Alexander Lang: „Open Innovation, wie schaffe ich den Erfolg?“
12:00 – 13:00 Uhr Mittagspause
13:00 – 13:30 Uhr Frank Huefner: „Ideas-Plattformen am Beispiel der Haufe Gruppe Freiburg“
13:30 – 14:00 Uhr Johannes Gebauer: „Open Innovation im Umfeld von IT-Dienstleistungen am Beispiel von Fujitsu-Siemens-Computers“
14:00 – 14:15 Uhr Kaffeepause mit frischem Obst
14:15 – 14:45 Uhr Prof. Dr. Michael Koch: „IdeaMirrors: Soziotechnisch integrierte Benutzerschnittstellen für Innovationsmanagementsysteme“
14:45 – 15:15 Uhr Ivo Blohm: „Community-basierte Ideenbewertung mittels Ideenbörsen und Web 2.0“
15:15 – 15:45 Uhr Diskussions- und Fragerunde

Für Ihre Unterlagen finden Sie hier eine PDF-Version des Programms zum Anwenderworkshop Open Innovation März 2011.

Ihr Nutzen

  • Profitieren Sie von den neuesten Forschungsergebnissen aus dem Bereich Open Innovation
  • Lernen Sie direkt von erfolgreichen Open Innovation Anwendern aus der Praxis
  • Einmaliger Fokus auf Lösungsansätze für die speziellen Herausforderungen der IT- und Softwarebranche
  • Möglichkeit State-of-the-Art IT-Lösungen zur Durchführung von Open Innovation vor Ort auszuprobieren
  • Erfahrungsaustausch und Networking mit erfahrenen Open Innovation Anwendern und Unternehmen mit ähnlichen Problemstellungen

Zielgruppe

  • Unternehmen der IT- und Softwarebranche
  • Interessierte, Experten und Entscheider im Bereich Innovationsmanagement und Open Innovation

Kosten

79,00 € pro Teilnehmer, inkl. MwSt., Tagungsunterlagen und Verpflegung.

Anmeldung

Im Anmeldeformular rechts auf http://www.gategarching.com/termine/wissenstransfer oder direkt bei anette.keller@gategarching.com.

Anfahrt

[singlepic id=237 w=614]

Technik State-of-the-Art: Neuartige Eingabearten

Im Rahmen des EU-Projekts SI-Screen (Social Interaction Screen), an dem wir als einer von zehn Projektpartnern teilnehmen, wird binnen der nächsten drei Jahre ein Gerät entwickelt, das u.a. Älteren einen einfachen Zugang zu sozialen Netzwerken wie z.B. Facebook ermöglicht. Im derzeitigen Stadium untersuchen wir den Markt hinsichtlich relevanter Trends, Konzepte, Technologien und Geräte, die für die Entwicklung eines Prototypen-Konzepts inspirierend sein könnten.

Dieser Teil unserer kleinen Mini-Serie beschäftigt sich mit neuartigen und exotischen Eingabe- und Steuerungsmethoden.

Die meisten der hier zusammengetragenen Bildern stammen aus entsprechenden Artikeln auf der Internetplattform engadget.com. Des Weiteren wurden Bilder von wired.comgizmodo.comit-tech.orgoopsconcept.co.cc und concepte.info übernommen.

[nggtags gallery=Eingabe+Technik+Fortschritt]

Danksagung

Dieser Beitrag steht im Zusammenhang mit dem Forschungsprojekt SI-Screen, das mit Mitteln des Bundesministeriums für Bildung, und Forschung (Förderkennzeichen 16SV3982), sowie durch das Europäische AAL Joint Programm (AAL-2009-2-088) gefördert wird. Das Vorhaben wird von der innovationsmanufaktur GmbH (ehemals SportKreativWerkstatt GmbH) koordiniert und gemeinsam mit der Universität der Bundeswehr München realisiert. Weiterführende Informationen sind verfügbar unter http://www.si-screen.eu.