2015-05-16 27 views
15

Próbuję wstawić niestandardowy link do specjalnej strony w pasku narzędzi VisualEditor. Zobacz zdjęcie poniżej.Jak dodać link w pasku narzędzi MediaWiki VisualEditor?

Link Position See Image

google dużo, ale bez powodzenia. Ktoś proszę podać ścieżkę ...

+1

Poszukaj implementacji edytora w swojej wiki medialnej. Myślę, że to Tinymce. – SaidbakR

+0

pytasz o edytora Visual Studio? –

+0

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

Odpowiedz

-1

Nie jestem pewien, czy całkowicie rozumiem twoje pytanie. Jest to tak proste, jak wybranie tekstu, kliknięcie ikony łańcucha, kliknięcie karty External Link i wklejenie tam swojego linku.


Screenshot

+1

Myślę, że pytanie brzmi: jak dodać link do paska narzędzi VE, a nie do edytowalnej treści :) – Florian

3

Moja odpowiedź jest na podstawie następujących źródeł:

Ponadto, jestem prawie pewien, że nie ma udokumentowanego sposobu dodania narzędzia do paska narzędzi w VE, o ile wiem. Chociaż istnieje możliwość dodania narzędzia do grupy, która jest już dodana, głównie do grupy narzędzi "Wstaw", jak w przypadku Syntaxhighlight_GeSHi). Jest to prawdopodobnie znacznie łatwiejszy lub "lepszy" sposób na zrobienie tego :)

Po pierwsze, VisualEditor zapewnia sposób ładowania dodatkowych modułów (zwanych wtyczek), gdy główna część obciążenia VE (głównie, gdy kliknij przycisk "Edytuj"). Moduły muszą być zarejestrowane za pomocą globalnej zmiennej $wgVisualEditorPluginModules (lub odpowiednik w extension.json, jeśli używasz nowej rejestracji rozszerzenia). W pliku rejestracyjnym rozszerzenia należy zainicjować moduł (z wymaganymi plikami skryptów w celu dodania narzędzia) i dodać go jako wtyczkę VE.

Przykład PHP (stary rejestracja poprzez rozszerzenie plików 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 (nowa rejestracja rozszerzenie JSON-based):

// 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... 

Teraz, jeśli VE rozpoczyna, będzie ładować Twój moduł o nazwie ext.extName.visualeditor w tym przykładzie ze skryptem ve.ui.ExtNameTool.js. W tym skrypcie możesz teraz robić, co chcesz. Jako przykład, jest to sposób na dodanie nowego modułu do końca listy toolgroup na pasku narzędzi:

przykładem 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' ] 
    }); 
})(); 

Po zainstalowaniu rozszerzenia w Twoje LocalSettings.php i początkowe VE, powinieneś zobaczyć nowe narzędzie na pasku narzędzi o podanej nazwie. Kliknięcie go spowoduje wyświetlenie okna alertu z treścią "Hello". Jak napisano w komentarzach wstawianych: W module obsługi kliknięć (onSelect) możesz robić, co chcesz, np. otwórz link w nowej karcie, np. do strony specjalnej. Aby uzyskać link do specjalnej strony, proponuję użyć mw.Title, aby uzyskać zlokalizowaną przestrzeń nazw.Na przykład:

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

Pierwszy parametr mw.Title.newFromText() to nazwa strony, drugi parametr jest identyfikator przestrzeni nazw (-1 jest domyślną dla specjalnych stron i zawsze powinny działać).

Mam nadzieję, że to pomoże!