MediaWiki:Common.js/edit.js

提供: 萌えっ娘百科事典
< MediaWiki:Common.js
2017年12月28日 (木) 15:22時点におけるAnnAngela (トーク | 投稿記録)による版 (ページの作成:「Any JavaScript here will be loaded for all users on edit page load.: $(function() { $(".mw-summary-preset-item a").closest('.oo-ui-fieldLayout-header').width($('...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Internet Explorer: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
  • Opera: メニュー → 設定 (Mac では Opera → 環境設定) に移動し、プライバシーとセキュリティ → 閲覧データを消去 → キャッシュされた画像およびファイル からキャッシュをクリアしてください。
/* Any JavaScript here will be loaded for all users on edit page load. */
$(function() {
    $(".mw-summary-preset-item a").closest('.oo-ui-fieldLayout-header').width($('#wpSummary').width());
    $(".mw-summary-preset-item a").on("click", function() {
        $('[name="wpSummary"]').val($('[name="wpSummary"]').val() + " " + $(this).html());
    });

    // .wikiEditor-ui-controls color fix
    $('.wikiEditor-ui-controls').css('background-color', $('#content').css('background-color'));

    // edit notice check
    if ($(".editOptions > #wpSummary")[0]) $(".CheckNewSectionOn").hide(); else $(".CheckNewSectionOff").hide();

    // Customized File Insertion dialog
    // Copyright 2017 The Little Moe New LLC. All rights reserved.
    mw.loader.using([ "oojs", "oojs-ui" ]).then(function() {
        $("#wpTextbox1").on("wikiEditor-toolbar-doneInitialSections", function() {
            function FileInsertionDialog(config) {
                FileInsertionDialog.super.call(this, config);
            }
            OO.inheritClass(FileInsertionDialog, OO.ui.ProcessDialog);
            // Name
            FileInsertionDialog.static.name = "fileInsertionDialog";
            FileInsertionDialog.static.title = mw.msg("wikieditor-toolbar-tool-file-title");
            FileInsertionDialog.static.actions = [ {
                flags:"primary",
                label:mw.msg("wikieditor-toolbar-tool-file-insert"),
                action:"insert"
            }, {
                flags:"safe",
                label:mw.msg("wikieditor-toolbar-tool-file-cancel")
            } ];
            // Initialization
            FileInsertionDialog.prototype.initialize = function() {
                FileInsertionDialog.super.prototype.initialize.call(this);
                this.panel = new OO.ui.PanelLayout({
                    padded:true,
                    expanded:false
                });
                this.fileMetaContent = new OO.ui.FieldsetLayout();
                this.alignmentContent = new OO.ui.FieldsetLayout();
                this.formatContent = new OO.ui.FieldsetLayout();
                this.fileNameInput = new OO.ui.TextInputWidget({
                    indicator:"required"
                });
                this.fileNameField = new OO.ui.FieldLayout(this.fileNameInput, {
                    label:mw.msg("wikieditor-toolbar-file-target"),
                    align:"top"
                });
                this.fileTitleInput = new OO.ui.TextInputWidget();
                this.fileTitleField = new OO.ui.FieldLayout(this.fileTitleInput, {
                    label:mw.msg("wikieditor-toolbar-file-caption"),
                    align:"top"
                });
                this.sizeInput = new OO.ui.TextInputWidget();
                this.sizeField = new OO.ui.FieldLayout(this.sizeInput, {
                    label:mw.msg("wikieditor-toolbar-file-size"),
                    align:"top"
                });
                this.fileMetaContent.addItems([ this.fileNameField, this.fileTitleField, this.sizeField ]);
                var alignOptionDefault = new OO.ui.ButtonOptionWidget({
                    data:"default",
                    label:mw.msg("wikieditor-toolbar-file-default"),
                    title:mw.msg("wikieditor-toolbar-file-default")
                });
                var alignOptionNone = new OO.ui.ButtonOptionWidget({
                    data:"none",
                    label:mw.msg("wikieditor-toolbar-file-format-none"),
                    title:mw.msg("wikieditor-toolbar-file-format-none")
                });
                var magicWords = mw.config.get("wgWikiEditorMagicWords");
                var alignOptionMid = new OO.ui.ButtonOptionWidget({
                    data:"center",
                    label:magicWords.img_center,
                    title:magicWords.img_center
                });
                var alignOptionLeft = new OO.ui.ButtonOptionWidget({
                    data:"left",
                    label:magicWords.img_left,
                    title:magicWords.img_left
                });
                var alignOptionRight = new OO.ui.ButtonOptionWidget({
                    data:"right",
                    label:magicWords.img_right,
                    title:magicWords.img_right
                });
                this.alignmentSelect = new OO.ui.ButtonSelectWidget({
                    items:[ alignOptionNone, alignOptionDefault, alignOptionMid, alignOptionLeft, alignOptionRight ]
                });
                this.alignmentField = new OO.ui.FieldLayout(this.alignmentSelect, {
                    label:mw.msg("wikieditor-toolbar-file-float"),
                    align:"top"
                });
                this.alignmentContent.addItems([ this.alignmentField ]);
                var formatOptionThumbnail = new OO.ui.ButtonOptionWidget({
                    data:"thumbnail",
                    label:magicWords.img_thumbnail,
                    title:magicWords.img_thumbnail
                });
                var formatOptionFramed = new OO.ui.ButtonOptionWidget({
                    data:"framed",
                    label:magicWords.img_framed,
                    title:magicWords.img_framed
                });
                var formatOptionFrameless = new OO.ui.ButtonOptionWidget({
                    data:"frameless",
                    label:magicWords.img_frameless,
                    title:magicWords.img_frameless
                });
                var formatOptionNone = new OO.ui.ButtonOptionWidget({
                    data:"default",
                    label:magicWords.img_none,
                    title:magicWords.img_none
                });
                this.formatSelect = new OO.ui.ButtonSelectWidget({
                    items:[ formatOptionThumbnail, formatOptionFramed, formatOptionFrameless, formatOptionNone ]
                });
                this.formatField = new OO.ui.FieldLayout(this.formatSelect, {
                    label:mw.msg("wikieditor-toolbar-file-format"),
                    align:"top"
                });
                this.formatContent.addItems([ this.formatField ]);
                this.panel.$element.append(this.fileMetaContent.$element);
                this.panel.$element.append(this.alignmentContent.$element);
                this.panel.$element.append(this.formatContent.$element);
                this.$body.append(this.panel.$element);
                this.fileNameInput.connect(this, {
                    change:"onFileNameChange"
                });
            };
            // Specify the dialog height (or don"t to use the automatically generated height).
            FileInsertionDialog.prototype.getBodyHeight = function() {
                return this.panel.$element.outerHeight(true);
            };
            // Name validation
            FileInsertionDialog.prototype.onFileNameChange = function(value) {
                this.actions.setAbilities({
                    insert:!!value.length
                });
            };
            // Default state initialization
            FileInsertionDialog.prototype.getSetupProcess = function(data) {
                data = data || {};
                return FileInsertionDialog.super.prototype.getSetupProcess.call(this, data).next(function() {
                    this.actions.setAbilities({
                        insert:false
                    });
                    this.fileNameInput.setValue("");
                    this.fileTitleInput.setValue("");
                    this.sizeInput.setValue("");
                    this.alignmentSelect.selectItemByData("default");
                    this.formatSelect.selectItemByData("thumbnail");
                }, this);
            };
            // Context setup
            FileInsertionDialog.prototype.setContext = function(context) {
                this.editorContext = context;
            };
            // Specify processes to handle the actions.
            FileInsertionDialog.prototype.getActionProcess = function(action) {
                if (action === "insert") {
                    return new OO.ui.Process(function() {
                        this.insertImage();
                    }, this);
                }
                // Fallback to parent handler
                return FileInsertionDialog.super.prototype.getActionProcess.call(this, action);
            };
            // Handles image insertion.
            FileInsertionDialog.prototype.insertImage = function() {
                if (!this.editorContext) return;
                var fileName, caption, fileFloat, fileFormat, fileSize, fileTitle, options, fileUse, hasPxRgx = /.+px$/, magicWordsI18N = mw.config.get("wgWikiEditorMagicWords");
                fileName = this.fileNameInput.getValue();
                caption = this.fileTitleInput.getValue();
                fileSize = this.sizeInput.getValue();
                fileFloat = this.alignmentSelect.getSelectedItem().data;
                fileFormat = this.formatSelect.getSelectedItem().data;
                // Append px to end to size if not already contains it
                if (fileSize !== "" && !hasPxRgx.test(fileSize)) {
                    fileSize += "px";
                }
                if (fileName !== "") {
                    fileTitle = new mw.Title(fileName);
                    // Append file namespace prefix to filename if not already contains it
                    if (fileTitle.getNamespaceId() !== 6) {
                        fileTitle = new mw.Title(fileName, 6);
                    }
                    fileName = fileTitle.toText();
                }
                options = [ fileSize, fileFormat, fileFloat ];
                // Filter empty values
                options = $.grep(options, function(val) {
                    return val.length && val !== "default";
                });
                if (caption.length) {
                    options.push(caption);
                }
                fileUse = options.length === 0 ? fileName :fileName + "|" + options.join("|");
                $.wikiEditor.modules.toolbar.fn.doAction(this.editorContext, {
                    type:"replace",
                    options:{
                        pre:"[[",
                        peri:fileUse,
                        post:"]]",
                        ownline:true
                    }
                });
                this.close();
            };
            // Remove legacy file insertion
            $("#wpTextbox1").wikiEditor("removeFromToolbar", {
                section:"main",
                group:"insert",
                tool:"file"
            });
            $("#wpTextbox1").wikiEditor("addToToolbar", {
                section:"main",
                group:"insert",
                tools:{
                    "file-alt":{
                        label:mw.msg("wikieditor-toolbar-tool-file-title"),
                        type:"button",
                        icon:"insert-file.png",
                        offset:[ 2, -1438 ],
                        action:{
                            type:"callback",
                            execute:function(context) {
                                var windowManager = new OO.ui.WindowManager();
                                $("body").append(windowManager.$element);
                                var fileInsertionDialog = new FileInsertionDialog();
                                fileInsertionDialog.setContext(context);
                                windowManager.addWindows([ fileInsertionDialog ]);
                                windowManager.openWindow(fileInsertionDialog);
                            }
                        }
                    }
                }
            });
        });
    });
});