mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-26 22:04:01 +00:00
--HG-- rename : sites/dev.scrapy.org/htdocs/asc.png => sites/static.scrapy.org/asc.png rename : sites/dev.scrapy.org/htdocs/attachment.png => sites/static.scrapy.org/attachment.png rename : sites/dev.scrapy.org/htdocs/changeset.png => sites/static.scrapy.org/changeset.png rename : sites/dev.scrapy.org/htdocs/closedticket.png => sites/static.scrapy.org/closedticket.png rename : sites/dev.scrapy.org/htdocs/collapsed.png => sites/static.scrapy.org/collapsed.png rename : sites/dev.scrapy.org/htdocs/css/about.css => sites/static.scrapy.org/css/about.css rename : sites/dev.scrapy.org/htdocs/css/admin.css => sites/static.scrapy.org/css/admin.css rename : sites/dev.scrapy.org/htdocs/css/browser.css => sites/static.scrapy.org/css/browser.css rename : sites/dev.scrapy.org/htdocs/css/changeset.css => sites/static.scrapy.org/css/changeset.css rename : sites/dev.scrapy.org/htdocs/css/code.css => sites/static.scrapy.org/css/code.css rename : sites/dev.scrapy.org/htdocs/css/diff.css => sites/static.scrapy.org/css/diff.css rename : sites/dev.scrapy.org/htdocs/css/prefs.css => sites/static.scrapy.org/css/prefs.css rename : sites/dev.scrapy.org/htdocs/css/report.css => sites/static.scrapy.org/css/report.css rename : sites/dev.scrapy.org/htdocs/css/roadmap.css => sites/static.scrapy.org/css/roadmap.css rename : sites/dev.scrapy.org/htdocs/css/search.css => sites/static.scrapy.org/css/search.css rename : sites/dev.scrapy.org/htdocs/css/ticket.css => sites/static.scrapy.org/css/ticket.css rename : sites/dev.scrapy.org/htdocs/css/timeline.css => sites/static.scrapy.org/css/timeline.css rename : sites/dev.scrapy.org/htdocs/css/trac-0.11rc2.css.diff => sites/static.scrapy.org/css/trac-0.11rc2.css.diff rename : sites/dev.scrapy.org/htdocs/css/trac.css => sites/static.scrapy.org/css/trac.css rename : sites/dev.scrapy.org/htdocs/css/wiki.css => sites/static.scrapy.org/css/wiki.css rename : sites/dev.scrapy.org/htdocs/desc.png => sites/static.scrapy.org/desc.png rename : sites/dev.scrapy.org/htdocs/dots.gif => sites/static.scrapy.org/dots.gif rename : sites/dev.scrapy.org/htdocs/draft.png => sites/static.scrapy.org/draft.png rename : sites/dev.scrapy.org/htdocs/edit_toolbar.png => sites/static.scrapy.org/edit_toolbar.png rename : sites/dev.scrapy.org/htdocs/editedticket.png => sites/static.scrapy.org/editedticket.png rename : sites/dev.scrapy.org/htdocs/envelope.png => sites/static.scrapy.org/envelope.png rename : sites/dev.scrapy.org/htdocs/expanded.png => sites/static.scrapy.org/expanded.png rename : sites/dev.scrapy.org/htdocs/expander_normal.png => sites/static.scrapy.org/expander_normal.png rename : sites/dev.scrapy.org/htdocs/expander_normal_hover.png => sites/static.scrapy.org/expander_normal_hover.png rename : sites/dev.scrapy.org/htdocs/expander_open.png => sites/static.scrapy.org/expander_open.png rename : sites/dev.scrapy.org/htdocs/expander_open_hover.png => sites/static.scrapy.org/expander_open_hover.png rename : sites/dev.scrapy.org/htdocs/extlink.gif => sites/static.scrapy.org/extlink.gif rename : sites/dev.scrapy.org/htdocs/feed.png => sites/static.scrapy.org/feed.png rename : sites/dev.scrapy.org/htdocs/file.png => sites/static.scrapy.org/file.png rename : sites/dev.scrapy.org/htdocs/folder.png => sites/static.scrapy.org/folder.png rename : sites/dev.scrapy.org/htdocs/guide/basic-workflow.png => sites/static.scrapy.org/guide/basic-workflow.png rename : sites/dev.scrapy.org/htdocs/guide/original-workflow.png => sites/static.scrapy.org/guide/original-workflow.png rename : sites/dev.scrapy.org/htdocs/ics.png => sites/static.scrapy.org/ics.png rename : sites/dev.scrapy.org/htdocs/imggrid.png => sites/static.scrapy.org/imggrid.png rename : sites/dev.scrapy.org/htdocs/js/blame.js => sites/static.scrapy.org/js/blame.js rename : sites/dev.scrapy.org/htdocs/js/diff.js => sites/static.scrapy.org/js/diff.js rename : sites/dev.scrapy.org/htdocs/js/expand_dir.js => sites/static.scrapy.org/js/expand_dir.js rename : sites/dev.scrapy.org/htdocs/js/folding.js => sites/static.scrapy.org/js/folding.js rename : sites/dev.scrapy.org/htdocs/js/ie_pre7_hacks.js => sites/static.scrapy.org/js/ie_pre7_hacks.js rename : sites/dev.scrapy.org/htdocs/js/jquery.js => sites/static.scrapy.org/js/jquery.js rename : sites/dev.scrapy.org/htdocs/js/keyboard_nav.js => sites/static.scrapy.org/js/keyboard_nav.js rename : sites/dev.scrapy.org/htdocs/js/noconflict.js => sites/static.scrapy.org/js/noconflict.js rename : sites/dev.scrapy.org/htdocs/js/query.js => sites/static.scrapy.org/js/query.js rename : sites/dev.scrapy.org/htdocs/js/search.js => sites/static.scrapy.org/js/search.js rename : sites/dev.scrapy.org/htdocs/js/suggest.js => sites/static.scrapy.org/js/suggest.js rename : sites/dev.scrapy.org/htdocs/js/trac.js => sites/static.scrapy.org/js/trac.js rename : sites/dev.scrapy.org/htdocs/js/wikitoolbar.js => sites/static.scrapy.org/js/wikitoolbar.js rename : sites/dev.scrapy.org/htdocs/loading.gif => sites/static.scrapy.org/loading.gif rename : sites/dev.scrapy.org/htdocs/lock-locked.png => sites/static.scrapy.org/lock-locked.png rename : sites/dev.scrapy.org/htdocs/logo.jpg => sites/static.scrapy.org/logo.jpg rename : sites/dev.scrapy.org/htdocs/main-bg.jpg => sites/static.scrapy.org/main-bg.jpg rename : sites/dev.scrapy.org/htdocs/milestone.png => sites/static.scrapy.org/milestone.png rename : sites/dev.scrapy.org/htdocs/newticket.png => sites/static.scrapy.org/newticket.png rename : sites/dev.scrapy.org/htdocs/parent.png => sites/static.scrapy.org/parent.png rename : sites/dev.scrapy.org/htdocs/python.png => sites/static.scrapy.org/python.png rename : sites/dev.scrapy.org/htdocs/topbar_gradient.png => sites/static.scrapy.org/topbar_gradient.png rename : sites/dev.scrapy.org/htdocs/topbar_gradient2.png => sites/static.scrapy.org/topbar_gradient2.png rename : sites/dev.scrapy.org/htdocs/trac.ico => sites/static.scrapy.org/trac.ico rename : sites/dev.scrapy.org/htdocs/trac_banner.png => sites/static.scrapy.org/trac_banner.png rename : sites/dev.scrapy.org/htdocs/trac_logo_mini.png => sites/static.scrapy.org/trac_logo_mini.png rename : sites/dev.scrapy.org/htdocs/vgradient.png => sites/static.scrapy.org/vgradient.png rename : sites/dev.scrapy.org/htdocs/wiki.png => sites/static.scrapy.org/wiki.png extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%4023
94 lines
3.0 KiB
JavaScript
94 lines
3.0 KiB
JavaScript
|
|
|
|
(function($){
|
|
|
|
|
|
window.addWikiFormattingToolbar = function(textarea) {
|
|
if ((document.selection == undefined)
|
|
&& (textarea.setSelectionRange == undefined)) {
|
|
return;
|
|
}
|
|
|
|
var toolbar = document.createElement("div");
|
|
toolbar.className = "wikitoolbar";
|
|
|
|
function addButton(id, title, fn) {
|
|
var a = document.createElement("a");
|
|
a.href = "#";
|
|
a.id = id;
|
|
a.title = title;
|
|
a.onclick = function() { try { fn() } catch (e) { } return false };
|
|
a.tabIndex = 400;
|
|
toolbar.appendChild(a);
|
|
}
|
|
|
|
function encloseSelection(prefix, suffix) {
|
|
textarea.focus();
|
|
var start, end, sel, scrollPos, subst;
|
|
if (document.selection != undefined) {
|
|
sel = document.selection.createRange().text;
|
|
} else if (textarea.setSelectionRange != undefined) {
|
|
start = textarea.selectionStart;
|
|
end = textarea.selectionEnd;
|
|
scrollPos = textarea.scrollTop;
|
|
sel = textarea.value.substring(start, end);
|
|
}
|
|
if (sel.match(/ $/)) { // exclude ending space char, if any
|
|
sel = sel.substring(0, sel.length - 1);
|
|
suffix = suffix + " ";
|
|
}
|
|
subst = prefix + sel + suffix;
|
|
if (document.selection != undefined) {
|
|
var range = document.selection.createRange().text = subst;
|
|
textarea.caretPos -= suffix.length;
|
|
} else if (textarea.setSelectionRange != undefined) {
|
|
textarea.value = textarea.value.substring(0, start) + subst +
|
|
textarea.value.substring(end);
|
|
if (sel) {
|
|
textarea.setSelectionRange(start + subst.length, start + subst.length);
|
|
} else {
|
|
textarea.setSelectionRange(start + prefix.length, start + prefix.length);
|
|
}
|
|
textarea.scrollTop = scrollPos;
|
|
}
|
|
}
|
|
|
|
addButton("strong", "Bold text: '''Example'''", function() {
|
|
encloseSelection("'''", "'''");
|
|
});
|
|
addButton("em", "Italic text: ''Example''", function() {
|
|
encloseSelection("''", "''");
|
|
});
|
|
addButton("heading", "Heading: == Example ==", function() {
|
|
encloseSelection("\n== ", " ==\n", "Heading");
|
|
});
|
|
addButton("link", "Link: [http://www.example.com/ Example]", function() {
|
|
encloseSelection("[", "]");
|
|
});
|
|
addButton("code", "Code block: {{{ example }}}", function() {
|
|
encloseSelection("\n{{{\n", "\n}}}\n");
|
|
});
|
|
addButton("hr", "Horizontal rule: ----", function() {
|
|
encloseSelection("\n----\n", "");
|
|
});
|
|
addButton("np", "New paragraph", function() {
|
|
encloseSelection("\n\n", "");
|
|
});
|
|
addButton("br", "Line break: [[BR]]", function() {
|
|
encloseSelection("[[BR]]\n", "");
|
|
});
|
|
addButton("img", "Image: [[Image()]]", function() {
|
|
encloseSelection("[[Image(", ")]]");
|
|
});
|
|
|
|
$(textarea).before(toolbar);
|
|
}
|
|
|
|
})(jQuery);
|
|
|
|
// Add the toolbar to all <textarea> elements on the page with the class
|
|
// 'wikitext'.
|
|
jQuery(document).ready(function($) {
|
|
$("textarea.wikitext").each(function() { addWikiFormattingToolbar(this) });
|
|
});
|