Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

FCK Editor und Diff

Eingetragen von Schnittmenge@dr... (288)
am 08.04.2009 - 02:02 Uhr in
  • Modul-Entwicklung
  • Drupal 5.x

Wer das Diff Modul und den FCK Editor verwendet wird eintäuscht sein. HTML Tags und Entities werden unübersichtlich in eine Zeile geschrieben.

Lösung Bearbeitung der node.inc im diff Modul Ordner:

  1. Html Tags weg: strip_tags
  2. Entities weg: html_entity_decode
  3. Zeilen einfügen: str_replace p-Tags

Die Diffs sehen so aus: http://de.consenser.org/node/1778/revisions/view/2780/2911
Links ist alles in Ordnung, rechts wird die Entities nicht umgewandelt, da im folgenden Code, die Zeile für html_entity_decode für new_node fehlt. Würde ich diese Zeile einsetzen wird der diff nicht mehr vollständig angezeigt. Warum? Was ist die Lösung?

Mein aktueller Code sieht so aus:

<?php

/**
* Implementation of hook_diff() for node.module (body and title).
*/
function node_diff(&$old_node, &$new_node) {
  $result = array();
  $result[] = array(
    'name' => t('Title'),
    'old' => array($old_node->title),
    'new' => array($new_node->title),
    'format' => array(
      'show_header' => false,
    )
  );
   // Make a diff depending on the diff type of the node.
  $body = $old_node->body;
  $body = str_replace('<p>',"\n",$body);
  $body = str_replace('</p>',' ',$body);
  $body = strip_tags($body);
  $body = html_entity_decode($body);
  $old_node->body = $body;

  $body = $new_node->body;
  $body = str_replace('<p>',"\n",$body);
  $body = str_replace('</p>',' ',$body);
   $body = strip_tags($body);

  $new_node->body = $body;
 
  $result[] = array(
    'name' => t('Body'),
   'old' => explode("\n", $old_node->body),
    'new' => explode("\n", $new_node->body),
  );
  return $result;
}

‹ [UPDATE] Nach dem Speichern bleibt die Ansichtsseite leer Neues Googlemap Modul ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Dein Post eine Frage sein sollte ...

Eingetragen von quiptime (4972)
am 08.04.2009 - 02:35 Uhr
Zitat:

HTML Tags und Entities werden unübersichtlich in eine Zeile geschrieben

Das ist selbst organisiert:

<?php
$body
= str_replace('<p>',"\n",$body);
$body = str_replace('</p>',' ',$body);
?>

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo quiptime

Eingetragen von Schnittmenge@dr... (288)
am 08.04.2009 - 09:13 Uhr

schön von Dir ein Lebenszeichen zu bekommen. Wir vermissen Dich Dienstag im DVC.

Ich habe die ursprüngliche node.inc wieder aktiviert, damit man das Problem sieht.

Wenn ich $old_node aufbereite, sieht es vielversprechend aus (linke Seite -), jedoch wenn ich das selbe für $new_node mache (rechte Seite +), kommt irgendwie Mist raus und ich stehe im Wald. Ich vermute das Problem liegt in meiner nachträglichen Codeaufbereitung, die auch Einfluss auf die Diff Erstellung nimmt. Wie würdest Du weiter vorgehen?

Super neue Webpage! Der Name Quiptime Group klinkt super!

Saludos,
Schnittmenge

  • Anmelden oder Registrieren um Kommentare zu schreiben

Problem gelöst

Eingetragen von Schnittmenge@dr... (288)
am 10.04.2009 - 22:56 Uhr

Nach dem die Benutzung von html_entity_decode zu unerwünschte Ergebnisse geführt hat, habe ich jetzt die wichtigsten Entity einfach einzel ersetzt. Jetzt funktioniert es! Beispiel Diff: http://de.consenser.org/node/1854/revisions/view/2985/3002

Der Code:

<?php
// $Id: node.inc,v 1.3 2008/03/05 21:03:17 weitzman Exp $
// ^don't know what to do here^

/*
* Implementation of hook_diff() for node.module (body and title).


modified 2009.04.10 by schnittmenge

*/
function node_diff(&$old_node, &$new_node) {
 
 
$result = array();
 
$type = node_get_types('type', $new_node);
 
$result['title'] = array(
   
'name' => $type->title_label,
   
'old' => array($old_node->title),
   
'new' => array($new_node->title),
   
'format' => array(
       
'show_header' => false,
     )
   );
 
// Make a diff depending on the diff type of the node.

 
if ($type->has_body) {

   
$result['body'] = array(
     
'name' => t('Body'),
     
'old' => explode("\n", node_diff_strip_html($old_node->body)),
     
'new' => explode("\n", node_diff_strip_html($new_node->body)),

    );

    }
   return
$result;   
}

/**
* Insert newlines in HTML, replace special characters and remove all tags.
*/
function node_diff_strip_html($text) {

 
// Replace &nbsp;
 
$text = str_replace("&nbsp;", " ", $text);

 
// Replace entity
$uml_ersatz = array("&auml;"=>"ä",
                   
"&ouml;"=>"ö",
                   
"&uuml;"=>"ü",
                   
"&Aacute;"=>"Á",
                   
"&Eacute;"=>"É",
                   
"&Iacute;"=>"Í",
                   
"&Ntilde;"=>"Ñ",
                   
"&Oacute;"=>"Ó",
                   
"&Uacute;"=>"Ú",
                   
"&aacute;"=>"á",
                   
"&eacute;"=>"é",
                   
"&iacute;"=>"í",
                   
"&ntilde;"=>"ñ",
                   
"&oacute;"=>"ó",
                   
"&uacute;"=>"ú",
                   
"&laquo;"=>"«",
                   
"&raquo;"=>"»",
                   
"&iquest;"=>"¿",
                   
"&euro;"=>"€",
                   
"&amp;"=>"&",
                   
"&quot;"=>"''",
                   
"&sect;"=>"§",
                   
"&szlig;"=>"ß",
                   
"&Auml;"=>"Ä",
                   
"&Ouml;"=>"Ö",
                   
"&Uuml;"=>"Ü");
$text = strtr($text,$uml_ersatz);

 
 
 
 
// Todo: maybe implement a generic solution for encoded symbols using html_entity_decode() - unfortunly does not work!!!

  // Replace HTML breaks with newlines
 
$text = str_replace("<br/>", "\n", $text);


 
//EFD ADDDED - replace more BR's
  //(maybe would work better as an array of tags or module setting)
 
$text = str_replace("<br />", "\n", $text);
 
$text = str_replace("<br>", "\n", $text);
 
 
// Replace list elements with newlies
 
$text = str_replace("</li>", "\n", $text);
 
// Replace paragraphs with newlies
 
$text = str_replace("</p>", "\n", $text);
 
// Replace table cells with newlines
 
$text = str_replace("</td>", "\n", $text);
 
// Replace divs with newlines
 
$text = str_replace("</div>", "\n", $text);
 
$text = str_replace("</h3>", "\n", $text);
  
$text = str_replace("</h4>", "\n", $text);

 
// Replace image tags with the image location
  // Todo: maybe alt and title attribute can also be displayed
 
$text = preg_replace('#<img(.*)(src="([^"]+)")([^/]*)/>#', '[image:$3]', $text);

 
// Replace link tags with the link location
  // Todo: maybe title attribute can also be displayed
 
$text = preg_replace('#<a(.*)(href="([^"]+)")([^>]*)>#', '[link:$3]', $text);
 
// Replace link endings
 
$text = str_replace("</a>", "[link]", $text);

 
// Todo: check if other tags need special treatment as well
  // Strip all remaining tags
 
 
$text = preg_replace("#</?[a-zA-Z]+(\s[^>]*)?>
#", "", $text);
 
    $text = strip_tags($text);

 
return $text;
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
Weiter

Neue Kommentare

  • Danke ich werde mir die
    vor 17 Stunden 6 Minuten
  • anyone has a working Betaflight mirror right now?
    vor 2 Tagen 12 Stunden
  • Vielen Dank für Ihren
    vor 2 Tagen 17 Stunden
  • Composer ist sehr ratsam
    vor 4 Tagen 16 Stunden
  • Vielen Dank für den
    vor 1 Woche 2 Stunden
  • Die alten CMS Vergleiche von contentmanager.de
    vor 1 Woche 14 Stunden
  • Gut gemacht
    vor 1 Woche 14 Stunden
  • Layout Builder etc. z.B. für Landing Pages
    vor 1 Woche 15 Stunden
  • Links
    vor 1 Woche 3 Tagen
  • Moin,wow, sehr gutes
    vor 1 Woche 4 Tagen

Statistik

Beiträge im Forum: 250315
Registrierte User: 20561

Neue User:

  • rofilm
  • Cruzorerm
  • Plandkeews

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 32 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association