HTML-Editor (SPAW) für Contenido 4.4.x optimieren!

matze
Beiträge: 106
Registriert: Mi 17. Dez 2003, 00:17
Wohnort: L.E.
Kontaktdaten:

HTML-Editor (SPAW) für Contenido 4.4.x optimieren!

Beitrag von matze » Fr 9. Apr 2004, 17:36

ein hallo an alle editor-tuner,

ich hab hier mal zusammengefasst wie man - jedenfalls aus meiner sicht - den internen contenido-html-editor sehr sinnvoll optimieren kann. dabei möchte ich mich besonders bei emergence für seine tatkräftige unterstützung bedanken!

mit den hier notierten skript-änderungen ist folgendes möglich ...
a) die einbindung und anzeige der style-sheets im SPAW-editor
und
b) die möglichkeit für style-sheet-zuweisungen mit <span>-tags per dropdown


zu a)

1. zuweisung der stylesheet-datei in der benutzer-administration
dort eine gruppe bzw. einen benutzer auswählen und bei "benutzerdefinierte eigenschaften" folgende einträge machen.

-> zum einbinden der gesamten css-datei (achtung! kann nur einzelnen benutzern zugewiesen werden, keinen gruppen!)
wysiwyg
spaw-stylesheet-file
css/format.css

-> zum einbinden einzelner css-elemente
wysiwyg
spaw-styles
headline1;text_klein;text_rot


2. css in editor einbinden
die datei "editor.php" im verzeichnis "contenido\external\wysiwyg\spaw" öffnen und in zeile 25 ...

Code: Alles auswählen

'' /*stylesheet file*/
durch ...

Code: Alles auswählen

$css_stylesheet
ersetzen.


3. datei "spaw_control.config.php" im verzeichnis "contenido\external\wysiwyg\spaw\config" öffnen und ab zeile 100

Code: Alles auswählen

if (is_array($styles))
{
    foreach ($styles as $style)
    {
            $spaw_dropdown_data['style'][$style] = $style;
    }
} else {
        /* Default styles */
    $spaw_dropdown_data['style']['default'] = 'Normal';
    $spaw_dropdown_data['style']['style1'] = 'Style No1';
    $spaw_dropdown_data['style']['style2'] = 'Style No2';
}
durch ...

Code: Alles auswählen

$css_stylesheet = $user->getUserProperty("wysiwyg","spaw-stylesheet-file");

if ($css_stylesheet == false)
{
   $css_stylesheet = "";
} else {
    $css_stylesheet = $cfgClient[$client]["htmlpath"]["frontend"].$css_stylesheet;
}

$styles = $user->getUserProperty("wysiwyg","spaw-styles");

if ($styles == false && $css_stylesheet == "")
{
    // standard settings
    $spaw_dropdown_data['style']['default'] = 'Normal';
    $spaw_dropdown_data['style']['style1'] = 'Style No1';
    $spaw_dropdown_data['style']['style2'] = 'Style No2';
} else {

    if ($styles != false) // check if any styles are defined
    {
        $styles = explode(";",urldecode($styles));
        if (is_array($styles))
        {
            foreach ($styles as $style) // if there are more values
            {
               $spaw_dropdown_data['style'][$style] = $style;
            }
        } else {
            $spaw_dropdown_data['style'][$styles] = $styles; // for one value
        }
    }

    if ($css_stylesheet != "") // get styles from defined stylesheet file
    {
        $styles = file ($css_stylesheet);
        if ($styles) {
            foreach ($styles as $style) {
                if (preg_match("/\.([^\s:,{]*)/i", $style, $style_result)) {
                    // matches all .class in stylesheet, double entries are not possible
                   $spaw_dropdown_data['style'][trim($style_result[1])] = trim($style_result[1]);
                }
            }
            asort($spaw_dropdown_data['style']); // sort styles alphabetically
        } else {
            // stylesheet does not exist
        }
    }
}
ersetzen.

damit sehen die schriftauszeichnungen im SPAW-editor nun wie im frontend bzw. editormodus aus.



zu b)

wer jetzt noch möchte, dass die einzelnen style-sheets auch per <span>-tags ausgezeichnet werden, muss den letzten (optionalen) punkt ausführen.

4. im verzeichnis "contenido\external\wysiwyg\spaw\class" die datei "script.js.php" öffnen und
... ab zeile 423 die drei "trim-funktionen"

Code: Alles auswählen

  // trim functions
  function SPAW_ltrim(txt)
  {
    var spacers = " \t\r\n";
    while (spacers.indexOf(txt.charAt(0)) != -1)
    {
      txt = txt.substr(1);
    }
    return(txt);
  }
  function SPAW_rtrim(txt)
  {
    var spacers = " \t\r\n";
    while (spacers.indexOf(txt.charAt(txt.length-1)) != -1)
    {
      txt = txt.substr(0,txt.length-1);
    }
    return(txt);
  }
  function SPAW_trim(txt)
  {
    return(SPAW_ltrim(SPAW_rtrim(txt)));
  }
durch

Code: Alles auswählen

  // trim functions
  function SPAW_ltrim(txt)
  {
    //Match spaces at beginning of text and replace with a null string
    return txt.replace(/^\s+/,'');
  }
  function SPAW_rtrim(txt)
  {
    //Match spaces at end of text and replace with a null string
    return txt.replace(/\s+$/,'');
  }
  function SPAW_trim(txt)
  {
    //Remove spaces at beginning and end of text
    return(SPAW_ltrim(SPAW_rtrim(txt)));
  }
ersetzen und ...

die function SPAW_style_change (=übernächste funktion)

Code: Alles auswählen

  function SPAW_style_change(editor, sender)
  {
    classname = sender.options[sender.selectedIndex].value;

    window.frames[editor+'_rEdit'].focus();

    var el = SPAW_getParentTag(editor);
    if (el != null && el.tagName.toLowerCase() != 'body')
    {
      if (classname != 'default')
        el.className = classname;
      else
        el.removeAttribute('className');
    }
    else if (el.tagName.toLowerCase() == 'body')
    {
      if (classname != 'default')
        this[editor+'_rEdit'].document.body.innerHTML = '<P class="'+classname+'">'+this[editor+'_rEdit'].document.body.innerHTML+'</P>';
      else
        this[editor+'_rEdit'].document.body.innerHTML = '<P>'+this[editor+'_rEdit'].document.body.innerHTML+'</P>';
    }
    sender.selectedIndex = 0;

    SPAW_update_toolbar(editor, true);
  }
durch ...

Code: Alles auswählen

  function SPAW_style_change(editor, sender)
  {
    classname = sender.options[sender.selectedIndex].value;

    window.frames[editor+'_rEdit'].focus();

    // v2.3 modified version by horwath@opensa.org
    var ttext = "";
    var trange = this[editor+'_rEdit'].document.selection.createRange();

    if (trange != null && this[editor+'_rEdit'].document.selection.type != "Control")
      ttext = trange.htmlText;

    if (SPAW_trim(ttext) == "") { // if no range was selected

      var el = SPAW_getParentTag(editor);

      if (el != null && el.tagName.toLowerCase() != 'body')
      {
        if (classname != 'default' && classname != "")
          el.className = classname;
        else
          if (el.tagName.toLowerCase() != 'span')
            el.removeAttribute('className');
          else
            el.removeNode(); // remove span tag
      }
      else if (el.tagName.toLowerCase() == 'body')
      {
        if (classname != 'default' && classname != "")
          this[editor+'_rEdit'].document.body.innerHTML = '<p class="'+classname+'">'+this[editor+'_rEdit'].document.body.innerHTML+'</p>';
        else
          this[editor+'_rEdit'].document.body.innerHTML = '<p>'+this[editor+'_rEdit'].document.body.innerHTML+'</p>';
      }
    } else { // if range was found

      this[editor+'_rEdit'].document.selection.clear(); // remove selection
      var otext = "556e697175657e537472696e67";         // unique string
      trange.pasteHTML(otext);                          // insert placeholder
      ttext = ttext.replace(/<\/?span[^>]*>/gi,'');     // remove all spans from ttext

      if (classname != 'default' && classname != "")
        ttext = '<span class="'+classname+'">'+ttext+'</span>';

      // replace placeholder string with ttext
      this[editor+'_rEdit'].document.body.innerHTML = this[editor+'_rEdit'].document.body.innerHTML.replace(otext,ttext);

    }
    sender.selectedIndex = 0;

    SPAW_update_toolbar(editor, true);
  }

so ich hoffe ich hab nix vergessen! ;-)
verbesserungen und ergänzungen sind herzlich willkommen!

frohes osterfest,
matze
Zuletzt geändert von matze am Mi 9. Jun 2004, 12:18, insgesamt 3-mal geändert.

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 12. Apr 2004, 14:41

schaut ganz richtig aus... nette zusammenfassung.
ähm popdown -> dropdown
*** make your own tools (wishlist :: thx)

matze
Beiträge: 106
Registriert: Mi 17. Dez 2003, 00:17
Wohnort: L.E.
Kontaktdaten:

Beitrag von matze » Mo 12. Apr 2004, 15:46

danke!
ist geändert!

m.

vc
Beiträge: 10
Registriert: Fr 12. Mär 2004, 10:58
Kontaktdaten:

Beitrag von vc » Mo 12. Apr 2004, 23:22

Hallo!

Ich habe mal all diese Änderungen nachgemacht. Doch wo wird nun das CSS-File definiert, welches er einbinden soll bzw. wie muss ein solches Style aussehen, damit es überhaupt angezeigt wird?

mfg
Robert

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 13. Apr 2004, 09:41

vc hat geschrieben:wo wird nun das CSS-File definiert, welches er einbinden soll
siehe -> zu a) 1. zuweisung der stylesheet-datei in der benutzer-administration

vc hat geschrieben: zw. wie muss ein solches Style aussehen, damit es überhaupt angezeigt wird?
wenn du das dropdown mit style meinst -> es sollten nur .class { xxx } werte aufgelistet werden...
wenn das stylesheet nicht angezeigt wird ist entweder der pfad zum stylesheet falsch, oder das stylesheet ist fehlerhaft.
*** make your own tools (wishlist :: thx)

jlicher
Beiträge: 10
Registriert: Do 15. Apr 2004, 09:05
Kontaktdaten:

Beitrag von jlicher » Do 15. Apr 2004, 09:12

Hallo,

die Anpassungen von SPAW funktionieren recht gut, aber nach der Änderung von "function SPAW_style_change(editor, sender)" erscheint immer folgende Fehlermeldung.

Spaw Error Report

Error in file: http://www.medical-netsolutions.de/cont ... 916&lang=1
Line number: 1751
Message: 'ÿÿÿÿ' ist undefiniert

Ist in der Anpassung noch ein Bug?

Bis dann ...

Jörg

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Do 15. Apr 2004, 09:26

Line number: 1751
Message: 'ÿÿÿÿ' ist undefiniert

Ist in der Anpassung noch ein Bug?
nein die routine ist korrekt...

es scheint jedoch als ob du am ende der datei
class/script.js.php müll stehen hast... (warum auch immer)
*** make your own tools (wishlist :: thx)

jlicher
Beiträge: 10
Registriert: Do 15. Apr 2004, 09:05
Kontaktdaten:

Beitrag von jlicher » Do 15. Apr 2004, 10:08

Fehler beseitigt, jetzt funktioniert alles perfekt.

Danke ...

Jörg

Snoopy
Beiträge: 239
Registriert: Mo 15. Sep 2003, 18:45
Kontaktdaten:

Re: HTML-Editor (SPAW) für Contenido 4.4.x optimieren!

Beitrag von Snoopy » Fr 16. Apr 2004, 11:25

Super Zusammenfassung der Tuning Tips für SPAW !!!
wäre nett wenn Du das in der Contenido FAQ Posten Würdest, Die FAQ benutzt auch BB-Code , sprich Du könntest
das Posting so als Frage und Antwort dort eingeben. Ich müsste das alles neu schreiben und per copy and paste
erledigen.

einfach unter Neues eintragen, der Artikel wird dann von Darth-Vader oder mir freigeschaltet.

http://www.thilo-sommer.de/PHPMyFAQ
Gruß aus Hamburg :wink:

Alex
Beiträge: 174
Registriert: So 20. Jul 2003, 11:31
Kontaktdaten:

Beitrag von Alex » Fr 16. Apr 2004, 16:02

Hallo!

Kommen die Änderungen in die nächste Version von Contenido (4.4.5) rein? Ich glaub, das wäre doch was für alle, oder?

Danke für die Mühen!!


Alex


PS: Obwohl ich hier schon viel über CSS+Contenido gelesen habe, habe ich immer noch eine Frage: Kann ich auch bestimmte Formatierungen (festgelegt durch CSS) über die Benutzereinstellungen drüberbügeln?
Contenido 4.4.4 & 4.5.3-CVS

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 16. Apr 2004, 16:17

Alex hat geschrieben:Obwohl ich hier schon viel über CSS+Contenido gelesen habe, habe ich immer noch eine Frage: Kann ich auch bestimmte Formatierungen (festgelegt durch CSS) über die Benutzereinstellungen drüberbügeln?
ähm ?? wie drüberbügeln ?
*** make your own tools (wishlist :: thx)

Alex
Beiträge: 174
Registriert: So 20. Jul 2003, 11:31
Kontaktdaten:

Beitrag von Alex » Fr 16. Apr 2004, 16:54

sorry, für den Slang...

Ich habe einfach das Problem, das die einzelnen Redakteure unterschiedliche Formatierungen in SPAW benutzen und daher die Seiten sehr unterschiedlich aussehen. Auch wenn ich den Editor schon weitgehend beschnitten habe (also eine geringere Auswahl an Formatierungen zur Verfügung stehen). Zweitens kopieren leider immer noch einige Texte aus Word und fügen somit wiederum andere Schriften etc. ein.

Daher wollte ich einfach fragen, ob es möglich wäre, diese Formatierungen zu übergehen und durch vordefinierte CSS-Styles automatisch zu ersetzen.
Also: Z.B. Egal, welche Schriftart durch den Redakteur eingefügt (z.B. per Copy & Paste) wird, wird für die Darstellung nur Arial verwendet.

Geht so etwas?

Viele Grüße

Alex
Contenido 4.4.4 & 4.5.3-CVS

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 16. Apr 2004, 17:34

Alex hat geschrieben:Geht so etwas?
nein mit css wirst du keinen erfolg haben damit...
*** make your own tools (wishlist :: thx)

Alex
Beiträge: 174
Registriert: So 20. Jul 2003, 11:31
Kontaktdaten:

Beitrag von Alex » Fr 16. Apr 2004, 17:48

@emergence

Danke für die schnelle Antwort

Welche anderen Möglichkeiten hab ich denn? Keine?

Alex
Contenido 4.4.4 & 4.5.3-CVS

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Di 20. Apr 2004, 10:29

Alex hat geschrieben:@emergence

Welche anderen Möglichkeiten hab ich denn? Keine?

Alex
Es gibt doch die Funktion, HTML-aufräumen, Styles entfernen. Vielleich kannst du die automatisch beim abspeichern mit aufrufen. Etwas brutal aber ... :wink:

Bitte nur nicht fragen wo :?:

Gruß Florian

Gesperrt