Remove inline CodeEditor for <syntaxhighlight>

This was an unfinished module to enable the CodeEditor to do inline
editing of <syntaxhighlight> blocks. It was never finished and I think
that with the VE and WE 2017 work, it likely will never be finished
either. For that reason, it is better to remove it altogether.

Change-Id: I83714188a53d2ca6bb7bf0dc6d0c89b7fb45a47a
This commit is contained in:
Derk-Jan Hartman 2016-10-31 13:57:31 +01:00
parent 99e6e25826
commit 07b24bb9f0
4 changed files with 1 additions and 182 deletions

View file

@ -44,12 +44,4 @@ class CodeEditorHooks {
}
return true;
}
public static function onBeforePageDisplay( $out, $skin ) {
global $wgCodeEditorGeshiIntegration;
if ( $wgCodeEditorGeshiIntegration ) {
$out->addModules( 'ext.codeEditor.geshi' );
}
return true;
}
}

View file

@ -32,8 +32,7 @@
]
},
"config": {
"CodeEditorEnableCore": true,
"CodeEditorGeshiIntegration": false
"CodeEditorEnableCore": true
},
"ResourceModules": {
"ext.codeEditor": {
@ -101,20 +100,6 @@
"ace/mode-scala.js"
],
"dependencies": "ext.codeEditor.ace"
},
"ext.codeEditor.geshi": {
"scripts": [
"ext.codeEditor.geshi.js"
],
"styles": [
"ext.codeEditor.geshi.css"
],
"messages": [
"editsection",
"savearticle"
],
"dependencies": "mediawiki.api.parse",
"group": "ext.wikiEditor"
}
},
"ResourceFileModulePaths": {

View file

@ -1,3 +0,0 @@
.mw-geshi .mw-editsection {
float: right;
}

View file

@ -1,155 +0,0 @@
/**
* 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.
*/
/*global ace */
( function ( $, mw ) {
$( function () {
var $sources, setupEditor, openEditor;
$sources = $( '.mw-geshi' );
if ( $sources.length > 0 ) {
setupEditor = function ( $div ) {
var $link, $edit;
$link = $( '<a>' )
.text( mw.msg( 'editsection' ) )
.attr( 'href', '#' )
.attr( 'title', 'Edit this code section' )
.click( function ( event ) {
openEditor( $div );
event.preventDefault();
} );
$edit = $( '<span>' )
.addClass( 'mw-editsection' )
.append( '<span class="mw-editsection-bracket">[</span>' )
.append( $link )
.append( '<span class="mw-editsection-bracket">]</span>' );
$div.prepend( $edit );
};
openEditor = function ( $div ) {
var $main, geshiLang, matches, $label, $langDropDown, $xcontainer, codeEditor;
$main = $div.find( 'div' );
geshiLang = null;
matches = /(?:^| )source-([a-z0-9_-]+)/.exec( $main.attr( 'class' ) );
if ( matches ) {
geshiLang = matches[ 1 ];
}
mw.loader.using( 'ext.codeEditor.ace.modes', function () {
var map, $container, $save, $cancel, $controls, setLanguage, closeEditor;
// @fixme de-duplicate
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',
json: 'json',
ocaml: 'ocaml',
perl: 'perl',
php: 'php',
python: 'python',
ruby: 'ruby',
scala: 'scala',
xml: 'xml'
};
$container = $( '<div>' )
.attr( 'style', 'top: 32px; left: 0px; right: 0px; bottom: 0px; border: 1px solid gray; position: absolute;' )
.text( $main.text() ); // quick hack :D
$label = $( '<label>' ).text( 'Source language: ' );
$langDropDown = $( '<select>' );
$.each( map, function ( geshiLang ) {
$( '<option>' )
.text( geshiLang )
.val( geshiLang )
.appendTo( $langDropDown );
} );
$langDropDown
.val( geshiLang )
.appendTo( $label )
.change( function () {
setLanguage( $( this ).val() );
} );
$save = $( '<button>' )
.text( mw.msg( 'savearticle' ) )
.click( function ( event ) {
// horrible hack ;)
var src, tag, api = new mw.Api();
src = codeEditor.getSession().getValue();
tag = '<source lang="' + geshiLang + '">' + src + '</source>';
api.parse( tag )
.done( function ( html ) {
var $html = $( html );
$div.replaceWith( $html );
setupEditor( $html );
closeEditor();
} );
event.preventDefault();
} );
$cancel = $( '<button>' )
.text( 'Close' ).click( function ( event ) {
$xcontainer.remove();
$div.show();
event.preventDefault();
} );
$controls = $( '<div>' )
.append( $label )
.append( $save )
.append( $cancel );
$xcontainer = $( '<div style="position: relative"></div>' )
.append( $controls )
.append( $container );
$xcontainer.width( $main.width() )
.height( $main.height() * 1.1 + 64 + 32 );
$div.hide();
$xcontainer.insertAfter( $div );
codeEditor = ace.edit( $container[ 0 ] );
setLanguage = function ( lang ) {
var aceLang = map[ lang ],
AceLangMode = ace.require( 'ace/mode/' + aceLang ).Mode;
geshiLang = lang;
codeEditor.getSession().setMode( new AceLangMode() );
};
setLanguage( geshiLang );
// Remove some annoying commands
codeEditor.commands.removeCommand( 'replace' ); // ctrl+R
codeEditor.commands.removeCommand( 'transposeletters' ); // ctrl+T
codeEditor.commands.removeCommand( 'gotoline' ); // ctrl+L
closeEditor = function () {
$xcontainer.remove();
$div.show();
};
} );
};
$sources.each( function () {
setupEditor( $( this ) );
} );
}
} );
}( jQuery, mediaWiki ) );