- Mitglied seit
- 04. Sep 2008
- Beiträge
- 2.341
- Punkte für Reaktionen
- 14
- Punkte
- 84
Vorwort
Als ich die Beta des DSM 3 installiert hatte, sah ich mir aus Neugier per ssh den webman-Zweig an. Ich erforschte die Verzeichnisse, um mehr über die neue Struktur zu erfahren. Dann bog ich in das Verzeichnis "Indexer" ein, in diesem ich mehrere PHP-Dateien vorfand. "Hm, PHP" dachte ich..."cool, da kann man ja ein wenig weiter suchen und sich den Quelltext reinziehen". Zum Glück entdeckte ich ein paar Kommentare der Entwickler und die Experimente begannen. Die Idee für eigene, im DSM 3 vollständig integrierte Hilfedateien war geboren. Nach ein paar Wochen wurde dann die erste eigene Hilfe in den DDNS updater integriert, ich übersah allerdings eine Sache, weswegen ich diese Modifikation geschrieben habe.
Erklärung/Interna
Damit in 3rdparty Apps eine eigene Hilfe benutzt werden kann, müsste man in den "strings"-Dateien seine Texte für die diversen Sprachen unterbringen. Diese Texte werden vom Indexer benutzt, um den Hilfebaum für die Sprachen zu erstellen. Ein Bearbeiten der "strings"-Dateien ist zwar möglich, aber nicht die feine Art. Deshalb habe ich nach ein wenig Testen eine kleine Modifikation entwickelt, die den Indexer befähigt, auch andere Dateien für die Übersetzungen zu benutzen.
Benutzung:
Es existieren 2 Möglichkeiten dem Indexer einen anderen Ort für die Sprachdateien mitzuteilen.
Der manuelle Aufruf des Indexers zum Hinzufügen einer Hilfe ist folgender:
/usr/bin/php -n -d safe_mode_exec_dir=/usr/syno/bin /usr/syno/synoman/webman/modules/Indexer/indexer.php -a /volume1/@appstore/<Anwendungsverzeichnis>/helptoc.conf -s /volume1/@appstore/<Anwendungsverzeichnis>/help
Diese Variante kann man zu Testzwecken bzw. beim Erstellen der Hilfe benutzen.
Zu 2.
Die 2. Möglichkeit ist für das automatische Erzeugen der Hilfedateien während einer Paketinstallation gedacht. Man muss dafür nur eine Datei /tmp/3PHELPENABLED anlegen. Wird diese Datei beim Start vom Indexer vorgefunden, wird als rootpfad das gleiche Verzeichnis, wie das der helptoc.conf benutzt und zusätzlich /help drangehangen. Die darunterliegende Verzeichnisstruktur entspricht dann der Originalen, damit der Indexer seine Dateien auch findet. Das Erstellen der Datei sollte möglichst früh durchgeführt werden, am Besten ein /bin/touch /tmp/3PHELPENABLED in den preinst-Teil des Paketes. Das Löschen der Datei übernimmt der Indexer am Ende selbst.
Sind beide Varianten aktiv, es existiert die Datei /tmp/3PHELPENABLED und man übergibt mit -s den Pfad, dann hat die Option -s die höhere Priorität.
Installation:
Die Installation der Modifikation ist leicht; einfach das Paket Init_3rdpartyHelp_1.0.spk im Anhang herunterladen und installieren. Start und Stop aktivieren oder deaktivieren die Modifikation.
Das Paket wird nur bei 3rdparty Apps mit integrierter DSM-Hilfe benötigt, stört aber nicht bei anderen Paketen.
Die Installation auf System mit DSM < 3 ist nicht möglich und wird mit einer Meldung abgefangen.
Mehr Informationen über die DSM-Hilfe, deren Erweiterung und das Einbinden in SPK's im Zusammenspiel mit dem Indexer kann man im Workshop: DSM 3 - eigene Hilfe integrieren nachlesen.
Hier die Modifikation
original:
modifiziert:
Als ich die Beta des DSM 3 installiert hatte, sah ich mir aus Neugier per ssh den webman-Zweig an. Ich erforschte die Verzeichnisse, um mehr über die neue Struktur zu erfahren. Dann bog ich in das Verzeichnis "Indexer" ein, in diesem ich mehrere PHP-Dateien vorfand. "Hm, PHP" dachte ich..."cool, da kann man ja ein wenig weiter suchen und sich den Quelltext reinziehen". Zum Glück entdeckte ich ein paar Kommentare der Entwickler und die Experimente begannen. Die Idee für eigene, im DSM 3 vollständig integrierte Hilfedateien war geboren. Nach ein paar Wochen wurde dann die erste eigene Hilfe in den DDNS updater integriert, ich übersah allerdings eine Sache, weswegen ich diese Modifikation geschrieben habe.
Erklärung/Interna
Damit in 3rdparty Apps eine eigene Hilfe benutzt werden kann, müsste man in den "strings"-Dateien seine Texte für die diversen Sprachen unterbringen. Diese Texte werden vom Indexer benutzt, um den Hilfebaum für die Sprachen zu erstellen. Ein Bearbeiten der "strings"-Dateien ist zwar möglich, aber nicht die feine Art. Deshalb habe ich nach ein wenig Testen eine kleine Modifikation entwickelt, die den Indexer befähigt, auch andere Dateien für die Übersetzungen zu benutzen.
Benutzung:
Es existieren 2 Möglichkeiten dem Indexer einen anderen Ort für die Sprachdateien mitzuteilen.
- über einen weiteren Schalter -s <Pfad-zu-den-Texten>
- über eine Datei /tmp/3PHELPENABLED, die als quasi Schalter fungiert.
Der manuelle Aufruf des Indexers zum Hinzufügen einer Hilfe ist folgender:
/usr/bin/php -n -d safe_mode_exec_dir=/usr/syno/bin /usr/syno/synoman/webman/modules/Indexer/indexer.php -a /volume1/@appstore/<Anwendungsverzeichnis>/helptoc.conf -s /volume1/@appstore/<Anwendungsverzeichnis>/help
Diese Variante kann man zu Testzwecken bzw. beim Erstellen der Hilfe benutzen.
Zu 2.
Die 2. Möglichkeit ist für das automatische Erzeugen der Hilfedateien während einer Paketinstallation gedacht. Man muss dafür nur eine Datei /tmp/3PHELPENABLED anlegen. Wird diese Datei beim Start vom Indexer vorgefunden, wird als rootpfad das gleiche Verzeichnis, wie das der helptoc.conf benutzt und zusätzlich /help drangehangen. Die darunterliegende Verzeichnisstruktur entspricht dann der Originalen, damit der Indexer seine Dateien auch findet. Das Erstellen der Datei sollte möglichst früh durchgeführt werden, am Besten ein /bin/touch /tmp/3PHELPENABLED in den preinst-Teil des Paketes. Das Löschen der Datei übernimmt der Indexer am Ende selbst.
Sind beide Varianten aktiv, es existiert die Datei /tmp/3PHELPENABLED und man übergibt mit -s den Pfad, dann hat die Option -s die höhere Priorität.
Installation:
Die Installation der Modifikation ist leicht; einfach das Paket Init_3rdpartyHelp_1.0.spk im Anhang herunterladen und installieren. Start und Stop aktivieren oder deaktivieren die Modifikation.
Das Paket wird nur bei 3rdparty Apps mit integrierter DSM-Hilfe benötigt, stört aber nicht bei anderen Paketen.
Die Installation auf System mit DSM < 3 ist nicht möglich und wird mit einer Meldung abgefangen.
Mehr Informationen über die DSM-Hilfe, deren Erweiterung und das Einbinden in SPK's im Zusammenspiel mit dem Indexer kann man im Workshop: DSM 3 - eigene Hilfe integrieren nachlesen.
Hier die Modifikation
original:
PHP:
$cmdOpts = getopt('rnuh:d:a:');
PHP:
// Patch for use with a user-defined texts location.
// Use cmdline option -s <path-to-texts> or create a file /tmp/3PHELPENABLED.
// QTip 25/10/2010
// patch begin >>>
$cmdOpts = getopt('rnuh:d:a:s:');
if (array_key_exists('a', $cmdOpts)) {
if (file_exists("/tmp/3PHELPENABLED") && ! array_key_exists('s', $cmdOpts)) {;
define("DEFAULT_STORE_STRINGS", dirname($cmdOpts['a'])."/help");
} elseif (array_key_exists('s', $cmdOpts)) {
define("DEFAULT_STORE_STRINGS", $cmdOpts['s']);
}
@unlink("/tmp/3PHELPENABLED");
}
// <<< patch end
Zuletzt bearbeitet: