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

  • Best venues and rates for jet ski and aqua bike rental options in Tenerife Sur
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
Weiter

Neue Kommentare

  • Verwende doch das Tag dafür,
    vor 5 Tagen 12 Stunden
  • Guckst du hier: step by step
    vor 5 Tagen 2 Stunden
  • Guckst du hier: step by step
    vor 5 Tagen 2 Stunden
  • Ich habe ja keine Angst vor
    vor 2 Wochen 12 Stunden
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 2 Wochen 2 Tagen
  • Vielen Dank erst einmal, aber
    vor 2 Wochen 4 Tagen
  • Du hast die "Trusted host
    vor 2 Wochen 4 Tagen
  • Bitte genauer den aktuellen Lösungs-Ansatz beschreiben
    vor 4 Wochen 3 Tagen
  • Git und rsync sind die wichtigsten Werkzeuge
    vor 5 Wochen 6 Stunden
  • Arrrrg. Nix Tabelle :-D /*
    vor 9 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250285
Registrierte User: 20499

Neue User:

  • Rickienurce
  • Inga GuAph
  • Robertolix

» Alle User anzeigen

User nach Punkten sortiert:
wla9464
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 15 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