Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 5
Seite [1]
NickNickname


Beginner




Beiträge: 5
# Thema - 21.08.2014 um 12:03 Uhr
Hallo Leute nach dem ich mit eurer Hilfe nun eine Ligtbox für mein Forum hab arbeite ich am letzten Feinschliff.

Nun zum dem problem ich möchte den Abcode soweit ändern das ich im IMG Tag
 
1.
1. / 2. / ... 
 [img width=*** height=*** titel="Bild Tietel"

Schreiben kann und der besagte Titel dann an die Lightbox übergeben wird.

Folgenden Code habe ich schon in der system/core/abcode.php (Zeile 172 -184)

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
1. / 2. / ... 
 function cs_abcode_img($matches) {
    
    
$titel = ?    
    
$lightbox 'rel="lightbox-Board" data-title="'.$titel.'"';    

  if (
$matches[0]{4} == ']') {
    return 
cs_html_img($matches[1]);
  }
  else {
    
$img  cs_html_img($matches[3], $matches[2], $matches[1]);
    return 
cs_html_link($matches[3], $img000$lightbox);
  }
}


Die Übergabe an die Lightbox funktioniert hierbei auch schon nur weis ich nicht wie ich den Rest des Scriptes verändern muss damit es funktioniert.

Danke im voraus für eure Hilfe

Gruß
Nick
Inaktiv
Denwo


Beginner




Beiträge: 17
# Antwort: 1 - 22.08.2014 um 13:50 Uhr
Huhu, leider kann ich dir nicht helfen, habe aber dein Code mal bei mir rein gehauen und werde es mir anschauen, finde es interessant.

Bin am überlegen ob ich bei mir alles auf fancyBox umstelle. habe schon die Video Galerie darauf umgestellt und bin eigentlich sehr begeistert davon.

Weis nur nicht wo ich anfangen soll zu suchen um die komplette Lightbox mit dem fancyBox zu ersetzen.


Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 2 - 24.08.2014 um 17:47 Uhr
Die Funktion ist schon die richtige, allerdings musst du den regulären Ausdruck anpassen, dass er dir da dann auch deinen Titel zurückliefert.

Okay, neue cs_abcode_img($matches)-Funktion:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
1. / 2. / ... 
 function cs_abcode_img($matches) {

  
// third attribute is title? So we have to increment by 2 to get the picture uri
  
$indexIncrement = ($matches[3] == "title") ? 0;

  if (
$matches[0]{4} == ']') {
      
// no attributes
      
$imgURI $matches[1];
      
$img cs_html_img($imgURI);
  } elseif(
$matches[1] == "title") {
      
$imgURI $matches[3];
      
$img cs_html_img($imgURI);
  } else {
      
// pic with width & height
      
$imgURI $matches[3+$indexIncrement];
      
$img  cs_html_img($imgURI$matches[2], $matches[1]);
  }

  
$lightbox 'rel="lightbox-Board"';
  
// Let's check whether we have a lightbox version.
  
if($matches[1] == "title" || $matches[3] == "title") {

    
// get the title
    
$title $matches[$indexIncrement];

    
$lightbox .= ' data-title="'.$title.'"';
  }
    
    return 
cs_html_link($imgURI$img0,0,0$lightbox);
}


// e: Korrektur der Syntax.
Sofern die Slimbox (clansphere standard) genutzt werden soll, muss folgende Zeile die Z. 26 ersetzen.
 
1.
1. / 2. / ... 
 $lightbox .= ' title="'.$title.'"';


Zusätzlich musst du einfügen vor
 
1.
2.
1. / 2. / ... 
     $replace preg_replace_callback("=\[img width\=([\d]*?) height\=([\d]*?)\](.*?)\[/img\]=si""cs_abcode_img",$replace);
$replace preg_replace_callback("=\[img\](.*?)\[/img\]=i","cs_abcode_img",$replace);


folgendes:
 
1.
2.
1. / 2. / ... 
     $replace preg_replace_callback("=\[img width\=([\d]*?) height\=([\d]*?) (title)\=(.*?)\](.*?)\[/img\]=si""cs_abcode_img",$replace);
    
$replace preg_replace_callback("=\[img (title)\=(.*?)\](.*?)\[/img\]=si""cs_abcode_img",$replace);


Dann sollte das eigenetlich gehen:

Möglichkeiten:
[.img]URI[/img]
[.img title=some title]URI[/img]
[.img title="some title"]URI[/img]
[.img width=300 height=300]URI[/img]
[.img width=300 height=300 title="some title"]URI[/img]
[.img width=300 height=300 title="some title"]URI[/img]

@Denwo: Bitte eröffne dafür einen eigenen Thread.

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Zuletzt editiert von Tom08 ClanSphere Team am 25.08.2014 um 15:07 Uhr (4x Editiert)
Inaktiv
|
NickNickname
Thread-Ersteller


Beginner




Beiträge: 5
# Antwort: 3 - 25.08.2014 um 09:59 Uhr
@Tom08 erstmal danke für deine mühe. Einiges funktionier aber leider noch nicht ganz.

Mit folgender Zeile kommt PHP nicht klar.
 
1.
1. / 2. / ... 
 $title str_replace(""", "", $title);

Da ist ihm ein " zuviel vielleicht muss man das noch mit irgendwelchen Zeichen einfassen damit er es erkennen kann?

Ich habe dieses Problem zum Testen erstmal ignoriert und einfach ein " weggenommen da ich sie in meinem Test Titel nicht benutze.

Doch leider erkennt er den titel nicht, sondern schreibt nur immer title zu jedem bild mit einem Titel. Außerdem haben alle Bilder mit der normalen IMG Notation kein link mehr.

So sah mein versuch aus.
 
1.
2.
3.
4.
5.
1. / 2. / ... 
 Das Stadttor bei Nacht...
[
img width=500 height=265 title="Das Stadttor bei Nacht..."]http://h-a-t-e.de/mods/gallery/image.php?pic=10[/img]

Stadttor Nahaufnahme.
[
img width=500 height=265]http://h-a-t-e.de/mods/gallery/image.php?pic=7[/img]


und das kommt nachehr bei raus.
 
1.
2.
3.
1. / 2. / ... 
 <a href="http://h-a-t-e.de/mods/gallery/image.php?pic=10" rel="lightbox-Board" data-title="title"><img src="http://h-a-t-e.de/mods/gallery/image.php?pic=10" style="width:500px;height:265px;" alt=""></a>
</ 
br>
<
img src="http://h-a-t-e.de/mods/gallery/image.php?pic=7" style="width:500px;height:265px;" alt="">


Gruß Nick

Update:

das Problem das die Bilder mit normaler IMG Notation nicht in der Lightbox auftauchen haben ich mit folgendem Code selber gelöst.Ich weis nur nicht ob das so sauber Gescriptet ist.
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
1. / 2. / ... 
 function cs_abcode_img($matches) {

  
$imgURI "";

  
// third attribute is title? So we have to increment by 2 to get the picture uri
  
$indexIncrement = ($matches[3] == "title") ? 0;

  if (
$matches[0]{4} == ']') {
      
// no attributes
      
$img cs_html_img($matches[1]);
  } elseif(
$matches[1] == "title") {
      
$imgURI $matches[3];
      
$img cs_html_img($imgURI);
  } else {
      
// pic with width & height
      
$imgURI $matches[3+$indexIncrement];
      
$img  cs_html_img($imgURI$matches[2], $matches[1]);
  }

  
// Let's check whether we have a lightbox version.
  
if($matches[1] == "title" || $matches[3] == "title") {

    
// get the title
    
$title $matches[$indexIncrement];
     
// remove some quotes if exsiting
    
$title str_replace(""""$title);

    
$lightbox 'rel="lightbox-Board" data-title="'.$title.'"';
    return 
cs_html_link($imgURI$img0,0,0$lightbox);
  } else {    
     
$lightbox 'rel="lightbox-Board"';
     return 
cs_html_link($matches[3], $img000$lightbox);
  }
    
}


Zuletzt editiert von NickNickname am 25.08.2014 um 10:29 Uhr (1x Editiert)
Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 4 - 25.08.2014 um 15:00 Uhr
25.08.2014 um 09:59 Uhr - NickNickname:
 
1.
1. / 2. / ... 
 $title str_replace(""", "", $title);

Da fehlt irgendwie in dem ersten Teil das \ nach dem ersten ". Letztendlich kann man sich die Zeile aber auch sparen, wenn man keine " nutzt. Das ist ein Darstellungsfehler hier im Forum. Das mittlere " in dem ersten Parameter ist eigentlich die HTML-Repräsentation &quot;, die leider bei der Darstellung umgewandelt wird.

Doch leider erkennt er den titel nicht, sondern schreibt nur immer title zu jedem bild mit einem Titel. Außerdem haben alle Bilder mit der normalen IMG Notation kein link mehr.

Ah, sorry. Ich hatte das mit der Slimbox getestet und daher dann $lightbox angepast. Data-title ist da natürlich richtig.

Außerdem haben alle Bilder mit der normalen IMG Notation kein link mehr.

Ah, damn. Ich hab's jetzt so implementiert, dass du die Lightbox nur bei einem Titel hast.

Ich hab die Funktion bei mir im Beitrag korrigiert.

Deine Funktion hätte ohne Parameter width/height einen Fehler geliefert, weil es dann nur bis Index 1 geht, du aber matches[3] nutzt. (betrifft [img.]uri[/img])

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Zuletzt editiert von Tom08 ClanSphere Team am 25.08.2014 um 15:06 Uhr (4x Editiert)
Inaktiv
|
NickNickname
Thread-Ersteller


Beginner




Beiträge: 5
# Antwort: 5 - 25.08.2014 um 15:28 Uhr
Das mit den &quot rausnehmen aus dem String finde ich schon gut und auch sinnig, nur wusste ich halt nicht das es vom Forum hier automatisch umgewandelt wurde. Ich habe es jetzt also drin gelassen.

Aber das eigentliche Problem ist noch nicht gelöst.
Denn der Titel de Bildes in der Lightbox ist immer "title" egal was ich im IMG Tag eintrage.

Ich habe die Vermutung es liegt an dem Regulären Ausdrück, doch davon hab ich so gut wie keinen Plan.

UPDATE:

Ich hab den Fehler gefunden.
das
 
1.
2.
1. / 2. / ... 
 // get the title
    
$title $matches[$indexIncrement];

ersetzt durch
 
1.
2.
1. / 2. / ... 
 // get the title
    
$title $matches[$indexIncrement];


außerdem muss man beim aufrufen des tags die " weglassen also:

 
1.
1. / 2. / ... 
 [img width=500 height=265 title=Das Stadttor bei Nacht...]


Anstatt
 
1.
1. / 2. / ... 
 [img width=500 height=265 title="Das Stadttor bei Nacht..."]


Zuletzt editiert von NickNickname am 25.08.2014 um 15:47 Uhr (2x Editiert)
Inaktiv
|
Antworten: 5
Seite [1]


Sie müssen sich registrieren, um zu antworten.