Init_3rdpartyHelp Skript

  • Es ist vollbracht, wir sind im neuen Forum. Hier ist der Diskussionsthread für das neue Forum https://www.synology-forum.de/threads/willkommen-im-neuen-forum.108229/

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. September 2008
Beiträge
2.320
Punkte für Reaktionen
0
Punkte
82
Alter
55
Website
www.smallco.de
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.

  1. über einen weiteren Schalter -s <Pfad-zu-den-Texten>
  2. über eine Datei /tmp/3PHELPENABLED, die als quasi Schalter fungiert.
Zu 1.
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:');
modifiziert:
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:

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. September 2008
Beiträge
2.320
Punkte für Reaktionen
0
Punkte
82
Alter
55
Website
www.smallco.de
Neue Version 1.1
ab DSM 3.1.17xx gab es eine kleine Änderung bei den Aufrufkommandos seitens Synology, was eine Integration einer 3rdparty-Hilfe verhinderte bzw. der Patch nicht durchgeführt werden konnte. Die neue Init_3rdpartyHelp wurde entsprechend aktualisiert. Desweiteren wurde eine Anpassung an das neue Paket-Zentrum ab DSM 3.2 beta durchgeführt und ein Icon integriert. Es wird nun auch ein DSM Update erkannt und verhindert, dass beim Neustart durch das Update das alte Backup der indexer.php zurückgespielt wird.

Init_3rdpartyHelp_1.1 kann für alle DSM-Versionen ab 3.0 und höher inkl. DSM 3.2 beta benutzt werden! Wer noch DSM < 3.1.17xx benutzt braucht nicht zwingend diese Version zu installieren.
 

Anhänge

Zuletzt bearbeitet: