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?
google dużo, ale bez powodzenia. Ktoś proszę podać ścieżkę ...
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?
google dużo, ale bez powodzenia. Ktoś proszę podać ścieżkę ...
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.
Myślę, że pytanie brzmi: jak dodać link do paska narzędzi VE, a nie do edytowalnej treści :) – Florian
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!
Poszukaj implementacji edytora w swojej wiki medialnej. Myślę, że to Tinymce. – SaidbakR
pytasz o edytora Visual Studio? –
@Sagar Chodzi o https://www.mediawiki.org/wiki/Extension:VisualEditor – waanders