User:SinonJZH/js/PreviewWithVariant.js

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
貢獻者:

注意:在您儲存之後您必須清除瀏覽器快取才可看到最新的變動。

  • Firefox / Safari:按住「Shift」時點選「重新整理」,或按「Ctrl-F5」或「Ctrl-R」 (Mac則為「⌘-R」)
  • Google Chrome:按「Ctrl-Shift-R」 (Mac 則為「⌘-Shift-R」)
  • Internet Explorer:按住「Ctrl」時點選「重新整理」,或按「Ctrl-F5」
  • Opera:進入「工具→偏好設定」中清除快取。
  • 如果您已登入但該頁面出現未登入狀態,請嘗試在網址列的URL最後新增代碼?_=1來訪問最新頁面。
  1. // @author Tranve
  2. // @license MIT
  3. // <nowiki>
  4. ( function () {
  5. if (
  6. !mw.config.get( 'wgAction' ).match( /^(edit|submit)$/ ) ||
  7. mw.config.get( 'wgPageContentModel' ) !== 'wikitext'
  8. ) {
  9. return;
  10. }
  11. mw.messages.set( {
  12. 'pwv-previewwith': wgULS( '預覽字詞轉換', '預覽字詞轉換' ),
  13. 'pwv-dropdown': wgULS( '使用該語言變體顯示預覽:', '使用該語言變體顯示預覽:' ),
  14. 'pwv-zh': wgULS( '不轉換', '不轉換' ),
  15. 'pwv-zh-hans': '簡體',
  16. 'pwv-zh-hant': '繁體',
  17. 'pwv-zh-cn': '大陸簡體',
  18. 'pwv-zh-hk': '香港繁體',
  19. 'pwv-zh-tw': '台灣繁體'
  20. } );
  21. var DATA = [
  22. { var: 'zh', msg: 'pwv-zh' },
  23. { var: 'zh-hans', msg: 'pwv-zh-hans' },
  24. { var: 'zh-hant', msg: 'pwv-zh-hant' },
  25. { var: 'zh-cn', msg: 'pwv-zh-cn' },
  26. { var: 'zh-hk', msg: 'pwv-zh-hk' },
  27. { var: 'zh-tw', msg: 'pwv-zh-tw' }
  28. ];
  29. var OLD_VARIANT = mw.config.get( 'wgUserVariant' );
  30. function createMenus() {
  31. return DATA.map( function ( item ) {
  32. return new OO.ui.MenuOptionWidget( {
  33. data: item.var,
  34. label: mw.msg( item.msg ) /* eslint-disable-line mediawiki/msg-doc */
  35. } );
  36. } );
  37. }
  38. function applyVariant( $form, variant ) {
  39. $form.attr(
  40. 'action',
  41. new mw.Uri( $form.attr( 'action' ) )
  42. .extend( { variant: variant } )
  43. .getRelativePath()
  44. );
  45. }
  46. function getCheckboxState() {
  47. return Object.hasOwnProperty.call( new mw.Uri().query, 'variant' );
  48. }
  49. function init() {
  50. var $layout, $editForm, checkbox, checkboxField, dropdown, dropdownField;
  51. $layout = $( '.editCheckboxes .oo-ui-horizontalLayout' );
  52. if ( !$layout.length ) {
  53. return;
  54. }
  55. $editForm = $( '#editform' );
  56. checkbox = new OO.ui.CheckboxInputWidget( {
  57. selected: getCheckboxState()
  58. } );
  59. checkboxField = new OO.ui.FieldLayout( checkbox, {
  60. align: 'inline',
  61. label: mw.msg( 'pwv-previewwith' )
  62. } );
  63. dropdown = new OO.ui.DropdownWidget( {
  64. $overlay: true,
  65. disabled: !checkbox.isSelected(),
  66. menu: {
  67. items: createMenus()
  68. }
  69. } );
  70. dropdownField = new OO.ui.FieldLayout( dropdown, {
  71. align: 'top',
  72. label: mw.msg( 'pwv-dropdown' ),
  73. invisibleLabel: true
  74. } );
  75. dropdown.getMenu().selectItemByData( mw.config.get( 'wgUserVariant' ) );
  76. checkbox.on( 'change', function ( selected ) {
  77. dropdown.setDisabled( !selected );
  78. } );
  79. $( '#wpPreview, input[name=wpTemplateSandboxPreview]' ).on( 'click.pwv', function () {
  80. if ( checkbox.isSelected() ) {
  81. applyVariant( $editForm, dropdown.getMenu().findSelectedItem().getData() );
  82. }
  83. }
  84. );
  85. if ( mw.user.options.get( 'uselivepreview' ) ) {
  86. $( '#wpPreview' ).off( 'click.pwv' ).on( 'click.pwv', function () {
  87. var variant = dropdown.getMenu().findSelectedItem().getData();
  88. // FIXME: wgUserLanguage should be changed to wgUserVariant
  89. // After T284625 is resolved
  90. mw.config.set( 'wgUserLanguage', checkbox.isSelected() ? variant : OLD_VARIANT );
  91. } );
  92. }
  93. $layout.append( checkboxField.$element, dropdownField.$element );
  94. }
  95. $( init );
  96. }() );
  97. mw.loader.using( 'ext.visualEditor.desktopArticleTarget.init' ).then(function () {
  98. mw.libs.ve.addPlugin( 'ext.gadget.PreviewWithVariant2017' );
  99. } );
  100. // </nowiki>
此頁面最後編輯於 2021年11月14日 (週日) 01:36。
搜尋萌娘百科 (按"/"快速搜尋)
有新的未讀公告