MediaWiki:Gadget-userfeedback.js

来自MediaWiki.org
跳转到导航 跳转到搜索

注:保存后,您可能需要绕过浏览器的缓存才能查看更改。

  • Firefox/Safari:保持轮班单击时重新加载,或按Ctrl-F5键Ctrl-R键(鈱-R在Mac上)
  • 谷歌Chrome浏览器:出版社Ctrl-Shift-R键(鈱-R档在Mac上)
  • Internet Explorer/Edge:保持Ctrl键单击时刷新,或按Ctrl-F5键
  • 歌剧:菜单鈫设置(Opera鈫偏好在Mac上)然后隐私和安全鈫清除浏览数据鈫缓存的图像和文件.
/**
*用户反馈.js
*
*通过以下方式收集用户对文档页面的帮助/质量的投票
*将事件日志日志事件发布到“UserFeedback”通道。
*
*@source https://wikitech.wikimedia.org/wiki/MediaWiki:Gadget-userfeedback.js
*@牌照磁铁:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt gpl-v3-或更高版本
*@licstart下面是这个小工具中JavaScript代码的完整许可声明。
*
*版权所有(C)2019 Srishti Sethi<https://meta.wikimedia.org/wiki/User:SSethi_x(WMF)>和贡献者
*
*这个页面中的JavaScript/Gadget代码是免费软件:您可以
*根据GNU的条款重新分发和/或修改它
*由自由软件发布的通用公共许可证(GNU GPL)
*或许可证的第3版
*任何更新版本。本规范的分发不作任何保证;
*甚至连适销性或适用性的默示保证都没有
*为了特定的目的。有关更多详细信息,请参阅gnugpl。
*
*作为GNU GPL版本3第7节下的附加权限,您可以
*可分发非源(例如,最小化或压缩)形式的
*该代码没有通常所需的GNU GPL副本
*第4节,提供此许可声明和URL
*收件人可以通过它访问相应的源。
*
*@licend上面是这个Gadget中JavaScript/Gadget代码的完整许可声明。
*/
(功能 () {
  '使用严格';

	变量 支持的命名空间 = [ “API” ],
		validVotes公司 = [ “是的”, “不” ],
		文章ID = 兆瓦.配置.得到( “wgArticleId” ),
		命名空间 = 兆瓦.配置.得到( 'wgCanonicalNamespace' ),
		行动 = 兆瓦.配置.得到( '工作' ),
		页面名称 = 兆瓦.配置.得到( 'wgPageName' ),
		Votecokiename公司 = “投票” + 文章ID,
		是直接的 = 兆瓦.配置.得到( “wgIsRedirect” );

	/**
*检查当前用户对当前页面的事先投票。
*
*@return{string | null}先前记录的投票,如果没有投票,则为null
*/
	功能 提前投票() {
		返回 兆瓦.曲奇.得到( Votecokiename公司 );
	}

	/**
*通过发布事件日志记录事件,然后显示
*发送给用户的确认消息。
*
*@param{string}投票
*/
	功能 集体投票( 投票 ) {
		如果 (
			提前投票() !== 无效的 ||       //已投票用户
			validVotes公司.索引( 投票 ) === -1   //提交的投票无效
		) {
			返回;
		}
		兆瓦.事件日志.日志事件( '用户反馈', {
			“页面编号”: 文章ID,
			“页面名称”: 页面名称,
			“投票”: 投票
		} );
		纪念( 投票 );
		显示确认消息( 投票 );
	}

	/**
*记住对当前页面的投票。
*
*@param{string}投票
*/
	功能 纪念( 投票 ) {
		变量 膨胀 = 600; //10分钟
		兆瓦.曲奇.设置( Votecokiename公司, 投票, { '过期': 膨胀 } );
	}

	/**
*向用户显示有关其投票的确认消息。
*
*{string}投票
*/
	功能 显示确认消息( 投票 ) {
		变量 $反馈 = $( “#mw小工具用户反馈” );
		$反馈.空的();

		如果 ( 投票 === “是的” ) {
			$反馈.追加(
				$( '<span>' ).文本( 兆瓦.消息('用户反馈确认是') )
			);
		} 其他的 如果 ( 投票 === “不” ) {
			变量 标题 = 兆瓦.标题.新建文本( 页面名称 ),
				谈话页 = 标题.获取TalkPage(),
				talkPageUrl = 谈话页.获取URL();

			$反馈.追加(
				$( '<span>').html格式(
					兆瓦.消息(
						'用户反馈确认编号',
						'<a href=“” + 兆瓦.html格式.逃跑( talkPageUrl ) + '“target=”blank“>” + 兆瓦.消息( '用户反馈确认通知' ) + '</a>'
					)
				)
			);
		}
	}

	/**
*显示投票表单或确认消息(如果用户有)
*最近对当前页面的质量进行了投票。
*/
	功能 showGadgetUI() {
		变量 显示之后 = “#链接”,
			$displayAfter之后 = $( 显示之后 ),
			投票前表决 = 提前投票();

		如果 ( $displayAfter之后.长度 === 0 ) {
			$displayAfter之后 = $( 'mw内容文本' );
		}
		$displayAfter之后.之后( '<div id=“mw gadget userfeedback”></div>' );

		如果 ( validVotes公司.索引( 投票前表决 ) !== -1 ) {
			显示确认消息( 投票前表决 );
		} 其他的 {
			变量 $反馈 = $( “#mw小工具用户反馈” ),
				是的 = 新的 面向对象.用户界面.纽扣小窗( {
					标签: '馃憤',
					标题: 兆瓦.消息(用户反馈'Yes'),
					有框: ,
					班级: [ “拇指”, “竖起大拇指” ]
				} ),
				沃泰诺 = 新的 面向对象.用户界面.纽扣小窗( {
					标签: '馃憥',
					标题: 兆瓦.消息('用户反馈voteNo'),
					有框: ,
					班级: [ “拇指”, “大拇指朝下” ]
				} ),
				按钮组 = 新的 面向对象.用户界面.按钮组控件( {
					项目: [ 是的, 沃泰诺 ]
				} );
			是的.( '单击', 功能() { 集体投票( “是的” ); } );
			沃泰诺.( '单击', 功能() { 集体投票( “不” ); } );
			$反馈.追加(
				$( '<span class=“调查问题”> ).文本( 兆瓦.消息('用户反馈问题' ) )
			);
			$反馈.追加( 按钮组.$元素 );
		}
	}

	功能 设置消息() {
		常量 消息 = {
			英语: {
				'用户反馈问题': “这份文件有帮助吗?”,
				'用户反馈voteYes': “是的,很有帮助”,
				'用户反馈voteNo': “不,没用”,
				'用户反馈确认是': “谢谢你的反馈。我们很高兴你发现文件有用,
				'用户反馈确认编号': “谢谢你的反馈。如果你能在这篇文章的1美元上留下一些改进建议,那会很有帮助,
				'用户反馈确认通知': '谈话页',
			},
			判定元件: {
				'用户问题': “希尔弗雷奇的战争?”,
				'用户反馈voteYes': “是的”,
				'用户反馈voteNo': “不”,
				'用户反馈确认是': “丹克·弗雷尔·迪尔克梅尔登!”,
				'用户反馈确认编号': “丹克·f·r·迪尔·r·克梅尔登!一美元一美元的啤酒,
				'用户反馈确认通知': '磁盘集',
			}
		};
		常量 用户语言 = 兆瓦.配置.得到( “wgUserLanguage” );
		兆瓦.信息.设置( 消息.英语 );
		兆瓦.信息.设置( 消息[ 用户语言 ] || {} );
	}

	$( 文件 ).准备好的( 功能 () {
		如果 (
			文章ID === 0 ||                              //页面不能是红色链接
			行动 !== '视图' ||                            //只在阅读文章时显示
			支持的命名空间.索引( 命名空间 ) === -1 || //页面必须位于支持的命名空间中
			$('软重定向').长度 > 0                   || //页面不能是软重定向
			是直接的                                         //页面不能是硬重定向
		) {
			返回;
		}

		设置消息();

		//只有在API页面上时才下载这些依赖项
		//我们希望表格显示的地方。
		//
		//只有当前页面不是红色链接时才会显示表单,
		//由用户查看(而不是编辑),
		//并且页面位于受支持的命名空间中。
		兆瓦.装载机.使用( ['mediawiki.Title', '外部事件日志', 'oojs用户界面核心'] ).然后( showGadgetUI );
	} );
}());