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

MediaWiki:Gadget-tikuGuide.js

MediaWiki界面页面
Cirno.9讨论 | 贡献2023年7月9日 (日) 14:20的版本 (// Edit via Wikitext Extension for VSCode)

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

  • 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
if( $('#tiku-guide-container').length>0){
	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 create(title,content,summary){
    return new mw.Api().create( 
        title,
        { summary: summary },
        content
    )
}
function edit ( title, text, summary ) {
    return new mw.Api().edit(
        title,
        function ( revision ) {
            return {
                text: text,
                summary: summary,
                tags:'tiku-creat-guide'
            };
        }
    )
}
function editOrCreat(isExist, title, text, summary){
    console.log(isExist)
    if(isExist){
        return edit ( title, text, summary )
    }else{
        return create ( title, text,summary )
    }
}
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,
        "rvslots": "*",
        "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 getCategories(url,title){
    var result = {status:0,categories:[]}
    var PARAMS = {
        "action": "query",
        "format": "json",
        "prop": 'categories',
        "titles": title,
        "utf8": 1,
    }
    var isSuccess = {}
    $.ajax(
        {
            url: url,
            method: "get",
            async: false,
            data: PARAMS,
            timeout: 5000,
            success: function (data){
                var page = data.query.pages
                if(!('-1' in data.query.pages)){
                    for(var i in page){
                        result.status = 1
                        result.categories = page[i].categories
                    }
                }
                console.log(result)
                
            }
        })
    return result
}

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)
                    clearContainer()
                    dashboardInterface()
                }
            })
        }
    }

}
function addInterface(){
    clearContainer()
    var container = $('#tiku-guide-container')
    var returnBtn = pushLineBtn = new OO.ui.ButtonWidget( {
        id:'backDashboard',
        label: '返回'
    } ).$element.appendTo(container)
    
    $('#backDashboard').bind('click',function () {
        dashboardInterface()
    })
    var addTikuBtn = new OO.ui.ButtonWidget( {
        id:'addTiku',
        label: '添加',
        flags: [
            'primary',
            'progressive'
        ]
    } )
    var addName = new OO.ui.TextInputWidget( {
        placeholder: '完整题库名称,包括“题库:”前缀',
        id:'addName',
        value:'题库:'
    } )
    var html = $('<div id="addTikuContainer"><div class="header"><div class="heading"><h3>参与编辑一个题库</h3></div></div>' +
        '<div class="body"></div></div>')
    html.children('.body').append(new OO.ui.ActionFieldLayout( addName, addTikuBtn
     , {
        align: 'top',
    } ).$element)
    html.appendTo(container)

    $('#addTiku').bind('click',function () {
        var inputName = $('#addName').children('input').val()
        var result = creatEntryListCheckExit(inputName)
        if(result.status === 1){
            alertDialog('成功','添加成功','确认',false)
        }else{
            alertDialog('失败','题库名称添加失败','返回重试',false)
        }
    })
}
function createInterface(title){
    clearContainer()
    var container = $('#tiku-guide-container')
    var returnBtn = pushLineBtn = new OO.ui.ButtonWidget( {
        id:'backDashboard',
        label: '返回'
    } )
    returnBtn.$element.bind('click',function () {
        dashboardInterface()
    })
    returnBtn.$element.appendTo(container)

    if(title!==undefined){
        title='模板:目录-'+title.split(':')[1]
    }
    var titleContent = resolve(title)
    var inputFieldset = new OO.ui.FieldsetLayout( {
			        label: '创建一个题库'
			    } )
        ,quickInputFieldset = new OO.ui.FieldsetLayout( {
        } )
        ,inputFieldset2 = new OO.ui.FieldsetLayout( {
        } )
    	,name = new OO.ui.TextInputWidget( {
			        placeholder: '题库名,必填项',
			        required: true,
			        validate: 'non-empty',
			        name:'name',
                    value:titleContent.name
			    } )
    	,cover = new OO.ui.TextInputWidget( {
			        placeholder: '题库目录封面的文件名,不需要用中括号包围和文件:前缀',
			        name:'cover',
                    value:titleContent.cover
			    } )
    	,time = new OO.ui.TextInputWidget( {
			        placeholder: '题库发行的时间',
			        name:'time',
                    value:titleContent.time
			    } )
    	,author = new OO.ui.TextInputWidget( {
			        placeholder: '题库的作者',
			        name:'author',
                    value:titleContent.author
			    } )
    	,publisher = new OO.ui.TextInputWidget( {
			        placeholder: '题库的出版社',
			        name:'publisher',
                    value:titleContent.publisher
			    } )
    	,ps = new OO.ui.TextInputWidget( {
			        placeholder: '题库的附加说明文字',
			        name:'ps',
                    value:titleContent.ps
			    } )
        ,category = new OO.ui.TextInputWidget( {
            placeholder: '附加的分类,加载题库主页中',
            name:'category',
            value:titleContent.ps
        } )
    	,tikuBenkeCategory = new OO.ui.DropdownInputWidget( {
					label: '--选择一个选项--',
					name:'tikuBenkeCategory',
                    value:titleContent.tikuBenkeCategory,
					options: [
                        { data: '0', label: '--选择一个选项--' } ,
                        {optgroup: '大一'},
						{ data: '本科细胞生物学题库', label: '细胞生物学' } ,
						{ data: '本科组织学与胚胎学题库', label: '组织学与胚胎学' } ,
						{ data: '本科系统解剖学题库', label: '系统解剖学' } ,
                        {optgroup: '大二'},
						{ data: '本科生理学题库', label: '生理学' } ,
						{ data: '本科生物化学与分子生物学题库', label: '生物化学与分子生物学' } ,
						{ data: '本科医学微生物学题库', label: '医学微生物学' } ,
						{ data: '本科医学免疫学题库', label: '医学免疫学' } ,
						{ data: '本科预防医学题库', label: '预防医学' } ,
						{ data: '本科医学遗传学题库', label: '医学遗传学' } ,
						{ data: '本科医学心理学题库', label: '医学心理学' } ,
						{ data: '本科医学统计学题库', label: '医学统计学' } ,
                        { data: '马克思主义基本原理概论题库', label: '马克思主义基本原理概论' } ,
                        {optgroup: '大三'},
                        { 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: '全科医学概论' } ,
                        {optgroup: '大四'},
						{ 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: '法医学' } ,
                        {optgroup: '考研'},
                        { data: '考研题库', label: '考研' } ,
					]
				} )
	    ,level = new OO.ui.DropdownInputWidget( {
					name:'level',
					classes:['horizontalLayoutInput'],
					options: [
						{ data: '*', label: '*' } ,
						{ data: '**', label: '**' } ,
						{ data: '***', label: '***' } ,
					]
				} )
		,chapID = new OO.ui.TextInputWidget( {
			    	name:'chapID',
			    	classes:['horizontalLayoutInput'],
			        placeholder: '章节号(子页面名称)'
			    } )
	    ,chapName =  new OO.ui.TextInputWidget( {
			    	name:'chapName',
                    classes:['horizontalLayoutInput'],
			        placeholder: '章节名(显示名称)'
			    } )
	    ,pushLineBtn = new OO.ui.ButtonWidget( {
                    id:'addIndex',
					label: '添加到末尾'
				} )
        ,indexContainer = new OO.ui.MultilineTextInputWidget( {
            name:'index',
            id:'indexContainer',
            rows: 10,
            autosize: true,
            placeholder:'* 第一章|绪 论\n**第一节|xxX\n* 第二章|222',
            value: titleContent.index
        } )
        ,submitIndexBtn = new OO.ui.ButtonWidget( {
            id:'submitIndex',
            label: '提交',
            flags: [
                'primary',
                'progressive'
            ]
        } )
        ,prevIndexBtn = new OO.ui.ButtonWidget( {
            id:'prevIndex',
            label: '预览'
        } )
        ,logger = new OO.ui.MultilineTextInputWidget( {
            name:'logger',
            id:'logger',
            rows: 10,
            row: 15,
            readOnly: true
        } )
	inputFieldset.addItems( [
		    new OO.ui.FieldLayout( name, {
		        label: '题库名称',
		        align: 'inline'
		    } ),
		    new OO.ui.FieldLayout( cover, {
		        label: '封面(请先在维基中上传对应封面)',
		        align: 'top'
		    } ),
		    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'
		    } ),
		    
		] )
    quickInputFieldset.addItems( [
        new OO.ui.HorizontalLayout( {
            items: [
              level,chapID,
              new OO.ui.LabelWidget( {
                    label: '|'
                } )
            ,chapName,pushLineBtn
            ]
          } )
    ] )
    inputFieldset2.addItems( [
        new OO.ui.FieldLayout( indexContainer, {
            label: '目录编辑',
            align: 'top'
        } ),
        new OO.ui.FieldLayout( time, {
            label: '发型年份(或者录入时间,默认当前时间)',
            align: 'top'
        } ),
        new OO.ui.HorizontalLayout( {
            items: [
                submitIndexBtn,prevIndexBtn,
              ]
        } ),
        new OO.ui.FieldLayout( logger, {
            label: '上传日志',
            align: 'top'
        } ),
        
    ] )
	var form = new OO.ui.FormLayout( {
                id:'tikuInfo',
			    items: [ inputFieldset, quickInputFieldset, inputFieldset2 ],
			} ).$element.appendTo(container)

    
    $('#addIndex').bind("click",function (){addIndex()})
    $('#prevIndex').bind('click',function(){
        submit(false)
    
    })
    $('#submitIndex').bind('click',function(){submit(true)})
}

function alertDialog(title, message, btnLabel, disabled){
    var messageDialog = new OO.ui.MessageDialog();
    var windowManager = new OO.ui.WindowManager();
    $( 'body' ).append( windowManager.$element );
    windowManager.addWindows( [ messageDialog ] );
    windowManager.openWindow( messageDialog, {
        title:title,
        message: message,
        actions: [
            {
            action: 'accept',
            label: '关闭',
            flags: 'primary',
            disabled: disabled,
            }
        ]
        });
    return windowManager
}
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').children('textarea').val()
    $('#indexContainer').children('textarea').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 getMainPageAdditionalCategories(title){
    var cate = getCategories(tikuCreateConfig.url, title)
    console.log(cate)
}

//解析分类信息
function resolveCategories(title){
    var tikuName = title.split('目录-')[1]
    var cate = getCategories(tikuCreateConfig.url,'分类:'+tikuName)
    if(cate.status === 1){
        for(var i=0;i<cate.categories.length;i++){
            var cateName = cate.categories[i].title
            if(cateName.includes('题库')){
                return cateName.split('分类:')[1]
            }
        }
    }
    return ''
}
function resolve(title){
    console.log(title)
    if(title!==undefined){
        var cate = resolveCategories(title)
        var text = getPageRevision(tikuCreateConfig.url,title,1)
        console.log(title,cate)
        if(text.isSuccess&&cate!==''){
            text = text.result['query']['pages']
            for(var key in text){
                text = text[key]['revisions'][0]['slots']['main']['*']
            }
        }
    }else {
        return {'author':'','name':'','cover':'','publisher':'','index':'','ps':'','time':''}
    }
    //获取主页的附加分类
    getMainPageAdditionalCategories(title)
    //去除目录中的<includeonly>部分内容
    text = text.replace(/<includeonly>(.+?)<\/includeonly>/g,'')
    
    var reg1 = new RegExp('index','g')
    console.log(text)
    var start = text.indexOf('{{目录')
    var end = text.lastIndexOf('}}')
    text = text.substring(start,end)
    console.log(start + '|' + end)
    text = text.split('|')
    var resolved = {}
    resolved.tikuBenkeCategory = cate
    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) {
    cleanLogger()
    upload = upload !== undefined ? upload:true
    var url = tikuCreateConfig.url
    var info = $('#tikuInfo').serializeObject()
    //检查是否有未填写的项目
    if(info.tikuBenkeCategory==="0"){
        alertDialog('错误',"学科未选择!",'返回选择学科' ,false)
    	return false
    }
    console.log(info)
    //第一个页面的内容:标题为“模板:目录-XXXX”,包含目录模板,分类为“分类:‘书本名’”
    var indexTemplateName = '模板:目录-'+info.name
    var index = pIndex(info.index,info.name)
    console.log(index)
    var indexTemplateContent = '{{目录\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'
    indexTemplateContent += '<includeonly>{{#if: {{{noCategory|}}} || [[分类:' + info.name + ']] }}</includeonly>'
    indexTemplateContent = indexTemplateContent.replace(/\r/g,'')
    console.log(indexTemplateContent)

    //第二个页面的内容:题库主页面,分类为“分类:题库目录”
    var tikuMainPageName = '题库:'+info.name
    var tikuMainPageContent = '{{目录-'+info.name+'}}\n' +
        '[[分类:题库目录]]'

    //第三个页面内容:分类页,内容为对应学科分类
    var childCategoryPageName = '分类:'+info.name
    var childCategoryPageContent = '[[分类:'+info.tikuBenkeCategory+']]\n{{目录-'+info.name+'|noCategory=true}}'

    //第四个请求添加阅读列表
    var rlPageName = tikuMainPageName

    //判断是否为预览模式,并上传
    if (upload){
        var rls = isRLExist(tikuCreateConfig.rl)
        if(confirm('即将开始上传,确认?')){
            //步骤一:检查页面是否存
            isCategoryPageExist = getPageRevision(url,childCategoryPageName,1).isSuccess
            isTemplatePageExist = getPageRevision(url,indexTemplateName,1).isSuccess
            isTikuMainPageExist = getPageRevision(url,tikuMainPageName,1).isSuccess
            addLogger('**检查**分类页:'+childCategoryPageName+' 是否存在:'+isCategoryPageExist)
            addLogger('**检查**模板页:'+indexTemplateName+' 是否存在:'+isTemplatePageExist)
            addLogger('**检查**主页:'+tikuMainPageName+' 是否存在:'+isTikuMainPageExist)
            //步骤二:创建分类页
            addLogger('**创建**分类页:'+childCategoryPageName+'\n 内容为:'+childCategoryPageContent)
            editOrCreat(isCategoryPageExist, childCategoryPageName,childCategoryPageContent,'题库创建向导工具创建').done(
                function(r){
                    addLogger(JSON.stringify(r))
                    //如果成功则步骤三:创建模板页
                    if(r.result === "Success"){
                        addLogger('**创建成功**分类页:'+tikuMainPageName)
                        addLogger('**创建**模板页:'+indexTemplateName+'\n 内容为:'+indexTemplateContent)
                        editOrCreat(isTemplatePageExist, indexTemplateName,indexTemplateContent,'题库创建向导工具创建').done(
                            function(r){
                                addLogger(JSON.stringify(r))
                                //如果成功则步骤四:创建题库主页
                                if(r.result === "Success"){
                                    addLogger('**创建成功**模板页:'+indexTemplateName)
                                    addLogger('**创建**主页:'+tikuMainPageName+'\n 内容为:'+tikuMainPageContent)
                                    editOrCreat(isTikuMainPageExist, tikuMainPageName,tikuMainPageContent,'题库创建向导工具创建').done(
                                        function(r){
                                            addLogger(JSON.stringify(r))
                                            //如果成功则步骤五:添加阅读列表
                                            if(r.result === "Success"){
                                                addLogger('**创建成功**主页:'+tikuMainPageName)
                                                addLogger('**创建**阅读列表:'+tikuMainPageName)
                                                var creatRLresult = creatEntryListCheckExit(tikuMainPageName)
                                                if(creatRLresult.status === 1){
                                                    alertDialog('成功','创建成功','确认',false)
                                                }else{
                                                    alertDialog('**错误**','阅读列表创建失败,程序退出','返回重试',false)
                                                    addLogger('**!!创建失败!!**阅读列表:'+tikuMainPageName)
                                                    return false
                                                }
                                                
                                            }else{
                                                alertDialog('**错误**','主页创建失败,程序退出','返回重试',false)
                                                addLogger('**!!创建失败!!**主页:'+tikuMainPageName)
                                                return false
                                            }
                                        }
                                    )
                                }else{
                                    alertDialog('**错误**','模板页创建失败,程序退出','返回重试',false)
                                    addLogger('**!!创建失败!!**模板页:'+indexTemplateName)
                                    return false
                                }
                            }
                        )
                    }else{
                        alertDialog('**错误**','分类页创建失败,程序退出','返回重试',false)
                        addLogger('**!!创建失败!!**分类页:'+tikuMainPageName)
                        return false
                    }
                }
            )
        }
    }else {
        isCategoryPageExist = getPageRevision(url,childCategoryPageName,1).isSuccess
        isTemplatePageExist = getPageRevision(url,indexTemplateName,1).isSuccess
        isTikuMainPageExist = getPageRevision(url,tikuMainPageName,1).isSuccess
        addLogger('**检查**分类页:'+childCategoryPageName+' 是否存在:'+isCategoryPageExist)
        addLogger('**检查**模板页:'+indexTemplateName+' 是否存在:'+isTemplatePageExist)
        addLogger('**检查**主页:'+tikuMainPageName+' 是否存在:'+isTikuMainPageExist)
        addLogger('**创建**分类页:'+tikuMainPageName+'\n 内容为:'+childCategoryPageContent)
        addLogger('**MediaWiki:Gadget-tikuGuide.js创建成功**分类页:'+tikuMainPageName)
        addLogger('**创建**模板页:'+indexTemplateName+'\n 内容为:'+indexTemplateContent)
        addLogger('**创建成功**模板页:'+indexTemplateName)
        addLogger('**创建**主页:'+tikuMainPageName+'\n 内容为:'+tikuMainPageContent)
        addLogger('**创建成功**主页:'+tikuMainPageName)
        addLogger('**创建**阅读列表'+tikuMainPageName)
    }
}
function addLogger(text){
    var logger = $('#logger').children('textarea')
    var currentValue = logger.val()
    logger.val(currentValue+'\n'+text)
}
function cleanLogger(){
    $('#logger').children('textarea').val('')
}