打开/关闭菜单
Toggle preferences menu
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

MediaWiki:Gadget-tikuGuide.js

MediaWiki界面页面
Cirno.9讨论 | 贡献2023年5月30日 (二) 01:10的版本

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

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
setTimeout(function(){
    dashboardInterface()
    console.log('interface')
},0)
$.fn.serializeObject = function()
{
    var result = {}
    var a = this.serializeArray()
    console.log(a)
    $.each(a,function (e,t) {
        result[t['name']] = t['value']
    })
    return result
}

tikuCreateConfig = {
    rl:'参与编辑的题库',
    project:'https://www.medforest.cn/dic/',
    url:'https://www.medforest.cn/medf/api.php',
    des:'本列表包含您创建或者参与编辑的题库'
}

function readlistCreat(name,des,token){
    var isSuccess = [false]
    var PARAMS = {
        "action": "readinglists",
        "format": "json",
        "command": "create",
        "utf8": 1,
        "token": token,
        "name": name,
        "description": des
    }
    $.ajax({
        url: tikuCreateConfig.url,
        method: "post",
        async: false,
        data: PARAMS,
        timeout: 5000,
        success: function (results){
            var apiResult = results['edit']['result']
            if(apiResult==="Success"){
                isSuccess = [true,results["create"]["result"]]
            }else{
                isSuccess = [false,results["create"]["result"]]
            }
        }
    })
    return isSuccess
}
function readlistCreatEntry(list,project,title,token){
    var isSuccess = false
    var PARAMS = {
        "action": "readinglists",
        "format": "json",
        "command": "createentry",
        "utf8": 1,
        "token": token,
        "list": list,
        "project": project,
        "title": title,

    }
    $.ajax({
        url: tikuCreateConfig.url,
        method: "post",
        async: false,
        data: PARAMS,
        timeout: 5000,
        success: function (results){
            isSuccess = results["createentry"]["result"]
        }
    })
    return isSuccess
}
function readlistSetup(token){
    var isSuccess = [false]
    var PARAMS = {
        "action": "readinglists",
        "format": "json",
        "command": "setup",
        "utf8": 1,
        "token": token,

    }
    $.ajax({
        url: tikuCreateConfig.url,
        method: "post",
        async: false,
        data: PARAMS,
        timeout: 5000,
        success: function (results){
            isSuccess = results
        }
    })
    return isSuccess
}
function readlistDelEntry(entry,token){
    var isSuccess = [false]
    var PARAMS = {
        "action": "readinglists",
        "format": "json",
        "command": "deleteentry",
        "utf8": 1,
        "token": token,
        "entry": entry
    }
    $.ajax({
        url: tikuCreateConfig.url,
        method: "post",
        async: false,
        data: PARAMS,
        timeout: 5000,
        success: function (results){
            if (results["deleteentry"]['result']==="Success"){
                isSuccess = true
            }
        }
    })
    return isSuccess
}
function isRLExist(name){
    var exist = false
    var PARAMS = {
        "action": "query",
        "format": "json",
        "meta": "readinglists",
        "utf8": 1,
    }
    $.ajax({
        url: tikuCreateConfig.url,
        method: "post",
        async: false,
        data: PARAMS,
        timeout: 5000,
        success: function (results){
            var rls = results.query.readinglists
            for(var i=0;i<rls.length;i++){
                var rl = rls[i]
                if(rl.name === name){
                    exist = rl
                }
            }
        }
    })
    return exist
}
function readlistEntries(id){
    var isSuccess = [false]
    var PARAMS = {
        "action": "query",
        "format": "json",
        "list": "readinglistentries",
        "utf8": 1,
        "rlelists": id,
        "rlesort": "updated",
        "rledir": "descending"
    }
    $.ajax({
        url: tikuCreateConfig.url,
        method: "post",
        async: false,
        data: PARAMS,
        timeout: 5000,
        success: function (results){
            isSuccess = results['query']['readinglistentries']
        }
    })
    return isSuccess
}
function readlistEntriesMeta(project,name){
    var isSuccess = [false]
    var PARAMS = {
        "action": "query",
        "format": "json",
        "list": "readinglistentries",
        "utf8": 1,
        "rlelists": id
    }
    $.ajax({
        url: tikuCreateConfig.url,
        method: "post",
        async: false,
        data: PARAMS,
        timeout: 5000,
        success: function (results){
            isSuccess = results['query']['readinglistentries']
        }
    })
    return isSuccess
}
//编辑页面
function editpage(url,token,title, content,model,tags,summary) {
    model =model !==undefined ?model : 'wikitext'
    tags = tags !== undefined?tags:''
    summary = summary !==undefined?summary:''
    var isSuccess = [false,0]
    var PARAMS = {
        "action": "edit",
        "format": "json",
        "title": title,
        "text": content,
        "token": token,
        'contentmodel':model,
        "summary": summary,
        "tags": tags,
    }
    $.ajax({
        url: url,
        method: "post",
        async: false,
        data: PARAMS,
        timeout: 5000,
        success: function (results){
            var apiResult = results['edit']['result']
            if(apiResult==="Success"){
                isSuccess = [true,results["edit"]["result"]]
                console.log("===editpage_common 成功===")
            }else{
                isSuccess = [false,results["edit"]["result"]]
            }
        },
    })

    return isSuccess
}
//获取某个页面的历史版本
function getPageRevision(url, title, pageCount){
    var PARAMS = {
        "action": "query",
        "format": "json",
        "prop": "revisions",
        "titles": title,
        "utf8": 1,
        "rvprop": "content",
        "rvlimit": pageCount,
        "rvdir": "older"
    }
    var isSuccess = {}
    $.ajax(
        {
            url: url,
            method: "post",
            async: false,
            data: PARAMS,
            timeout: 5000,
            success: function (results){
                if('-1' in results.query.pages){
                    console.log('===无此页面===')
                    isSuccess = {isSuccess:false, result:results}
                }else {
                    isSuccess = {isSuccess:true, result:results}
                }
            }
        })
    return isSuccess
}
function get_token(url,origin){
    var isSuccess = [false, '0']
    var PARAMS = {
        "action": "query",
        "format": "json",
        'meta':'tokens'
    }
    $.ajax(
        {
            url: url,
            method: "post",
            async: false,
            data: PARAMS,
            timeout: 5000,
            success: function (results) {
                var token = results.query.tokens.csrftoken
                if(token.length >= 5){
                    isSuccess = token
                }
            }
        })
    return isSuccess
}


function clearContainer() {
    $('#tiku-guide-container').html('')
}
function dashboardInterface(){
    clearContainer()
    var token = get_token(tikuCreateConfig.url)
    var container = $('#tiku-guide-container')
    var html = $('<div id="myTikuList"></div>').appendTo(container)
    var header = $('<div id="header"></div>')//包括heading, actions
    var heading = $('<div id="heading"></div>')
    var actions = $('<div id="actions"></div>')
    var creatTikuBtn = new OO.ui.ButtonWidget( {
			label: '创建一个新题库'
			,id:'createTiku'
			,flags: [
						'progressive'
					]
		} ).$element.appendTo(actions)
	var addTikuToMyListBtn = new OO.ui.ButtonWidget( {
			label: '添加题库到我的列表库'
			,id:'addTiku'
			,flags: [
				'progressive'
			]
		} ).$element.appendTo(actions)
    var body = $('<div id="body"></div>')
    header.append(heading,actions)
    html.append(header,body)
    $('#createTiku').bind('click',function () {
        createInterface()
    })
    $('#addTiku').bind('click',function () {
        addInterface()
    })
    
    var rls = isRLExist(tikuCreateConfig.rl)
    if(!rls){
        $('#myTikuList').children('#header').children('#heading').html('<h3>您还没有参与编辑任何题库!</h3>')
    }else{
        var enteries = readlistEntries(rls.id)
        for(var i=0;i<enteries.length;i++){
            var template = $('<div id="entry-'+i+'"><div class="entry-header"></div><div class="entry-body"></div><div class="entry-appendix"></div></div><hr>').appendTo($('#myTikuList').children('#body'))
            $('#entry-'+i).children('.entry-header').html('<a href="'+enteries[i].project+enteries[i].title+'"><h4>'+enteries[i].title+'</h4></a>')
            var editThisBtn = new OO.ui.ButtonWidget( {
					label: '编辑此目录'
					,id:'editEntry-'+i
					,flags: [
						'progressive'
					]
				} ).$element
			var delThisBtn = new OO.ui.ButtonWidget( {
					label: '移除此条目'
					,id:'delEnrty-'+i
					,flags: [
						'destructive'
					]
				} ).$element
			$('#entry-'+i).children('.entry-body').append(editThisBtn, delThisBtn)
            $('#entry-'+i).children('.entry-appendix').html('<p>加入日期:'+enteries[i].created+'</p>')
            console.log(enteries[i])
            $('#editEntry-'+i).bind('click',{title:enteries[i].title},function (event) {
                var title = event.data.title
                console.log(title)
                createInterface(title)
            })
            $('#delEnrty-'+i).bind('click',{token:token,id:enteries[i].id},function (event) {
                if(confirm('即将从您的列表中去除此条目,此操作不会影响页面内容,确定吗?')){
                    readlistDelEntry(event.data.id,event.data.token)
                }
            })
        }
    }

}
function addInterface(){
    clearContainer()
    var container = $('#tiku-guide-container')
    $('<button type="button" id="backDashboard">返回</button>').appendTo(container)
    $('#backDashboard').bind('click',function () {
        dashboardInterface()
    })
    var html = $('<div id="addTikuContainer"><div id="header"><div id="heading"><h3>参与编辑一个题库</h3></div>' +
        '<div id="body"><input id="addName" type="text" placeholder="题库名称"><button type="button" id="addTiku">添加</button></div></div>').appendTo(container)
    $('#addTiku').bind('click',function () {
        var inputName = '题库:'+ $('#addName').val()
        var listID = isRLExist(tikuCreateConfig.rl)
        console.log(listID)
        var token = get_token(tikuCreateConfig.url)
        console.log(token)
        if(!listID) {
            alert('你还没有创建您的阅读列表,即将创建并启用')
            readlistSetup(token)
            readlistCreat(tikuCreateConfig.rl, tikuCreateConfig.des, token)
            alert('创建完成')
        }
        var result = readlistCreatEntry(listID.id,tikuCreateConfig.project,inputName,token)
        alert(result)
    })
}
function createInterface(title){
    clearContainer()
    var container = $('#tiku-guide-container')
    $('<button type="button" id="backDashboard">返回</button>').appendTo(container)
    $('#backDashboard').bind('click',function () {
        dashboardInterface()
    })
    if(title!==undefined){
        title='模板:目录-'+title.split(':')[1]
    }
    var titleContent = resolve(title)
    var fieldset = new OO.ui.FieldsetLayout( {
    				id:'tikuInfo',
			        label: '创建一个题库'
			    } )
    	,name = new OO.ui.TextInputWidget( {
			        placeholder: '题库名,必填项',
			        required: true,
			        validate: 'non-empty',
			        name:'name',
			    } )
    	,cover = new OO.ui.TextInputWidget( {
			        placeholder: '题库目录封面的文件名,不需要用中括号包围和文件:前缀',
			        name:'cover',
			    } )
    	,time = new OO.ui.TextInputWidget( {
			        placeholder: '题库发行的时间',
			        name:'time',
			    } )
    	,author = new OO.ui.TextInputWidget( {
			        placeholder: '题库的作者',
			        name:'author',
			    } )
    	,publisher = new OO.ui.TextInputWidget( {
			        placeholder: '题库的出版社',
			        name:'publisher',
			    } )
    	,ps = new OO.ui.TextInputWidget( {
			        placeholder: '题库的附加说明文字',
			        name:'ps',
			    } )
    	,tikuBenkeCategory = new OO.ui.DropdownInputWidget( {
					label: 'Dropdown menu: Select a menu option',
					name:'tikuBenkeCategory',
					options: [
						{ data: '细胞生物学', label: '细胞生物学' } ,
						{ data: '组织学与胚胎学', label: '组织学与胚胎学' } ,
						{ data: '系统解剖学', label: '系统解剖学' } ,
						{ data: '生理学', label: '生理学' } ,
						{ data: '生物化学与分子生物学', label: '生物化学与分子生物学' } ,
						{ data: '医学微生物学', label: '医学微生物学' } ,
						{ data: '医学免疫学', label: '医学免疫学' } ,
						{ data: '预防医学', label: '预防医学' } ,
						{ data: '医学遗传学', label: '医学遗传学' } ,
						{ data: '医学心理学', label: '医学心理学' } ,
						{ data: '医学统计学', label: '医学统计学' } ,
						{ data: '病理学', label: '病理学' } ,
						{ data: '病理生理学', label: '病理生理学' } ,
						{ data: '局部解剖学', label: '局部解剖学' } ,
						{ data: '药理学', label: '药理学' } ,
						{ data: '诊断学', label: '诊断学' } ,
						{ data: '人体寄生虫学', label: '人体寄生虫学' } ,
						{ data: '流行病学', label: '流行病学' } ,
						{ data: '医学影像学', label: '医学影像学' } ,
						{ data: '卫生学', label: '卫生学' } ,
						{ data: '医学伦理学', label: '医学伦理学' } ,
						{ data: '中医学', label: '中医学' } ,
						{ data: '外科学', label: '外科学' } ,
						{ data: '内科学', label: '内科学' } ,
						{ data: '妇产科学', label: '妇产科学' } ,
						{ data: '儿科学', label: '儿科学' } ,
						{ data: '精神病学', label: '精神病学' } ,
						{ data: '神经病学', label: '神经病学' } ,
						{ data: '急诊与灾难医学', label: '急诊与灾难医学' } ,
						{ data: '皮肤性病', label: '皮肤性病' } ,
						{ data: '耳鼻咽喉头颈外科学', label: '耳鼻咽喉头颈外科学' } ,
						{ data: '眼科学', label: '眼科学' } ,
						{ data: '口腔医学', label: '口腔医学' } ,
						{ data: '临床麻醉学', label: '临床麻醉学' } ,
						{ data: '危重病医学', label: '危重病医学' } ,
						{ data: '核医学', label: '核医学' } ,
						{ data: '介入放射学', label: '介入放射学' } ,
						{ data: '法医学', label: '法医学' } ,
					]
				} );
	var level = new OO.ui.DropdownInputWidget( {
					name:'level',
					options: [
						{ data: '*', label: '*' } ,
						{ data: '**', label: '**' } ,
						{ data: '***', label: '***' } ,
					]
				} ),
		chapID = new OO.ui.TextInputWidget( {
			    	name:'chapID',
			        placeholder: '章节号(子页面名称)'
			    } ),
	    chapName =  new OO.ui.TextInputWidget( {
			    	name:'chapName',
			        placeholder: '章节名(显示名称)'
			    } ),
	    pushLineBtn = new OO.ui.ButtonWidget( {
					label: 'Button'
				} )
    
	fieldset.addItems( [
		    new OO.ui.FieldLayout( name, {
		        label: '题库名称',
		        align: 'inline'
		    } ),
		    new OO.ui.FieldLayout( cover, {
		        label: '封面(请先在维基中上传对应封面)',
		        align: 'inline'
		    } ),
		    new OO.ui.FieldLayout( time, {
		        label: '发型年份(或者录入时间,默认当前时间)',
		        align: 'top'
		    } ),
		    new OO.ui.FieldLayout( author, {
		        label: '作者(默认创建者)',
		        align: 'top'
		    } ),
		    new OO.ui.FieldLayout( publisher, {
		        label: '出版社',
		        align: 'top'
		    } ),
		    new OO.ui.FieldLayout( ps, {
		        label: '备注',
		        align: 'top'
		    } ),
		    new OO.ui.FieldLayout( tikuBenkeCategory, {
		        label: '学科分类(必选)',
		        align: 'top'
		    } ),
		    new OO.ui.FieldLayout( level,chapID,chapName, {
		        label: '学科分类(必选)',
		        align: 'top'
		    } ),
		    new OO.ui.FieldLayout( chapID,{
		        label: '学科分类(必选)',
		        align: 'inline'
		    } ),
		    new OO.ui.ActionFieldLayout( level, chapID, {
					label: 'ActionFieldLayout aligned left'
			} ),
		] )
		

	var form = new OO.ui.FormLayout( {
			    items: [ fieldset ],
			} ).$element.appendTo(container)
    // var form = $('<form id="tikuInfo">\n' +
    //     ' 题库名称:<br>\n' +
    //     '<input type="text" name="name" value="'+titleContent.name+'">\n' +
    //     '<br>\n' +
    //     ' 封面(请先在维基中上传对应封面):<br>\n' +
    //     '<input type="text" name="cover" value="'+titleContent.cover+'">\n' +
    //     '<br>\n' +
    //     ' 发型年份(或者录入时间,默认当前时间):<br>\n' +
    //     '<input type="text" name="time" value="'+titleContent.time+'">\n' +
    //     '<br>\n' +
    //     ' 作者(默认创建者):<br>\n' +
    //     '<input type="text" name="author" value="'+titleContent.author+'">\n' +
    //     '<br>\n' +
    //     ' 出版社:<br>\n' +
    //     '<input type="text" name="publisher" value="'+titleContent.publisher+'">\n' +
    //     '<br>\n' +
    //     ' 备注:<br>\n' +
    //     '<input type="text" name="ps" value="'+titleContent.ps+'">\n' +
    //     '<br>\n' +
    //     '学科分类(必选):<select name="tikuBenkeCategory">\n' +
    //     '    <option value="0">--选择一个分类--</option>\n' +
    //     '    <option value="细胞生物学">细胞生物学</option>\n' +
    //     '    <option value="组织学与胚胎学">组织学与胚胎学</option>\n' +
    //     '    <option value="系统解剖学">系统解剖学</option>\n' +
    //     '    <option value="生理学">生理学</option>\n' +
    //     '    <option value="生物化学与分子生物学">生物化学与分子生物学</option>\n' +
    //     '    <option value="医学微生物学">医学微生物学</option>\n' +
    //     '    <option value="医学免疫学">医学免疫学</option>\n' +
    //     '    <option value="预防医学">预防医学</option>\n' +
    //     '    <option value="医学遗传学">医学遗传学</option>\n' +
    //     '    <option value="医学心理学">医学心理学</option>\n' +
    //     '    <option value="医学统计学">医学统计学</option>\n' +
    //     '    <option value="病理学">病理学</option>\n' +
    //     '    <option value="病理生理学">病理生理学</option>\n' +
    //     '    <option value="局部解剖学">局部解剖学</option>\n' +
    //     '    <option value="药理学">药理学</option>\n' +
    //     '    <option value="诊断学">诊断学</option>\n' +
    //     '    <option value="人体寄生虫学">人体寄生虫学</option>\n' +
    //     '    <option value="流行病学">流行病学</option>\n' +
    //     '    <option value="医学影像学">医学影像学</option>\n' +
    //     '    <option value="卫生学">卫生学</option>\n' +
    //     '    <option value="医学伦理学">医学伦理学</option>\n' +
    //     '    <option value="中医学">中医学</option>\n' +
    //     '    <option value="外科学">外科学</option>\n' +
    //     '    <option value="内科学">内科学</option>\n' +
    //     '    <option value="妇产科学">妇产科学</option>\n' +
    //     '    <option value="儿科学">儿科学</option>\n' +
    //     '    <option value="精神病学">精神病学</option>\n' +
    //     '    <option value="神经病学">神经病学</option>\n' +
    //     '    <option value="急诊与灾难医学">急诊与灾难医学</option>\n' +
    //     '    <option value="皮肤性病">皮肤性病</option>\n' +
    //     '    <option value="耳鼻咽喉头颈外科学">耳鼻咽喉头颈外科学</option>\n' +
    //     '    <option value="眼科学">眼科学</option>\n' +
    //     '    <option value="口腔医学">口腔医学</option>\n' +
    //     '    <option value="临床麻醉学">临床麻醉学</option>\n' +
    //     '    <option value="危重病医学">危重病医学</option>\n' +
    //     '    <option value="核医学">核医学</option>\n' +
    //     '    <option value="介入放射学">介入放射学</option>\n' +
    //     '    <option value="法医学">法医学</option>\n' +
    //     '</select>' +
    //     '<br>\n' +
    //     '目录信息(一行一个目录项,每行首添加 * 区分层级,章节名称与编号用|区分,示例:* 第一章|绪 论):<br>\n' +
    //     '<div>' +
    //     '<select name="level"><option value="*">*</option><option value="**">**</option><option value="***">***</option></select>' +
    //     '<input name="chapID" type="text" placeholder="章节号"/><input id="chapName" name="chapName" type="text" placeholder="章节名"/>'+
    //     '<button type="button" id="addIndex">添加到末尾</button>'+
    //     '</div>' +
    //     '<textarea name="index" id="indexContainer" placeholder="* 第一章|绪 论\n**第一节|xxX\n* 第二章|222" style="width: 300px;height: 500px"></textarea>\n' +
    //     '</form> ').appendTo(container)
    $('#indexContainer').val(titleContent.index)
    $('<button id="submitIndex" class="oo-ui-inputWidget-input oo-ui-buttonElement-button">提交</button>').appendTo(container)
    $('<button id="prevIndex">预览</button>').appendTo(container)
    $('#addIndex').bind("click",function (){addIndex()})
    $('#prevIndex').bind('click',function(){submit(false)})
    $('#submitIndex').bind('click',function(){submit(true)})
}
function addIndex(){
    var info = $('#tikuInfo').serializeObject()
    var reg = new RegExp('\\s','g')
    if(reg.test(info.chapID)||reg.test(info.chapName)){
        alert('不能包含空格')
        return false
    }
    var text = info.level + ' ' + info.chapID+'|'+info.chapName +'\n'
    var val = $('#indexContainer').val()
    $('#indexContainer').val(val + text)
    $('#chapName').val('')
    return text
}
function pIndex(text,title){
    console.log(text)
    text = text.split('\n')
    var l = {}
    var final = ''
    for (var i=0;i<text.length;i++){
        var t = '题库:' + title
        if(text[i].length>0){
            var level = text[i].split(' ')[0].length
            var chapID = text[i].split(' ')[1].split('|')[0]
            var chapName = text[i].split(' ')[1].split('|')[1]
            console.log(chapName)
            if(!l.hasOwnProperty(level)){
                l[level] = chapID
            }else if(l[level] !== chapID){
                l[level] = chapID
            }
            for(var n=0;n<level;n++){
                t+='/'+l[(n+1).toString()]
                final += '*'
            }
            console.log(l)
            final += ' '+'{{目录项|'+t+'|'+chapName+'}}\n'
            console.log('{{目录项|'+t+'|'+chapName+'}}\n')
        }
    }
    console.log(final)
    return final
}

//** {{目录项|题库:诊断学学习指导与习题集(第4版)/第一篇/第一节|第一节 发热}}
function rIndex(text){
    console.log(text)
    if(text.length>0){
        var reg1 = new RegExp('(?<=\\{\\{)(.+?)(?=\\}\\})','g')
        var reg2 = new RegExp('\\{\\{(.+?)\\}\\}','g')
        var content = text.match(reg1)[0]
        text=text.replace(reg2,'')
        var level = text.match(/\*/g).length
        content = content.split('/').slice(-1)
        var finalText = ''
        for(var i=0;i<level;i++){
            finalText+='*'
        }
        finalText+=' '+content+'\n'
        console.log(finalText)
        return finalText
    }else{
        return ''
    }
}
function resolve(title){
    var reg1 = new RegExp('index','g')
    var text = getPageRevision(tikuCreateConfig.url,title,1)
    if(text.isSuccess){
        text = text.result['query']['pages']
        for(var key in text){
            text = text[key]['revisions'][0]['*']
        }
    }else {
        return {'author':'','name':'','cover':'','publisher':'','index':'','ps':'','time':''}
    }

    var start = text.indexOf('{{目录')
    var end = text.lastIndexOf('}}')
    text = text.substring(start,end)
    console.log(start + '|' + end)
    text = text.split('|')
    var resolved = {}
    for(var i=3;i<text.length;i++){
        var line = text[i].split('=')
        if(reg1.test(line[0])){
            var temp = line[1]
            for(var n=i+1;n<text.length;n++){
                temp += '|' + text[n]
            }
            resolved[line[0]] = temp
            break
        }else{
            resolved[line[0]] = line[1]
        }
    }
    var index = resolved.index
    index = index.split('\n')
    var newIndex = ''
    console.log(index)
    for(var m=1;m<index.length;m++){
        newIndex += rIndex(index[m])
    }
    console.log(newIndex)
    resolved.index = newIndex
    console.log(text)
    console.log(resolved)
    return resolved
}
function submit(upload) {
    upload = upload !== undefined ? upload:true
    var url = tikuCreateConfig.url
    var token = get_token(url)
    var info = $('#tikuInfo').serializeObject()
    //检查是否有未填写的项目
    if(info.tikuBenkeCategory==="0"){
    	alert("学科未选择!")
    	return false
    }
    console.log(info)
    var index = pIndex(info.index,info.name)
    console.log(index)
    var text = '{{目录\n' +
        '|display={{{display|}}}\n' +
        '|cover='+info.cover+'\n'+
        '|name='+info.name+'\n'+
        '|author='+info.author+'\n'+
        '|publisher='+info.publisher+'\n'+
        '|time='+info.time+'\n'+
        '|ps='+info.ps+'\n'+
        '|index=\n'+index+'\n}}\n'
    text += '<includeonly>[[分类:' + info.name + ']]</includeonly>'
    text = text.replace(/\r/g,'')
    console.log(text)
    var templateName = '模板:目录-'+info.name
    var tikuName = '题库:'+info.name
    var tikuContent = '{{目录-'+info.name+'}}\n' +
        '[[分类:题库目录]]\n' +
        '[[分类:本科题库'+info.tikuBenkeCategory+']]'
    if (upload){
        var rls = isRLExist(tikuCreateConfig.rl)
        if(confirm('即将开始上传,确认?')){
            if(!getPageRevision(url,tikuName,1).isSuccess){
                var editPage1 = editpage(url,token,tikuName,tikuContent)
                if(editPage1.isSuccess){alert("模板页生成成功(步骤:1/3)")}
                var createRl = readlistCreatEntry(rls.id,tikuCreateConfig.project,tikuName,token)
                if(createRl !== false){alert("阅读列表新增成功(步骤:2/3)")}
            }
            var editPage2 = editpage(url,token,templateName,text)
            if(editPage2.isSuccess){alert("模板页生成成功(步骤:3/3)")}
        }
        alert('生成成功!')
    }else {
            alert("页面一:"+templateName+"\n"+text+"\n"+"页面二:"+tikuName+"\n"+tikuContent)
    }
}