[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Glossar für Redaxo 4 (kleines Problem) - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Hirbod
Beiträge: 435
Registriert: 15. Jan 2008, 14:46

Glossar für Redaxo 4 (kleines Problem)

19. Feb 2008, 12:20

Hallo User,

ich habe das Glossar für R3 soweit umgeändert, das es unter R4 lauffähig ist, nur habe ich jetzt ein Problem, wenn mir bei der Lösung geholfen werden kann, bin ich bereit eine lauffähige Version davon zur Verfügung zu stellen:

Code:

Code: Alles auswählen

<?php

/**
 * Glossar Addon
 * <
 * @author staab[at]public-4u[dot]de Markus Staab
 * @author <a href="http://www.public-4u.de">www.public-4u.de</a>
 * @package redaxo3
 * @version $Id: function_replace.inc.php,v 1.4 2008/01/25 09:48:36 kills Exp $
 */

function rex_glossar_replace($params)
{
  global $REX, $mypage, $I18N_GLOSSAR;
  $string = $params['subject'];

  // Aufteilen des Strings, damit nur im Body ersetzt wird
  $bodystart = strpos($string, '<p>');
  $header = substr($string, 0, $bodystart);
  $body = substr($string, $bodystart);

  // Bereiche ersetzen, in denen keine Glossar ersetzungen durchgeführt werden sollen
  // welche nicht innerhalb des Tags sind
  $back_srch = array ();
  $back_rplc = array ();
  $mtchs = array ();
  if (preg_match_all('/(<textarea.*?>(.*?)<\/textarea>)/s', $body, $mtchs))
  {
    foreach ($mtchs[2] as $key => $mtch)
    {
      $back_srch[$key] = '###SPACER###' . $key . '###';
      $back_rplc[$key] = $mtch;
      $body = str_replace($mtch, '###SPACER###' . $key . '###', $body);
    }
  }

  $sql = new sql;
  //$sql->debugsql = true;
  $sql->setQuery('SELECT * FROM rex_13_glossar, rex_13_glossar_lang WHERE language = lang_id ORDER BY CHAR_LENGTH(shortcut) DESC');

  // IE doesnt support <abbr>
  if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE'))
  {
    $replacetag = 'acronym';
  }
  else
  {
    $replacetag = 'abbr';
  }

  $replaceformat = '<' . $replacetag . ' class=\"abbr\" title=\"%desc% (%lang%)\">%short%</' . $replacetag . '>';

  $searches = array ();
  $replaces = array ();
  for ($i = 0; $i < $sql->getRows(); $i++)
  {
    $language = htmlspecialchars($sql->getValue('lang_name'));
    $shortcut = htmlspecialchars($sql->getValue('shortcut'));
    $description = htmlspecialchars($sql->getValue('description'));
    $casesense = $sql->getValue('casesense');

    // Escape Shortcut for preg_match
    $escapedshortcut = preg_quote($shortcut, '/');
    $escapedentitiesshortuct = htmlentities($escapedshortcut);

    if($escapedentitiesshortuct == $escapedshortcut)
      $search = '/((<[^>]*)|' . $escapedshortcut . ')/e';
    else
      $search = '/((<[^>]*)|' . $escapedshortcut . '|'. $escapedentitiesshortuct .')/e';

    $replacer = _rex_glossar_parse_replace_format($replaceformat, array (
      'lang' => $language,
      'desc' => $description,
      'short' => $shortcut
    ));
    $replace = '"\2"=="\1" && strpos( "\1", "<' . $replacetag . '>") === false ? "\1":"' . $replacer . '"';

    if ($casesense == 0)
    {
      $search .= 'i';
    }

    $searches[] = $search;
    $replaces[] = $replace;

    $sql->next();
  }

  // Ersetzungen durchführen
  $body = stripslashes(preg_replace($searches, $replaces, $body));

  // Vorher ausgeschlossene Bereiche wieder einpflegen
  $body = str_replace($back_srch, $back_rplc, $body);

  return $header . $body;
}

function _rex_glossar_parse_replace_format($replaceformat, $vars)
{
  if (!is_array($vars))
  {
    trigger_error('rexAddon[Glossar]: Unexpected type "' . gettype($vars) . '" for $vars. Expecting type Array!');
  }

  if (count($vars) == 0)
  {
    trigger_error('rexAddon[Glossar]: Array $vars must not be empty!');
  }

  foreach ($vars as $search => $replace)
  {
    $replaceformat = str_replace('%' . $search . '%', $replace, $replaceformat);
  }

  return $replaceformat;
}
?>
Ich hab soweit eingestellt, das nur <p> elemete Bevorzugt werden, anstatt Body. Das Ersetzen funktioniert auch, nur passiert folgendes:

location.href=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'index.php?article_id=14\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'

Bei Hochkommas ' werden immer und überall zig Backslahes angehängt. Weiss jmd. wie das behoben werden kann? Für jede Hilfe bin ich dankbar

Hirbod
Beiträge: 435
Registriert: 15. Jan 2008, 14:46

19. Feb 2008, 13:45

Habs selbst gefixt:

Aus:
// Vorher ausgeschlossene Bereiche wieder einpflegen
$body = str_replace($back_srch, $back_rplc, $body);

hab ich:

// Vorher ausgeschlossene Bereiche wieder einpflegen
$body = str_replace($back_srch, $back_rplc, $body);
$body = str_replace('\\', '', $body);

gemacht, und es geht wunderbar, läuft alles einwandfrei :)

FrankH
Beiträge: 71
Registriert: 11. Nov 2007, 16:42

26. Mai 2008, 01:47

Ich wollte auch den Glossar (http://www.redaxo.de/180-Addondetails.html?addon_id=13) in Redaxo 4.1 verwenden. Jedoch habe ich bereit bei der Installation ein Problem. Es erscheint folgende Meldung:
Fatal error: Call to undefined function rex_installaddon() in /srv/www/htdocs/web81/html/redaxo/include/addons/glossar/install.inc.php on line 19
Ich habe zwar die Änderung in der "function_replace.inc.php" gemacht, jedoch greift die Installation noch gar nicht so weit.

Wie müsste die Installation aussehen, damit es mir redaxo 4 läuft?

Liebe Grüße
FrankH

Hirbod
Beiträge: 435
Registriert: 15. Jan 2008, 14:46

10. Sep 2008, 17:43

Ich hab das Glossar 4.1 Nutzbar angepasst. Dank Markus auch noch einige Änderungen am Addon selbst (Wörter werden Global nicht 100 mal gekennzeichnet, sondern immer nur 1 mal)

Könnt ich zur Verfügung stellen :)

FrankH
Beiträge: 71
Registriert: 11. Nov 2007, 16:42

10. Sep 2008, 22:21

Hallo,

das wäre doch Super, wenn Du dies bereitstellen könntest. :D

Hirbod
Beiträge: 435
Registriert: 15. Jan 2008, 14:46

12. Sep 2008, 12:02

Gerne doch,

bin sogut ich kann für die Community da :-)

http://softloop.de/glossar_inkl_addon_framework.zip

Falls du Probleme bei der Installation hast, oder irgendwas nicht funktioniert, einfach eine Mail an hirbod@softloop.net

Ich helfe gerne weiter

Achja, erst das Addon_Framework istallieren, danach das Glossar.
Viel Spaß damit

Gruß, Hirbod

marc
Beiträge: 73
Registriert: 10. Mai 2006, 12:12
Wohnort: Lux

18. Mai 2009, 11:53

Bitte doch einen Hinweis zu dieser Version auf der Addonseite (http://www.redaxo.de/180-0-addon-detail ... ddon_id=13) anbringen, damit auch zukünftig User Bescheid wissen, dass das Glossar auch unter Version 4 funktioniert!

Zurück zu „Allgemeines [R4]“