anpera.net
https://anpera.homeip.net/phpbb3/

Hotkeys für bestimmte Addnav's Deaktivieren
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=3861
Seite 1 von 1

Autor:  Song Sinen [ Do 02 Aug, 2007 11:02 ]
Betreff des Beitrags:  Hotkeys für bestimmte Addnav's Deaktivieren

Hallo ihr!

In ein paar Skirpten nutze ich sehr viele addnavs (manchmal 50+ auf einer Seite) und da gehen schnell die Buchstaben aus. Wenn das geschieht fügt das LoGD gerne einfach Sachen wie "`HO" usw. in den Nav ein oder er wird einfach mal komplett grün.

Aus diesen Gründen und da es an einigen Stellen einfach keinen Sinn macht einen Hotkey zu haben würde ich die Funktion gerne für einige Skriptstellen (keine ganzen Skripte) deaktivieren.

Ich hoffe in der addnav die richtige Stelle gefunden zu haben:

[php] $key="";
if (substr($text,1,1)=="?") {
// check to see if a key was specified up front.
if ($accesskeys[strtolower(substr($text, 0, 1))]==1){
// output ("key ".substr($text,0,1)." already taken`n");
$text = substr($text,2);
}else{
$key = substr($text,0,1);
$text = substr($text,2);
//output("key set to $key`n");
$found=false;
for ($i=0;$i<strlen($text); $i++){
$char = substr($text,$i,1);
if ($ignoreuntil == $char){
$ignoreuntil="";
}else{
if ($ignoreuntil<>""){
if ($char=="<") $ignoreuntil=">";
if ($char=="&") $ignoreuntil=";";
if ($char=="`") $ignoreuntil=substr($text,$i+1,1);
}else{
if ($char==$key) {
$found=true;
break;
}
}
}
}
if ($found==false) {
if (strpos($text, "__") !== false)
$text=str_replace("__", "(".$key.") ", $text);
else
$text="(".strtoupper($key).") ".$text;
$i=strpos($text, $key);
// output("Not found`n");
}
}
//
}
if ($key==""){
for ($i=0;$i<strlen($text); $i++){
$char = substr($text,$i,1);
if ($ignoreuntil == $char) {
$ignoreuntil="";
}else{
if (($accesskeys[strtolower($char)]==1) || (strpos("abcdefghijklmnopqrstuvwxyz0123456789", strtolower($char)) === false) || $ignoreuntil<>"") {
if ($char=="<") $ignoreuntil=">";
if ($char=="&") $ignoreuntil=";";
if ($char=="`") $ignoreuntil=substr($text,$i+1,1);
}else{
break;
}
}
}
}
if ($i<strlen($text)){
$key=substr($text,$i,1);
$accesskeys[strtolower($key)]=1;
$keyrep=" accesskey=\"$key\" ";
}else{
$key="";
$keyrep="";
}
//output("Key is $key for $text`n");
if ($key==""){
//$nav.="<a href=\"".HTMLEntities($link.$extra)."\" class='nav'>".appoencode($text,$priv)."<br></a>";
//$key==""; // This is useless
}else{
$text=substr($text,0,strpos($text,$key))."`H".$key."`H".substr($text,strpos($text,$key)+1);
if ($pop){
$quickkeys[$key]=popup($link.$extra);
}else{
$quickkeys[$key]="window.location='$link$extra';";
}
}[/php]

Nun setze ich an der betreffenden Stelle im Skript vor die navs

[php]$_SESSION['session']['hotkeyaus']=1;[/php]

und erweitere die Abfrage

[php]if ($key==""){[/php]

auf

[php]if ($key=="" && $_SESSION['session']['hotkeyaus']!=1){[/php]

Leider hat die Variable keinen Wert und die Abfrage geht schief.
Könnt ihr mir da weiterhelfen?


LG,

Song Sinen

Autor:  Harthas [ Do 02 Aug, 2007 18:09 ]
Betreff des Beitrags: 

Setze einen weiteren Parameter in der Funktion, der normalerweise den Wert TRUE hat. Nur wenn kein Hotkey in diesem nav verwendet werden soll, wird der Wert auf FALSE gesetzt.

Die Abfrage könntest du dann irgendwie so gestalten:
[php]if ((isset($key)) && ($schluessel_anzeigen == TRUE)){ [/php]

Autor:  Song Sinen [ Do 02 Aug, 2007 21:36 ]
Betreff des Beitrags: 

8) Jup, hat geklappt!
Dankeschön!

Für alle dies auch mal machen wollen:

[php]$_SESSION['session']['hotkeyaus']=1;
Hierher die Navs die keinen Hotkey haben sollen.
$_SESSION['session']['hotkeyaus']=0;
[/php]

[php] $hotkeyanzeigen=TRUE; // Hotkeys aus Anfang
if ($_SESSION['session']['hotkeyaus']==1)$hotkeyanzeigen=FALSE;
if ($hotkeyanzeigen==TRUE){
if ($key==""){
for ($i=0;$i<strlen($text); $i++){
$char = substr($text,$i,1);
if ($ignoreuntil == $char) {
$ignoreuntil="";
}else{
if (($accesskeys[strtolower($char)]==1) || (strpos("abcdefghijklmnopqrstuvwxyz0123456789", strtolower($char)) === false) || $ignoreuntil<>"") {
if ($char=="<") $ignoreuntil=">";
if ($char=="&") $ignoreuntil=";";
if ($char=="`") $ignoreuntil=substr($text,$i+1,1);
}else{
break;
}
}
}
}
if ($i<strlen($text)){
$key=substr($text,$i,1);
$accesskeys[strtolower($key)]=1;
$keyrep=" accesskey=\"$key\" ";
}else{
$key="";
$keyrep="";
}
//output("Key is $key for $text`n");
if ($_SESSION['session']['hotkeyaus']==1)$hotkeyanzeigen=FALSE;
if ($key=="" && $hotkeyanzeigen==TRUE){
//$nav.="<a href=\"".HTMLEntities($link.$extra)."\" class='nav'>".appoencode($text,$priv)."<br></a>";
//$key==""; // This is useless
}else{
$text=substr($text,0,strpos($text,$key))."`H".$key."`H".substr($text,strpos($text,$key)+1);
if ($pop){
$quickkeys[$key]=popup($link.$extra);
}else{
$quickkeys[$key]="window.location='$link$extra';";
}
}
} // Hotkeys aus Ende[/php]
und diese kleine Änderung in der Addnav (Am Anfang und am Ende)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/