<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-PatrollCount.js</id>
	<title>MediaWiki:Gadget-PatrollCount.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-PatrollCount.js"/>
	<link rel="alternate" type="text/html" href="https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-PatrollCount.js&amp;action=history"/>
	<updated>2026-05-09T22:13:13Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-PatrollCount.js&amp;diff=23421&amp;oldid=prev</id>
		<title>入我相思门：​创建页面，内容为“/**    Author: ZUO Haocheng User:zuohaocheng    Email: Please feel free to email me via http://en.wikipedia.org/wiki/Special:EmailUser/Zuohaocheng    电邮: 请通过 http://zh.wikipedia.org/wiki/Special:EmailUser/Zuohaocheng 给我发送电邮    Date: 2011年11月21日, 星期一 (4年2个月10日前), 09:47 PM (UTC+8)    用途: 显示当前未巡查的条目数量, 并链接到随机未巡查页面.    Usage: Shows count of un-patrolled articles, and l…”</title>
		<link rel="alternate" type="text/html" href="https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-PatrollCount.js&amp;diff=23421&amp;oldid=prev"/>
		<updated>2022-04-30T16:14:11Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“/**    Author: ZUO Haocheng &lt;a href=&quot;/w/index.php?title=User:Zuohaocheng&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Zuohaocheng（页面不存在）&quot;&gt;User:zuohaocheng&lt;/a&gt;    Email: Please feel free to email me via http://en.wikipedia.org/wiki/Special:EmailUser/Zuohaocheng    电邮: 请通过 http://zh.wikipedia.org/wiki/Special:EmailUser/Zuohaocheng 给我发送电邮    Date: 2011年11月21日, 星期一 (4年2个月10日前), 09:47 PM (UTC+8)    用途: 显示当前未巡查的条目数量, 并链接到随机未巡查页面.    Usage: Shows count of un-patrolled articles, and l…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
   Author: ZUO Haocheng [[User:zuohaocheng]]&lt;br /&gt;
   Email: Please feel free to email me via http://en.wikipedia.org/wiki/Special:EmailUser/Zuohaocheng&lt;br /&gt;
   电邮: 请通过 http://zh.wikipedia.org/wiki/Special:EmailUser/Zuohaocheng 给我发送电邮&lt;br /&gt;
   Date: 2011年11月21日, 星期一 (4年2个月10日前), 09:47 PM (UTC+8)&lt;br /&gt;
   用途: 显示当前未巡查的条目数量, 并链接到随机未巡查页面.&lt;br /&gt;
   Usage: Shows count of un-patrolled articles, and link to random one in them.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
$(document).ready(function() {&lt;br /&gt;
    if (mw.config.get(&amp;#039;wgAction&amp;#039;) !== &amp;#039;view&amp;#039;) {&lt;br /&gt;
	return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var apiPrefix = &amp;#039;/w/api.php&amp;#039;;&lt;br /&gt;
    var newPageMax = 50;&lt;br /&gt;
&lt;br /&gt;
    var timeEvent;&lt;br /&gt;
&lt;br /&gt;
    var writeCountNum = function(pages, plus) {&lt;br /&gt;
	var strCount = &amp;#039;&amp;#039;;&lt;br /&gt;
	if (pages.length !== 0) {&lt;br /&gt;
	    var vNum = Math.round( Math.random() * (pages.length-1));&lt;br /&gt;
     	    var page = pages[vNum];&lt;br /&gt;
	    var link = &amp;#039;/wiki/&amp;#039; + page[&amp;#039;title&amp;#039;] + &amp;#039;?redirect=no&amp;amp;rcid=&amp;#039; + page[&amp;#039;rcid&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
	    strCount = pages.length.toString();&lt;br /&gt;
&lt;br /&gt;
	    if (plus) {&lt;br /&gt;
		strCount += &amp;#039;+&amp;#039;;&lt;br /&gt;
	    }&lt;br /&gt;
	    var title = page.title;&lt;br /&gt;
	    if (!page.confidence) {&lt;br /&gt;
		title += &amp;#039;&amp;quot; class=&amp;quot;patrollListNotConfident&amp;#039;;&lt;br /&gt;
	    }&lt;br /&gt;
	    strCount = &amp;#039;(&amp;lt;a id=&amp;quot;unpatrollArticle&amp;quot; href=&amp;quot;&amp;#039; + link + &amp;#039;&amp;quot; title=&amp;quot;&amp;#039; + title + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + strCount + &amp;#039;&amp;lt;/a&amp;gt;)&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	    ptPatrollLink.attr(&amp;#039;href&amp;#039;, &amp;#039;/wiki/Special:最新页面?hidepatrolled=1&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
	    ptPatrollLink.attr(&amp;#039;href&amp;#039;, &amp;#039;/wiki/Special:最新页面?hidepatrolled=0&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$(&amp;quot;span#not-patrolled-count&amp;quot;).html(strCount);&lt;br /&gt;
	generateList(pages);&lt;br /&gt;
&lt;br /&gt;
	return page;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    var showAllUnbind = [];&lt;br /&gt;
    var showAll = false;&lt;br /&gt;
    var prepareList = function(pages, countMax) {&lt;br /&gt;
	var $list = $(&amp;quot;#patrollTooltipList&amp;quot;).empty();&lt;br /&gt;
	var addItem = function(istart, iend) {&lt;br /&gt;
	    for (var idx=istart; idx&amp;lt;iend; ++idx) {&lt;br /&gt;
		var page = pages[idx];&lt;br /&gt;
		var link = &amp;#039;/wiki/&amp;#039; + page.title + &amp;#039;?redirect=no&amp;amp;rcid=&amp;#039; + page.rcid;&lt;br /&gt;
		var shortTitle = page.title;&lt;br /&gt;
		if (shortTitle.length &amp;gt; 8) {&lt;br /&gt;
		    shortTitle = shortTitle.slice(0, 7) + &amp;#039;...&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
		var item = $(&amp;quot;&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;).html(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + link + &amp;#039;&amp;quot; title=&amp;quot;&amp;#039; + page.title + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + shortTitle + &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;).appendTo($list);&lt;br /&gt;
		if (!page.confidence) {&lt;br /&gt;
		    item.addClass(&amp;#039;patrollListNotConfident&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
	    }&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var length = pages.length;&lt;br /&gt;
	if (length &amp;gt; countMax &amp;amp;&amp;amp; !showAll) {&lt;br /&gt;
	    addItem(0, countMax);&lt;br /&gt;
&lt;br /&gt;
	    var $showAll = $(&amp;quot;#patrollListShowAll&amp;quot;);&lt;br /&gt;
	    if ($showAll.length === 0) {&lt;br /&gt;
		$showAll = $(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;, {&lt;br /&gt;
		    id: &amp;quot;patrollListShowAll&amp;quot;,&lt;br /&gt;
		}).css({&lt;br /&gt;
		    &amp;quot;text-align&amp;quot;: &amp;quot;right&amp;quot;,&lt;br /&gt;
		    &amp;quot;font-weight&amp;quot;: &amp;quot;bold&amp;quot;,&lt;br /&gt;
		    &amp;quot;margin-bottom&amp;quot;: &amp;quot;10px&amp;quot;&lt;br /&gt;
		}).append($(&amp;quot;&amp;lt;a&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;, {&lt;br /&gt;
		    text: &amp;quot;more...&amp;quot;,&lt;br /&gt;
		    href: &amp;quot;#patrollListShowAll&amp;quot;,&lt;br /&gt;
		    title: wgULS(&amp;quot;显示所有未巡查的页面&amp;quot;, &amp;quot;顯示所有未巡查的頁面&amp;quot;)}));&lt;br /&gt;
		$list.after($showAll);&lt;br /&gt;
	    }&lt;br /&gt;
	    else {&lt;br /&gt;
		$showAll.show();&lt;br /&gt;
	    }&lt;br /&gt;
	    $showAll.off(&amp;quot;click&amp;quot;);&lt;br /&gt;
	    $showAll.click(function() {&lt;br /&gt;
		addItem(countMax, length);&lt;br /&gt;
		$showAll.hide();&lt;br /&gt;
		for (var idx = 0; idx&amp;lt; showAllUnbind.length; ++idx) {&lt;br /&gt;
		    showAllUnbind[idx].off(&amp;quot;mouseover.autohide mouseout&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		showAll = true;&lt;br /&gt;
	    });&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
	    addItem(0, pages.length);&lt;br /&gt;
	}&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    var ttListShow = false;&lt;br /&gt;
    var generateList = function(pages) {&lt;br /&gt;
	if (ttListShow) {&lt;br /&gt;
	    prepareList(pages, 10);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
	    var timer = null;&lt;br /&gt;
	    var $ptPatroll = $(&amp;quot;#pt-patroll&amp;quot;).off(&amp;quot;mouseover mouseover.autohide mouseout&amp;quot;);&lt;br /&gt;
	    $ptPatroll.mouseover(function() {&lt;br /&gt;
		if (timer) {&lt;br /&gt;
		    return;&lt;br /&gt;
		}&lt;br /&gt;
		timer = setTimeout(function() {&lt;br /&gt;
		    timer = null;&lt;br /&gt;
		    if (pages.length !== 0 &amp;amp;&amp;amp; !ttListShow) {&lt;br /&gt;
			if (typeof($.fn.cvtooltip) === &amp;#039;undefined&amp;#039;) {&lt;br /&gt;
			    loadCvtooltip();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			prepareList(pages, 10);&lt;br /&gt;
			&lt;br /&gt;
			ttListShow = true;&lt;br /&gt;
			var ctt = $(&amp;quot;#patrollTooltip&amp;quot;).cvtooltip({&lt;br /&gt;
			    left: 60,&lt;br /&gt;
			    top: 45,&lt;br /&gt;
			    callback: function() {&lt;br /&gt;
				ttListShow = false;&lt;br /&gt;
				showAll = false;&lt;br /&gt;
				$ptPatroll.off(&amp;quot;mouseover.autohide mouseout&amp;quot;);&lt;br /&gt;
			    }&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
			var tipCloseTimer;&lt;br /&gt;
			var clearHideTimer = function() {&lt;br /&gt;
			    if (tipCloseTimer) {&lt;br /&gt;
				clearTimeout(tipCloseTimer);&lt;br /&gt;
				tipCloseTimer = null;&lt;br /&gt;
			    }&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			ctt.body.on(&amp;quot;mouseover.autohide&amp;quot;, clearHideTimer);&lt;br /&gt;
			$ptPatroll.on(&amp;quot;mouseover.autohide&amp;quot;, clearHideTimer);&lt;br /&gt;
&lt;br /&gt;
			var setHideTimer = function() {&lt;br /&gt;
			    if (!tipCloseTimer) {&lt;br /&gt;
				tipCloseTimer = setTimeout(ctt.hide, 1000);&lt;br /&gt;
			    }&lt;br /&gt;
			};&lt;br /&gt;
			ctt.body.mouseout(setHideTimer);&lt;br /&gt;
			$ptPatroll.mouseout(setHideTimer);&lt;br /&gt;
&lt;br /&gt;
			showAllUnbind = [ctt.body, $ptPatroll];&lt;br /&gt;
		    }&lt;br /&gt;
		}, 500);&lt;br /&gt;
&lt;br /&gt;
		$ptPatroll.mouseout(function() {&lt;br /&gt;
		    if (timer) {&lt;br /&gt;
			clearTimeout(timer);&lt;br /&gt;
			timer = null;&lt;br /&gt;
		    }&lt;br /&gt;
		});&lt;br /&gt;
	    });&lt;br /&gt;
	}&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    var missingPage = {};&lt;br /&gt;
    var checkMissing = function(pages, plus) {&lt;br /&gt;
	var missingQuery = [];&lt;br /&gt;
	for (var idx=0; idx&amp;lt;pages.length; ++idx) {&lt;br /&gt;
	    var title = pages[idx].title;&lt;br /&gt;
	    if (typeof(title) === &amp;#039;undefined&amp;#039;) {&lt;br /&gt;
		continue;&lt;br /&gt;
	    }&lt;br /&gt;
&lt;br /&gt;
	    var isMissing = missingPage[title];&lt;br /&gt;
	    if (typeof(isMissing) === &amp;#039;undefined&amp;#039;) {&lt;br /&gt;
		missingQuery.push(title);&lt;br /&gt;
	    }&lt;br /&gt;
	    else if (isMissing) {&lt;br /&gt;
		pages.splice(idx, 1);&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//查询删除状态&lt;br /&gt;
	if (missingQuery.length !== 0) {&lt;br /&gt;
	    var pagesStr = missingQuery.join(&amp;#039;|&amp;#039;);&lt;br /&gt;
	    var checkMissingURI = apiPrefix + &amp;#039;?action=query&amp;amp;format=xml&amp;amp;prop=info&amp;#039;;&lt;br /&gt;
	    $.post(checkMissingURI, {titles: pagesStr}, function(result) {&lt;br /&gt;
		var regenerate = false;&lt;br /&gt;
		$(result).find(&amp;quot;pages page&amp;quot;).each(function() {&lt;br /&gt;
		    var isMissing = (typeof($(this).attr(&amp;#039;missing&amp;#039;)) !== &amp;#039;undefined&amp;#039;);&lt;br /&gt;
		    var title = $(this).attr(&amp;#039;title&amp;#039;);&lt;br /&gt;
		    missingPage[title] = isMissing;&lt;br /&gt;
		    if (isMissing) {&lt;br /&gt;
			for (var idx=0; idx&amp;lt;pages.length; ++idx) {&lt;br /&gt;
			    if (pages[idx].title === title) {&lt;br /&gt;
				pages.splice(idx, 1);&lt;br /&gt;
				break;&lt;br /&gt;
			    }&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if (title === $(&amp;quot;#unpatrollArticle&amp;quot;).attr(&amp;quot;title&amp;quot;)) {&lt;br /&gt;
			    regenerate = true;&lt;br /&gt;
			}				&lt;br /&gt;
		    }&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		if (regenerate) {&lt;br /&gt;
		    writeCountNum(pages, plus);&lt;br /&gt;
		}&lt;br /&gt;
	    });&lt;br /&gt;
	}&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    //加入标记巡查按钮 &lt;br /&gt;
    var addPatrollLink = (function() {&lt;br /&gt;
	var checked = false;&lt;br /&gt;
	var addlink = function(page) {&lt;br /&gt;
	    var $patrollinks = $(&amp;quot;&amp;lt;a&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;, {&lt;br /&gt;
		href: (&amp;quot;/w/index.php?title=&amp;quot; + encodeURIComponent(page.title) + &amp;quot;&amp;amp;rcid=&amp;quot; + encodeURIComponent(page.rcid)),&lt;br /&gt;
		text: wgULS(&amp;quot;标记此页面为已巡查&amp;quot;, &amp;quot;標記此頁面為已巡查&amp;quot;)&lt;br /&gt;
	    });&lt;br /&gt;
	    var $divPatrolllink = $(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;, {&lt;br /&gt;
		&amp;#039;class&amp;#039;: &amp;#039;patrollink&amp;#039;&lt;br /&gt;
	    }).append(&amp;#039;[&amp;#039;).append($patrollinks).append(&amp;#039;]&amp;#039;);&lt;br /&gt;
	    $(&amp;quot;div.printfooter&amp;quot;).before($divPatrolllink);&lt;br /&gt;
&lt;br /&gt;
	    var markAsPatrol = function (e) {&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
		var data = {&lt;br /&gt;
		    rcid: page.rcid,&lt;br /&gt;
		    token: page.rctoken&lt;br /&gt;
		};&lt;br /&gt;
		var uri = apiPrefix + &amp;#039;?format=xml&amp;amp;action=patrol&amp;#039;;&lt;br /&gt;
		$patrollinks.text(wgULS(&amp;#039;标记巡查中...&amp;#039;, &amp;#039;標記巡查中...&amp;#039;));&lt;br /&gt;
		$patrollinks = $patrollinks.parent();&lt;br /&gt;
		$.post(uri, data, function( data, status, request ) {&lt;br /&gt;
		    //window.data = [data, status, request]; // DEBUG&lt;br /&gt;
		    if ( status == &amp;#039;success&amp;#039; ) {&lt;br /&gt;
			$patrollinks.html(&amp;#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;#039; + wgULS(&amp;#039;已标记为已巡查&amp;#039;, &amp;#039;已標記為已巡查&amp;#039;) + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;);// MediaWiki:Markedaspatrolled&lt;br /&gt;
			if (typeof kAjaxPatrolLinks_closeafter !== &amp;#039;undefined&amp;#039; &amp;amp;&amp;amp; kAjaxPatrolLinks_closeafter == true){&lt;br /&gt;
			    window.close();&lt;br /&gt;
			    // Firefox 2+ doesn&amp;#039;t allow closing normal windows. If we&amp;#039;re still here, open up the selfclosing page.&lt;br /&gt;
			    window.open(&amp;quot;http://toolserver.org/~krinkle/close.html&amp;quot;, &amp;quot;_self&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		    } else {&lt;br /&gt;
			$patrollinks.html(&amp;#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&amp;#039; + wgULS(&amp;#039;不能标记为已巡查&amp;#039;, &amp;#039;不能標記為已巡查&amp;#039;) + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;);// MediaWiki:Markedaspatrollederror&lt;br /&gt;
		    }&lt;br /&gt;
		});&lt;br /&gt;
	    };&lt;br /&gt;
	    $patrollinks.click(markAsPatrol);&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	return (function(pages) {&lt;br /&gt;
	    if (!checked &amp;amp;&amp;amp; ($(&amp;quot;div.patrollink&amp;quot;).length === 0)) {&lt;br /&gt;
		var pageName = mediaWiki.config.get(&amp;#039;wgPageName&amp;#039;);&lt;br /&gt;
		for (var idx=0; idx&amp;lt;pages.length; ++idx) {&lt;br /&gt;
		    var page = pages[idx];&lt;br /&gt;
		    if (page.title === pageName) {&lt;br /&gt;
			addlink(page);&lt;br /&gt;
			break;&lt;br /&gt;
		    }&lt;br /&gt;
		}&lt;br /&gt;
		checked = true;&lt;br /&gt;
	    }&lt;br /&gt;
	});&lt;br /&gt;
    })();&lt;br /&gt;
&lt;br /&gt;
    //定时抓取未巡查的页面数量&lt;br /&gt;
    var updateUnpatrolled = function() {&lt;br /&gt;
	var d = new Date();&lt;br /&gt;
	var requestid = d.getTime();&lt;br /&gt;
	var newPages = apiPrefix + &amp;#039;?action=query&amp;amp;format=xml&amp;amp;list=recentchanges&amp;amp;rctype=new&amp;amp;rcnamespace=0&amp;amp;rcshow=!redirect|!patrolled&amp;amp;meta=tokens&amp;amp;type=patrol&amp;amp;rcprop=title|ids|user|tags&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	$.get(newPages, {rclimit: newPageMax, requestid: requestid}, function(result){&lt;br /&gt;
	    var pages = [];&lt;br /&gt;
	    var jqResult = $(result);&lt;br /&gt;
	    jqResult.find(&amp;quot;rc&amp;quot;).each(function() {&lt;br /&gt;
		var $self = $(this);&lt;br /&gt;
		var confidence = (typeof($self.attr(&amp;#039;anon&amp;#039;)) === &amp;#039;undefined&amp;#039;) &amp;amp;&amp;amp; ($self.find(&amp;#039;tag&amp;#039;).length == 0);&lt;br /&gt;
		var t = {&amp;#039;title&amp;#039;: $self.attr(&amp;#039;title&amp;#039;),&lt;br /&gt;
			 &amp;#039;rcid&amp;#039;: $self.attr(&amp;#039;rcid&amp;#039;),&lt;br /&gt;
			 &amp;#039;rctoken&amp;#039;: jqResult.find(&amp;#039;tokens&amp;#039;).attr(&amp;#039;patroltoken&amp;#039;),&lt;br /&gt;
			 &amp;#039;confidence&amp;#039;: confidence};&lt;br /&gt;
		pages.push(t);&lt;br /&gt;
	    });&lt;br /&gt;
&lt;br /&gt;
	    addPatrollLink(pages);&lt;br /&gt;
&lt;br /&gt;
	    var plus = (jqResult.find(&amp;#039;query-continue&amp;#039;).length !== 0);&lt;br /&gt;
	    if (pages.length !== 0) {&lt;br /&gt;
		checkMissing(pages, plus);&lt;br /&gt;
	    }&lt;br /&gt;
	    writeCountNum(pages, plus);&lt;br /&gt;
	});&lt;br /&gt;
    };&lt;br /&gt;
    setInterval(updateUnpatrolled, 10000);&lt;br /&gt;
    updateUnpatrolled();&lt;br /&gt;
&lt;br /&gt;
    //在&amp;quot;监视列表&amp;quot;右边加入&amp;quot;最新页面&amp;quot;以便巡查&lt;br /&gt;
    var ptPatrollLink = $(&amp;#039;&amp;lt;a&amp;gt;&amp;lt;/a&amp;gt;&amp;#039;, {&lt;br /&gt;
	&amp;#039;href&amp;#039;: &amp;quot;/wiki/Special:最新页面?hidepatrolled=1&amp;quot;,&lt;br /&gt;
	&amp;#039;title&amp;#039;: wgULS(&amp;#039;最新页面&amp;#039;, &amp;#039;最新頁面&amp;#039;), &lt;br /&gt;
	&amp;#039;text&amp;#039;: wgULS(&amp;#039;最新页面&amp;#039;, &amp;#039;最新頁面&amp;#039;)&lt;br /&gt;
    });&lt;br /&gt;
    $(&amp;quot;body #p-personal ul li#pt-watchlist&amp;quot;).after($(&amp;#039;&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&amp;#039;, {&lt;br /&gt;
	&amp;#039;id&amp;#039;: &amp;#039;pt-patroll&amp;#039;&lt;br /&gt;
    }).append(ptPatrollLink).append($(&amp;#039;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;, {&lt;br /&gt;
	&amp;#039;id&amp;#039;: &amp;quot;not-patrolled-count&amp;quot;&lt;br /&gt;
    })));&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var loadCvtooltip = function() {&lt;br /&gt;
    $(&amp;quot;body&amp;quot;).append($(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;, {&lt;br /&gt;
	id: &amp;quot;patrollTooltip&amp;quot;,&lt;br /&gt;
	style: &amp;quot;display: none;&amp;quot;&lt;br /&gt;
    }).css({&lt;br /&gt;
	&amp;quot;font-size&amp;quot;: &amp;quot;0.75em&amp;quot;,&lt;br /&gt;
	&amp;quot;margin-right&amp;quot;: &amp;quot;30px&amp;quot;&lt;br /&gt;
    }).append($(&amp;quot;&amp;lt;ul&amp;gt;&amp;lt;/ul&amp;gt;&amp;quot;, {&lt;br /&gt;
	id: &amp;quot;patrollTooltipList&amp;quot;&lt;br /&gt;
    })));&lt;br /&gt;
&lt;br /&gt;
    /* &lt;br /&gt;
     * JQuery.cvtooltip.js&lt;br /&gt;
     * http://www.chinavalue.net&lt;br /&gt;
     * &lt;br /&gt;
     * J.Wang&lt;br /&gt;
     * http://0417.cnblogs.ocm&lt;br /&gt;
     *&lt;br /&gt;
     * 2010.11.17&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    (function($) {&lt;br /&gt;
	$.fn.cvtooltip = function(options) {&lt;br /&gt;
            var self = $(this);&lt;br /&gt;
            var defaults = {&lt;br /&gt;
		panel: &amp;quot;body&amp;quot;,      //该参数是加载气泡提示的容器，值不同可能会导致计算的位置不同，默认为添加至body容器&lt;br /&gt;
		selector: &amp;quot;&amp;quot;,       //用于计算定位的控件&lt;br /&gt;
		width: 0,         //气泡提示宽度，完全手动设置&lt;br /&gt;
		left: 0,            //距离panel参数的左边距&lt;br /&gt;
		top: 0,             //距离panel参数的上边距&lt;br /&gt;
		delay: -1,          //延迟关闭，单位毫秒，值为0时表示立刻关闭&lt;br /&gt;
		speed: 600,         //关闭时的效果，淡出速度&lt;br /&gt;
		close: true,        //是否显示关闭按钮&lt;br /&gt;
		callback: function() {&lt;br /&gt;
                    $.noop();       //点击关闭后的事件&lt;br /&gt;
		}&lt;br /&gt;
            };&lt;br /&gt;
            &lt;br /&gt;
            var param = $.extend({}, defaults, options || {});&lt;br /&gt;
            &lt;br /&gt;
            var controlID = self.attr(&amp;quot;ID&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
            //气泡样式&lt;br /&gt;
	    var cvToolTipCssBtm = &amp;#039;position: absolute; border-color: transparent transparent #F9E98E transparent; border-style: dashed dashed solid dashed; border-width: 12px 12px 12px 12px; width: 0; overflow: hidden; right:40px; top:-24px;&amp;#039;;&lt;br /&gt;
	    var cvToolTipCssTop = &amp;#039;position: absolute; border-color: transparent transparent #FBF7AA transparent; border-style: dashed dashed solid dashed; border-width: 12px 12px 12px 12px; width: 0; overflow: hidden; right:40px; top:-19px;&amp;#039;;&lt;br /&gt;
	    &lt;br /&gt;
	    var cvToolTipCss = &amp;#039;z-index:99998; display:none; position: absolute; border: 3px solid #F9E98E; background-color: #FBF7AA; line-height:14px; border-radius: 10px; right:&amp;#039; + param.left + &amp;#039;px; top:&amp;#039; + param.top + &amp;#039;px;&amp;#039;;&lt;br /&gt;
	    if (param.width !== 0) {&lt;br /&gt;
		cvToolTipCss += &amp;#039;width: &amp;#039; + param.width + &amp;#039;px;&amp;#039;;&lt;br /&gt;
	    }&lt;br /&gt;
	    &lt;br /&gt;
            //气泡显示&lt;br /&gt;
            var cvTipsElement = &amp;#039;&amp;#039;;&lt;br /&gt;
            cvTipsElement += &amp;#039;&amp;lt;div id=&amp;quot;&amp;#039; + controlID + &amp;#039;Body&amp;quot; class=&amp;quot;cvToolTip&amp;quot; style=&amp;quot;&amp;#039; + cvToolTipCss + &amp;#039;&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
            cvTipsElement += &amp;#039;&amp;lt;span style=&amp;quot;&amp;#039; + cvToolTipCssBtm + &amp;#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;&amp;#039; + cvToolTipCssTop + &amp;#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
            cvTipsElement += &amp;#039;&amp;lt;span id=&amp;quot;&amp;#039; + controlID + &amp;#039;Content&amp;quot; style=&amp;quot;float:left;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
            &lt;br /&gt;
            if(param.close){&lt;br /&gt;
		cvTipsElement += &amp;#039;&amp;lt;a id=&amp;quot;&amp;#039; + controlID + &amp;#039;Close&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;float:right; font-family:verdana; position: absolute; top:1px; right:5px; font-size:12px; cursor:pointer;&amp;quot;&amp;gt;x&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            cvTipsElement += &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
            &lt;br /&gt;
            if ($(&amp;quot;#&amp;quot; + controlID + &amp;quot;Body&amp;quot;).length == 0) {&lt;br /&gt;
		$(param.panel).append(cvTipsElement);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            //气泡容器、装载内容的容器&lt;br /&gt;
            var cttBody = $(&amp;quot;#&amp;quot; + controlID + &amp;quot;Body&amp;quot;);&lt;br /&gt;
            var cttContent = $(&amp;quot;#&amp;quot; + controlID + &amp;quot;Content&amp;quot;);&lt;br /&gt;
            var cttClose = $(&amp;quot;#&amp;quot; + controlID + &amp;quot;Close&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
            cttBody.show();&lt;br /&gt;
&lt;br /&gt;
            var ctt = {   &lt;br /&gt;
		body: cttBody,&lt;br /&gt;
&lt;br /&gt;
		content: function() {&lt;br /&gt;
                    self.show();&lt;br /&gt;
                    return self;&lt;br /&gt;
		},&lt;br /&gt;
		&lt;br /&gt;
		position: function() {&lt;br /&gt;
                    var p = $(param.selector).position();&lt;br /&gt;
                    &lt;br /&gt;
                    cttBody.css({top: p.top + param.top,&lt;br /&gt;
				 left: p.left + param.left});&lt;br /&gt;
		},&lt;br /&gt;
		&lt;br /&gt;
		hide: function() {                &lt;br /&gt;
		    cttClose.hide();&lt;br /&gt;
		    cttBody.off();&lt;br /&gt;
                    cttContent.slideUp(param.speed, function(){&lt;br /&gt;
			ctt.content().hide().appendTo($(param.panel));&lt;br /&gt;
			cttBody.remove();&lt;br /&gt;
                    });&lt;br /&gt;
		    param.callback();&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		timer: null,&lt;br /&gt;
&lt;br /&gt;
		show: function() {&lt;br /&gt;
		    var timer;&lt;br /&gt;
                    if (cttContent.html() == &amp;quot;&amp;quot;) {&lt;br /&gt;
			cttContent.append(ctt.content()).css(&amp;quot;height&amp;quot;,cttContent[0].scrollHeight + &amp;#039;px&amp;#039;).hide().slideDown(param.speed, function() {&lt;br /&gt;
			    cttContent.css(&amp;quot;height&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
			    cttBody.mouseover(function(){&lt;br /&gt;
				cttClose.show();&lt;br /&gt;
			    });&lt;br /&gt;
			    &lt;br /&gt;
			    cttBody.mouseout(function(){&lt;br /&gt;
				cttClose.hide();&lt;br /&gt;
			    });&lt;br /&gt;
			});&lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    if(param.selector != &amp;quot;&amp;quot;){&lt;br /&gt;
			ctt.position();&lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    if (param.delay &amp;gt;= 0) {&lt;br /&gt;
			timer = setTimeout(ctt.hide, param.delay);&lt;br /&gt;
                    }&lt;br /&gt;
		}&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            ctt.show();&lt;br /&gt;
            &lt;br /&gt;
            //关闭气泡        &lt;br /&gt;
            cttClose.click(ctt.hide);&lt;br /&gt;
	    return ctt;&lt;br /&gt;
	}&lt;br /&gt;
    })(jQuery);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>入我相思门</name></author>
	</entry>
</feed>