2015-05-16 37 views
15

Sto cercando di inserire un collegamento personalizzato a una pagina speciale nella barra degli strumenti di VisualEditor. Guarda l'immagine qui sotto.Come aggiungere un collegamento in MediaWiki VisualEditor Toolbar?

Link Position See Image

I googled molto, ma senza successo. Qualcuno si prega di dare un percorso ...

+1

Cerca l'implementazione dell'editor nel tuo wiki multimediale. Penso che sia Tinymce. – SaidbakR

+0

stai chiedendo sull'editor di Visual Studio? –

+0

@Sagar Riguarda https://www.mediawiki.org/wiki/Extension:VisualEditor – waanders

risposta

-1

Non sono sicuro di aver capito completamente la tua domanda. È semplice come selezionare del testo, fare clic sull'icona della catena, quindi fare clic sulla scheda External Link e incollare il tuo link lì.


Screenshot

+1

Penso che la domanda sia come aggiungere un collegamento alla barra degli strumenti VE, non al contenuto modificabile :) – Florian

3

La mia risposta si basa sui seguenti risorse:

Inoltre, sono abbastanza sicuro, che non ci sia modo documentato di aggiungere uno strumento alla barra degli strumenti in VE, per quanto ne so. Sebbene sia possibile aggiungere uno strumento a un gruppo, che è già stato aggiunto, utilizzato principalmente per il gruppo di strumenti "Inserisci", come in Syntaxhighlight_GeSHi. , C'è probabilmente, un modo molto più semplice o "migliore" di fare questo :)

In primo luogo, VisualEditor fornisce un modo per caricare i moduli aggiuntivi (chiamato plugin) quando la parte principale della VE carichi (per lo più, quando si fare clic sul pulsante "Modifica"). I moduli devono essere registrati tramite la variabile globale $wgVisualEditorPluginModules (o l'equivalente in extension.json, se si sta utilizzando la nuova registrazione dell'estensione). Nel file di registrazione dell'estensione, è necessario inizializzare un modulo (con i file di script richiesti per aggiungere lo strumento) e aggiungerlo come plug-in VE.

Esempio PHP (vecchia registrazione estensione tramite file PHP):

// other setup... 
$wgResourceModules['ext.extName.visualeditor'] = array(
    'localBasePath' => __DIR__, 
    'remoteExtPath' => 'extName' 
    'dependencies' => array(
     'ext.visualEditor.mwcore', 
    ), 
    'scripts' => array(
     'javascripts/ve.ui.ExtNameTool.js', 
    ), 
    'messages' => array(
     'extname-ve-toolname', 
    ), 
); 
$wgVisualEditorPluginModules[] = 'ext.extName.visualeditor'; 
// other setup... 

extension.json (nuova JSON-based di registrazione estensione):

// other setup... 
"ResourceModules": { 
    "ext.geshi.visualEditor": { 
     "scripts": [ 
      "javascripts/ve.ui.ExtNameTool.js" 
     ], 
     "dependencies": [ 
      "ext.visualEditor.mwcore" 
     ], 
     "messages": [ 
      "extname-ve-toolname" 
     ] 
    } 
}, 
"VisualEditorPluginModules": [ 
    "ext.extName.visualeditor" 
], 
// other setup... 

Ora, se si avvia VE, caricherà il tuo modulo, chiamato ext.extName.visualeditor in questo esempio, con lo script ve.ui.ExtNameTool.js. In questo script, ora puoi fare, qualunque cosa tu voglia. Come esempio, questo è un modo per aggiungere un nuovo modulo al fine dell'elenco toolgroup nella barra degli strumenti:

Esempio di ve.ui.ExtNameTool.js:

(function() { 
    // create a new class, which will inherit ve.ui.Tool, 
    // which represents one tool 
    ve.ui.extNameTool = function extNameTool(toolGroup, config) { 
     // parent constructor 
     ve.ui.extNameTool.super.apply(this, arguments); 
     // the tool should be enabled by default, enable it 
     this.setDisabled(false); 
    } 
    // inherit ve.ui.Tool 
    OO.inheritClass(ve.ui.extNameTool, ve.ui.Tool); 
    // every tool needs at least a name, or an icon 
    // (with the static property icon) 
    ve.ui.extNameTool.static.name = 'extname'; 
    // don't add the tool to a named group automatically 
    ve.ui.extNameTool.static.autoAddToGroup = false; 
    // prevent this tool to be added to a catch-all group (*), 
    although this tool isn't added to a group 
    ve.ui.extNameTool.static.autoAddToCatchall = false; 
    // the title of the group (it's a message key, 
    // which should be added to the extensions i18n 
    // en.json file to be translateable) 
    // can be a string, too 
    ve.ui.extNameTool.static.title = 
     OO.ui.deferMsg('extname-ve-toolname'); 
    // onSelect is the handler for a click on the tool 
    ve.ui.extNameTool.prototype.onSelect = function() { 
     // show an alert box only, but you can do anything 
     alert('Hello'); 
     this.setActive(false); 
    } 
    // needs to be overwritten, but does nothing so far 
    ve.ui.extNameTool.prototype.onUpdateState = function() { 
    ve.ui.extNameTool.super.prototype.onUpdateState.apply(this, arguments); 
    } 
    // the tool needs to be registered to the toolFactory 
    // of the toolbar to be reachable with the given name 
    ve.ui.toolFactory.register(ve.ui.extNameTool); 
    // add this tool to the toolbar 
    ve.init.mw.Target.static.toolbarGroups.push({ 
     // this will create a new toolgroup with the tools 
     // named in this include directive. The naem is the name given 
     // in the static property of the tool 
     include: [ 'extname' ] 
    }); 
})(); 

Dopo aver installato l'estensione il tuo LocalSettings.php e l'avvio di VE, dovresti vedere un nuovo strumento nella barra degli strumenti con il nome specificato. Facendo clic su di esso verrà visualizzata una finestra di avviso con contenuto "Ciao". Come scritto nei commenti in linea: nel gestore dei clic (onSelect) puoi fare quello che vuoi, ad es. apri un link in una nuova scheda, ad es. a una pagina speciale. Per ottenere il collegamento a una pagina speciale suggerirei di utilizzare mw.Title per ottenere uno spazio dei nomi localizzato.Per esempio:

var relativeUrl = mw.Title.newFromText('RecentChanges', -1).getUrl(); 

Il primo parametro del mw.Title.newFromText() è il nome della pagina, il secondo parametro è l'ID dello spazio dei nomi (-1 è il default per le pagine speciali e dovrebbe sempre lavorare).

Spero che questo aiuti!