mediawiki-extensions-WikiEd.../modules/wikiEditor.toolbar.js
2010-09-15 19:18:26 +00:00

2125 lines
85 KiB
JavaScript

/* JavaScript for WikiEditor Toolbar module */
$j(document).ready( function() {
// Check preferences for toolbar
if ( !wgWikiEditorEnabledModules.toolbar ) {
return true;
}
// Only show content generation dialogs if enabled
if ( wgWikiEditorPreferences.toolbar.dialogs && $j.wikiEditor.isSupported( $j.wikiEditor.modules.dialogs ) ) {
$j( '#wpTextbox1' ).addClass( 'toolbar-dialogs' );
}
if ( $j.fn.wikiEditor && $j.wikiEditor.isSupported( $j.wikiEditor.modules.toolbar ) ) {
// Remove the old toolbar
$j( '#toolbar' ).remove();
// Add toolbar module
$j( '#wpTextbox1' ).wikiEditor( 'addModule', {
'toolbar': {
// Main section
'main': {
type: 'toolbar',
groups: {
'format': {
tools: {
'bold': {
labelMsg: 'wikieditor-toolbar-tool-bold',
type: 'button',
offset: {
'default': [2, -574],
'en': [2, -142],
'cs': [2, -142],
'de': [2, -214],
'fr': [2, -286],
'es': [2, -358],
'he': [2, -142],
'hu': [2, -214],
'it': [2, -286],
'nl': [2, -502],
'pt': [2, -358],
'pt-br': [2, -358],
'pl': [2, -142],
'ml': [2, -142]
},
icon: {
'default': 'format-bold.png',
'en': 'format-bold-B.png',
'cs': 'format-bold-B.png',
'de': 'format-bold-F.png',
'fr': 'format-bold-G.png',
'es': 'format-bold-N.png',
'he': 'format-bold-B.png',
'hu': 'format-bold-F.png',
'it': 'format-bold-G.png',
'ka': 'format-bold-ka.png',
'nl': 'format-bold-V.png',
'pt': 'format-bold-N.png',
'pt-br': 'format-bold-N.png',
'pl': 'format-bold-B.png',
'ru': 'format-bold-ru.png',
'ml': 'format-bold-B.png'
},
action: {
type: 'encapsulate',
options: {
pre: "'''",
periMsg: 'wikieditor-toolbar-tool-bold-example',
post: "'''"
}
}
},
'italic': {
section: 'main',
group: 'format',
id: 'italic',
labelMsg: 'wikieditor-toolbar-tool-italic',
type: 'button',
offset: {
'default': [2, -718],
'en': [2, -862],
'cs': [2, -862],
'de': [2, -934],
'fr': [2, -862],
'es': [2, -790],
'he': [2, -862],
'it': [2, -790],
'nl': [2, -790],
'pt': [2, -862],
'pt-br': [2, -862],
'pl': [2, -862],
'ru': [2, -934],
'ml': [2, -862]
},
icon: {
'default': 'format-italic.png',
'en': 'format-italic-I.png',
'cs': 'format-italic-I.png',
'de': 'format-italic-K.png',
'fr': 'format-italic-I.png',
'es': 'format-italic-C.png',
'he': 'format-italic-I.png',
'hu': 'format-italic-D.png',
'it': 'format-italic-C.png',
'ka': 'format-italic-ka.png',
'nl': 'format-italic-C.png',
'pt': 'format-italic-I.png',
'pt-br': 'format-italic-I.png',
'pl': 'format-italic-I.png',
'ru': 'format-italic-K.png',
'ml': 'format-italic-I.png'
},
action: {
type: 'encapsulate',
options: {
pre: "''",
periMsg: 'wikieditor-toolbar-tool-italic-example',
post: "''"
}
}
}
}
},
'insert': {
tools: {
'xlink': {
labelMsg: 'wikieditor-toolbar-tool-xlink',
type: 'button',
icon: 'insert-xlink.png',
offset: [-70, 2],
filters: [ '#wpTextbox1:not(.toolbar-dialogs)' ],
action: {
type: 'encapsulate',
options: {
pre: "[",
periMsg: 'wikieditor-toolbar-tool-xlink-example',
post: "]"
}
}
},
'ilink': {
labelMsg: 'wikieditor-toolbar-tool-ilink',
type: 'button',
icon: 'insert-ilink.png',
offset: [2, -1582],
filters: [ '#wpTextbox1:not(.toolbar-dialogs)' ],
action: {
type: 'encapsulate',
options: {
pre: "[[",
periMsg: 'wikieditor-toolbar-tool-ilink-example',
post: "]]"
}
}
},
'linkCGD': {
labelMsg: 'wikieditor-toolbar-tool-link',
type: 'button',
icon: 'insert-link.png',
offset: [2, -1654],
filters: [ '#wpTextbox1.toolbar-dialogs' ],
action: {
type: 'dialog',
module: 'insert-link'
}
},
'file': {
labelMsg: 'wikieditor-toolbar-tool-file',
type: 'button',
icon: 'insert-file.png',
offset: [2, -1438],
action: {
type: 'encapsulate',
options: {
// FIXME: Why the hell was this done this way?
preMsg: [ 'wikieditor-toolbar-tool-file-pre', '[[' ],
periMsg: 'wikieditor-toolbar-tool-file-example',
post: "]]"
}
}
},
'referenceCGD': {
labelMsg: 'wikieditor-toolbar-tool-reference',
type: 'button',
icon: 'insert-reference.png',
offset: [2, -1798],
filters: [ 'body.ns-subject', '#wpTextbox1.toolbar-dialogs' ],
action: {
type: 'dialog',
module: 'insert-reference'
}
},
'reference': {
labelMsg: 'wikieditor-toolbar-tool-reference',
filters: [ 'body.ns-subject', '#wpTextbox1:not(.toolbar-dialogs)' ],
type: 'button',
offset: [2, -1798],
icon: 'insert-reference.png',
action: {
type: 'encapsulate',
options: {
pre: "<ref>",
periMsg: 'wikieditor-toolbar-tool-reference-example',
post: "</ref>"
}
}
},
'signature': {
labelMsg: 'wikieditor-toolbar-tool-signature',
filters: [ 'body:not(.ns-0)' ],
type: 'button',
offset: [2, -1872],
icon: 'insert-signature.png',
action: {
type: 'encapsulate',
options: {
post: "--~~~~"
}
}
}
}
}
}
},
// Format section
'advanced': {
labelMsg: 'wikieditor-toolbar-section-advanced',
type: 'toolbar',
groups: {
'heading': {
tools: {
'heading': {
labelMsg: 'wikieditor-toolbar-tool-heading',
type: 'select',
list: {
'heading-2' : {
labelMsg: 'wikieditor-toolbar-tool-heading-2',
action: {
type: 'encapsulate',
options: {
pre: '== ',
periMsg: 'wikieditor-toolbar-tool-heading-example',
post: ' ==',
regex: /^(\s*)(={1,6})(.*?)\2(\s*)$/,
regexReplace: "\$1==\$3==\$4",
ownline: true
}
}
},
'heading-3' : {
labelMsg: 'wikieditor-toolbar-tool-heading-3',
action: {
type: 'encapsulate',
options: {
pre: '=== ',
periMsg: 'wikieditor-toolbar-tool-heading-example',
post: ' ===',
regex: /^(\s*)(={1,6})(.*?)\2(\s*)$/,
regexReplace: "\$1===\$3===\$4",
ownline: true
}
}
},
'heading-4' : {
labelMsg: 'wikieditor-toolbar-tool-heading-4',
action: {
type: 'encapsulate',
options: {
pre: '==== ',
periMsg: 'wikieditor-toolbar-tool-heading-example',
post: ' ====',
regex: /^(\s*)(={1,6})(.*?)\2(\s*)$/,
regexReplace: "\$1====\$3====\$4",
ownline: true
}
}
},
'heading-5' : {
labelMsg: 'wikieditor-toolbar-tool-heading-5',
action: {
type: 'encapsulate',
options: {
pre: '===== ',
periMsg: 'wikieditor-toolbar-tool-heading-example',
post: ' =====',
regex: /^(\s*)(={1,6})(.*?)\2(\s*)$/,
regexReplace: "\$1=====\$3=====\$4",
ownline: true
}
}
}
}
}
}
},
'format': {
labelMsg: 'wikieditor-toolbar-group-format',
tools: {
'ulist': {
labelMsg: 'wikieditor-toolbar-tool-ulist',
type: 'button',
icon: 'format-ulist.png',
offset: [2, -1366],
action: {
type: 'encapsulate',
options: {
pre: "* ",
periMsg: 'wikieditor-toolbar-tool-ulist-example',
post: "",
ownline: true
}
}
},
'olist': {
labelMsg: 'wikieditor-toolbar-tool-olist',
type: 'button',
icon: 'format-olist.png',
offset: [2, -1078],
action: {
type: 'encapsulate',
options: {
pre: "# ",
periMsg: 'wikieditor-toolbar-tool-olist-example',
post: "",
ownline: true
}
}
},
'indent': {
labelMsg: 'wikieditor-toolbar-tool-indent',
type: 'button',
icon: 'format-indent.png',
offset: [2, -646],
action: {
type: 'encapsulate',
options: {
pre: ":",
periMsg: 'wikieditor-toolbar-tool-indent-example',
post: "",
ownline: true,
splitlines: true
}
}
},
'nowiki': {
labelMsg: 'wikieditor-toolbar-tool-nowiki',
type: 'button',
icon: 'insert-nowiki.png',
offset: [-70, -70],
action: {
type: 'encapsulate',
options: {
pre: "<nowiki>",
periMsg: 'wikieditor-toolbar-tool-nowiki-example',
post: "</nowiki>"
}
}
},
'newline': {
labelMsg: 'wikieditor-toolbar-tool-newline',
type: 'button',
icon: 'insert-newline.png',
offset: [2, -1726],
action: {
type: 'encapsulate',
options: {
pre: "<br />\n"
}
}
}
}
},
'size': {
tools: {
'big': {
labelMsg: 'wikieditor-toolbar-tool-big',
type: 'button',
icon: 'format-big.png',
offset: [2, 2],
action: {
type: 'encapsulate',
options: {
pre: "<big>",
periMsg: 'wikieditor-toolbar-tool-big-example',
post: "</big>"
}
}
},
'small': {
labelMsg: 'wikieditor-toolbar-tool-small',
type: 'button',
icon: 'format-small.png',
offset: [2, -1150],
action: {
type: 'encapsulate',
options: {
pre: "<small>",
periMsg: 'wikieditor-toolbar-tool-small-example',
post: "</small>"
}
}
},
'superscript': {
labelMsg: 'wikieditor-toolbar-tool-superscript',
type: 'button',
icon: 'format-superscript.png',
offset: [2, -1294],
action: {
type: 'encapsulate',
options: {
pre: "<sup>",
periMsg: 'wikieditor-toolbar-tool-superscript-example',
post: "</sup>"
}
}
},
'subscript': {
labelMsg: 'wikieditor-toolbar-tool-subscript',
type: 'button',
icon: 'format-subscript.png',
offset: [2, -1222],
action: {
type: 'encapsulate',
options: {
pre: "<sub>",
periMsg: 'wikieditor-toolbar-tool-subscript-example',
post: "</sub>"
}
}
}
}
},
'insert': {
labelMsg: 'wikieditor-toolbar-group-insert',
tools: {
'gallery': {
labelMsg: 'wikieditor-toolbar-tool-gallery',
type: 'button',
icon: 'insert-gallery.png',
offset: [2, -1510],
action: {
type: 'encapsulate',
options: {
pre: "<gallery>\n",
periMsg: 'wikieditor-toolbar-tool-gallery-example',
post: "\n</gallery>",
ownline: true
}
}
},
'tableCGD': {
labelMsg: 'wikieditor-toolbar-tool-table',
type: 'button',
icon: 'insert-table.png',
offset: [2, -1942],
filters: [ '#wpTextbox1.toolbar-dialogs' ],
action: {
type: 'dialog',
module: 'insert-table'
}
},
'table': {
labelMsg: 'wikieditor-toolbar-tool-table',
type: 'button',
icon: 'insert-table.png',
offset: [2, -1942],
filters: [ '#wpTextbox1:not(.toolbar-dialogs)' ],
action: {
type: 'encapsulate',
options: {
pre: "{| class=\"wikitable\" border=\"1\"\n|",
periMsg: 'wikieditor-toolbar-tool-table-example-old',
post: "\n|}",
ownline: true
}
}
},
'redirect': {
labelMsg: 'wikieditor-toolbar-tool-redirect',
type: 'button',
icon: 'insert-redirect.png',
offset: [-70, -142],
action: {
type: 'encapsulate',
options: {
pre: "#REDIRECT [[",
periMsg: 'wikieditor-toolbar-tool-redirect-example',
post: "]]",
ownline: true
}
}
}
}
},
'search': {
tools: {
'replace': {
labelMsg: 'wikieditor-toolbar-tool-replace',
type: 'button',
icon: 'search-replace.png',
offset: [-70, -214],
filters: [ '#wpTextbox1.toolbar-dialogs' ],
action: {
type: 'dialog',
module: 'search-and-replace'
}
}
}
}
}
},
'characters': {
labelMsg: 'wikieditor-toolbar-section-characters',
type: 'booklet',
deferLoad: true,
pages: {
'latin': {
'labelMsg': 'wikieditor-toolbar-characters-page-latin',
'layout': 'characters',
'characters': [
"\u00c1", "\u00e1", "\u00c0", "\u00e0", "\u00c2", "\u00e2", "\u00c4", "\u00e4", "\u00c3", "\u00e3",
"\u01cd", "\u01ce", "\u0100", "\u0101", "\u0102", "\u0103", "\u0104", "\u0105", "\u00c5", "\u00e5",
"\u0106", "\u0107", "\u0108", "\u0109", "\u00c7", "\u00e7", "\u010c", "\u010d", "\u010a", "\u010b",
"\u0110", "\u0111", "\u010e", "\u010f", "\u00c9", "\u00e9", "\u00c8", "\u00e8", "\u00ca", "\u00ea",
"\u00cb", "\u00eb", "\u011a", "\u011b", "\u0112", "\u0113", "\u0114", "\u0115", "\u0116", "\u0117",
"\u0118", "\u0119", "\u011c", "\u011d", "\u0122", "\u0123", "\u011e", "\u011f", "\u0120", "\u0121",
"\u0124", "\u0125", "\u0126", "\u0127", "\u00cd", "\u00ed", "\u00cc", "\u00ec", "\u00ce", "\u00ee",
"\u00cf", "\u00ef", "\u0128", "\u0129", "\u01cf", "\u01d0", "\u012a", "\u012b", "\u012c", "\u012d",
"\u0130", "\u0131", "\u012e", "\u012f", "\u0134", "\u0135", "\u0136", "\u0137", "\u0139", "\u013a",
"\u013b", "\u013c", "\u013d", "\u013e", "\u0141", "\u0142", "\u013f", "\u0140", "\u0143", "\u0144",
"\u00d1", "\u00f1", "\u0145", "\u0146", "\u0147", "\u0148", "\u00d3", "\u00f3", "\u00d2", "\u00f2",
"\u00d4", "\u00f4", "\u00d6", "\u00f6", "\u00d5", "\u00f5", "\u01d1", "\u01d2", "\u014c", "\u014d",
"\u014e", "\u014f", "\u01ea", "\u01eb", "\u0150", "\u0151", "\u0154", "\u0155", "\u0156", "\u0157",
"\u0158", "\u0159", "\u015a", "\u015b", "\u015c", "\u015d", "\u015e", "\u015f", "\u0160", "\u0161",
"\u0162", "\u0163", "\u0164", "\u0165", "\u00da", "\u00fa", "\u00d9", "\u00f9", "\u00db", "\u00fb",
"\u00dc", "\u00fc", "\u0168", "\u0169", "\u016e", "\u016f", "\u01d3", "\u01d4", "\u016a", "\u016b",
"\u01d6", "\u01d8", "\u01da", "\u01dc", "\u016c", "\u016d", "\u0172", "\u0173", "\u0170", "\u0171",
"\u0174", "\u0175", "\u00dd", "\u00fd", "\u0176", "\u0177", "\u0178", "\u00ff", "\u0232", "\u0233",
"\u0179", "\u017a", "\u017d", "\u017e", "\u017b", "\u017c", "\u00c6", "\u00e6", "\u01e2", "\u01e3",
"\u00d8", "\u00f8", "\u0152", "\u0153", "\u00df", "\u00f0", "\u00de", "\u00fe", "\u018f", "\u0259"
]
},
'latinextended': {
'labelMsg': 'wikieditor-toolbar-characters-page-latinextended',
'layout': 'characters',
'characters': [
"\u1e00", "\u1e01", "\u1e9a", "\u1ea0", "\u1ea1", "\u1ea2", "\u1ea3", "\u1ea4", "\u1ea5", "\u1ea6",
"\u1ea7", "\u1ea8", "\u1ea9", "\u1eaa", "\u1eab", "\u1eac", "\u1ead", "\u1eae", "\u1eaf", "\u1eb0",
"\u1eb1", "\u1eb2", "\u1eb3", "\u1eb4", "\u1eb5", "\u1eb6", "\u1eb7", "\u1e02", "\u1e03", "\u1e04",
"\u1e05", "\u1e06", "\u1e07", "\u1e08", "\u1e09", "\u1e0a", "\u1e0b", "\u1e0c", "\u1e0d", "\u1e0e",
"\u1e0f", "\u1e10", "\u1e11", "\u1e12", "\u1e13", "\u1e14", "\u1e15", "\u1e16", "\u1e17", "\u1e18",
"\u1e19", "\u1e1a", "\u1e1b", "\u1e1c", "\u1e1d", "\u1eb8", "\u1eb9", "\u1eba", "\u1ebb", "\u1ebc",
"\u1ebd", "\u1ebe", "\u1ebf", "\u1ec0", "\u1ec1", "\u1ec2", "\u1ec3", "\u1ec4", "\u1ec5", "\u1ec6",
"\u1ec7", "\u1e1e", "\u1e1f", "\u1e20", "\u1e21", "\u1e22", "\u1e23", "\u1e24", "\u1e25", "\u1e26",
"\u1e27", "\u1e28", "\u1e29", "\u1e2a", "\u1e2b", "\u1e96", "\u1e2c", "\u1e2d", "\u1e2e", "\u1e2f",
"\u1ec8", "\u1ec9", "\u1eca", "\u1ecb", "\u1e30", "\u1e31", "\u1e32", "\u1e33", "\u1e34", "\u1e35",
"\u1e36", "\u1e37", "\u1e38", "\u1e39", "\u1e3a", "\u1e3b", "\u1e3c", "\u1e3d", "\u1efa", "\u1efb",
"\u1e3e", "\u1e3f", "\u1e40", "\u1e41", "\u1e42", "\u1e43", "\u1e44", "\u1e45", "\u1e46", "\u1e47",
"\u1e48", "\u1e49", "\u1e4a", "\u1e4b", "\u1e4c", "\u1e4d", "\u1e4e", "\u1e4f", "\u1e50", "\u1e51",
"\u1e52", "\u1e53", "\u1ecc", "\u1ecd", "\u1ece", "\u1ecf", "\u1ed0", "\u1ed1", "\u1ed2", "\u1ed3",
"\u1ed4", "\u1ed5", "\u1ed6", "\u1ed7", "\u1ed8", "\u1ed9", "\u1eda", "\u1edb", "\u1edc", "\u1edd",
"\u1ede", "\u1edf", "\u1ee0", "\u1ee1", "\u1ee2", "\u1ee3", "\u1e54", "\u1e55", "\u1e56", "\u1e57",
"\u1e58", "\u1e59", "\u1e5a", "\u1e5b", "\u1e5c", "\u1e5d", "\u1e5e", "\u1e5f", "\u1e60", "\u1e61",
"\u1e9b", "\u1e62", "\u1e63", "\u1e64", "\u1e65", "\u1e66", "\u1e67", "\u1e68", "\u1e69", "\u1e9c",
"\u1e9d", "\u1e6a", "\u1e6b", "\u1e6c", "\u1e6d", "\u1e6e", "\u1e6f", "\u1e70", "\u1e71", "\u1e97",
"\u1e72", "\u1e73", "\u1e74", "\u1e75", "\u1e76", "\u1e77", "\u1e78", "\u1e79", "\u1e7a", "\u1e7b",
"\u1ee4", "\u1ee5", "\u1ee6", "\u1ee7", "\u1ee8", "\u1ee9", "\u1eea", "\u1eeb", "\u1eec", "\u1eed",
"\u1eee", "\u1eef", "\u1ef0", "\u1ef1", "\u1e7c", "\u1e7d", "\u1e7e", "\u1e7f", "\u1efc", "\u1efd",
"\u1e80", "\u1e81", "\u1e82", "\u1e83", "\u1e84", "\u1e85", "\u1e86", "\u1e87", "\u1e88", "\u1e89",
"\u1e98", "\u1e8a", "\u1e8b", "\u1e8c", "\u1e8d", "\u1e8e", "\u1e8f", "\u1e99", "\u1ef2", "\u1ef3",
"\u1ef4", "\u1ef5", "\u1ef6", "\u1ef7", "\u1ef8", "\u1ef9", "\u1efe", "\u1eff", "\u1e90", "\u1e91",
"\u1e92", "\u1e93", "\u1e94", "\u1e95", "\u1e9e", "\u1e9f"
]
},
'ipa': {
labelMsg: 'wikieditor-toolbar-characters-page-ipa',
layout: 'characters',
characters: [
"p", "t\u032a", "t", "\u0288", "c", "k", "q", "\u02a1", "\u0294", "b","d\u032a", "d", "\u0256",
"\u025f", "\u0261", "\u0262", "\u0253", "\u0257", "\u0284", "\u0260", "\u029b", "t\u0361s",
"t\u0361\u0283", "t\u0361\u0255", "d\u0361z", "d\u0361\u0292", "d\u0361\u0291", "\u0278", "f",
"\u03b8", "s", "\u0283", "\u0285", "\u0286", "\u0282", "\u0255", "\u00e7", "\u0267", "x", "\u03c7",
"\u0127", "\u029c", "h", "\u03b2", "v", "\u028d", "\u00f0", "z", "\u0292", "\u0293", "\u0290",
"\u0291", "\u029d", "\u0263", "\u0281", "\u0295", "\u0296", "\u02a2", "\u0266", "\u026c", "\u026e",
"m", "m\u0329", "\u0271", "\u0271\u0329", "\u0271\u030d", "n\u032a", "n\u032a\u030d", "n",
"n\u0329", "\u0273", "\u0273\u0329", "\u0272", "\u0272\u0329", "\u014b", "\u014b\u030d",
"\u014b\u0329", "\u0274", "\u0274\u0329", "\u0299", "\u0299\u0329", "r", "r\u0329", "\u0280",
"\u0280\u0329", "\u027e", "\u027d", "\u027f", "\u027a", "l\u032a", "l\u032a\u0329", "l", "l\u0329",
"\u026b", "\u026b\u0329", "\u026d", "\u026d\u0329", "\u028e", "\u028e\u0329", "\u029f",
"\u029f\u0329", "w", "\u0265", "\u028b", "\u0279", "\u027b", "j", "\u0270", "\u0298", "\u01c2",
"\u01c0", "!", "\u01c1", "\u02b0", "\u02b1", "\u02b7", "\u02b8", "\u02b2", "\u02b3", "\u207f",
"\u02e1", "\u02b4", "\u02b5", "\u02e2", "\u02e3", "\u02e0", "\u02b6", "\u02e4", "\u02c1", "\u02c0",
"\u02bc", "i", "i\u032f", "\u0129", "y", "y\u032f", "\u1ef9", "\u026a", "\u026a\u032f",
"\u026a\u0303", "\u028f", "\u028f\u032f", "\u028f\u0303", "\u0268", "\u0268\u032f", "\u0268\u0303",
"\u0289", "\u0289\u032f", "\u0289\u0303", "\u026f", "\u026f\u032f", "\u026f\u0303", "u", "u\u032f",
"\u0169", "\u028a", "\u028a\u032f", "\u028a\u0303", "e", "e\u032f", "\u1ebd", "\u00f8",
"\u00f8\u032f", "\u00f8\u0303", "\u0258", "\u0258\u032f", "\u0258\u0303", "\u0275", "\u0275\u032f",
"\u0275\u0303", "\u0264", "\u0264\u032f", "\u0264\u0303", "o", "o\u032f", "\u00f5", "\u025b",
"\u025b\u032f", "\u025b\u0303", "\u0153", "\u0153\u032f", "\u0153\u0303", "\u025c", "\u025c\u032f",
"\u025c\u0303", "\u0259", "\u0259\u032f", "\u0259\u0303", "\u025e", "\u025e\u032f", "\u025e\u0303",
"\u028c", "\u028c\u032f", "\u028c\u0303", "\u0254", "\u0254\u032f", "\u0254\u0303", "\u00e6",
"\u00e6\u032f", "\u00e6\u0303", "\u0276", "\u0276\u032f", "\u0276\u0303", "a", "a\u032f", "\u00e3",
"\u0250", "\u0250\u032f", "\u0250\u0303", "\u0251", "\u0251\u032f", "\u0251\u0303", "\u0252",
"\u0252\u032f", "\u0252\u0303", "\u02c8", "\u02cc", "\u02d0", "\u02d1", "\u02d8", ".", "\u203f",
"|", "\u2016"
]
},
'symbols': {
'labelMsg': 'wikieditor-toolbar-characters-page-symbols',
'layout': 'characters',
'characters': [
"~", "|", "\u00a1", "\u00bf", "\u2020", "\u2021", "\u2194", "\u2191", "\u2193", "\u2022", "\u00b6",
"#", "\u00bd", "\u2153", "\u2154", "\u00bc", "\u00be", "\u215b", "\u215c", "\u215d", "\u215e",
"\u221e", "\u2018", "\u2019",
{
'label': "\u201c\u201d",
'action': {
'type': 'encapsulate', 'options': { 'pre': "\u201c", 'post': "\u201d" }
}
},
{
'label': "\u201e\u201c",
'action': {
'type': 'encapsulate', 'options': { 'pre': "\u201e", 'post': "\u201c" }
}
},
{
'label': "\u00ab\u00bb",
'action': {
'type': 'encapsulate', 'options': { 'pre': "\u00ab", 'post': "\u00bb" }
}
},
"\u00a4", "\u20b3", "\u0e3f", "\u20b5", "\u00a2", "\u20a1", "\u20a2", "$", "\u20ab", "\u20af",
"\u20ac", "\u20a0", "\u20a3", "\u0192", "\u20b4", "\u20ad", "\u20a4", "\u2133", "\u20a5", "\u20a6",
"\u2116", "\u20a7", "\u20b0", "\u00a3", "\u17db", "\u20a8", "\u20aa", "\u09f3", "\u20ae", "\u20a9",
"\u00a5", "\u2660", "\u2663", "\u2665", "\u2666", "m\u00b2", "m\u00b3", "\u2013", "\u2014",
"\u2026", "\u2018", "\u2019", "\u201c", "\u201d", "\u00b0", "\u2032", "\u2033", "\u2248", "\u2260",
"\u2264", "\u2265", "\u00b1", "\u2212", "\u00d7", "\u00f7", "\u2190", "\u2192", "\u00b7", "\u00a7"
]
},
'greek': {
'labelMsg': 'wikieditor-toolbar-characters-page-greek',
'layout': 'characters',
'language': 'hl',
'characters': [
"\u0391", "\u0386", "\u03b1", "\u03ac", "\u0392", "\u03b2", "\u0393", "\u03b3", "\u0394", "\u03b4",
"\u0395", "\u0388", "\u03b5", "\u03ad", "\u0396", "\u03b6", "\u0397", "\u0389", "\u03b7", "\u03ae",
"\u0398", "\u03b8", "\u0399", "\u038a", "\u03b9", "\u03af", "\u039a", "\u03ba", "\u039b", "\u03bb",
"\u039c", "\u03bc", "\u039d", "\u03bd", "\u039e", "\u03be", "\u039f", "\u038c", "\u03bf", "\u03cc",
"\u03a0", "\u03c0", "\u03a1", "\u03c1", "\u03a3", "\u03c3", "\u03c2", "\u03a4", "\u03c4", "\u03a5",
"\u038e", "\u03c5", "\u03cd", "\u03a6", "\u03c6", "\u03a7", "\u03c7", "\u03a8", "\u03c8", "\u03a9",
"\u038f", "\u03c9", "\u03ce"
]
},
'cyrillic': {
'labelMsg': 'wikieditor-toolbar-characters-page-cyrillic',
'layout': 'characters',
'characters': [
"\u0410", "\u0430", "\u04d8", "\u04d9", "\u0411", "\u0431", "\u0412", "\u0432", "\u0413", "\u0433",
"\u0490", "\u0491", "\u0403", "\u0453", "\u0492", "\u0493", "\u0414", "\u0434", "\u0402", "\u0452",
"\u0415", "\u0435", "\u0404", "\u0454", "\u0401", "\u0451", "\u0416", "\u0436", "\u0417", "\u0437",
"\u0405", "\u0455", "\u0418", "\u0438", "\u0406", "\u0456", "\u0407", "\u0457", "\u04c0", "\u0419",
"\u0439", "\u04e2", "\u04e3", "\u0408", "\u0458", "\u041a", "\u043a", "\u040c", "\u045c", "\u049a",
"\u049b", "\u041b", "\u043b", "\u0409", "\u0459", "\u041c", "\u043c", "\u041d", "\u043d", "\u040a",
"\u045a", "\u04a2", "\u04a3", "\u041e", "\u043e", "\u04e8", "\u04e9", "\u041f", "\u043f", "\u0420",
"\u0440", "\u0421", "\u0441", "\u0422", "\u0442", "\u040b", "\u045b", "\u0423", "\u0443", "\u040e",
"\u045e", "\u04ee", "\u04ef", "\u04b0", "\u04b1", "\u04ae", "\u04af", "\u0424", "\u0444", "\u0425",
"\u0445", "\u04b2", "\u04b3", "\u04ba", "\u04bb", "\u0426", "\u0446", "\u0427", "\u0447", "\u04b6",
"\u04b7", "\u040f", "\u045f", "\u0428", "\u0448", "\u0429", "\u0449", "\u042a", "\u044a", "\u042b",
"\u044b", "\u042c", "\u044c", "\u042d", "\u044d", "\u042e", "\u044e", "\u042f", "\u044f"
]
},
'arabic': {
'labelMsg': 'wikieditor-toolbar-characters-page-arabic',
'layout': 'characters',
'language': 'ar',
'direction': 'rtl',
'characters': [
"\u061b", "\u061f", "\u0621", "\u0622", "\u0623", "\u0624", "\u0625", "\u0626", "\u0627", "\u0628",
"\u0629", "\u062a", "\u062b", "\u062c", "\u062d", "\u062e", "\u062f", "\u0630", "\u0631", "\u0632",
"\u0633", "\u0634", "\u0635", "\u0636", "\u0637", "\u0638", "\u0639", "\u063a", "\u0641", "\u0642",
"\u0643", "\u0644", "\u0645", "\u0646", "\u0647", "\u0648", "\u0649", "\u064a", "\u060c", "\u067e",
"\u0686", "\u0698", "\u06af", "\u06ad"
]
},
'hebrew': {
'labelMsg': 'wikieditor-toolbar-characters-page-hebrew',
'layout': 'characters',
'direction': 'rtl',
'characters': [
"\u05d0", "\u05d1", "\u05d2", "\u05d3", "\u05d4", "\u05d5", "\u05d6", "\u05d7", "\u05d8", "\u05d9",
"\u05db", "\u05da", "\u05dc", "\u05de", "\u05dd", "\u05e0", "\u05df", "\u05e1", "\u05e2", "\u05e4",
"\u05e3", "\u05e6", "\u05e5", "\u05e7", "\u05e8", "\u05e9", "\u05ea", "\u05f3", "\u05f4", "\u05f0",
"\u05f1", "\u05f2", "\u05d0", "\u05d3", "\u05d4", "\u05d5", "\u05d6", "\u05d7", "\u05d8", "\u05d9",
"\u05da", "\u05db", "\u05dc", "\u05dd", "\u05de", "\u05df", "\u05e0", "\u05e1", "\u05e2", "\u05e3",
"\u05e4", "\u05be", "\u05f3", "\u05f4",
[ "\u05b0\u25cc", "\u05b0" ], [ "\u05b1\u25cc", "\u05b1" ], [ "\u05b2\u25cc", "\u05b2" ],
[ "\u05b3\u25cc", "\u05b3" ], [ "\u05b4\u25cc", "\u05b4" ], [ "\u05b5\u25cc", "\u05b5" ],
[ "\u05b6\u25cc", "\u05b6" ], [ "\u05b7\u25cc", "\u05b7" ], [ "\u05b8\u25cc", "\u05b8" ],
[ "\u05b9\u25cc", "\u05b9" ], [ "\u05bb\u25cc", "\u05bb" ], [ "\u05bc\u25cc", "\u05bc" ],
[ "\u05c1\u25cc", "\u05c1" ], [ "\u05c2\u25cc", "\u05c2" ], [ "\u05c7\u25cc", "\u05c7" ],
[ "\u0591\u25cc", "\u0591" ], [ "\u0592\u25cc", "\u0592" ], [ "\u0593\u25cc", "\u0593" ],
[ "\u0594\u25cc", "\u0594" ], [ "\u0595\u25cc", "\u0595" ], [ "\u0596\u25cc", "\u0596" ],
[ "\u0597\u25cc", "\u0597" ], [ "\u0598\u25cc", "\u0598" ], [ "\u0599\u25cc", "\u0599" ],
[ "\u059a\u25cc", "\u059a" ], [ "\u059b\u25cc", "\u059b" ], [ "\u059c\u25cc", "\u059c" ],
[ "\u059d\u25cc", "\u059d" ], [ "\u059e\u25cc", "\u059e" ], [ "\u059f\u25cc", "\u059f" ],
[ "\u05a0\u25cc", "\u05a0" ], [ "\u05a1\u25cc", "\u05a1" ], [ "\u05a2\u25cc", "\u05a2" ],
[ "\u05a3\u25cc", "\u05a3" ], [ "\u05a4\u25cc", "\u05a4" ], [ "\u05a5\u25cc", "\u05a5" ],
[ "\u05a6\u25cc", "\u05a6" ], [ "\u05a7\u25cc", "\u05a7" ], [ "\u05a8\u25cc", "\u05a8" ],
[ "\u05a9\u25cc", "\u05a9" ], [ "\u05aa\u25cc", "\u05aa" ], [ "\u05ab\u25cc", "\u05ab" ],
[ "\u05ac\u25cc", "\u05ac" ], [ "\u05ad\u25cc", "\u05ad" ], [ "\u05ae\u25cc", "\u05ae" ],
[ "\u05af\u25cc", "\u05af" ], [ "\u05bf\u25cc", "\u05bf" ], [ "\u05c0\u25cc", "\u05c0" ],
[ "\u05c3\u25cc", "\u05c3" ]
]
},
'bangla': {
'labelMsg': 'wikieditor-toolbar-characters-page-bangla',
'language': 'bn',
'layout': 'characters',
'characters': [
"\u0985", "\u0986", "\u0987", "\u0988", "\u0989", "\u098a", "\u098b", "\u098f", "\u0990", "\u0993",
"\u0994", "\u09be", "\u09bf", "\u09c0", "\u09c1", "\u09c2", "\u09c3", "\u09c7", "\u09c8", "\u09cb",
"\u09cc", "\u0995", "\u0996", "\u0997", "\u0998", "\u0999", "\u099a", "\u099b", "\u099c", "\u099d",
"\u099e", "\u099f", "\u09a0", "\u09a1", "\u09a2", "\u09a3", "\u09a4", "\u09a5", "\u09a6", "\u09a7",
"\u09a8", "\u09aa", "\u09ab", "\u09ac", "\u09ad", "\u09ae", "\u09af", "\u09b0", "\u09b2", "\u09b6",
"\u09b7", "\u09b8", "\u09b9", "\u09a1\u09bc", "\u09a2\u09bc", "\u09af\u09bc", "\u09ce", "\u0982",
"\u0983", "\u0981", "\u09cd", "\u09e7", "\u09e8", "\u09e9", "\u09ea", "\u09eb", "\u09ec", "\u09ed",
"\u09ee", "\u09ef", "\u09e6"
]
},
'telugu': {
'labelMsg': 'wikieditor-toolbar-characters-page-telugu',
'language': 'te',
'layout': 'characters',
'characters': [
"\u0c01", "\u0c02", "\u0c03", "\u0c05", "\u0c06", "\u0c07", "\u0c08", "\u0c09", "\u0c0a", "\u0c0b",
"\u0c60", "\u0c0c", "\u0c61", "\u0c0e", "\u0c0f", "\u0c10", "\u0c12", "\u0c13", "\u0c14", "\u0c15",
"\u0c16", "\u0c17", "\u0c18", "\u0c19", "\u0c1a", "\u0c1b", "\u0c1c", "\u0c1d", "\u0c1e", "\u0c1f",
"\u0c20", "\u0c21", "\u0c22", "\u0c23", "\u0c24", "\u0c25", "\u0c26", "\u0c27", "\u0c28", "\u0c2a",
"\u0c2b", "\u0c2c", "\u0c2d", "\u0c2e", "\u0c2f", "\u0c30", "\u0c31", "\u0c32", "\u0c33", "\u0c35",
"\u0c36", "\u0c37", "\u0c38", "\u0c39", "\u0c3e", "\u0c3f", "\u0c40", "\u0c41", "\u0c42", "\u0c43",
"\u0c44", "\u0c46", "\u0c47", "\u0c48", "\u0c4a", "\u0c4b", "\u0c4c", "\u0c4d", "\u0c62", "\u0c63",
"\u0c58", "\u0c59", "\u0c66", "\u0c67", "\u0c68", "\u0c69", "\u0c6a", "\u0c6b", "\u0c6c", "\u0c6d",
"\u0c6e", "\u0c6f", "\u0c3d", "\u0c78", "\u0c79", "\u0c7a", "\u0c7b", "\u0c7c", "\u0c7d", "\u0c7e",
"\u0c7f"
]
},
'sinhala': {
'labelMsg': 'wikieditor-toolbar-characters-page-sinhala',
'language': 'si',
'layout': 'characters',
'characters': [
"\u0d85", "\u0d86", "\u0d87", "\u0d88", "\u0d89", "\u0d8a", "\u0d8b", "\u0d8c", "\u0d8d", "\u0d8e",
"\u0d8f", "\u0d90", "\u0d91", "\u0d92", "\u0d93", "\u0d94", "\u0d95", "\u0d96", "\u0d9a", "\u0d9b",
"\u0d9c", "\u0d9d", "\u0d9e", "\u0d9f", "\u0da0", "\u0da1", "\u0da2", "\u0da3", "\u0da4", "\u0da5",
"\u0da6", "\u0da7", "\u0da8", "\u0da9", "\u0daa", "\u0dab", "\u0dac", "\u0dad", "\u0dae", "\u0daf",
"\u0db0", "\u0db1", "\u0db3", "\u0db4", "\u0db5", "\u0db6", "\u0db7", "\u0db8", "\u0db9", "\u0dba",
"\u0dbb", "\u0dbd", "\u0dc0", "\u0dc1", "\u0dc2", "\u0dc3", "\u0dc4", "\u0dc5", "\u0dc6",
[ "\u25cc\u0dcf", "\u0dcf" ], [ "\u25cc\u0dd0", "\u0dd0" ], [ "\u25cc\u0dd1", "\u0dd1" ],
[ "\u25cc\u0dd2", "\u0dd2" ], [ "\u25cc\u0dd3", "\u0dd3" ], [ "\u25cc\u0dd4", "\u0dd4" ],
[ "\u25cc\u0dd6", "\u0dd6" ], [ "\u25cc\u0dd8", "\u0dd8" ], [ "\u25cc\u0df2", "\u0df2" ],
[ "\u25cc\u0ddf", "\u0ddf" ], [ "\u25cc\u0df3", "\u0df3" ], [ "\u25cc\u0dd9", "\u0dd9" ],
[ "\u25cc\u0dda", "\u0dda" ], [ "\u25cc\u0ddc", "\u0ddc" ], [ "\u25cc\u0ddd", "\u0ddd" ],
[ "\u25cc\u0dde", "\u0dde" ], [ "\u25cc\u0dca", "\u0dca" ]
]
},
'gujarati': {
'labelMsg': 'wikieditor-toolbar-characters-page-gujarati',
'language': 'gu',
'layout': 'characters',
'characters': [
"\u0ad0", "\u0a85", "\u0a86", "\u0a87", "\u0a88", "\u0a89", "\u0a8a", "\u0a8b", "\u0ae0", "\u0a8c",
"\u0ae1", "\u0a8d", "\u0a8f", "\u0a90", "\u0a91", "\u0a93", "\u0a94", "\u0a95", "\u0a96", "\u0a97",
"\u0a98", "\u0a99", "\u0a9a", "\u0a9b", "\u0a9c", "\u0a9d", "\u0a9e", "\u0a9f", "\u0aa0", "\u0aa1",
"\u0aa2", "\u0aa3", "\u0aa4", "\u0aa5", "\u0aa6", "\u0aa7", "\u0aa8", "\u0aaa", "\u0aab", "\u0aac",
"\u0aad", "\u0aae", "\u0aaf", "\u0ab0", "\u0ab2", "\u0ab5", "\u0ab6", "\u0ab7", "\u0ab8", "\u0ab9",
"\u0ab3", "\u0abd", [ "\u25cc\u0abe", "\u0abe" ], [ "\u25cc\u0abf", "\u0abf" ],
[ "\u25cc\u0ac0", "\u0ac0" ], [ "\u25cc\u0ac1", "\u0ac1" ], [ "\u25cc\u0ac2", "\u0ac2" ],
[ "\u25cc\u0ac3", "\u0ac3" ], [ "\u25cc\u0ac4", "\u0ac4" ], [ "\u25cc\u0ae2", "\u0ae2" ],
[ "\u25cc\u0ae3", "\u0ae3" ], [ "\u25cc\u0ac5", "\u0ac5" ], [ "\u25cc\u0ac7", "\u0ac7" ],
[ "\u25cc\u0ac8", "\u0ac8" ], [ "\u25cc\u0ac9", "\u0ac9" ], [ "\u25cc\u0acb", "\u0acb" ],
[ "\u25cc\u0acc", "\u0acc" ], [ "\u25cc\u0acd", "\u0acd" ]
]
},
'thai': {
'labelMsg': 'wikieditor-toolbar-characters-page-thai',
'language': 'th',
'layout': 'characters',
'characters': [
"\u0e01", "\u0e02", "\u0e03", "\u0e04", "\u0e05", "\u0e06", "\u0e07", "\u0e08", "\u0e09", "\u0e0a",
"\u0e0b", "\u0e0c", "\u0e0d", "\u0e0e", "\u0e0f", "\u0e10", "\u0e11", "\u0e12", "\u0e13", "\u0e14",
"\u0e15", "\u0e16", "\u0e17", "\u0e18", "\u0e19", "\u0e1a", "\u0e1b", "\u0e1c", "\u0e1d", "\u0e1e",
"\u0e1f", "\u0e20", "\u0e21", "\u0e22", "\u0e23", "\u0e24", "\u0e25", "\u0e26", "\u0e27", "\u0e28",
"\u0e29", "\u0e2a", "\u0e2b", "\u0e2c", "\u0e2d", "\u0e2e", "\u0e30", "\u0e31", "\u0e32", "\u0e45",
"\u0e33", "\u0e34", "\u0e35", "\u0e36", "\u0e37", "\u0e38", "\u0e39", "\u0e40", "\u0e41", "\u0e42",
"\u0e43", "\u0e44", "\u0e47", "\u0e48", "\u0e49", "\u0e4a", "\u0e4b", "\u0e4c", "\u0e4d", "\u0e3a",
"\u0e4e", "\u0e50", "\u0e51", "\u0e52", "\u0e53", "\u0e54", "\u0e55", "\u0e56", "\u0e57", "\u0e58",
"\u0e59", "\u0e3f", "\u0e46", "\u0e2f", "\u0e5a", "\u0e4f", "\u0e5b"
]
},
'lao': {
'labelMsg': 'wikieditor-toolbar-characters-page-lao',
'language': 'lo',
'layout': 'characters',
'characters': [
"\u0e81", "\u0e82", "\u0e84", "\u0e87", "\u0e88", "\u0eaa", "\u0e8a", "\u0e8d", "\u0e94", "\u0e95",
"\u0e96", "\u0e97", "\u0e99", "\u0e9a", "\u0e9b", "\u0e9c", "\u0e9d", "\u0e9e", "\u0e9f", "\u0ea1",
"\u0ea2", "\u0ea5", "\u0ea7", "\u0eab", "\u0ead", "\u0eae", "\u0ea3", "\u0edc", "\u0edd", "\u0ebc",
"\u0ebd", "\u0eb0", "\u0eb1", "\u0eb2", "\u0eb3", "\u0eb4", "\u0eb5", "\u0eb6", "\u0eb7", "\u0eb8",
"\u0eb9", "\u0ebb", "\u0ec0", "\u0ec1", "\u0ec2", "\u0ec3", "\u0ec4", "\u0ec8", "\u0ec9", "\u0eca",
"\u0ecb", "\u0ecc", "\u0ecd", "\u0ed0", "\u0ed1", "\u0ed2", "\u0ed3", "\u0ed4", "\u0ed5", "\u0ed6",
"\u0ed7", "\u0ed8", "\u0ed9", "\u20ad", "\u0ec6", "\u0eaf"
]
},
'khmer': {
'labelMsg': 'wikieditor-toolbar-characters-page-khmer',
'language': 'km',
'layout': 'characters',
'characters': [
"\u1780", "\u1781", "\u1782", "\u1783", "\u1784", "\u1785", "\u1786", "\u1787", "\u1788", "\u1789",
"\u178a", "\u178b", "\u178c", "\u178d", "\u178e", "\u178f", "\u1790", "\u1791", "\u1792", "\u1793",
"\u1794", "\u1795", "\u1796", "\u1797", "\u1798", "\u1799", "\u179a", "\u179b", "\u179c", "\u179f",
"\u17a0", "\u17a1", "\u17a2", "\u17a3", "\u17a4", "\u17a5", "\u17a6", "\u17a7", "\u17a8", "\u17a9",
"\u17aa", "\u17ab", "\u17ac", "\u17ad", "\u17ae", "\u17af", "\u17b0", "\u17b1", "\u17b2", "\u17b3",
"\u17d2", "\u17b4", "\u17b5", "\u17b6", "\u17b7", "\u17b8", "\u17b9", "\u17ba", "\u17bb", "\u17bc",
"\u17bd", "\u17be", "\u17bf", "\u17c0", "\u17c1", "\u17c2", "\u17c3", "\u17c4", "\u17c5", "\u17c6",
"\u17c7", "\u17c8", "\u17c9", "\u17ca", "\u17cb", "\u17cc", "\u17cd", "\u17ce", "\u17cf", "\u17d0",
"\u17d1", "\u17d3", "\u17dd", "\u17dc", "\u17e0", "\u17e1", "\u17e2", "\u17e3", "\u17e4", "\u17e5",
"\u17e6", "\u17e7", "\u17e8", "\u17e9", "\u17db", "\u17d4", "\u17d5", "\u17d6", "\u17d7", "\u17d8",
"\u17d9", "\u17da", "\u17f0", "\u17f1", "\u17f2", "\u17f3", "\u17f4", "\u17f5", "\u17f6", "\u17f7",
"\u17f8", "\u17f9", "\u19e0", "\u19e1", "\u19e2", "\u19e3", "\u19e4", "\u19e5", "\u19e6", "\u19e7",
"\u19e8", "\u19e9", "\u19ea", "\u19eb", "\u19ec", "\u19ed", "\u19ee", "\u19ef", "\u19f0", "\u19f1",
"\u19f2", "\u19f3", "\u19f4", "\u19f5", "\u19f6", "\u19f7", "\u19f8", "\u19f9", "\u19fa", "\u19fb",
"\u19fc", "\u19fd", "\u19fe", "\u19ff"
]
}
}
},
'help': {
labelMsg: 'wikieditor-toolbar-section-help',
type: 'booklet',
deferLoad: true,
pages: {
'format': {
labelMsg: 'wikieditor-toolbar-help-page-format',
layout: 'table',
headings: [
{ textMsg: 'wikieditor-toolbar-help-heading-description' },
{ textMsg: 'wikieditor-toolbar-help-heading-syntax' },
{ textMsg: 'wikieditor-toolbar-help-heading-result' }
],
rows: [
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-italic-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-italic-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-italic-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-bold-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-bold-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-bold-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-bolditalic-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-bolditalic-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-bolditalic-result' }
}
]
},
'link': {
labelMsg: 'wikieditor-toolbar-help-page-link',
layout: 'table',
headings: [
{ textMsg: 'wikieditor-toolbar-help-heading-description' },
{ textMsg: 'wikieditor-toolbar-help-heading-syntax' },
{ textMsg: 'wikieditor-toolbar-help-heading-result' }
],
rows: [
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-ilink-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-ilink-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-ilink-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-xlink-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-xlink-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-xlink-result' }
}
]
},
'heading': {
labelMsg: 'wikieditor-toolbar-help-page-heading',
layout: 'table',
headings: [
{ textMsg: 'wikieditor-toolbar-help-heading-description' },
{ textMsg: 'wikieditor-toolbar-help-heading-syntax' },
{ textMsg: 'wikieditor-toolbar-help-heading-result' }
],
rows: [
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-heading2-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-heading2-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-heading2-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-heading3-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-heading3-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-heading3-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-heading4-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-heading4-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-heading4-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-heading5-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-heading5-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-heading5-result' }
}
]
},
'list': {
labelMsg: 'wikieditor-toolbar-help-page-list',
layout: 'table',
headings: [
{ textMsg: 'wikieditor-toolbar-help-heading-description' },
{ textMsg: 'wikieditor-toolbar-help-heading-syntax' },
{ textMsg: 'wikieditor-toolbar-help-heading-result' }
],
rows: [
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-ulist-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-ulist-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-ulist-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-olist-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-olist-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-olist-result' }
}
]
},
'file': {
labelMsg: 'wikieditor-toolbar-help-page-file',
layout: 'table',
headings: [
{ textMsg: 'wikieditor-toolbar-help-heading-description' },
{ textMsg: 'wikieditor-toolbar-help-heading-syntax' },
{ textMsg: 'wikieditor-toolbar-help-heading-result' }
],
rows: [
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-file-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-file-syntax' },
'result': { htmlMsg: [ 'wikieditor-toolbar-help-content-file-result', stylepath ] }
}
]
},
'reference': {
labelMsg: 'wikieditor-toolbar-help-page-reference',
layout: 'table',
headings: [
{ textMsg: 'wikieditor-toolbar-help-heading-description' },
{ textMsg: 'wikieditor-toolbar-help-heading-syntax' },
{ textMsg: 'wikieditor-toolbar-help-heading-result' }
],
rows: [
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-reference-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-reference-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-reference-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-rereference-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-rereference-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-rereference-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-showreferences-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-showreferences-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-showreferences-result' }
}
]
},
'discussion': {
labelMsg: 'wikieditor-toolbar-help-page-discussion',
layout: 'table',
headings: [
{ textMsg: 'wikieditor-toolbar-help-heading-description' },
{ textMsg: 'wikieditor-toolbar-help-heading-syntax' },
{ textMsg: 'wikieditor-toolbar-help-heading-result' }
],
rows: [
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-signaturetimestamp-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-signaturetimestamp-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-signaturetimestamp-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-signature-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-signature-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-signature-result' }
},
{
'description': { htmlMsg: 'wikieditor-toolbar-help-content-indent-description' },
'syntax': { htmlMsg: 'wikieditor-toolbar-help-content-indent-syntax' },
'result': { htmlMsg: 'wikieditor-toolbar-help-content-indent-result' }
}
]
}
}
}
},
'dialogs': {
'insert-link': {
// For now, apply the old browser and iframe requirements to the link and table dialogs as well
// This'll be removed once these dialogs are confirmed stable without the iframe and/or in more browsers
/*
'browsers': {
// Left-to-right languages
'ltr': {
'msie': [['>=', 7]],
'firefox': [['>=', 3]],
'opera': [['>=', 10]],
'safari': [['>=', 4]],
'chrome': [['>=', 4]]
},
// Right-to-left languages
'rtl': {
'msie': [['>=', 8]],
'firefox': [['>=', 3]],
'opera': [['>=', 10]],
'safari': [['>=', 4]],
'chrome': [['>=', 4]]
}
},
'req': [ 'iframe' ],
*/
filters: [ '#wpTextbox1.toolbar-dialogs' ],
titleMsg: 'wikieditor-toolbar-tool-link-title',
id: 'wikieditor-toolbar-link-dialog',
html: '\
<fieldset>\
<div class="wikieditor-toolbar-field-wrapper">\
<label for="wikieditor-toolbar-link-int-target" rel="wikieditor-toolbar-tool-link-int-target" id="wikieditor-toolbar-tool-link-int-target-label"></label>\
<div id="wikieditor-toolbar-link-int-target-status"></div>\
<input type="text" id="wikieditor-toolbar-link-int-target" />\
</div>\
<div class="wikieditor-toolbar-field-wrapper">\
<label for="wikieditor-toolbar-link-int-text" rel="wikieditor-toolbar-tool-link-int-text"></label>\
<input type="text" id="wikieditor-toolbar-link-int-text" />\
</div>\
<div class="wikieditor-toolbar-field-wrapper">\
<div class="wikieditor-toolbar-floated-field-wrapper">\
<input type="radio" id="wikieditor-toolbar-link-type-int" name="wikieditor-toolbar-link-type" selected />\
<label for="wikieditor-toolbar-link-type-int" rel="wikieditor-toolbar-tool-link-int"></label>\
</div>\
<div class="wikieditor-toolbar-floated-field-wrapper">\
<input type="radio" id="wikieditor-toolbar-link-type-ext" name="wikieditor-toolbar-link-type" />\
<label for="wikieditor-toolbar-link-type-ext" rel="wikieditor-toolbar-tool-link-ext"></label>\
</div>\
</div>\
</fieldset>',
init: function() {
function isExternalLink( s ) {
// The following things are considered to be external links:
// * Starts a URL protocol
// * Starts with www.
// All of these are potentially valid titles, and the latter two
// categories match about 6300 titles in enwiki's ns0. Out of 6.9M
// titles, that's 0.09%
if ( typeof arguments.callee.regex == 'undefined' ) {
// Cache the regex
arguments.callee.regex =
new RegExp( "^(" + wgUrlProtocols + "|www\\.)", 'i');
}
return s.match( arguments.callee.regex );
}
// Updates the status indicator above the target link
function updateWidget( status ) {
$j( '#wikieditor-toolbar-link-int-target-status' ).children().hide();
$j( '#wikieditor-toolbar-link-int-target' ).parent()
.removeClass( 'status-invalid status-external status-notexists status-exists status-loading' );
if ( status ) {
$j( '#wikieditor-toolbar-link-int-target-status-' + status ).show();
$j( '#wikieditor-toolbar-link-int-target' ).parent().addClass( 'status-' + status );
}
if ( status == 'invalid' ) {
$j( '.ui-dialog:visible .ui-dialog-buttonpane button:first' )
.attr( 'disabled', true )
.addClass( 'disabled' );
} else {
$j( '.ui-dialog:visible .ui-dialog-buttonpane button:first' )
.removeAttr('disabled')
.removeClass('disabled');
}
}
// Updates the UI to show if the page title being inputed by the user exists or not
// accepts parameter internal for bypassing external link detection
function updateExistence( internal ) {
// ensure the internal parameter is a boolean
if ( internal != true ) internal = false;
// Abort previous request
var request = $j( '#wikieditor-toolbar-link-int-target-status' ).data( 'request' );
if ( request ) {
request.abort();
}
var target = $j( '#wikieditor-toolbar-link-int-target' ).val();
var cache = $j( '#wikieditor-toolbar-link-int-target-status' ).data( 'existencecache' );
if ( cache[target] ) {
updateWidget( cache[target] );
return;
}
if ( target.replace( /^\s+$/,'' ) == '' ) {
// Hide the widget when the textbox is empty
updateWidget( false );
return;
}
// If the forced internal paremter was not true, check if the target is an external link
if ( !internal && isExternalLink( target ) ) {
updateWidget( 'external' );
return;
}
if ( target.indexOf( '|' ) != -1 ) {
// Title contains | , which means it's invalid
// but confuses the API. Show invalid and bypass API
updateWidget( 'invalid' );
return;
}
// Show loading spinner while waiting for the API to respond
updateWidget( 'loading' );
// Call the API to check page status, saving the request object so it can be aborted if necessary
$j( '#wikieditor-toolbar-link-int-target-status' ).data(
'request',
$j.ajax( {
url: wgScriptPath + '/api.php',
dataType: 'json',
data: {
'action': 'query',
'indexpageids': '',
'titles': target,
'converttitles': '',
'format': 'json'
},
success: function( data ) {
var status;
if ( !data || typeof data.query == 'undefined' ) {
// This happens in some weird cases
status = false;
} else {
var page = data.query.pages[data.query.pageids[0]];
status = 'exists';
if ( typeof page.missing != 'undefined' )
status = 'notexists';
else if ( typeof page.invalid != 'undefined' )
status = 'invalid';
}
// Cache the status of the link target if the force internal parameter was not passed
if ( !internal ) cache[target] = status;
updateWidget( status );
}
} )
);
}
$j( '#wikieditor-toolbar-link-type-int, #wikieditor-toolbar-link-type-ext' ).click( function() {
if( $j( '#wikieditor-toolbar-link-type-ext' ).is( ':checked' ) ) {
// Abort previous request
var request = $j( '#wikieditor-toolbar-link-int-target-status' ).data( 'request' );
if ( request ) {
request.abort();
}
updateWidget( 'external' );
}
if( $j( '#wikieditor-toolbar-link-type-int' ).is( ':checked' ) )
updateExistence( true );
});
// Set labels of tabs based on rel values
var u = mw.usability;
$j(this).find( '[rel]' ).each( function() {
$j(this).text( u.getMsg( $j(this).attr( 'rel' ) ) );
});
// Set tabindexes on form fields
$j.wikiEditor.modules.dialogs.fn.setTabindexes( $j(this).find( 'input' ).not( '[tabindex]' ) );
// Setup the tooltips in the textboxes
$j( '#wikieditor-toolbar-link-int-target' )
.data( 'tooltip', u.getMsg( 'wikieditor-toolbar-tool-link-int-target-tooltip' ) );
$j( '#wikieditor-toolbar-link-int-text' )
.data( 'tooltip', u.getMsg( 'wikieditor-toolbar-tool-link-int-text-tooltip' ) );
$j( '#wikieditor-toolbar-link-int-target, #wikieditor-toolbar-link-int-text' )
.each( function() {
var tooltip = u.getMsg( $j( this ).attr( 'id' ) + '-tooltip' );
if ( $j( this ).val() == '' )
$j( this )
.addClass( 'wikieditor-toolbar-dialog-hint' )
.val( $j( this ).data( 'tooltip' ) )
.data( 'tooltip-mode', true );
} )
.focus( function() {
if( $j( this ).val() == $j( this ).data( 'tooltip' ) ) {
$j( this )
.val( '' )
.removeClass( 'wikieditor-toolbar-dialog-hint' )
.data( 'tooltip-mode', false );
}
})
.bind( 'change', function() {
if ( $j( this ).val() != $j( this ).data( 'tooltip' ) ) {
$j( this )
.removeClass( 'wikieditor-toolbar-dialog-hint' )
.data( 'tooltip-mode', false );
}
})
.bind( 'blur', function() {
if ( $j( this ).val() == '' ) {
$j( this )
.addClass( 'wikieditor-toolbar-dialog-hint' )
.val( $j( this ).data( 'tooltip' ) )
.data( 'tooltip-mode', true );
}
});
// Automatically copy the value of the internal link page title field to the link text field unless the user
// has changed the link text field - this is a convenience thing since most link texts are going to be the
// the same as the page title
// Also change the internal/external radio button accordingly
$j( '#wikieditor-toolbar-link-int-target' ).bind( 'change keydown paste cut', function() {
// $j(this).val() is the old value, before the keypress
// Defer this until $j(this).val() has been updated
setTimeout( function() {
if ( isExternalLink( $j( '#wikieditor-toolbar-link-int-target' ).val() ) ) {
$j( '#wikieditor-toolbar-link-type-ext' ).attr( 'checked', 'checked' );
updateWidget( 'external' );
} else {
$j( '#wikieditor-toolbar-link-type-int' ).attr( 'checked', 'checked' );
updateExistence();
}
if ( $j( '#wikieditor-toolbar-link-int-text' ).data( 'untouched' ) )
if ( $j( '#wikieditor-toolbar-link-int-target' ).val() ==
$j( '#wikieditor-toolbar-link-int-target' ).data( 'tooltip' ) ) {
$j( '#wikieditor-toolbar-link-int-text' )
.addClass( 'wikieditor-toolbar-dialog-hint' )
.val( $j( '#wikieditor-toolbar-link-int-text' ).data( 'tooltip' ) )
.change();
} else {
$j( '#wikieditor-toolbar-link-int-text' )
.val( $j( '#wikieditor-toolbar-link-int-target' ).val() )
.change();
}
}, 0 );
});
$j( '#wikieditor-toolbar-link-int-text' ).bind( 'change keydown paste cut', function() {
var oldVal = $j(this).val();
var that = this;
setTimeout( function() {
if ( $j(that).val() != oldVal )
$j(that).data( 'untouched', false );
}, 0 );
});
// Add images to the page existence widget, which will be shown mutually exclusively to communicate if the
// page exists, does not exist or the title is invalid (like if it contains a | character)
var existsMsg = u.getMsg( 'wikieditor-toolbar-tool-link-int-target-status-exists' );
var notexistsMsg = u.getMsg( 'wikieditor-toolbar-tool-link-int-target-status-notexists' );
var invalidMsg = u.getMsg( 'wikieditor-toolbar-tool-link-int-target-status-invalid' );
var externalMsg = u.getMsg( 'wikieditor-toolbar-tool-link-int-target-status-external' );
var loadingMsg = u.getMsg( 'wikieditor-toolbar-tool-link-int-target-status-loading' );
$j( '#wikieditor-toolbar-link-int-target-status' )
.append( $j( '<div />' )
.attr( 'id', 'wikieditor-toolbar-link-int-target-status-exists' )
.append( existsMsg )
)
.append( $j( '<div />' )
.attr( 'id', 'wikieditor-toolbar-link-int-target-status-notexists' )
.append( notexistsMsg )
)
.append( $j( '<div />' )
.attr( 'id', 'wikieditor-toolbar-link-int-target-status-invalid' )
.append( invalidMsg )
)
.append( $j( '<div />' )
.attr( 'id', 'wikieditor-toolbar-link-int-target-status-external' )
.append( externalMsg )
)
.append( $j( '<div />' )
.attr( 'id', 'wikieditor-toolbar-link-int-target-status-loading' )
.append( $j( '<img />' ).attr( {
'src': $j.wikiEditor.imgPath + 'dialogs/' + 'loading.gif',
'alt': loadingMsg,
'title': loadingMsg
} ) )
)
.data( 'existencecache', {} )
.children().hide();
$j( '#wikieditor-toolbar-link-int-target' )
.bind( 'keyup paste cut', function() {
// Cancel the running timer if applicable
if ( typeof $j(this).data( 'timerID' ) != 'undefined' ) {
clearTimeout( $j(this).data( 'timerID' ) );
}
// Delay fetch for a while
// FIXME: Make 120 configurable elsewhere
var timerID = setTimeout( updateExistence, 120 );
$j(this).data( 'timerID', timerID );
} )
.change( function() {
// Cancel the running timer if applicable
if ( typeof $j(this).data( 'timerID' ) != 'undefined' ) {
clearTimeout( $j(this).data( 'timerID' ) );
}
// Fetch right now
updateExistence();
} );
// Title suggestions
$j( '#wikieditor-toolbar-link-int-target' ).data( 'suggcache', {} ).suggestions( {
fetch: function( query ) {
var that = this;
var title = $j(this).val();
if ( isExternalLink( title ) || title.indexOf( '|' ) != -1 || title == '') {
$j(this).suggestions( 'suggestions', [] );
return;
}
var cache = $j(this).data( 'suggcache' );
if ( typeof cache[title] != 'undefined' ) {
$j(this).suggestions( 'suggestions', cache[title] );
return;
}
var request = $j.ajax( {
url: wgScriptPath + '/api.php',
data: {
'action': 'opensearch',
'search': title,
'namespace': 0,
'suggest': '',
'format': 'json'
},
dataType: 'json',
success: function( data ) {
cache[title] = data[1];
$j(that).suggestions( 'suggestions', data[1] );
}
});
$j(this).data( 'request', request );
},
cancel: function() {
var request = $j(this).data( 'request' );
if ( request )
request.abort();
}
});
},
dialog: {
width: 500,
dialogClass: 'wikiEditor-toolbar-dialog',
buttons: {
'wikieditor-toolbar-tool-link-insert': function() {
function escapeInternalText( s ) {
// FIXME: Should this escape [[ too? Seems to work without that
return s.replace( /(]{2,})/g, '<nowiki>$1</nowiki>' );
}
function escapeExternalTarget( s ) {
return s.replace( / /g, '%20' )
.replace( /\[/g, '%5B' )
.replace( /]/g, '%5D' );
}
function escapeExternalText( s ) {
// FIXME: Should this escape [ too? Seems to work without that
return s.replace( /(]+)/g, '<nowiki>$1</nowiki>' );
}
var insertText = '';
var whitespace = $j( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace' );
var target = $j( '#wikieditor-toolbar-link-int-target' ).val();
var text = $j( '#wikieditor-toolbar-link-int-text' ).val();
// check if the tooltips were passed as target or text
if ( $j( '#wikieditor-toolbar-link-int-target' ).data( 'tooltip-mode' ) )
target = "";
if ( $j( '#wikieditor-toolbar-link-int-text' ).data( 'tooltip-mode' ) )
text = "";
var u = mw.usability;
if ( target == '' ) {
alert( u.getMsg( 'wikieditor-toolbar-tool-link-empty' ) );
return;
}
if ( $j.trim( text ) == '' ) {
// [[Foo| ]] creates an invisible link
// Instead, generate [[Foo|]]
text = '';
}
if ( $j( '#wikieditor-toolbar-link-type-int' ).is( ':checked' ) ) {
// FIXME: Exactly how fragile is this?
if ( $j( '#wikieditor-toolbar-link-int-target-status-invalid' ).is( ':visible' ) ) {
// Refuse to add links to invalid titles
alert( u.getMsg( 'wikieditor-toolbar-tool-link-int-invalid' ) );
return;
}
if ( target == text || !text.length )
insertText = '[[' + target + ']]';
else
insertText = '[[' + target + '|' + escapeInternalText( text ) + ']]';
} else {
// Prepend http:// if there is no protocol
if ( !target.match( /^[a-z]+:\/\/./ ) )
target = 'http://' + target;
// Detect if this is really an internal link in disguise
var match = target.match( $j(this).data( 'articlePathRegex' ) );
if ( match && !$j(this).data( 'ignoreLooksInternal' ) ) {
var buttons = { };
var that = this;
buttons[ u.getMsg( 'wikieditor-toolbar-tool-link-lookslikeinternal-int' ) ] = function() {
$j( '#wikieditor-toolbar-link-int-target' ).val( match[1] ).change();
$j(this).dialog( 'close' );
};
buttons[ u.getMsg( 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' ) ] = function() {
$j(that).data( 'ignoreLooksInternal', true );
$j(that).closest( '.ui-dialog' ).find( 'button:first' ).click();
$j(that).data( 'ignoreLooksInternal', false );
$j(this).dialog( 'close' );
};
$j.wikiEditor.modules.dialogs.quickDialog(
u.getMsg( 'wikieditor-toolbar-tool-link-lookslikeinternal', match[1] ),
{ buttons: buttons }
);
return;
}
var escTarget = escapeExternalTarget( target );
var escText = escapeExternalText( text );
if ( escTarget == escText )
insertText = escTarget;
else if ( text == '' )
insertText = '[' + escTarget + ']';
else
insertText = '[' + escTarget + ' ' + escText + ']';
}
// Preserve whitespace in selection when replacing
if ( whitespace ) insertText = whitespace[0] + insertText + whitespace[1];
$j(this).dialog( 'close' );
$j.wikiEditor.modules.toolbar.fn.doAction( $j(this).data( 'context' ), {
type: 'replace',
options: {
pre: insertText
}
}, $j(this) );
// Blank form
$j( '#wikieditor-toolbar-link-int-target, #wikieditor-toolbar-link-int-text' ).val( '' );
$j( '#wikieditor-toolbar-link-type-int, #wikieditor-toolbar-link-type-ext' ).attr( 'checked', '' );
},
'wikieditor-toolbar-tool-link-cancel': function() {
// Clear any saved selection state
var context = $j(this).data( 'context' );
context.fn.restoreStuffForIE();
$j(this).dialog( 'close' );
}
},
open: function() {
// Cache the articlepath regex
$j(this).data( 'articlePathRegex', new RegExp(
'^' + RegExp.escape( wgServer + wgArticlePath )
.replace( /\\\$1/g, '(.*)' ) + '$'
) );
// Pre-fill the text fields based on the current selection
var context = $j(this).data( 'context' );
// Restore and immediately save selection state, needed for inserting stuff later
context.fn.restoreStuffForIE();
context.fn.saveStuffForIE();
var selection = context.$textarea.textSelection( 'getSelection' );
$j( '#wikieditor-toolbar-link-int-target' ).focus();
// Trigger the change event, so the link status indicator is up to date
$j( '#wikieditor-toolbar-link-int-target' ).change();
$j( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace', [ '', '' ] );
if ( selection != '' ) {
var target, text, type;
var matches;
if ( ( matches = selection.match( /^(\s*)\[\[([^\]\|]+)(\|([^\]\|]*))?\]\](\s*)$/ ) ) ) {
// [[foo|bar]] or [[foo]]
target = matches[2];
text = ( matches[4] ? matches[4] : matches[2] );
type = 'int';
// Preserve whitespace when replacing
$j( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace', [ matches[1], matches[5] ] );
} else if ( ( matches = selection.match( /^(\s*)\[([^\] ]+)( ([^\]]+))?\](\s*)$/ ) ) ) {
// [http://www.example.com foo] or [http://www.example.com]
target = matches[2];
text = ( matches[4] ? matches[4] : '' );
type = 'ext';
// Preserve whitespace when replacing
$j( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace', [ matches[1], matches[5] ] );
} else {
// Trim any leading and trailing whitespace from the selection,
// but preserve it when replacing
target = text = $j.trim( selection );
if ( target.length < selection.length ) {
$j( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace', [
selection.substr( 0, selection.indexOf( target.charAt( 0 ) ) ),
selection.substr(
selection.lastIndexOf( target.charAt( target.length - 1 ) ) + 1
) ]
);
}
}
// Change the value by calling val() doesn't trigger the change event, so let's do that ourselves
if ( typeof text != 'undefined' )
$j( '#wikieditor-toolbar-link-int-text' ).val( text ).change();
if ( typeof target != 'undefined' )
$j( '#wikieditor-toolbar-link-int-target' ).val( target ).change();
if ( typeof type != 'undefined' )
$j( '#wikieditor-toolbar-link-' + type ).attr( 'checked', 'checked' );
}
$j( '#wikieditor-toolbar-link-int-text' ).data( 'untouched',
$j( '#wikieditor-toolbar-link-int-text' ).val() ==
$j( '#wikieditor-toolbar-link-int-target' ).val() ||
$j( '#wikieditor-toolbar-link-int-text' ).hasClass( 'wikieditor-toolbar-dialog-hint' )
);
$j( '#wikieditor-toolbar-link-int-target' ).suggestions();
//don't overwrite user's text
if( selection != '' ){
$j( '#wikieditor-toolbar-link-int-text' ).data( 'untouched', false );
}
$j( '#wikieditor-toolbar-link-int-text, #wikiedit-toolbar-link-int-target' )
.each( function() {
if ( $j(this).val() == '' )
$j(this).parent().find( 'label' ).show();
});
if ( !( $j(this).data( 'dialogkeypressset' ) ) ) {
$j(this).data( 'dialogkeypressset', true );
// Execute the action associated with the first button
// when the user presses Enter
$j(this).closest( '.ui-dialog' ).keypress( function( e ) {
if ( ( e.keyCode || e.which ) == 13 ) {
var button = $j(this).data( 'dialogaction' ) || $j(this).find( 'button:first' );
button.click();
e.preventDefault();
}
});
// Make tabbing to a button and pressing
// Enter do what people expect
$j(this).closest( '.ui-dialog' ).find( 'button' ).focus( function() {
$j(this).closest( '.ui-dialog' ).data( 'dialogaction', this );
});
}
}
}
},
'insert-reference': {
filters: [ '#wpTextbox1.toolbar-dialogs' ],
titleMsg: 'wikieditor-toolbar-tool-reference-title',
id: 'wikieditor-toolbar-reference-dialog',
html: '\
<div class="wikieditor-toolbar-dialog-wrapper">\
<fieldset><div class="wikieditor-toolbar-table-form">\
<div class="wikieditor-toolbar-field-wrapper">\
<label for="wikieditor-toolbar-reference-text"\
rel="wikieditor-toolbar-tool-reference-text"></label>\
<input type="text" id="wikieditor-toolbar-reference-text" />\
</div>\
</div></fieldset>\
</div>',
init: function() {
// Insert translated strings into labels
$j( this ).find( '[rel]' ).each( function() {
$j( this ).text( mw.usability.getMsg( $j( this ).attr( 'rel' ) ) );
} );
},
dialog: {
dialogClass: 'wikiEditor-toolbar-dialog',
width: 590,
buttons: {
'wikieditor-toolbar-tool-reference-insert': function() {
var insertText = $j( '#wikieditor-toolbar-reference-text' ).val();
var whitespace = $j( '#wikieditor-toolbar-reference-dialog' ).data( 'whitespace' );
var attributes = $j( '#wikieditor-toolbar-reference-dialog' ).data( 'attributes' );
// Close the dialog
$j( this ).dialog( 'close' );
$j.wikiEditor.modules.toolbar.fn.doAction(
$j( this ).data( 'context' ),
{
type: 'replace',
options: {
pre: whitespace[0] + '<ref' + attributes + '>',
peri: insertText,
post: '</ref>' + whitespace[1]
}
},
$j( this )
);
// Restore form state
$j( '#wikieditor-toolbar-reference-text' ).val( "" );
},
'wikieditor-toolbar-tool-reference-cancel': function() {
// Clear any saved selection state
var context = $j( this ).data( 'context' );
context.fn.restoreStuffForIE();
$j( this ).dialog( 'close' );
}
},
open: function() {
// Pre-fill the text fields based on the current selection
var context = $j(this).data( 'context' );
// Restore and immediately save selection state, needed for inserting stuff later
context.fn.restoreStuffForIE();
context.fn.saveStuffForIE();
var selection = context.$textarea.textSelection( 'getSelection' );
// set focus
$j( '#wikieditor-toolbar-reference-text' ).focus();
$j( '#wikieditor-toolbar-reference-dialog' )
.data( 'whitespace', [ '', '' ] )
.data( 'attributes', '' );
if ( selection != '' ) {
var matches, text;
if ( ( matches = selection.match( /^(\s*)<ref([^\>]*)>([^\<]*)<\/ref\>(\s*)$/ ) ) ) {
text = matches[3];
// Preserve whitespace when replacing
$j( '#wikieditor-toolbar-reference-dialog' ).data( 'whitespace', [ matches[1], matches[4] ] );
$j( '#wikieditor-toolbar-reference-dialog' ).data( 'attributes', matches[2] );
} else {
text = selection;
}
$j( '#wikieditor-toolbar-reference-text' ).val( text );
}
if ( !( $j( this ).data( 'dialogkeypressset' ) ) ) {
$j( this ).data( 'dialogkeypressset', true );
// Execute the action associated with the first button
// when the user presses Enter
$j( this ).closest( '.ui-dialog' ).keypress( function( e ) {
if ( ( e.keyCode || e.which ) == 13 ) {
var button = $j( this ).data( 'dialogaction' ) || $j( this ).find( 'button:first' );
button.click();
e.preventDefault();
}
} );
// Make tabbing to a button and pressing
// Enter do what people expect
$j( this ).closest( '.ui-dialog' ).find( 'button' ).focus( function() {
$j( this ).closest( '.ui-dialog' ).data( 'dialogaction', this );
} );
}
}
}
},
'insert-table': {
// For now, apply the old browser and iframe requirements to the link and table dialogs as well
// This'll be removed once these dialogs are confirmed stable without the iframe and/or in more browsers
/*
'browsers': {
// Left-to-right languages
'ltr': {
'msie': [['>=', 7]],
'firefox': [['>=', 3]],
'opera': [['>=', 10]],
'safari': [['>=', 4]],
'chrome': [['>=', 4]]
},
// Right-to-left languages
'rtl': {
'msie': [['>=', 8]],
'firefox': [['>=', 3]],
'opera': [['>=', 10]],
'safari': [['>=', 4]],
'chrome': [['>=', 4]]
}
},
'req': [ 'iframe' ],
*/
filters: [ '#wpTextbox1.toolbar-dialogs' ],
titleMsg: 'wikieditor-toolbar-tool-table-title',
id: 'wikieditor-toolbar-table-dialog',
// FIXME: Localize 'x'?
html: '\
<div class="wikieditor-toolbar-dialog-wrapper">\
<fieldset><div class="wikieditor-toolbar-table-form">\
<div class="wikieditor-toolbar-field-wrapper">\
<input type="checkbox" id="wikieditor-toolbar-table-dimensions-header" checked />\
<label for="wikieditor-toolbar-table-dimensions-header"\
rel="wikieditor-toolbar-tool-table-dimensions-header"></label>\
</div>\
<div class="wikieditor-toolbar-field-wrapper">\
<input type="checkbox" id="wikieditor-toolbar-table-wikitable" checked />\
<label for="wikieditor-toolbar-table-wikitable" rel="wikieditor-toolbar-tool-table-wikitable"></label>\
</div>\
<div class="wikieditor-toolbar-field-wrapper">\
<input type="checkbox" id="wikieditor-toolbar-table-sortable" />\
<label for="wikieditor-toolbar-table-sortable" rel="wikieditor-toolbar-tool-table-sortable"></label>\
</div>\
<div class="wikieditor-toolbar-table-dimension-fields">\
<div class="wikieditor-toolbar-field-wrapper">\
<label for="wikieditor-toolbar-table-dimensions-rows"\
rel="wikieditor-toolbar-tool-table-dimensions-rows"></label><br />\
<input type="text" id="wikieditor-toolbar-table-dimensions-rows" size="4" />\
</div>\
<div class="wikieditor-toolbar-field-wrapper">\
<label for="wikieditor-toolbar-table-dimensions-columns"\
rel="wikieditor-toolbar-tool-table-dimensions-columns"></label><br />\
<input type="text" id="wikieditor-toolbar-table-dimensions-columns" size="4" />\
</div>\
</div>\
</div></fieldset>\
<div class="wikieditor-toolbar-table-preview-wrapper" >\
<span rel="wikieditor-toolbar-tool-table-example"></span>\
<div class="wikieditor-toolbar-table-preview-content">\
<table id="wikieditor-toolbar-table-preview" class="wikieditor-toolbar-table-preview wikitable">\
<tr class="wikieditor-toolbar-table-preview-header">\
<th rel="wikieditor-toolbar-tool-table-example-header"></th>\
<th rel="wikieditor-toolbar-tool-table-example-header"></th>\
<th rel="wikieditor-toolbar-tool-table-example-header"></th>\
</tr><tr class="wikieditor-toolbar-table-preview-hidden" style="display: none;">\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
</tr><tr>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
</tr><tr>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
</tr><tr>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
<td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
</tr>\
</table>\
</div>\
</div></div>',
init: function() {
$j(this).find( '[rel]' ).each( function() {
$j(this).text( mw.usability.getMsg( $j(this).attr( 'rel' ) ) );
});
// Set tabindexes on form fields
$j.wikiEditor.modules.dialogs.fn.setTabindexes( $j(this).find( 'input' ).not( '[tabindex]' ) );
$j( '#wikieditor-toolbar-table-dimensions-rows' ).val( 3 );
$j( '#wikieditor-toolbar-table-dimensions-columns' ).val( 3 );
$j( '#wikieditor-toolbar-table-wikitable' ).click( function() {
$j( '.wikieditor-toolbar-table-preview' ).toggleClass( 'wikitable' );
});
// Hack for sortable preview: dynamically adding
// sortable class doesn't work, so we use a clone
// FIXME: Relies on sortable table internals
$j( '#wikieditor-toolbar-table-preview' )
.clone()
.attr( 'id', 'wikieditor-toolbar-table-preview2' )
.addClass( 'sortable' )
.insertAfter( $j( '#wikieditor-toolbar-table-preview' ) )
.hide();
if ( typeof ts_makeSortable == 'function' )
ts_makeSortable( $j( '#wikieditor-toolbar-table-preview2' ).get( 0 ) );
$j( '#wikieditor-toolbar-table-sortable' ).click( function() {
// Swap the currently shown one clone with the other one
$j( '#wikieditor-toolbar-table-preview' )
.hide()
.attr( 'id', 'wikieditor-toolbar-table-preview3' );
$j( '#wikieditor-toolbar-table-preview2' )
.attr( 'id', 'wikieditor-toolbar-table-preview' )
.show();
$j( '#wikieditor-toolbar-table-preview3' ).attr( 'id', 'wikieditor-toolbar-table-preview2' );
});
$j( '#wikieditor-toolbar-table-dimensions-header' ).click( function() {
// Instead of show/hiding, switch the HTML around
// We do this because the sortable tables script styles the first row,
// visible or not
var headerHTML = $j( '.wikieditor-toolbar-table-preview-header' ).html();
var hiddenHTML = $j( '.wikieditor-toolbar-table-preview-hidden' ).html();
$j( '.wikieditor-toolbar-table-preview-header' ).html( hiddenHTML );
$j( '.wikieditor-toolbar-table-preview-hidden' ).html( headerHTML );
if ( typeof ts_makeSortable == 'function' )
ts_makeSortable(
$j( '#wikieditor-toolbar-table-preview, #wikieditor-toolbar-table-preview2' )
.filter( '.sortable' )
.get( 0 )
);
});
},
dialog: {
resizable: false,
dialogClass: 'wikiEditor-toolbar-dialog',
width: 590,
buttons: {
'wikieditor-toolbar-tool-table-insert': function() {
var rowsVal = $j( '#wikieditor-toolbar-table-dimensions-rows' ).val();
var colsVal = $j( '#wikieditor-toolbar-table-dimensions-columns' ).val();
var rows = parseInt( rowsVal, 10 );
var cols = parseInt( colsVal, 10 );
var header = $j( '#wikieditor-toolbar-table-dimensions-header' ).is( ':checked' ) ? 1 : 0;
var u = mw.usability;
if ( isNaN( rows ) || isNaN( cols ) || rows != rowsVal || cols != colsVal ) {
alert( u.getMsg( 'wikieditor-toolbar-tool-table-invalidnumber' ) );
return;
}
if ( rows + header == 0 || cols == 0 ) {
alert( u.getMsg( 'wikieditor-toolbar-tool-table-zero' ) );
return;
}
if ( rows * cols > 1000 ) {
alert( u.getMsg( 'wikieditor-toolbar-tool-table-toomany', 1000 ) );
return;
}
var headerText = u.getMsg( 'wikieditor-toolbar-tool-table-example-header' );
var normalText = u.getMsg( 'wikieditor-toolbar-tool-table-example' );
var table = "";
for ( var r = 0; r < rows + header; r++ ) {
table += "|-\n";
for ( var c = 0; c < cols; c++ ) {
var isHeader = ( header && r == 0 );
var delim = isHeader ? '!' : '|';
if ( c > 0 ) {
delim += delim;
}
table += delim + ' ' + ( isHeader ? headerText : normalText ) + ' ';
}
// Replace trailing space by newline
// table[table.length - 1] is read-only
table = table.substr( 0, table.length - 1 ) + "\n";
}
var classes = [];
if ( $j( '#wikieditor-toolbar-table-wikitable' ).is( ':checked' ) )
classes.push( 'wikitable' );
if ( $j( '#wikieditor-toolbar-table-sortable' ).is( ':checked' ) )
classes.push( 'sortable' );
var classStr = classes.length > 0 ? ' class="' + classes.join( ' ' ) + '"' : '';
$j(this).dialog( 'close' );
$j.wikiEditor.modules.toolbar.fn.doAction(
$j(this).data( 'context' ),
{
type: 'replace',
options: {
pre: '{|' + classStr + "\n",
peri: table,
post: '|}',
ownline: true
}
},
$j(this)
);
// Restore form state
$j( '#wikieditor-toolbar-table-dimensions-rows' ).val( 3 );
$j( '#wikieditor-toolbar-table-dimensions-columns' ).val( 3 );
// Simulate clicks instead of setting values, so the according
// actions are performed
if ( !$j( '#wikieditor-toolbar-table-dimensions-header' ).is( ':checked' ) )
$j( '#wikieditor-toolbar-table-dimensions-header' ).click();
if ( !$j( '#wikieditor-toolbar-table-wikitable' ).is( ':checked' ) )
$j( '#wikieditor-toolbar-table-wikitable' ).click();
if ( $j( '#wikieditor-toolbar-table-sortable' ).is( ':checked' ) )
$j( '#wikieditor-toolbar-table-sortable' ).click();
},
'wikieditor-toolbar-tool-table-cancel': function() {
$j(this).dialog( 'close' );
}
},
open: function() {
$j( '#wikieditor-toolbar-table-dimensions-rows' ).focus();
if ( !( $j(this).data( 'dialogkeypressset' ) ) ) {
$j(this).data( 'dialogkeypressset', true );
// Execute the action associated with the first button
// when the user presses Enter
$j(this).closest( '.ui-dialog' ).keypress( function( e ) {
if ( ( e.keyCode || e.which ) == 13 ) {
var button = $j(this).data( 'dialogaction' ) || $j(this).find( 'button:first' );
button.click();
e.preventDefault();
}
});
// Make tabbing to a button and pressing
// Enter do what people expect
$j(this).closest( '.ui-dialog' ).find( 'button' ).focus( function() {
$j(this).closest( '.ui-dialog' ).data( 'dialogaction', this );
});
}
}
}
},
'search-and-replace': {
'browsers': {
// Left-to-right languages
'ltr': {
'msie': false,
'firefox': [['>=', 2]],
'opera': false,
'safari': [['>=', 3]],
'chrome': [['>=', 3]]
},
// Right-to-left languages
'rtl': {
'msie': false,
'firefox': [['>=', 2]],
'opera': false,
'safari': [['>=', 3]],
'chrome': [['>=', 3]]
}
},
filters: [ '#wpTextbox1.toolbar-dialogs' ],
titleMsg: 'wikieditor-toolbar-tool-replace-title',
id: 'wikieditor-toolbar-replace-dialog',
html: '\
<div id="wikieditor-toolbar-replace-message">\
<div id="wikieditor-toolbar-replace-nomatch" rel="wikieditor-toolbar-tool-replace-nomatch"></div>\
<div id="wikieditor-toolbar-replace-success"></div>\
<div id="wikieditor-toolbar-replace-emptysearch" rel="wikieditor-toolbar-tool-replace-emptysearch"></div>\
<div id="wikieditor-toolbar-replace-invalidregex"></div>\
</div>\
<fieldset>\
<div class="wikieditor-toolbar-field-wrapper">\
<label for="wikieditor-toolbar-replace-search" rel="wikieditor-toolbar-tool-replace-search"></label>\
<input type="text" id="wikieditor-toolbar-replace-search" style="width: 100%;" />\
</div>\
<div class="wikieditor-toolbar-field-wrapper">\
<label for="wikieditor-toolbar-replace-replace" rel="wikieditor-toolbar-tool-replace-replace"></label>\
<input type="text" id="wikieditor-toolbar-replace-replace" style="width: 100%;" />\
</div>\
<div class="wikieditor-toolbar-field-wrapper">\
<input type="checkbox" id="wikieditor-toolbar-replace-case" />\
<label for="wikieditor-toolbar-replace-case" rel="wikieditor-toolbar-tool-replace-case"></label>\
</div>\
<div class="wikieditor-toolbar-field-wrapper">\
<input type="checkbox" id="wikieditor-toolbar-replace-regex" />\
<label for="wikieditor-toolbar-replace-regex" rel="wikieditor-toolbar-tool-replace-regex"></label>\
</div>\
</fieldset>',
init: function() {
var u = mw.usability;
$j(this).find( '[rel]' ).each( function() {
$j(this).text( u.getMsg( $j(this).attr( 'rel' ) ) );
});
// Set tabindexes on form fields
$j.wikiEditor.modules.dialogs.fn.setTabindexes( $j(this).find( 'input' ).not( '[tabindex]' ) );
// TODO: Find a cleaner way to share this function
$j(this).data( 'replaceCallback', function( mode ) {
$j( '#wikieditor-toolbar-replace-nomatch, #wikieditor-toolbar-replace-success, #wikieditor-toolbar-replace-emptysearch, #wikieditor-toolbar-replace-invalidregex' ).hide();
var searchStr = $j( '#wikieditor-toolbar-replace-search' ).val();
if ( searchStr == '' ) {
$j( '#wikieditor-toolbar-replace-emptysearch' ).show();
return;
}
var replaceStr = $j( '#wikieditor-toolbar-replace-replace' ).val();
var flags = 'm';
var matchCase = $j( '#wikieditor-toolbar-replace-case' ).is( ':checked' );
var isRegex = $j( '#wikieditor-toolbar-replace-regex' ).is( ':checked' );
if ( !matchCase ) {
flags += 'i';
}
if ( mode == 'replaceAll' ) {
flags += 'g';
}
if ( !isRegex ) {
searchStr = RegExp.escape( searchStr );
}
try {
var regex = new RegExp( searchStr, flags );
} catch( e ) {
$j( '#wikieditor-toolbar-replace-invalidregex' )
.text( u.getMsg( 'wikieditor-toolbar-tool-replace-invalidregex',
e.message ) )
.show();
return;
}
var $textarea = $j(this).data( 'context' ).$textarea;
var text = $textarea.textSelection( 'getContents' );
var match = false;
var offset, s;
if ( mode != 'replaceAll' ) {
offset = $j(this).data( 'offset' );
s = text.substr( offset );
match = s.match( regex );
}
if ( !match ) {
// Search hit BOTTOM, continuing at TOP
offset = 0;
s = text;
match = s.match( regex );
}
if ( !match ) {
$j( '#wikieditor-toolbar-replace-nomatch' ).show();
} else if ( mode == 'replaceAll' ) {
// Instead of using repetitive .match() calls, we use one .match() call with /g
// and indexOf() followed by substr() to find the offsets. This is actually
// faster because our indexOf+substr loop is faster than a match loop, and the
// /g match is so ridiculously fast that it's negligible.
// FIXME: Repetitively calling encapsulateSelection() is probably the best strategy
// in Firefox/Webkit, but in IE replacing the entire content once is better.
var index;
for ( var i = 0; i < match.length; i++ ) {
index = s.indexOf( match[i] );
if ( index == -1 ) {
// This shouldn't happen
break;
}
var matchedText = s.substr( index, match[i].length );
s = s.substr( index + match[i].length );
var start = index + offset;
var end = start + match[i].length;
// Make regex placeholder substitution ($1) work
var replace = isRegex ? matchedText.replace( regex, replaceStr ) : replaceStr;
var newEnd = start + replace.length;
$textarea
.textSelection( 'setSelection', { 'start': start, 'end': end } )
.textSelection( 'encapsulateSelection', {
'peri': replace,
'replace': true } )
.textSelection( 'setSelection', { 'start': start, 'end': newEnd } );
offset = newEnd;
}
$j( '#wikieditor-toolbar-replace-success' )
.text( u.getMsg( 'wikieditor-toolbar-tool-replace-success', match.length ) )
.show();
$j(this).data( 'offset', 0 );
} else {
// Make regex placeholder substitution ($1) work
var replace = isRegex ? match[0].replace( regex, replaceStr ): replaceStr;
var start = match.index + offset;
var end = start + match[0].length;
var newEnd = start + replace.length;
var context = $j( this ).data( 'context' );
$textarea.textSelection( 'setSelection', { 'start': start,
'end': end } );
if ( mode == 'replace' ) {
$textarea
.textSelection( 'encapsulateSelection', {
'peri': replace,
'replace': true } )
.textSelection( 'setSelection', {
'start': start,
'end': newEnd } );
}
$textarea.textSelection( 'scrollToCaretPosition' );
$textarea.textSelection( 'setSelection', { 'start': start,
'end': mode == 'replace' ? newEnd : end } );
$j( this ).data( 'offset', mode == 'replace' ? newEnd : end );
var textbox = typeof context.$iframe != 'undefined' ? context.$iframe[0].contentWindow : $textarea[0];
textbox.focus();
}
});
},
dialog: {
width: 500,
dialogClass: 'wikiEditor-toolbar-dialog',
buttons: {
'wikieditor-toolbar-tool-replace-button-findnext': function( e ) {
$j(this).closest( '.ui-dialog' ).data( 'dialogaction', e.target );
$j(this).data( 'replaceCallback' ).call( this, 'find' );
},
'wikieditor-toolbar-tool-replace-button-replacenext': function( e ) {
$j(this).closest( '.ui-dialog' ).data( 'dialogaction', e.target );
$j(this).data( 'replaceCallback' ).call( this, 'replace' );
},
'wikieditor-toolbar-tool-replace-button-replaceall': function( e ) {
$j(this).closest( '.ui-dialog' ).data( 'dialogaction', e.target );
$j(this).data( 'replaceCallback' ).call( this, 'replaceAll' );
},
'wikieditor-toolbar-tool-replace-close': function() {
$j(this).dialog( 'close' );
}
},
open: function() {
$j(this).data( 'offset', 0 );
$j( '#wikieditor-toolbar-replace-search' ).focus();
$j( '#wikieditor-toolbar-replace-nomatch, #wikieditor-toolbar-replace-success, #wikieditor-toolbar-replace-emptysearch, #wikieditor-toolbar-replace-invalidregex' ).hide();
if ( !( $j(this).data( 'onetimeonlystuff' ) ) ) {
$j(this).data( 'onetimeonlystuff', true );
// Execute the action associated with the first button
// when the user presses Enter
$j(this).closest( '.ui-dialog' ).keypress( function( e ) {
if ( ( e.keyCode || e.which ) == 13 ) {
var button = $j(this).data( 'dialogaction' ) || $j(this).find( 'button:first' );
button.click();
e.preventDefault();
}
});
// Make tabbing to a button and pressing
// Enter do what people expect
$j(this).closest( '.ui-dialog' ).find( 'button' ).focus( function() {
$j(this).closest( '.ui-dialog' ).data( 'dialogaction', this );
});
}
var dialog = $j(this).closest( '.ui-dialog' );
var that = this;
var context = $j(this).data( 'context' );
var textbox = typeof context.$iframe != 'undefined' ?
context.$iframe[0].contentWindow.document : context.$textarea;
$j( textbox )
.bind( 'keypress.srdialog', function( e ) {
if ( ( e.keyCode || e.which ) == 13 ) {
// Enter
var button = dialog.data( 'dialogaction' ) || dialog.find( 'button:first' );
button.click();
e.preventDefault();
} else if ( ( e.keyCode || e.which ) == 27 ) {
// Escape
$j(that).dialog( 'close' );
}
});
},
close: function() {
var context = $j(this).data( 'context' );
var textbox = typeof context.$iframe != 'undefined' ?
context.$iframe[0].contentWindow.document : context.$textarea;
$j( textbox ).unbind( 'keypress.srdialog' );
$j(this).closest( '.ui-dialog' ).data( 'dialogaction', false );
}
}
}
} } );
} } );