Seite 1 von 1
Anker und ID´s
Verfasst: Mi 11. Apr 2007, 18:27
von erikawiese
Bevor ich auf die Suche verwiesen werde:
Ja ich hab mich ausführlich mit Anker und Contenido / TinyMCE beschäftigt (viel mehr als das mir lieb ist)
Und bevor man mich zu Moxiecode schickt:
Hab da schon erfolglos recherschiert und mein English kann das nicht beschreiben.
Zum Problem:
Meine Anker benötigen ID´s, damit die JS-Scrolleiste funktioniert. TinyMCE erzeugt Anker in diesem Stil:
was ich benötige ist das hier:
Wo muss ich denn eingreifen um das zu ändern? Geht das überhaupt?
Verfasst: Do 12. Apr 2007, 14:52
von emergence
eingreifen müsste man vermutlich hier:
js/tinymce/themes/advanced/jscripts/anchor.js
und wenn man sich dort den code etwas genauer ansieht, wird man bemerken das id dort für was anderes verwendet wird... somit
Geht das überhaupt?
ich sag da nein...
Verfasst: Do 12. Apr 2007, 16:04
von erikawiese
emergence hat geschrieben:
ich sag da nein...
Ich hab´s befürchtet *grrrr*, vielen Dank für die Antwort.
Verfasst: Do 12. Apr 2007, 20:41
von trixta
Benutz doch getElementbyName statt getElementbyID in deinem JavaScript:
http://de.selfhtml.org/javascript/objek ... ts_by_name
Verfasst: Fr 13. Apr 2007, 08:23
von erikawiese
trixta hat geschrieben:Benutz doch getElementbyName statt getElementbyID in deinem JavaScript:
Ich selber hab das Script nicht geschrieben. Der Entwickler ist der hat sich aber grundlegende GEdanken gemacht, warum er mit ID´s arbeitet (nicht zuletztt der Standardkonformität wegen).
Trotzdem Danke

Verfasst: Fr 13. Apr 2007, 08:58
von Dodger77
Naja, wenn's denn sein muss, kann man die Datei "contenido/external/wysiwyg/tinymce2/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js" ändern zu:
Code: Alles auswählen
var action, element;
function init() {
tinyMCEPopup.resizeToInnerSize();
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name");
var img = inst.getFocusElement();
action = 'insert';
if (anchor != null) {
element = anchor;
action = "update";
}
if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") {
element = img;
action = "update";
}
if (action == "update")
document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name");
document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
}
function insertAnchor() {
var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
var name = document.forms[0].anchorName.value;
tinyMCEPopup.execCommand("mceBeginUndoLevel");
if (action == "update") {
if (element.nodeName == "IMG")
element.setAttribute("title", name);
else
element.setAttribute("name", name);
element.setAttribute("id", name);
} else {
var rng = inst.getRng();
if (rng.collapse)
rng.collapse(false);
name = name.replace(/&/g, '&');
name = name.replace(/\"/g, '"');
name = name.replace(/</g, '<');
name = name.replace(/>/g, '>');
html = '<a name="' + name + '" id="' + name + '"></a>';
tinyMCEPopup.execCommand("mceInsertContent", false, html);
tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
}
tinyMCEPopup.execCommand("mceEndUndoLevel");
tinyMCE.triggerNodeChange();
tinyMCEPopup.close();
}
Vor dem Aufruf des TinyMCE dann unbedingt des Browsercache leeren. Außerdem wird das natürlich nur funktionieren, wenn für das <a>-Element auch das Attribut "id" zugelassen ist (Stichwort: valid_elements, extended_valid_elements).
Verfasst: Mo 16. Apr 2007, 08:42
von erikawiese
Vielen Dank Dodger, *ich liebe deine Lösungen*
Allerdings produziert die TinyMCE Engine jetzt Fehler!
Verfasst: Mo 16. Apr 2007, 12:50
von stony
Seit wann produziert Tiny solche Ausdrücke:
Kommt sowas in HTML 4.0 vor? Bei mir basieren alle Seite auf XHTML, da passiert das auf jeden Fall nicht.
Verfasst: Mo 16. Apr 2007, 20:33
von erikawiese
stony hat geschrieben:Seit wann produziert Tiny solche Ausdrücke:
Genaugenommen wird standardmäßig so etwas produziert:
Verfasst: Di 17. Apr 2007, 00:21
von HerrB
Unwarscheinlich (fehlende Anführungszeichen, Tags groß geschrieben). Das ist nicht der tinyMCE, das ist das Inline-Editing. Um das zu verhindern, konsequent FF verwenden bzw. Inline-editing deaktivieren (suche im Forum).
Gruß
HerrB
Verfasst: Di 17. Apr 2007, 09:50
von stony
genau das meine ich doch auch! Tiny produziert im validen html code, sowohl bei HTML 4.1 oder XHTML.
gruß stony
Verfasst: Di 17. Apr 2007, 10:12
von Dodger77
stony hat geschrieben:Tiny produziert im validen html code, sowohl bei HTML 4.1 oder XHTML.
Gerade in Bezug auf die Anker aber wohl eher nicht. Egal ob ich HTML 4.01, XHTML 1.0 oder 1.1 verwende, sehen die Anker im Quelltext so aus:
Das geht für XHTML 1.0 evtl. noch in Ordnung, aber nicht für 1.1:
http://de.selfhtml.org/html/xhtml/unter ... eise_anker
Verfasst: Di 17. Apr 2007, 11:26
von stony
ups, stimmt bei 1.1 gilt es dann nicht mehr... *Besserwisser!*
aber das kann man ihm doch relativ einfach beibringen ;-)