Changeset 3847
- Timestamp:
- 06/16/08 12:37:42 (5 months ago)
- Files:
-
- tracwysiwygplugin/0.10/tests/testcase.js (modified) (1 diff)
- tracwysiwygplugin/0.10/tracwysiwyg/htdocs/wysiwyg.js (modified) (10 diffs)
- tracwysiwygplugin/0.11/tests/testcase.js (modified) (1 diff)
- tracwysiwygplugin/0.11/tracwysiwyg/htdocs/wysiwyg.js (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tracwysiwygplugin/0.10/tests/testcase.js
r3414 r3847 670 670 "head !http://localhost/ !wiki:TracLinks [[BR]]tail" ].join("\n")); 671 671 }); 672 673 if (window.getSelection) { 674 unit.add("block + br", function() { 675 function br() { return element("br"); } 676 function br_moz() { return element("br", { "type": "_moz" }); } 677 var wikitext = [ 678 "text, br{_moz}", 679 "", 680 "text'', br[[BR]]''", 681 "", 682 "||1,1[[BR]]||||1,3||", 683 "||||2,2[[BR]][[BR]]||", 684 "", 685 " * list, br[[BR]]", 686 " * list, br{_moz}", 687 " * ", 688 "", 689 "text, br[[BR]]" ].join("\n") 690 generateWikitext.call(this, 691 fragment( 692 element("p", "text, br{_moz}", br_moz()), 693 element("p", "text", element("i", ", br", br()), br_moz()), 694 element("table", { "class": "wiki" }, 695 element("tbody", 696 element("tr", 697 element("td", "1,1", br(), br_moz()), 698 element("td", br_moz()), 699 element("td", "1,3", br_moz())), 700 element("tr", 701 element("td", br_moz()), 702 element("td", "2,2", br(), br(), br_moz())))), 703 element("ul", 704 element("li", "list, br", br()), 705 element("li", "list, br{_moz}", br_moz()), 706 element("li")), 707 element("p", "text, br", br())), 708 wikitext); 709 generateFragment.call(this, 710 fragment( 711 element("p", "text, br{_moz}"), 712 element("p", "text", element("i", ", br", br()), br_moz()), 713 element("table", { "class": "wiki" }, 714 element("tbody", 715 element("tr", 716 element("td", "1,1", br(), br_moz()), 717 element("td", br_moz()), 718 element("td", "1,3")), 719 element("tr", 720 element("td", br_moz()), 721 element("td", "2,2", br(), br(), br_moz())))), 722 element("ul", 723 element("li", "list, br", br(), br_moz()), 724 element("li", "list, br{_moz}"), 725 element("li", br_moz())), 726 element("p", "text, br", br(), br_moz())), 727 wikitext); 728 }); 729 } 730 else { 731 unit.add("block + br", function() { 732 function br() { return element("br"); } 733 var wikitext = [ 734 "text, br{_moz}", 735 "", 736 "text'', br[[BR]]''", 737 "", 738 "||1,1[[BR]]||||1,3||", 739 "||||2,2[[BR]][[BR]]||", 740 "", 741 " * list, br[[BR]]", 742 " * list, br{_moz}", 743 " * ", 744 "", 745 "text, br[[BR]]" ].join("\n") 746 generate.call(this, 747 fragment( 748 element("p", "text, br{_moz}"), 749 element("p", "text", element("i", ", br", br())), 750 element("table", { "class": "wiki" }, 751 element("tbody", 752 element("tr", 753 element("td", "1,1", br()), 754 element("td"), 755 element("td", "1,3")), 756 element("tr", 757 element("td"), 758 element("td", "2,2", br(), br())))), 759 element("ul", 760 element("li", "list, br", br()), 761 element("li", "list, br{_moz}"), 762 element("li")), 763 element("p", "text, br", br())), 764 wikitext); 765 }); 766 } 672 767 673 768 unit.add("citation", function() { tracwysiwygplugin/0.10/tracwysiwyg/htdocs/wysiwyg.js
r3414 r3847 534 534 if (fragment.childNodes.length == 0) { 535 535 var paragraph = d.createElement("p"); 536 if (paragraph.addEventListener) { 537 paragraph.appendChild(d.createElement("br")); 538 } 536 this.appendBogusLineBreak(paragraph); 539 537 fragment.appendChild(paragraph); 540 538 } … … 1527 1525 else { 1528 1526 list = getSelfOrAncestor(holder, "li"); 1527 self.appendBogusLineBreak(list); 1529 1528 container = list.parentNode; 1530 1529 } … … 1573 1572 var h = holder; 1574 1573 var target = getSelfOrAncestor(h, "li"); 1575 holder = (target ? target.parentNode : h).parentNode; 1574 if (target) { 1575 self.appendBogusLineBreak(target); 1576 holder = target.parentNode.parentNode; 1577 } 1578 else { 1579 holder = h.parentNode; 1580 } 1576 1581 listDepth.pop(); 1577 1582 } … … 1646 1651 if (target != fragment) { 1647 1652 target = getSelfOrAncestor(target, "p"); 1653 self.appendBogusLineBreak(target); 1648 1654 } 1649 1655 holder = target.parentNode; … … 1670 1676 h = holder; 1671 1677 tbody = getSelfOrAncestor(h, "tbody"); 1678 } 1679 1680 if (inTableRow) { 1681 var cell = getSelfOrAncestor(h, "td"); 1682 if (cell) { 1683 self.appendBogusLineBreak(cell); 1684 } 1672 1685 } 1673 1686 … … 1938 1951 } 1939 1952 } 1953 closeToFragment(); 1940 1954 1941 1955 return fragment; … … 2366 2380 break; 2367 2381 case "br": 2368 if (node. nextSibling) {2382 if (node.getAttribute("type") != "_moz") { 2369 2383 var value; 2370 2384 if (inCodeBlock) { … … 2621 2635 2622 2636 if (window.getSelection) { 2637 TracWysiwyg.prototype.appendBogusLineBreak = function(element) { 2638 var wikiInlineTags = this.wikiInlineTags; 2639 var last = element.lastChild; 2640 for ( ; ; ) { 2641 if (!last) { 2642 break; 2643 } 2644 if (last.nodeType != 1) { 2645 return; 2646 } 2647 var name = last.tagName.toLowerCase(); 2648 if (name == "br" && last.getAttribute("type") != "_moz") { 2649 break; 2650 } 2651 if (!(name in wikiInlineTags)) { 2652 return; 2653 } 2654 last = last.lastChild || last.previousSibling; 2655 } 2656 var br = this.contentDocument.createElement("br"); 2657 br.setAttribute("type", "_moz"); 2658 element.appendChild(br); 2659 }; 2623 2660 TracWysiwyg.prototype.tableHTML = function(id, row, col) { 2624 2661 var html = this._tableHTML(row, col); 2625 return html.replace(/<td><\/td>/g, "<td><br /></td>").replace(/<td>/, '<td id="' + id + '">');2662 return html.replace(/<td><\/td>/g, '<td><br type="_moz" /></td>').replace(/<td>/, '<td id="' + id + '">'); 2626 2663 }; 2627 2664 TracWysiwyg.prototype.insertTableCell = function(row, index) { 2628 2665 var cell = row.insertCell(index); 2629 cell.appendChild(this.contentDocument.createElement("br"));2666 this.appendBogusLineBreak(cell); 2630 2667 return cell; 2631 2668 }; … … 2787 2824 } 2788 2825 else if (document.selection) { 2826 TracWysiwyg.prototype.appendBogusLineBreak = function(element) { }; 2789 2827 TracWysiwyg.prototype.tableHTML = function(id, row, col) { 2790 2828 var html = this._tableHTML(row, col); … … 3037 3075 } 3038 3076 else { 3077 TracWysiwyg.prototype.appendBogusLineBreak = function(element) { }; 3039 3078 TracWysiwyg.prototype.insertTableCell = function(row, index) { return null }; 3040 3079 TracWysiwyg.prototype.getFocusNode = function() { return null }; tracwysiwygplugin/0.11/tests/testcase.js
r3414 r3847 670 670 "head !http://localhost/ !wiki:TracLinks [[BR]]tail" ].join("\n")); 671 671 }); 672 673 if (window.getSelection) { 674 unit.add("block + br", function() { 675 function br() { return element("br"); } 676 function br_moz() { return element("br", { "type": "_moz" }); } 677 var wikitext = [ 678 "text, br{_moz}", 679 "", 680 "text'', br[[BR]]''", 681 "", 682 "||1,1[[BR]]||||1,3||", 683 "||||2,2[[BR]][[BR]]||", 684 "", 685 " * list, br[[BR]]", 686 " * list, br{_moz}", 687 " * ", 688 "", 689 "text, br[[BR]]" ].join("\n") 690 generateWikitext.call(this, 691 fragment( 692 element("p", "text, br{_moz}", br_moz()), 693 element("p", "text", element("i", ", br", br()), br_moz()), 694 element("table", { "class": "wiki" }, 695 element("tbody", 696 element("tr", 697 element("td", "1,1", br(), br_moz()), 698 element("td", br_moz()), 699 element("td", "1,3", br_moz())), 700 element("tr", 701 element("td", br_moz()), 702 element("td", "2,2", br(), br(), br_moz())))), 703 element("ul", 704 element("li", "list, br", br()), 705 element("li", "list, br{_moz}", br_moz()), 706 element("li")), 707 element("p", "text, br", br())), 708 wikitext); 709 generateFragment.call(this, 710 fragment( 711 element("p", "text, br{_moz}"), 712 element("p", "text", element("i", ", br", br()), br_moz()), 713 element("table", { "class": "wiki" }, 714 element("tbody", 715 element("tr", 716 element("td", "1,1", br(), br_moz()), 717 element("td", br_moz()), 718 element("td", "1,3")), 719 element("tr", 720 element("td", br_moz()), 721 element("td", "2,2", br(), br(), br_moz())))), 722 element("ul", 723 element("li", "list, br", br(), br_moz()), 724 element("li", "list, br{_moz}"), 725 element("li", br_moz())), 726 element("p", "text, br", br(), br_moz())), 727 wikitext); 728 }); 729 } 730 else { 731 unit.add("block + br", function() { 732 function br() { return element("br"); } 733 var wikitext = [ 734 "text, br{_moz}", 735 "", 736 "text'', br[[BR]]''", 737 "", 738 "||1,1[[BR]]||||1,3||", 739 "||||2,2[[BR]][[BR]]||", 740 "", 741 " * list, br[[BR]]", 742 " * list, br{_moz}", 743 " * ", 744 "", 745 "text, br[[BR]]" ].join("\n") 746 generate.call(this, 747 fragment( 748 element("p", "text, br{_moz}"), 749 element("p", "text", element("i", ", br", br())), 750 element("table", { "class": "wiki" }, 751 element("tbody", 752 element("tr", 753 element("td", "1,1", br()), 754 element("td"), 755 element("td", "1,3")), 756 element("tr", 757 element("td"), 758 element("td", "2,2", br(), br())))), 759 element("ul", 760 element("li", "list, br", br()), 761 element("li", "list, br{_moz}"), 762 element("li")), 763 element("p", "text, br", br())), 764 wikitext); 765 }); 766 } 672 767 673 768 unit.add("citation", function() { tracwysiwygplugin/0.11/tracwysiwyg/htdocs/wysiwyg.js
r3414 r3847 534 534 if (fragment.childNodes.length == 0) { 535 535 var paragraph = d.createElement("p"); 536 if (paragraph.addEventListener) { 537 paragraph.appendChild(d.createElement("br")); 538 } 536 this.appendBogusLineBreak(paragraph); 539 537 fragment.appendChild(paragraph); 540 538 } … … 1527 1525 else { 1528 1526 list = getSelfOrAncestor(holder, "li"); 1527 self.appendBogusLineBreak(list); 1529 1528 container = list.parentNode; 1530 1529 } … … 1573 1572 var h = holder; 1574 1573 var target = getSelfOrAncestor(h, "li"); 1575 holder = (target ? target.parentNode : h).parentNode; 1574 if (target) { 1575 self.appendBogusLineBreak(target); 1576 holder = target.parentNode.parentNode; 1577 } 1578 else { 1579 holder = h.parentNode; 1580 } 1576 1581 listDepth.pop(); 1577 1582 } … … 1646 1651 if (target != fragment) { 1647 1652 target = getSelfOrAncestor(target, "p"); 1653 self.appendBogusLineBreak(target); 1648 1654 } 1649 1655 holder = target.parentNode; … … 1670 1676 h = holder; 1671 1677 tbody = getSelfOrAncestor(h, "tbody"); 1678 } 1679 1680 if (inTableRow) { 1681 var cell = getSelfOrAncestor(h, "td"); 1682 if (cell) { 1683 self.appendBogusLineBreak(cell); 1684 } 1672 1685 } 1673 1686 … … 1938 1951 } 1939 1952 } 1953 closeToFragment(); 1940 1954 1941 1955 return fragment; … … 2366 2380 break; 2367 2381 case "br": 2368 if (node. nextSibling) {2382 if (node.getAttribute("type") != "_moz") { 2369 2383 var value; 2370 2384 if (inCodeBlock) { … … 2621 2635 2622 2636 if (window.getSelection) { 2637 TracWysiwyg.prototype.appendBogusLineBreak = function(element) { 2638 var wikiInlineTags = this.wikiInlineTags; 2639 var last = element.lastChild; 2640 for ( ; ; ) { 2641 if (!last) { 2642 break; 2643 } 2644 if (last.nodeType != 1) { 2645 return; 2646 } 2647 var name = last.tagName.toLowerCase(); 2648 if (name == "br" && last.getAttribute("type") != "_moz") { 2649 break; 2650 } 2651 if (!(name in wikiInlineTags)) { 2652 return; 2653 } 2654 last = last.lastChild || last.previousSibling; 2655 } 2656 var br = this.contentDocument.createElement("br"); 2657 br.setAttribute("type", "_moz"); 2658 element.appendChild(br); 2659 }; 2623 2660 TracWysiwyg.prototype.tableHTML = function(id, row, col) { 2624 2661 var html = this._tableHTML(row, col); 2625 return html.replace(/<td><\/td>/g, "<td><br /></td>").replace(/<td>/, '<td id="' + id + '">');2662 return html.replace(/<td><\/td>/g, '<td><br type="_moz" /></td>').replace(/<td>/, '<td id="' + id + '">'); 2626 2663 }; 2627 2664 TracWysiwyg.prototype.insertTableCell = function(row, index) { 2628 2665 var cell = row.insertCell(index); 2629 cell.appendChild(this.contentDocument.createElement("br"));2666 this.appendBogusLineBreak(cell); 2630 2667 return cell; 2631 2668 }; … … 2787 2824 } 2788 2825 else if (document.selection) { 2826 TracWysiwyg.prototype.appendBogusLineBreak = function(element) { }; 2789 2827 TracWysiwyg.prototype.tableHTML = function(id, row, col) { 2790 2828 var html = this._tableHTML(row, col); … … 3037 3075 } 3038 3076 else { 3077 TracWysiwyg.prototype.appendBogusLineBreak = function(element) { }; 3039 3078 TracWysiwyg.prototype.insertTableCell = function(row, index) { return null }; 3040 3079 TracWysiwyg.prototype.getFocusNode = function() { return null };
