[PHP][Geshi] Line Numbers opmaken

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
Hallo allemaal!

Ik ben druk bezig met een UBB parser voor mijn website, en ik wil voor het highlighten van code gebruik maken van Geshi. Nu is het gelukt om de code te highlighten. En regel nummers toe te voegen. Nu wou ik ook proberen om de regel nummers een achtergrond kleur mee te geven. Nu heb ik even in de ocumentation gezocht, en hier heb ik dit gevonden. Helaas doet dit zijn werk niet. Ik heb nu de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
public function _geshi($code, $language = false) {
            if($language == false) {
                $language = 'php';
            }
            $geshi = new GeSHi($code, $language);
            $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
                        $geshi->set_line_style('background: #fcfcfc;');
            return '<div class="code">'.$geshi->parse_code().'</div>';
            
        }

Zoals ik al zij, de achtergrond kleur van de regel nummers blijft gewoon wit, en het wordt niet de kleur die ik opgegeven hebt.

Ik heb ook nog een ander probleem. Als ik de class 'code'overflow: auto; meegeef, de regel nummers niet meer worden getoond...

De output die uit de bovenstaande code komt is:
code:
1
<div class="code"><pre class="php" style="font-family:monospace;"><ol><li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> </div></li><li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'test'</span><span style="color: #339933;">;</span> </div></li><li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">?&gt;</span></div></li><li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div></li></ol></pre></div>

Sorry voor de bende in de code hierboven, maar dit is gegenereerde code.

Weet iemand wat er hier fout gaat?

Acties:
  • 0 Henk 'm!

  • Makster
  • Registratie: November 2006
  • Laatst online: 22:03
Probeer eens background-color i.p.v. background, misschien dat dat werkt?

[ Voor 22% gewijzigd door Makster op 10-08-2009 14:21 ]


Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
Makster schreef op maandag 10 augustus 2009 @ 14:20:
Probeer eens background-color i.p.v. background, misschien dat dat werkt?
nee, helaas werkt dat ook niet

Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 19-09 15:24
Je geeft de Li een achtergrond kleurtje... tevens heeft dit te maken met css waar je ook de oplossing hiervoor kan vinden.

[ Voor 5% gewijzigd door rhodium op 10-08-2009 14:34 ]


Acties:
  • 0 Henk 'm!

  • Makster
  • Registratie: November 2006
  • Laatst online: 22:03
De kleur #fcfcfc is heel erg licht, best kans dat je niet eens ziet dat deze afwijkt van wit op je monitor. Verander deze maar eens in 'red' en kijk wat er gebeurt. Je regels worden dan rood (niet de regelnummers). Background of background-color lijkt hiervoor niet uit te maken.
set_line_style doet blijkbaar niet helemaal wat je verwacht.

Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
Makster schreef op maandag 10 augustus 2009 @ 14:34:
De kleur #fcfcfc is heel erg licht, best kans dat je niet eens ziet dat deze afwijkt van wit op je monitor. Verander deze maar eens in 'red' en kijk wat er gebeurt. Je regels worden dan rood (niet de regelnummers). Background of background-color lijkt hiervoor niet uit te maken.
set_line_style doet blijkbaar niet helemaal wat je verwacht.
dat had ik al even geprobeerd, en de regels worden dan inderdaad rood, maar niet de regelnummers. weet je misschien een andere functie.

Ik heb ook geen flauw idee hoe ik dit kan oplossen met css, want de li een achtergrond kleur geven helpt ook niet

[ Voor 4% gewijzigd door devhouse op 10-08-2009 14:53 ]


Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 19-09 15:24
tom.keim schreef op maandag 10 augustus 2009 @ 14:46:
[...]

dat had ik al even geprobeerd, en de regels worden dan inderdaad rood, maar niet de regelnummers. weet je misschien een andere functie.

Ik heb ook geen flauw idee hoe ik dit kan oplossen met css, want de li een achtergrond kleur geven helpt ook niet
Geef de ol eens een achtergrond kleur :/

Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
rhodium schreef op maandag 10 augustus 2009 @ 15:01:
[...]


Geef de ol eens een achtergrond kleur :/
Dit heb ik natuurlijk ook geprobeerd maar:
code:
1
2
3
.code ol {
    background-color: #e8e6da;
}


werkt ook niet...

Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 19-09 15:24
Het werkt wel, maar waarschijnlijk overruled de css van de class .php de style van je ol. Met simpel copy&past werk voorbeeld, krijg ik gewoon een achtergrond kleur.

Probeer eens iets als:

code:
1
2
3
.php ol, .code .php ol, * ol {
    background: red;
}


Leer de basis van CSS eens dan had je dit zelf eenvoudig kunnen oplossen.

Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
rhodium schreef op maandag 10 augustus 2009 @ 15:30:
Het werkt wel, maar waarschijnlijk overruled de css van de class .php de style van je ol. Met simpel copy&past werk voorbeeld, krijg ik gewoon een achtergrond kleur.

Probeer eens iets als:

code:
1
2
3
.php ol, .code .php ol, * ol {
    background: red;
}


Leer de basis van CSS eens dan had je dit zelf eenvoudig kunnen oplossen.
ik ken de basis van css al, en ik had een soortgelijke code gemaakt. Helaas wil die code ook niet werken. (en die van jou ook niet). En over de class php, die bestaat geeneens. Ik heb geen flauw idee wat het probleem is...

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:18

crisp

Devver

Pixelated

Zolang de output <ol> gebruikt voor de nummering is er geen manier om de lijnnummers een andere achtergrond-kleur te geven tov de code zelf. Volgens mij werkt dat alleen als je set_header_type(GESHI_HEADER_PRE_TABLE) gebruikt zodat je zo'n beetje de HTML markup krijgt zoals we ook hier op GoT gebruiken.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
crisp schreef op maandag 10 augustus 2009 @ 15:42:
Zolang de output <ol> gebruikt voor de nummering is er geen manier om de lijnnummers een andere achtergrond-kleur te geven tov de code zelf. Volgens mij werkt dat alleen als je set_header_type(GESHI_HEADER_PRE_TABLE) gebruikt zodat je zo'n beetje de HTML markup krijgt zoals we ook hier op GoT gebruiken.
Bedankt, hier had ik niet aan gedacht. Het probleem is nu opgelost :*)

Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 19-09 15:24
Zoals je kan zien op het voorbeeld, wat ik eerder gaf, werkt het prima. Als het bij jou niet werkt dan doe je blijkbaar iets verkeerd en zonder enige voorbeeld of testcase kunnen wij natuurlijk niet zien wat je verkeerd doet.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:18

crisp

Devver

Pixelated

rhodium schreef op maandag 10 augustus 2009 @ 15:49:
Zoals je kan zien op het voorbeeld, wat ik eerder gaf, werkt het prima.
Dat werkt iig niet consistent in verschillende browsers ;)

[ Voor 20% gewijzigd door crisp op 10-08-2009 15:56 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Uit de Geshi documentatie:
Note also that you cannot apply background colours to line numbers unless you use set_overall_style(). Here’s how you’d style:
  1. Use set_overall_style() to style the overall code block. For example, you can set the border style/colour, any margins and padding etc. using this method. In addition: set the background colour for all the line numbers using this method.
  2. Use set_line_style() to style the foreground of the line numbers. For example, you can set the colour, weight, font, padding etc. of the line numbers using this method.
  3. Use set_code_style() to explicitly override the styles you set for line numbers using set_line_style. For example, if you’d set the line numbers to be bold (or even if you’d only set the fancy line number style to be bold), and you didn’t actually want your code to be bold, you’d make sure that font-weight: normal; was in the stylesheet rule you passed to set_code_style().

Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 19-09 15:24
crisp schreef op maandag 10 augustus 2009 @ 15:56:
[...]

Dat werkt iig niet consistent in verschillende browsers ;)
tja had getest in Ff en Sf. Werkte het zonder problemen, maar ja gebruik <ol> nooit dus niet aangedacht dat het in IE niet zou werken.
Pagina: 1