/** * This is experimental and does not yet actually save anything back. * Has to be manually enabled. * Needs some code de-dup with the full-page JS/CSS page editing. */ $(function() { var $sources = $('.mw-geshi'); if ($sources.length > 0) { var setupEditor = function($div) { var $link = $('') .text(mediaWiki.msg('editsection')) .attr('href', '#') .attr('title', 'Edit this code section') .click(function(event) { openEditor($div) event.preventDefault(); }); var $edit = $('') .css('float', 'right') .append('[') .append($link) .append(']'); // @fixme use the editsection-brackets msg $div.prepend($edit); }; var openEditor = function($div) { var $main = $div.find('div'), geshiLang = null, matches = /(?:^| )source-([a-z0-9_-]+)/.exec($main.attr('class')); if (matches) { geshiLang = matches[1]; } mediaWiki.loader.using('ext.codeEditor.ace.modes', function() { // @fixme de-duplicate var map = { c: 'c_cpp', cpp: 'c_cpp', clojure: 'clojure', csharp: 'csharp', css: 'css', coffeescript: 'coffee', groovy: 'groovy', html4strict: 'html', html5: 'html', java: 'java', java5: 'java', javascript: 'javascript', jquery: 'javascript', ocaml: 'ocaml', perl: 'perl', php: 'php', python: 'python', ruby: 'ruby', scala: 'scala', xml: 'xml' }; // Disable some annoying commands var canon = require('pilot/canon'); canon.removeCommand('replace'); // ctrl+R canon.removeCommand('transposeletters'); // ctrl+T canon.removeCommand('gotoline'); // ctrl+L var $container = $('
') .attr('style', 'top: 32px; left: 0px; right: 0px; bottom: 0px; border: 1px solid gray') .text($main.text()); // quick hack :D var $label = $('