MediaWiki:Gadget-FastWriterPage.js

玲子留言 | 贡献2025年3月16日 (日) 15:08的版本

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
mw.loader.using(['oojs-ui-core', 'oojs-ui-windows']).then(function () {
	var pageTitle = mw.config.get('wgTitle');
	if (pageTitle !== '文手页面生成器' && pageTitle !== 'Gadget-FastWriterPage.js') {
        return;
    }
    
    var btn_submit = new OO.ui.ButtonWidget({
        label: '提交',
        icon: 'check',
        flags: ['primary']
    }),
    btn_add = new OO.ui.ButtonWidget({
        label: '增加作品',
        icon: 'add'
    }),
    btn_reduce = new OO.ui.ButtonWidget({
        label: '减少作品',
        icon: 'subtract'
    });
	
	var input_writer_name = new OO.ui.TextInputWidget( {
        required: true,
	    validate: 'non-empty',
		placeholder: '请输入文手名称'
	} ),
	input_writer_tag = new OO.ui.DropdownInputWidget( { 
		placeholder: '请选择文手标签(默认:同人)',
		options: [
			{ data: '同人', label: '同人' }
		]
	} ),
	input_writer_platform = new OO.ui.TextInputWidget( { 
		placeholder: '请输入文手活跃平台'
	} ),
	check_isoverwrite = new OO.ui.CheckboxInputWidget( {
		selected: false
	} );
	
	var fieldset = new OO.ui.FieldsetLayout( { 
		label: '文手页面快速生成器',
		classes: [ 'container' ]
	} ),
    fieldset_work = new OO.ui.FieldsetLayout( {
		classes: [ 'container' ]
	} );

    fieldset.addItems( [
        new OO.ui.FieldLayout( input_writer_name, { 
            label: '文手名称:',
            align: 'top',
            help: '名称请使用符合URL规则的纯文本(可以使用unicode),不要使用任何wikitext、HTML之类的语法。由于MediaWiki限制,空格会被转为下划线',
            helpInline: true
        } ),
            
        new OO.ui.FieldLayout( input_writer_tag, {
            label: '文手标签:', 
            align: 'top' 
        } ),

        new OO.ui.FieldLayout( input_writer_platform, { 
            label: '文手活跃平台:',
            align: 'top' 
        } ),

        new OO.ui.FieldLayout( check_isoverwrite, { 
            label: '覆盖已存在的页面【危险!可能会覆盖手工加入的信息】',
            align: 'inline' 
        } ),

        new OO.ui.FieldLayout( btn_submit ),

        new OO.ui.FieldLayout(
            new OO.ui.Widget( {
                content: [ new OO.ui.HorizontalLayout( {
                    items: [
                        new OO.ui.FieldLayout( btn_add ),
                        new OO.ui.FieldLayout( btn_reduce )
                    ]
                } ) ]
            } )
        ),

        new OO.ui.FieldsetLayout( fieldset_work )
    ] );

    const getWork = () => {
        var input_work_name = new OO.ui.TextInputWidget( { 
            placeholder: '作品名称'
        } );
        var input_work_pub_date = new OO.ui.TextInputWidget( { 
            placeholder: '发布日期'
        } );
        var input_work_update_date = new OO.ui.TextInputWidget( { 
            placeholder: '更新日期'
        } );
        var input_work_platform = new OO.ui.TextInputWidget( { 
            placeholder: '发布平台'
        } );
        var input_work_url = new OO.ui.TextInputWidget( { 
            placeholder: '作品链接'
        } );
        var input_work_status = new OO.ui.TextInputWidget( { 
            placeholder: '存档情况'
        } );
        var input_work_note = new OO.ui.TextInputWidget( { 
            placeholder: '备注'
        } );

        var work_field = new OO.ui.FieldsetLayout( { 
            label: '作品信息',
            classes: [ 'container' ]
        } );
        work_field.addItems( [
            new OO.ui.FieldLayout(
                new OO.ui.Widget( {
                    content: [ new OO.ui.HorizontalLayout( {
                        items: [
                            new OO.ui.FieldLayout( input_work_name, {
                                label: '作品名称:', 
                                align: 'top' 
                            }),
                            new OO.ui.FieldLayout( input_work_pub_date, {
                                label: '发布日期:', 
                                align: 'top' 
                            }),
                            new OO.ui.FieldLayout( input_work_update_date, {
                                label: '更新日期:', 
                                align: 'top' 
                            }),
                            new OO.ui.FieldLayout( input_work_platform, {
                                label: '发布平台:', 
                                align: 'top' 
                            }),
                            new OO.ui.FieldLayout( input_work_url, {
                                label: '作品链接:', 
                                align: 'top' 
                            }),
                            new OO.ui.FieldLayout( input_work_status, {
                                label: '存档情况:', 
                                align: 'top' 
                            }),
                            new OO.ui.FieldLayout( input_work_note, {
                                label: '备注:', 
                                align: 'top' 
                            })
                        ]
                    } ) ]
                } )
            )
        ] );

        return {
            input_work_name: input_work_name,
            input_work_pub_date: input_work_pub_date,
            input_work_update_date: input_work_update_date,
            input_work_platform: input_work_platform,
            input_work_url: input_work_url,
            input_work_status: input_work_status,
            input_work_note: input_work_note,
            work_field: work_field
        };
    }

    var work_list = [];

    btn_add.on('click', function () {
        new_work = getWork();
        work_list.push(new_work);
        fieldset_work.addItems( [ new_work.work_field ] );
    })

    btn_reduce.on('click', function () {
        last_work = work_list.pop();
        fieldset_work.removeItems( [last_work.work_field] );
    })

    btn_submit.on('click', function () {
    	var writer_name = input_writer_name.getValue();
    	var writer_tag = input_writer_tag.getValue();
    	var writer_platform = input_writer_platform.getValue();
    	var isoverwrite = check_isoverwrite.isSelected();
    	if (isoverwrite){
            // 强制覆盖
    		return
    	}
        if (work_list.length == 0) {
            // 没有填写作品
            return
        }
        for (var i = 0; i < work_list.length; i++) {
            var work = work_list[i];
            console.log(work);
            var work_name = work.input_work_name.getValue();
            var work_pub_date = work.input_work_pub_date.getValue();
            var work_update_date = work.input_work_update_date.getValue();
            var work_platform = work.input_work_platform.getValue();
            var work_url = work.input_work_url.getValue();
            var work_status = work.input_work_status.getValue();
            var work_note = work.input_work_note.getValue();

            var windowManager = new OO.ui.WindowManager();
            $('body').append(windowManager.$element);
            var messageDialog = new OO.ui.MessageDialog();
            windowManager.addWindows([messageDialog]);
            windowManager.openWindow(messageDialog, {
                message: work_name,
                title: '仍在开发中'
            });
        }

        
    });

    // 添加到页面顶部
    $('#mw-content-text').prepend(
        fieldset.$element
    );
});