Alex Monk has uploaded a new change for review. https://gerrit.wikimedia.org/r/197357
Change subject: WIP - Load all of WikiEditor's special characters ...................................................................... WIP - Load all of WikiEditor's special characters Bug: T91618 Change-Id: I3fafc561ceae969e4ecc12881154cd8a3568bebb --- A ResourceLoaderSpecialCharacterDataModule.php M VisualEditor.php M extension.json M modules/ve-mw/init/ve.init.mw.Platform.js M modules/ve-mw/init/ve.init.mw.Target.js A modules/ve-mw/specialcharacters.json A modules/ve-mw/ui/dialogs/ve.ui.MWSpecialCharacterDialog.js A modules/ve-mw/ui/tools/ve.ui.MWSpecialCharacterDialogTool.js M modules/ve-mw/ui/ve.ui.MWCommandRegistry.js 9 files changed, 227 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/57/197357/1 diff --git a/ResourceLoaderSpecialCharacterDataModule.php b/ResourceLoaderSpecialCharacterDataModule.php new file mode 100644 index 0000000..e3a11ee --- /dev/null +++ b/ResourceLoaderSpecialCharacterDataModule.php @@ -0,0 +1,91 @@ +<?php +/** + * Resource loader module for populating special characters data for some + * editing extensions to use. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +/** + * Resource loader module for populating special characters data for some + * editing extensions to use. + */ +class ResourceLoaderSpecialCharacterDataModule extends ResourceLoaderModule { +/* The following JS was used to genrate the file, on a Extension:WikiEditor page. +var result = {}, + characterGroups = $.wikiEditor.modules.toolbar.config.getDefaultConfig().toolbar.characters.pages; +$.each( characterGroups, function ( groupId, characterGroup ) { + var groupResult = []; + $.each( characterGroup.characters, function ( index, character ) { + if ( typeof character === 'string' ) { + groupResult.push( character ); + } + } ); + result[groupId] = groupResult; +} ); +JSON.stringify( result ); +*/ + private $path = "extensions/VisualEditor/modules/ve-mw/specialcharacters.json"; + protected $targets = array( 'desktop', 'mobile' ); + + /** + * Get all the dynamic data. + * + * @return array + */ + protected function getData() { + return json_decode( file_get_contents( $this->path ) ); + } + + /** + * @param ResourceLoaderContext $context + * @return string JavaScript code + */ + public function getScript( ResourceLoaderContext $context ) { + return Xml::encodeJsCall( + 've.init.platform.setSpecialCharacters', + array( + $this->getData() + ), + ResourceLoader::inDebugMode() + ); + } + + /** + * @param ResourceLoaderContext $context + * @return int UNIX timestamp + */ + public function getModifiedTime( ResourceLoaderContext $context ) { + return static::safeFilemtime( $this->path ); + } + + /** + * @param ResourceLoaderContext $context + * @return string Hash + */ + public function getModifiedHash( ResourceLoaderContext $context ) { + return md5( serialize( $this->getData() ) ); + } + + /** + * @return array + */ + public function getDependencies() { + return array( 'ext.visualEditor.mediawiki' ); + } +} diff --git a/VisualEditor.php b/VisualEditor.php index 00f1e7b..33c88a8 100644 --- a/VisualEditor.php +++ b/VisualEditor.php @@ -46,6 +46,8 @@ $wgAutoloadClasses['VisualEditorDataModule'] = $dir . 'VisualEditorDataModule.php'; $wgAutoloadClasses['VisualEditorViewPageTargetInitModule'] = $dir . 'VisualEditorViewPageTargetInitModule.php'; +$wgAutoloadClasses['ResourceLoaderSpecialCharacterDataModule'] = + $dir . 'ResourceLoaderSpecialCharacterDataModule.php'; $wgMessagesDirs['VisualEditor'] = array( __DIR__ . '/lib/ve/i18n', __DIR__ . '/modules/ve-mw/i18n', @@ -863,9 +865,11 @@ 'modules/ve-mw/ui/dialogs/ve.ui.MWCommandHelpDialog.js', 'modules/ve-mw/ui/dialogs/ve.ui.MWCancelConfirmDialog.js', 'modules/ve-mw/ui/dialogs/ve.ui.MWWikitextSwitchConfirmDialog.js', + 'modules/ve-mw/ui/dialogs/ve.ui.MWSpecialCharacterDialog.js', 'modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js', 'modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js', + 'modules/ve-mw/ui/tools/ve.ui.MWSpecialCharacterDialogTool.js', 'modules/ve-mw/ui/inspectors/ve.ui.MWExtensionInspector.js', 'modules/ve-mw/ui/inspectors/ve.ui.MWLiveExtensionInspector.js', @@ -891,6 +895,7 @@ 'jquery.autoEllipsis', 'jquery.byteLimit', 'mediawiki.skinning.content.parsoid', + 'ext.visualEditor.specialCharacters', ), 'messages' => array( 'visualeditor-beta-label', @@ -949,6 +954,27 @@ // Mentioned in another message 'ooui-dialog-process-continue', + + // temp, do not commit + 'wikieditor-toolbar-characters-page-latin', + 'wikieditor-toolbar-characters-page-latinextended', + 'wikieditor-toolbar-characters-page-ipa', + 'wikieditor-toolbar-characters-page-symbols', + 'wikieditor-toolbar-characters-page-greek', + 'wikieditor-toolbar-characters-page-cyrillic', + 'wikieditor-toolbar-characters-page-arabic', + 'wikieditor-toolbar-characters-page-arabicextended', + 'wikieditor-toolbar-characters-page-persian', + 'wikieditor-toolbar-characters-page-hebrew', + 'wikieditor-toolbar-characters-page-bangla', + 'wikieditor-toolbar-characters-page-tamil', + 'wikieditor-toolbar-characters-page-telugu', + 'wikieditor-toolbar-characters-page-sinhala', + 'wikieditor-toolbar-characters-page-devanagari', + 'wikieditor-toolbar-characters-page-gujarati', + 'wikieditor-toolbar-characters-page-thai', + 'wikieditor-toolbar-characters-page-lao', + 'wikieditor-toolbar-characters-page-khmer', // Used by the TOC widget (currently experimental) 'toc', @@ -1535,6 +1561,10 @@ ), 'targets' => array( 'desktop', 'mobile' ), ), + + 'ext.visualEditor.specialCharacters' => array( + 'class' => 'ResourceLoaderSpecialCharacterDataModule' + ), ); /* Extend MediaWiki configuration */ diff --git a/extension.json b/extension.json index 96bfb4a..513e0ba 100644 --- a/extension.json +++ b/extension.json @@ -905,8 +905,10 @@ "modules/ve-mw/ui/dialogs/ve.ui.MWCommandHelpDialog.js", "modules/ve-mw/ui/dialogs/ve.ui.MWCancelConfirmDialog.js", "modules/ve-mw/ui/dialogs/ve.ui.MWWikitextSwitchConfirmDialog.js", + "modules/ve-mw/ui/dialogs/ve.ui.MWSpecialCharacterDialog.js", "modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js", "modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js", + "modules/ve-mw/ui/tools/ve.ui.MWSpecialCharacterDialogTool.js", "modules/ve-mw/ui/inspectors/ve.ui.MWExtensionInspector.js", "modules/ve-mw/ui/inspectors/ve.ui.MWLiveExtensionInspector.js", "modules/ve-mw/ui/actions/ve.ui.MWLinkAction.js" @@ -928,7 +930,8 @@ "mediawiki.jqueryMsg", "jquery.autoEllipsis", "jquery.byteLimit", - "mediawiki.skinning.content.parsoid" + "mediawiki.skinning.content.parsoid", + "ext.visualEditor.specialCharacters" ], "messages": [ "visualeditor-beta-label", @@ -1565,6 +1568,9 @@ "desktop", "mobile" ] + }, + "ext.visualEditor.specialCharacters": { + "class": "ResourceLoaderSpecialCharacterDataModule" } }, "ResourceFileModulePaths": { @@ -1586,7 +1592,8 @@ "ApiVisualEditorEdit": "ApiVisualEditorEdit.php", "VisualEditorHooks": "VisualEditor.hooks.php", "VisualEditorDataModule": "VisualEditorDataModule.php", - "VisualEditorViewPageTargetInitModule": "VisualEditorViewPageTargetInitModule.php" + "VisualEditorViewPageTargetInitModule": "VisualEditorViewPageTargetInitModule.php", + "ResourceLoaderSpecialCharacterDataModule": "ResourceLoaderSpecialCharacterDataModule.php" }, "ConfigRegistry": { "visualeditor": "GlobalVarConfig::newInstance" diff --git a/modules/ve-mw/init/ve.init.mw.Platform.js b/modules/ve-mw/init/ve.init.mw.Platform.js index 736ccc9..ec87831 100644 --- a/modules/ve-mw/init/ve.init.mw.Platform.js +++ b/modules/ve-mw/init/ve.init.mw.Platform.js @@ -24,6 +24,7 @@ this.parsedMessages = {}; this.linkCache = new ve.init.mw.LinkCache(); this.imageInfoCache = new ve.init.mw.ImageInfoCache(); + this.specialCharacters = {}; }; /* Inheritance */ @@ -109,6 +110,13 @@ return mw.language.getFallbackLanguageChain(); }; +/** + * TODO: docs + */ +ve.init.mw.Platform.prototype.setSpecialCharacters = function ( data ) { + this.specialCharacters = data; +}; + /* Initialization */ ve.init.platform = new ve.init.mw.Platform(); diff --git a/modules/ve-mw/init/ve.init.mw.Target.js b/modules/ve-mw/init/ve.init.mw.Target.js index 111fe6f..214f3bf 100644 --- a/modules/ve-mw/init/ve.init.mw.Target.js +++ b/modules/ve-mw/init/ve.init.mw.Target.js @@ -225,7 +225,7 @@ demote: [ 'deleteTable' ] }, // SpecialCharacter - { include: [ 'specialCharacter' ] } + { include: [ 'mwSpecialCharacter' ] } ]; ve.init.mw.Target.static.importRules = { diff --git a/modules/ve-mw/specialcharacters.json b/modules/ve-mw/specialcharacters.json new file mode 100644 index 0000000..0a98ac5 --- /dev/null +++ b/modules/ve-mw/specialcharacters.json @@ -0,0 +1 @@ +{"latin":["Á","á","À","à","Â","â","Ä","ä","Ã","ã","Ǎ","ǎ","Ā","ā","Ă","ă","Ą","ą","Å","å","Ć","ć","Ĉ","ĉ","Ç","ç","Č","č","Ċ","ċ","Đ","đ","Ď","ď","É","é","È","è","Ê","ê","Ë","ë","Ě","ě","Ē","ē","Ĕ","ĕ","Ė","ė","Ę","ę","Ĝ","ĝ","Ģ","ģ","Ğ","ğ","Ġ","ġ","Ĥ","ĥ","Ħ","ħ","Í","í","Ì","ì","Î","î","Ï","ï","Ĩ","ĩ","Ǐ","ǐ","Ī","ī","Ĭ","ĭ","İ","ı","Į","į","Ĵ","ĵ","Ķ","ķ","Ĺ","ĺ","Ļ","ļ","Ľ","ľ","Ł","ł","Ń","ń","Ñ","ñ","Ņ","ņ","Ň","ň","Ó","ó","Ò","ò","Ô","ô","Ö","ö","Õ","õ","Ǒ","ǒ","Ō","ō","Ŏ","ŏ","Ǫ","ǫ","Ő","ő","Ŕ","ŕ","Ŗ","ŗ","Ř","ř","Ś","ś","Ŝ","ŝ","Ş","ş","Š","š","Ș","ș","Ț","ț","Ť","ť","Ú","ú","Ù","ù","Û","û","Ü","ü","Ũ","ũ","Ů","ů","Ǔ","ǔ","Ū","ū","ǖ","ǘ","ǚ","ǜ","Ŭ","ŭ","Ų","ų","Ű","ű","Ŵ","ŵ","Ý","ý","Ŷ","ŷ","Ÿ","ÿ","Ȳ","ȳ","Ź","ź","Ž","ž","Ż","ż","Æ","æ","Ǣ","ǣ","Ø","ø","Œ","œ","ß","Ð","ð","Þ","þ","Ə","ə"],"latinextended":["Ḁ","ḁ","ẚ","Ạ","ạ","Ả","ả","Ấ","ấ","Ầ","ầ","Ẩ","ẩ","Ẫ","ẫ","Ậ","ậ","Ắ","ắ","Ằ","ằ","Ẳ","ẳ","Ẵ","ẵ","Ặ","ặ","Ḃ","ḃ","Ḅ","ḅ","Ḇ","ḇ","Ḉ","ḉ","Ḋ","ḋ","Ḍ","ḍ","Ḏ","ḏ","Ḑ","ḑ","Ḓ","ḓ","Ḕ","ḕ","Ḗ","ḗ","Ḙ","ḙ","Ḛ","ḛ","Ḝ","ḝ","Ẹ","ẹ","Ẻ","ẻ","Ẽ","ẽ","Ế","ế","Ề","ề","Ể","ể","Ễ","ễ","Ệ","ệ","Ḟ","ḟ","Ḡ","ḡ","Ḣ","ḣ","Ḥ","ḥ","Ḧ","ḧ","Ḩ","ḩ","Ḫ","ḫ","ẖ","Ḭ","ḭ","Ḯ","ḯ","Ỉ","ỉ","Ị","ị","Ḱ","ḱ","Ḳ","ḳ","Ḵ","ḵ","Ḷ","ḷ","Ḹ","ḹ","Ḻ","ḻ","Ḽ","ḽ","Ỻ","ỻ","Ḿ","ḿ","Ṁ","ṁ","Ṃ","ṃ","Ṅ","ṅ","Ṇ","ṇ","Ṉ","ṉ","Ṋ","ṋ","Ṍ","ṍ","Ṏ","ṏ","Ṑ","ṑ","Ṓ","ṓ","Ọ","ọ","Ỏ","ỏ","Ố","ố","Ồ","ồ","Ổ","ổ","Ỗ","ỗ","Ộ","ộ","Ớ","ớ","Ờ","ờ","Ở","ở","Ỡ","ỡ","Ợ","ợ","Ǿ","ǿ","Ơ","ơ","Ṕ","ṕ","Ṗ","ṗ","Ṙ","ṙ","Ṛ","ṛ","Ṝ","ṝ","Ṟ","ṟ","Ṡ","ṡ","ẛ","Ṣ","ṣ","Ṥ","ṥ","Ṧ","ṧ","Ṩ","ṩ","ẜ","ẝ","Ṫ","ṫ","Ṭ","ṭ","Ṯ","ṯ","Ṱ","ṱ","ẗ","Ṳ","ṳ","Ṵ","ṵ","Ṷ","ṷ","Ṹ","ṹ","Ṻ","ṻ","Ụ","ụ","Ủ","ủ","Ứ","ứ","Ừ","ừ","Ử","ử","Ữ","ữ","Ự","ự","Ư","ư","Ǖ","Ǘ","Ǚ","Ǜ","Ṽ","ṽ","Ṿ","ṿ","Ỽ","ỽ","Ẁ","ẁ","Ẃ","ẃ","Ẅ","ẅ","Ẇ","ẇ","Ẉ","ẉ","ẘ","Ẋ","ẋ","Ẍ","ẍ","Ẏ","ẏ","ẙ","Ỳ","ỳ","Ỵ","ỵ","Ỷ","ỷ","Ỹ","ỹ","Ỿ","ỿ","Ẑ","ẑ","Ẓ","ẓ","Ẕ","ẕ","Ǽ","ǽ","ẞ","ẟ"],"ipa":["p","t̪","t","ʈ","c","k","q","ʡ","ʔ","b","d̪","d","ɖ","ɟ","ɡ","ɢ","ɓ","ɗ","ʄ","ɠ","ʛ","t͡s","t͡ʃ","t͡ɕ","d͡z","d͡ʒ","d͡ʑ","ɸ","f","θ","s","ʃ","ʅ","ʆ","ʂ","ɕ","ç","ɧ","x","χ","ħ","ʜ","h","β","v","ʍ","ð","z","ʒ","ʓ","ʐ","ʑ","ʝ","ɣ","ʁ","ʕ","ʖ","ʢ","ɦ","ɬ","ɮ","m","m̩","ɱ","ɱ̩","ɱ̍","n̪","n̪̍","n","n̩","ɳ","ɳ̩","ɲ","ɲ̩","ŋ","ŋ̍","ŋ̩","ɴ","ɴ̩","ʙ","ʙ̩","r","r̩","ʀ","ʀ̩","ɾ","ɽ","ɿ","ɺ","l̪","l̪̩","l","l̩","ɫ","ɫ̩","ɭ","ɭ̩","ʎ","ʎ̩","ʟ","ʟ̩","w","ɥ","ʋ","ɹ","ɻ","j","ɰ","ʘ","ǂ","ǀ","!","ǁ","ʰ","ʱ","ʷ","ʸ","ʲ","ʳ","ⁿ","ˡ","ʴ","ʵ","ˢ","ˣ","ˠ","ʶ","ˤ","ˁ","ˀ","ʼ","i","i̯","ĩ","y","y̯","ỹ","ɪ","ɪ̯","ɪ̃","ʏ","ʏ̯","ʏ̃","ɨ","ɨ̯","ɨ̃","ʉ","ʉ̯","ʉ̃","ɯ","ɯ̯","ɯ̃","u","u̯","ũ","ʊ","ʊ̯","ʊ̃","e","e̯","ẽ","ø","ø̯","ø̃","ɘ","ɘ̯","ɘ̃","ɵ","ɵ̯","ɵ̃","ɤ","ɤ̯","ɤ̃","o","o̯","õ","ɛ","ɛ̯","ɛ̃","œ","œ̯","œ̃","ɜ","ɜ̯","ɜ̃","ə","ə̯","ə̃","ɞ","ɞ̯","ɞ̃","ʌ","ʌ̯","ʌ̃","ɔ","ɔ̯","ɔ̃","æ","æ̯","æ̃","ɶ","ɶ̯","ɶ̃","a","a̯","ã","ɐ","ɐ̯","ɐ̃","ɑ","ɑ̯","ɑ̃","ɒ","ɒ̯","ɒ̃","ˈ","ˌ","ː","ˑ","˘",".","‿","|","‖","ɚ","ɝ"],"symbols":["~","|","¡","¿","†","‡","↔","↑","↓","•","¶","#","½","⅓","⅔","¼","¾","⅛","⅜","⅝","⅞","∞","‘","’","¤","₳","฿","₵","¢","₡","₢","$","₫","₯","€","₠","₣","ƒ","₴","₭","₤","ℳ","₥","₦","№","₧","₰","£","៛","₨","₪","৳","₮","₩","¥","♠","♣","♥","♦","m²","m³","…","‘","’","“","”","°","′","″","≈","≠","≤","≥","±","×","÷","←","→","·","§","‽"],"greek":["Α","Ά","α","ά","Β","β","Γ","γ","Δ","δ","Ε","Έ","ε","έ","Ζ","ζ","Η","Ή","η","ή","Θ","θ","Ι","Ί","ι","ί","Κ","κ","Λ","λ","Μ","μ","Ν","ν","Ξ","ξ","Ο","Ό","ο","ό","Π","π","Ρ","ρ","Σ","σ","ς","Τ","τ","Υ","Ύ","υ","ύ","Φ","φ","Χ","χ","Ψ","ψ","Ω","Ώ","ω","ώ"],"cyrillic":["А","а","Ӑ","ӑ","Ӓ","ӓ","Ә","ә","Ӛ","ӛ","Б","б","В","в","Г","г","Ґ","ґ","Ӷ","ӷ","Ѓ","ѓ","Ӻ","ӻ","Ғ","ғ","Ҕ","ҕ","Д","д","Ԁ","ԁ","Ԃ","ԃ","Ђ","ђ","Е","е","Ѐ","ѐ","Є","є","Ё","ё","Ӗ","ӗ","Ҽ","ҽ","Ҿ","ҿ","Ж","ж","Җ","җ","Ӂ","ӂ","Ӝ","ӝ","З","з","Ҙ","ҙ","Ӟ","ӟ","Ԑ","ԑ","Ӡ","ӡ","Ѕ","ѕ","Ԅ","ԅ","Ԇ","ԇ","И","и","І","і","Ї","ї","Й","й","Ӣ","ӣ","Ѝ","ѝ","Ҋ","ҋ","Ӥ","ӥ","Ј","ј","К","к","Ќ","ќ","Қ","қ","Ҝ","ҝ","Ҟ","ҟ","Ҡ","ҡ","Ӄ","ӄ","Ԛ","ԛ","Л","л","Љ","љ","Ԉ","ԉ","Ԓ","ԓ","Ӆ","ӆ","М","м","Ӎ","ӎ","Н","н","Њ","њ","Ң","ң","Ҥ","ҥ","Ӈ","ӈ","Ԋ","ԋ","Ӊ","ӊ","О","о","Ҩ","ҩ","Ӧ","ӧ","Ө","ө","Ӫ","ӫ","П","п","Ԥ","ԥ","Ҧ","ҧ","Р","р","Ҏ","ҏ","С","с","Ҫ","ҫ","Т","т","Ћ","ћ","Ԍ","ԍ","Ҭ","ҭ","Ԏ","ԏ","У","у","Ў","ў","Ӯ","ӯ","Ӱ","ӱ","Ӳ","ӳ","Ү","ү","Ұ","ұ","Ф","ф","Х","х","Ҳ","ҳ","Ӽ","ӽ","Ӿ","ӿ","Һ","һ","Ц","ц","Ч","ч","Ҵ","ҵ","Ҷ","ҷ","Ҹ","ҹ","Ӌ","ӌ","Ӵ","ӵ","Џ","џ","Ш","ш","Щ","щ","Ъ","ъ","Ы","ы","Ӹ","ӹ","Ь","ь","Ҍ","ҍ","Э","э","Ӭ","ӭ","Ю","ю","Я","я","Ԝ","ԝ","Ѡ","ѡ","Ѣ","ѣ","Ѥ","ѥ","Ѧ","ѧ","Ѩ","ѩ","Ѫ","ѫ","Ѭ","ѭ","Ѯ","ѯ","Ѱ","ѱ","Ѳ","ѳ","Ѵ","ѵ","Ѷ","ѷ","Ѹ","ѹ","Ѻ","ѻ","Ѽ","ѽ","Ѿ","ѿ","Ҁ","ҁ"],"arabic":["ا","ب","ت","ث","ج","ح","خ","د","ذ","ر","ز","س","ش","ص","ض","ط","ظ","ع","غ","ف","ق","ك","ل","م","ن","ه","و","ي","ء","آ","أ","إ","ٱ","ؤ","ئ","ى","ة","َ","ُ","ِ","ً","ٌ","ٍ","ّ","ْ","ٰ","،","؛","؟","ـ","٠","١","٢","٣","٤","٥","٦","٧","٨","٩","٪","٫","٬","٭"],"arabicextended":["ٲ","ٳ","ٴ","ٵ","ݳ","ݴ","ٮ","ٻ","پ","ڀ","ݐ","ݑ","ݒ","ݓ","ݔ","ݕ","ݖ","ٹ","ٺ","ټ","ٽ","ٿ","ځ","ڂ","ڃ","ڄ","څ","چ","ڇ","ڿ","ݗ","ݘ","ݮ","ݯ","ݲ","ݼ","ڈ","ډ","ڊ","ڋ","ڌ","ڍ","ڎ","ڏ","ڐ","ۮ","ݙ","ݚ","ڑ","ڒ","ړ","ڔ","ڕ","ږ","ڗ","ژ","ڙ","ۯ","ݛ","ݫ","ݬ","ݱ","ښ","ڛ","ڜ","ݽ","ۺ","ݜ","ݭ","ݰ","ݾ","ڝ","ڞ","ۻ","ڟ","ڠ","ݝ","ݞ","ݟ","ۼ","ڡ","ڢ","ڣ","ڤ","ڥ","ڦ","ݠ","ݡ","ٯ","ڧ","ڨ","ػ","ؼ","ک","ڪ","ګ","ڬ","ڭ","ڮ","گ","ڰ","ڱ","ڲ","ڳ","ڴ","ݢ","ݣ","ݤ","ݿ","ڵ","ڶ","ڷ","ڸ","ݪ","ݥ","ݦ","ڹ","ں","ڻ","ڼ","ڽ","ݧ","ݨ","ݩ","ھ","ۀ","ہ","ۂ","ۃ","ە","ۿ","ٶ","ٷ","ۄ","ۅ","ۆ","ۇ","ۈ","ۉ","ۊ","ۋ","ۏ","ݸ","ݹ","ؠ","ؽ","ؾ","ؿ","ٸ","ی","ۍ","ێ","ې","ۑ","ے","ۓ","ݵ","ݶ","ݷ","ݺ","ݻ","ٖ","ٗ","٘","ٙ","ٚ","ٛ","ٜ","ٝ","ٞ","ٟ","۔","۽","۾","۰","۱","۲","۳","۴","۵","۶","۷","۸","۹"],"hebrew":["א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ך","ל","מ","ם","נ","ן","ס","ע","פ","ף","צ","ץ","ק","ר","ש","ת","װ","ױ","ײ","׳","״","־","–"],"bangla":["অ","আ","ই","ঈ","উ","ঊ","ঋ","এ","ঐ","ও","ঔ","া","ি","ী","ু","ূ","ৃ","ে","ৈ","ো","ৌ","ক","খ","গ","ঘ","ঙ","চ","ছ","জ","ঝ","ঞ","ট","ঠ","ড","ঢ","ণ","ত","থ","দ","ধ","ন","প","ফ","ব","ভ","ম","য","র","ল","শ","ষ","স","হ","ড়","ঢ়","য়","ৎ","ং","ঃ","ঁ","্","১","২","৩","৪","৫","৬","৭","৮","৯","০"],"tamil":["௦","௧","௨","௩","௪","௫","௬","௭","௮","௯","௰","௱","௲","௳","௴","௵","௶","௷","௸","௹","௺","ௐ"],"telugu":["ఁ","ం","ః","అ","ఆ","ఇ","ఈ","ఉ","ఊ","ఋ","ౠ","ఌ","ౡ","ఎ","ఏ","ఐ","ఒ","ఓ","ఔ","క","ఖ","గ","ఘ","ఙ","చ","ఛ","జ","ఝ","ఞ","ట","ఠ","డ","ఢ","ణ","త","థ","ద","ధ","న","ప","ఫ","బ","భ","మ","య","ర","ఱ","ల","ళ","వ","శ","ష","స","హ","ా","ి","ీ","ు","ూ","ృ","ౄ","ె","ే","ై","ొ","ో","ౌ","్","ౢ","ౣ","ౘ","ౙ","౦","౧","౨","౩","౪","౫","౬","౭","౮","౯","ఽ","౸","౹","౺","౻","౼","౽","౾","౿"],"sinhala":["අ","ආ","ඇ","ඈ","ඉ","ඊ","උ","ඌ","ඍ","ඎ","ඏ","ඐ","එ","ඒ","ඓ","ඔ","ඕ","ඖ","ක","ඛ","ග","ඝ","ඞ","ඟ","ච","ඡ","ජ","ඣ","ඤ","ඥ","ඦ","ට","ඨ","ඩ","ඪ","ණ","ඬ","ත","ථ","ද","ධ","න","ඳ","ප","ඵ","බ","භ","ම","ඹ","ය","ර","ල","ව","ශ","ෂ","ස","හ","ළ","ෆ"],"devanagari":["ऀ","ँ","ं","ः","ऄ","अ","आ","इ","ई","उ","ऊ","ऋ","ऌ","ऍ","ऎ","ए","ऐ","ऑ","ऒ","ओ","औ","क","ख","ग","घ","ङ","च","छ","ज","झ","ञ","ट","ठ","ड","ढ","ण","त","थ","द","ध","न","ऩ","प","फ","ब","भ","म","य","र","ऱ","ल","ळ","ऴ","व","श","ष","स","ह","ऺ","ऻ","़","ऽ","ा","ि","ी","ु","ू","ृ","ॄ","ॅ","ॆ","े","ै","ॉ","ॊ","ो","ौ","्","ॎ","ॏ","ॐ","॑","॒","॓","॔","ॕ","ॖ","ॗ","क़","ख़","ग़","ज़","ड़","ढ़","फ़","य़","ॠ","ॡ","ॢ","ॣ","।","॥","०","१","२","३","४","५","६","७","८","९","॰","ॱ","ॲ","ॳ","ॴ","ॵ","ॶ","ॷ","ॹ","ॺ","ॻ","ॼ","ॽ","ॾ","ॿ"],"gujarati":["ૐ","ઁ","ં","ઃ","અ","આ","ઇ","ઈ","ઉ","ઊ","એ","ઐ","ઓ","ઔ","અં","ઋ","ઍ","ઑ","ઌ","ૠ","ૡ","ક","ખ","ગ","ઘ","ઙ","ચ","છ","જ","ઝ","ઞ","ટ","ઠ","ડ","ઢ","ણ","ત","થ","દ","ધ","ન","પ","ફ","બ","ભ","મ","ય","ર","લ","ળ","વ","શ","ષ","સ","હ","ક્ષ","જ્ઞ","ઽ","ા","િ","ી","ી","ુ","ૂ","ૃ","ૄ","ૅ","ે","ૈ","ૉ","ો","ૌ","ૢ","ૣ","્","૦","૧","૨","૩","૪","૫","૬","૭","૮","૯","૱"],"thai":["ก","ข","ฃ","ค","ฅ","ฆ","ง","จ","ฉ","ช","ซ","ฌ","ญ","ฎ","ฏ","ฐ","ฑ","ฒ","ณ","ด","ต","ถ","ท","ธ","น","บ","ป","ผ","ฝ","พ","ฟ","ภ","ม","ย","ร","ฤ","ล","ฦ","ว","ศ","ษ","ส","ห","ฬ","อ","ฮ","ะ","ั","า","ๅ","ำ","ิ","ี","ึ","ื","ุ","ู","เ","แ","โ","ใ","ไ","็","่","้","๊","๋","์","ํ","ฺ","๎","๐","๑","๒","๓","๔","๕","๖","๗","๘","๙","฿","ๆ","ฯ","๚","๏","๛"],"lao":["ກ","ຂ","ຄ","ງ","ຈ","ສ","ຊ","ຍ","ດ","ຕ","ຖ","ທ","ນ","ບ","ປ","ຜ","ຝ","ພ","ຟ","ມ","ຢ","ລ","ວ","ຫ","ອ","ຮ","ຣ","ໜ","ໝ","ຼ","ຽ","ະ","ັ","າ","ຳ","ິ","ີ","ຶ","ື","ຸ","ູ","ົ","ເ","ແ","ໂ","ໃ","ໄ","່","້","໊","໋","໌","ໍ","໐","໑","໒","໓","໔","໕","໖","໗","໘","໙","₭","ໆ","ຯ"],"khmer":["ក","ខ","គ","ឃ","ង","ច","ឆ","ជ","ឈ","ញ","ដ","ឋ","ឌ","ឍ","ណ","ត","ថ","ទ","ធ","ន","ប","ផ","ព","ភ","ម","យ","រ","ល","វ","ស","ហ","ឡ","អ","ឣ","ឤ","ឥ","ឦ","ឧ","ឨ","ឩ","ឪ","ឫ","ឬ","ឭ","ឮ","ឯ","ឰ","ឱ","ឲ","ឳ","្","឴","឵","ា","ិ","ី","ឹ","ឺ","ុ","ូ","ួ","ើ","ឿ","ៀ","េ","ែ","ៃ","ោ","ៅ","ំ","ះ","ៈ","៉","៊","់","៌","៍","៎","៏","័","៑","៓","៝","ៜ","០","១","២","៣","៤","៥","៦","៧","៨","៩","៛","។","៕","៖","ៗ","៘","៙","៚","៰","៱","៲","៳","៴","៵","៶","៷","៸","៹","᧠","᧡","᧢","᧣","᧤","᧥","᧦","᧧","᧨","᧩","᧪","᧫","᧬","᧭","᧮","᧯","᧰","᧱","᧲","᧳","᧴","᧵","᧶","᧷","᧸","᧹","᧺","᧻","᧼","᧽","᧾","᧿"]} \ No newline at end of file diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWSpecialCharacterDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWSpecialCharacterDialog.js new file mode 100644 index 0000000..c8acac9 --- /dev/null +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWSpecialCharacterDialog.js @@ -0,0 +1,57 @@ +/*! + * VisualEditor user interface MWSpecialCharacterDialog class. + * + * @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt + * @license The MIT License (MIT); see LICENSE.txt + */ + +/** + * Dialog for inserting special characters. + * + * @class + * @extends ve.ui.SpecialCharacterDialog + * + * @constructor + * @param {Object} [config] Configuration options + */ +ve.ui.MWSpecialCharacterDialog = function VeUiMWSpecialCharacterDialog( config ) { + // Parent constructor + ve.ui.MWSpecialCharacterDialog.super.call( this, config ); +}; + +/* Inheritance */ + +OO.inheritClass( ve.ui.MWSpecialCharacterDialog, ve.ui.SpecialCharacterDialog ); + +/* Static properties */ + +ve.ui.SpecialCharacterDialog.static.name = 'mwSpecialCharacter'; + +/* Methods */ + +/** + * Fetch the special character list object + * + * Returns a promise which resolves when this.characters has been populated + * + * @returns {jQuery.Promise} + */ +ve.ui.MWSpecialCharacterDialog.prototype.fetchCharList = function () { + var dialog = this, + groupObject; + dialog.characters = {}; + $.each( ve.init.platform.specialCharacters, function ( groupName, groupCharacters ) { + groupObject = {}; + $.each( groupCharacters, function ( charKey, charVal ) { + groupObject[charVal] = charVal; + } ); + dialog.characters[mw.msg( 'wikieditor-toolbar-characters-page-' + groupName )] = groupObject; + } ); + + // This implementation always resolves instantly + return $.Deferred().resolve().promise(); +}; + +/* Registration */ + +ve.ui.windowFactory.register( ve.ui.MWSpecialCharacterDialog ); diff --git a/modules/ve-mw/ui/tools/ve.ui.MWSpecialCharacterDialogTool.js b/modules/ve-mw/ui/tools/ve.ui.MWSpecialCharacterDialogTool.js new file mode 100644 index 0000000..d2af9bc --- /dev/null +++ b/modules/ve-mw/ui/tools/ve.ui.MWSpecialCharacterDialogTool.js @@ -0,0 +1,24 @@ +/*! + * VisualEditor UserInterface MediaWiki SpecialCharacterDialogTool classes. + * + * @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt + * @license The MIT License (MIT); see LICENSE.txt + */ + +/** + * Special character tool. + * + * @class + * @extends ve.ui.SpecialCharacterDialogTool + * @constructor + * @param {OO.ui.ToolGroup} toolGroup + * @param {Object} [config] Configuration options + */ +ve.ui.MWSpecialCharacterDialogTool = function VeUiSpecialCharacterDialogTool() { + ve.ui.MWSpecialCharacterDialogTool.super.apply( this, arguments ); +}; +OO.inheritClass( ve.ui.MWSpecialCharacterDialogTool, ve.ui.SpecialCharacterDialogTool ); +ve.ui.MWSpecialCharacterDialogTool.static.name = 'mwSpecialCharacter'; +ve.ui.MWSpecialCharacterDialogTool.static.commandName = 'mwSpecialCharacter'; +ve.ui.MWSpecialCharacterDialogTool.static.activeWindow = 'mwSpecialCharacter'; +ve.ui.toolFactory.register( ve.ui.MWSpecialCharacterDialogTool ); diff --git a/modules/ve-mw/ui/ve.ui.MWCommandRegistry.js b/modules/ve-mw/ui/ve.ui.MWCommandRegistry.js index 71bc6fe..4d6d21e 100644 --- a/modules/ve-mw/ui/ve.ui.MWCommandRegistry.js +++ b/modules/ve-mw/ui/ve.ui.MWCommandRegistry.js @@ -134,3 +134,9 @@ } ) ); +ve.ui.commandRegistry.register( + new ve.ui.Command( + 'mwSpecialCharacter', 'window', 'toggle', + { args: ['mwSpecialCharacter'], supportedSelections: ['linear'] } + ) +); \ No newline at end of file -- To view, visit https://gerrit.wikimedia.org/r/197357 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3fafc561ceae969e4ecc12881154cd8a3568bebb Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/VisualEditor Gerrit-Branch: master Gerrit-Owner: Alex Monk <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
