]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/js/tinymce/themes/advanced/js/anchor.js
WordPress 3.5-scripts
[autoinstalls/wordpress.git] / wp-includes / js / tinymce / themes / advanced / js / anchor.js
index b6c5b695c5a11f24f58d4afecb8f843dac48f05b..a3a018635bc8373c9f4630a5b1fbbb3f3d48f379 100644 (file)
@@ -6,7 +6,7 @@ var AnchorDialog = {
 
                this.editor = ed;
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');
 
                this.editor = ed;
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');
-               v = ed.dom.getAttrib(elm, 'name');
+               v = ed.dom.getAttrib(elm, 'name') || ed.dom.getAttrib(elm, 'id');
 
                if (v) {
                        this.action = 'update';
 
                if (v) {
                        this.action = 'update';
@@ -17,7 +17,7 @@ var AnchorDialog = {
        },
 
        update : function() {
        },
 
        update : function() {
-               var ed = this.editor, elm, name = document.forms[0].anchorName.value;
+               var ed = this.editor, elm, name = document.forms[0].anchorName.value, attribName;
 
                if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) {
                        tinyMCEPopup.alert('advanced_dlg.anchor_invalid');
 
                if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) {
                        tinyMCEPopup.alert('advanced_dlg.anchor_invalid');
@@ -29,12 +29,25 @@ var AnchorDialog = {
                if (this.action != 'update')
                        ed.selection.collapse(1);
 
                if (this.action != 'update')
                        ed.selection.collapse(1);
 
+               var aRule = ed.schema.getElementRule('a');
+               if (!aRule || aRule.attributes.name) {
+                       attribName = 'name';
+               } else {
+                       attribName = 'id';
+               }
+
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');
                if (elm) {
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');
                if (elm) {
-                       elm.setAttribute('name', name);
-                       elm.name = name;
-               } else
-                       ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, ''));
+                       elm.setAttribute(attribName, name);
+                       elm[attribName] = name;
+                       ed.undoManager.add();
+               } else {
+                       // create with zero-sized nbsp so that in Webkit where anchor is on last line by itself caret cannot be placed after it
+                       var attrs =  {'class' : 'mceItemAnchor'};
+                       attrs[attribName] = name;
+                       ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', attrs, '\uFEFF'));
+                       ed.nodeChanged();
+               }
 
                tinyMCEPopup.close();
        }
 
                tinyMCEPopup.close();
        }