Oznámení

Provoz fóra byl ukončen

Ekvivalent Texy::PROCEED pre PHP4

před 12 lety

Havran
Člen | 20

Chcem troska pokrocit v implementacii Texy! 2.0 do DRUPALU a rad by som urobil verziu kompatibilnu smerom dole. V kode syntax highlighteru sa vyskytuje Texy::PROCEED a ja netusim ako toto nahradit pre PHP4. Je mi jasne ze do konca roka to uz asi nema velky vyznam ale aj tak by ma to zaujimalo :).

před 12 lety

David Grudl
Nette Core | 6806

Ekvivalent pro PHP4 je konstanta TEXY_PROCEED.

Od revize 155 používejte return $invocation->proceed();

před 12 lety

Havran
Člen | 20

Vdaka za odpoved pomohlo. Mam ale este jeden problem ktory tiez suvisi z implemetaciou pre PHP4.

Pouzivam poslednu verziu Texy! 2 pre PHP4 – highlighting kodu s FSHL funguje ale od okamihu ked narazi na poznamku // povazuje vsetko az do konca za poznamku. Teraz som si nie isty ci to nema nieco spolocne s PHP lebo presne s tymto problemom som sa stretol este na Texy! 1 ale iba na jednom serveri.

Implementaciu syntaxhighlightingu mam vyriesenu takto:

(subor fshl.php ktory sa includuje do DRUPAL modulu pre Texy!)

// include FSHL syntaxhighlighter library
require_once 'fshl/fshl.php';
require_once 'fshl/fshl-config.php';

if (!class_exists('fshlParser')) {
  die('DOWNLOAD <a href="http://hvge.sk/scripts/fshl/">FSHL</a> AND UNPACK TO fshl FOLDER FIRST!');
}

if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
  include_once 'fshl.5.php';
}
else {
  include_once 'fshl.4.php';
}

(subor fshl.4.php – je to prakticky bezo zmien pouzity priklad z dokumentacie, zmenene su len casti pre kompatibilitu s PHP4)

(a implementacia Texy! do filtra)

/**
 * Main Texy! filter.
 */
function _filter_texy($text) {
  // get base module path
  $module_path = drupal_get_path('module', 'texy');

  // include Texy!
  require_once $module_path . '/texy/texy.php';
  $texy = new Texy();

[nasleduje konfiguracia texy...]

  // check for use syntax highlighter
  if (variable_get('texy_use_syntaxhighlight', FALSE)) {
    $texy_syntaxhighlighter_name = variable_get('texy_syntaxhighlighter_name', '');
    // check name of syntax highlighter
    if ($texy_syntaxhighlighter_name != '') {
      $texy_syntaxhighlighter = $module_path . '/lib/' . $texy_syntaxhighlighter_name . '.php';
      $texy_syntaxhighlighter_dir = $module_path . '/lib/' . $texy_syntaxhighlighter_name;
      if (file_exists($texy_syntaxhighlighter) && file_exists($texy_syntaxhighlighter_dir)) {
        // set handler for /--- code blocks (for configured syntax highlighter)
        require_once $texy_syntaxhighlighter;
        $texy->handler = new myHandler;
      }
      else {
        drupal_set_message(t('Syntax highlighter <em>' . $texy_syntaxhighlighter_name . '</em> is not ready...'),'error');
      }
    }
  }

  // main Texy! filter processing
  $html = $texy->process($text);
  return $html;
}

No v tej implementacii to asi nebude – na PHP5 to chodi bez problemov :(. Vdaka za tipy.

Editoval Havran (18. 7. 2007 8:29)

před 12 lety

Havran
Člen | 20

Takze bug bol nie v Texy! ale vo FSHL – nova verzia 0.4.19 funguje 100%ne… :) (A samozrejme chyba bola aj medzi klavesnicou a stolickou – cely cas som si myslel ze mam nainstalovanu najnovsiu verziu a nakoniec som zistil ze nemam…).