Anchorübergabe in Hilfe

Dieses Forum enthält Diskussionen zu Bugs in ConPresso 4 und deren Lösungen.
Antworten
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Anchorübergabe in Hilfe

Beitrag von MarkusR »

Es wird wohl nur Balu und die anderen Modulentwickler interessieren...

in _manual/index.php findet sich folgendes:

Code: Alles auswählen

$anchor = '';
if (strpos($_GET['show'], '#')!==false) $anchor = '#'.urlencode(substr($_GET['show'], strpos($_GET['show'], '#')+1));
...
echo '<frame name="manual_navigation" scrolling="auto" src="toc.php?show='.urlencode($_GET['show']).$anchor.'">';
Der Sinn dieser Zeilen ist dem Aufruf der Modulhilfe auch eine Ankerangabe mitzugeben
index.php?ref=...&show=Modules#Newsletter
sollte
toc.php?show=Modules#Newsletter
aufrufen (und somit bei vielen installierten Modulen auch die passende Hilfe und nicht irgendeine zu bekommen)

Das funktioniert aber leider nicht, da die Ankerangabe vom Browser gar nicht an den Server gesendet wird und somit auch nicht ausgewertet werden kann.
Wenn man nun ein url-codiertes # mitgibt, dann erzeugt
index.php?ref=...&show=Modules%23Newsletter
leider
toc.php?show=Modules%23Newsletter#Newsletter
was zwar schon besser aber auch suboptimal ist.

Kann man da was machen?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Markus,

grundsätzlich ist es schon so gedacht, dass ein codiertes # benutzt werden soll. Das soll einfach nur ein Trennsymbol im show-Parameter sein - nicht der wirkliche Anker-"#".

Das ganze wird dann nochmal dahinter gesetzt, damit der Browser im Falle von vielen installierten Modulen im Hilfe-Inhaltsmenü an die richtige Stelle springt. In "_manual/toc.php" werden dazu Anker mit dem Modulnamen ausgegeben:

$toc .= '<a name="'.htmlspecialchars($k).'"></a>';

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

balu hat geschrieben:Das soll einfach nur ein Trennsymbol im show-Parameter sein - nicht der wirkliche Anker-"#".
Und was soll dann der getrennte Parameter bewirken?
balu hat geschrieben:Das ganze wird dann nochmal dahinter gesetzt, damit der Browser im Falle von vielen installierten Modulen im Hilfe-Inhaltsmenü an die richtige Stelle springt. In "_manual/toc.php" werden dazu Anker mit dem Modulnamen ausgegeben:

$toc .= '<a name="'.htmlspecialchars($k).'"></a>';
Und jetzt ist es doch der Anker?

Es ist also wirklich eine Ausgabe in der Form
toc.php?show=Modules%23Newsletter#Newsletter
beabsichtigt??
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Ja, das ist beabsichtigt weil sowohl das anzeigende Script einen Hinweis braucht, welches Modul angeigt werden muss, als auch der Browser wissen muss, an welche Stelle er bei der Darstellung der Seite springen soll.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ich kann es aus dem Code von toc.php leider nicht lesen, aber soll das jetzt heißen, daß toc.php das Inhaltsverzeichnis irgendwie anders anzeigt??? Sehe ich da irgendwie nicht... :roll:

Fände ich aber wirklich sinnvoll, wenn im Inhaltsverzeichnis dann z.B. nur das gewünschte Modul angezeigt würde.

Ich habe Auftritte mit einem Dutzend installierten Modulen, da leidet die Übersicht doch arg.
Insbesondere die mehrfach installierbaren Module wie Newsletter 4.2 erzeugen da endlose Wiederholungen, was ich einfach nicht vermeiden kann, es sei denn toc.php kann das, was Du da andeutest... :wink:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

MarkusR hat geschrieben:Ich habe Auftritte mit einem Dutzend installierten Modulen, da leidet die Übersicht doch arg.
Insbesondere die mehrfach installierbaren Module wie Newsletter 4.2 erzeugen da endlose Wiederholungen
Ich hatte in meinem Gästebuch mal in einer Internen Version etwas drinn, damit nur die erste Gästebuch-Hilfe angezeigt wird. Bei den anderen Gästebüchern hatte ich dann immer einen Link zur ersten angezeigten Gästebuchhilfe.

In diesem Zusammenhang hatten auch die Anchors im linken Handbuch-Frame funktioniert.

Gruß Matthias
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Sowas hatte ich mir auch schon ausgedacht und einfach einen Modulnamen "Newsletter-Hilfe" (neben den eigentlichen Newslettern) reingeschrieben. Das funzte auch wunderbar, aber leider wurde dieser Eintrag auch in der Liste der zu installierenden Module gezeigt inkl. Installations-, Aktivierungs- und sonstigen Schalter... :?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Du hast mich etwas falsch verstanden.

Ich hatte sowas programmiert:

Code: Alles auswählen

if (!function_exists('gb_helpTOC')) {
    function gb_helpTOC($helpDir)
    {
        global $moduleDirectory, $activeModules;
        
        //Die Gästebuch-Hilfe nur von einmal verlinken
        $first_guestbook = '';
        foreach ($activeModules as $k => $v) {
            if (empty($first_guestbook) && array_key_exists('helpDir', $v) && (substr($v['caption'], 0, 9)=='Guestbook' || substr($v['caption'], 0, 9)=='Gästebuch'))
                $first_guestbook = $k;
        }
        
        //Gästebuchhilfe, oder Link zur Hilfe ausgeben
        if ($first_guestbook!=ucfirst($moduleDirectory)) {
            //Link zur ersten Gästebuchhilfe ausgeben
            return array('Siehe: '.$activeModules[$first_guestbook]['caption'] => '/'.$activeModules[$first_guestbook]['helpDir'].'/index.html');
        } else {
            return array(
                'Gästebuch - Inhalt' => '/'.$helpDir.'/index.html',
                '1. Einführung' => '/'.$helpDir.'/introduction.html',
        	    '2. Templatesystem' => '/'.$helpDir.'/templates.html',
        	    array(
                        '1. Ausgabeplatzhalter' => '/'.$helpDir.'/templates-output.html',
	                '2. Eingabeplatzhalter' => '/'.$helpDir.'/templates-input.html'
        	    ),
        	    '3. Einstellungen' => '/'.$helpDir.'/settings.html',
        	    array(
        	        '1. Modullizenz' => '/'.$helpDir.'/settings.html#settings-license',
        	        '2. Gästebuch-Einstellungen' => '/'.$helpDir.'/settings.html#settings-gb_settings',
        	        '3. Erweiterte Gästebuch-Einstellungen' => '/'.$helpDir.'/settings.html#settings-extended_gb_settings'
        	    ),
        	    '4. Installation' => '/'.$helpDir.'/setup.html',
        	    array(
        	        '1. Allgemeine Hinweise' => '/'.$helpDir.'/setup.html#setup-general',
        	        '2. Sinnvolle Codeänderungen' => '/'.$helpDir.'/setup.html#setup-aditional',
        	        '3. Conpresso-Versionen vor 4.0.4' => '/'.$helpDir.'/setup.html#setup-cpo_4_0_3',
        	        '4. Artikel aus anderen Gästebüchern übernehmen' => '/'.$helpDir.'/setup.html#setup-transfer_entrys',
        	   )
            );
        }
    }
}
Das heißt, sowas wird einfach in jede common-module.inc.php geschrieben.

Mann kann die Module auch über eine Modul-ID in $GLOBALS['modules'][ucfirst($moduleDirectory) identifizieren, um nur eine Hilfe pro Modul zu installieren.
Aus diesem Grund hatte ich Balu auch mal nach einer Modul-ID für Module, die keine Lizensierung benötigen, gefragt, die dann im Wiki vergeben/verwaltet wird. In diesem Codestück hier identifiziere ich die Module über die caption.

Problematisch ist es nur, wenn unterschiedliche Versionen des Moduls installiert sind, das heißt z.B. 4.0.1 und 4.0.2.

Gruß Matthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Dann sieht das so aus, daß für jedes installierte Modul eine Hilfe ausgegeben wird, die für jede Folgeinstallation auf eine "Siehe..." beschränkt wird?

Wenn ich nun an die Anfrage denke, daß ein Newletter für drei verschiedene Benutzerbereiche in vier verschiedenen Sprachen installiert werden soll, dann ist das auch arg viel Text für nichts.

In dem Fall müsste dann eben helptoc ganz wegfallen...

Dennoch wäre eine "Ein-Modul-Hilfe" schon etwas "kontextsensitiver"
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

MarkusR hat geschrieben:Dann sieht das so aus, daß für jedes installierte Modul eine Hilfe ausgegeben wird, die für jede Folgeinstallation auf eine "Siehe..." beschränkt wird?
Genau so war das gedacht. Ich hatte es aber wieder verworfen.

Das stimmt, bei 12Newslettern ist das recht viel Text für nichts, aber es ist schon einmal eine Verringerung des Textes.
MarkusR hat geschrieben:In dem Fall müsste dann eben helptoc ganz wegfallen...

Dennoch wäre eine "Ein-Modul-Hilfe" schon etwas "kontextsensitiver"
Das wäre wieder ein Fall für eine Modul-ID in $activeModules für jedes Modul (auch für die lizenzfreien Module). Diese Modul-ID müsste aber dann zusätzlich die Modulversion enthalten, damit bei unterschiedlichen Modulversionen auch die unterschiedlichen Modulhilfen angezeigt werden.

Dann müsst Balu etwas schreiben, dass die Modulhilfe nur einmal pro Modul und Modulversion ausgibt.
Villeicht ein Fall für CPO 4.1.0, oder könnte man das doch schon in die nächste Version einbauen, so dass aktuelle Module damit kompatibel sind?

Gruß Matthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Antworten