r94955 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r94954‎ | r94955 | r94956 >
Date:21:52, 18 August 2011
Author:catrope
Status:ok
Tags:
Comment:
1.17wmf1: Rebranch WikiLove from trunk
Modified paths:
  • /branches/wmf/1.17wmf1/extensions/WikiLove (added) (history)

Diff [purge]

Index: branches/wmf/1.17wmf1/extensions/WikiLove/WikiLove.php
@@ -0,0 +1,171 @@
 2+<?php
 3+/**
 4+ * MediaWiki WikiLove extension
 5+ * http://www.mediawiki.org/wiki/Extension:WikiLove
 6+ *
 7+ * This program is free software; you can redistribute it and/or modify
 8+ * it under the terms of the GNU General Public License as published by
 9+ * the Free Software Foundation; either version 2 of the License, or
 10+ * (at your option) any later version.
 11+ *
 12+ * This program is distributed in the hope that it will be useful,
 13+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 15+ * GNU General Public License for more details.
 16+ *
 17+ * http://www.gnu.org/copyleft/gpl.html
 18+ *
 19+ * Heart icon by Mark James (Creative Commons Attribution 3.0 License)
 20+ * Interface design by Brandon Harris
 21+ */
 22+
 23+/**
 24+ * @file
 25+ * @ingroup Extensions
 26+ * @author Ryan Kaldari, Jan Paul Posma
 27+ */
 28+
 29+# Alert the user that this is not a valid entry point to MediaWiki if they try to access the file directly.
 30+if ( !defined( 'MEDIAWIKI' ) ) {
 31+ echo <<<EOT
 32+To install this extension, put the following line in LocalSettings.php:
 33+require_once( "\$IP/extensions/WikiLove/WikiLove.php" );
 34+EOT;
 35+ exit( 1 );
 36+}
 37+
 38+// Extension credits that will show up on Special:Version
 39+$wgExtensionCredits['other'][] = array(
 40+ 'path' => __FILE__,
 41+ 'name' => 'WikiLove',
 42+ 'version' => '1.0',
 43+ 'url' => 'http://www.mediawiki.org/wiki/Extension:WikiLove',
 44+ 'author' => array(
 45+ 'Ryan Kaldari', 'Jan Paul Posma'
 46+ ),
 47+ 'descriptionmsg' => 'wikilove-desc',
 48+);
 49+
 50+// default user options
 51+$wgWikiLoveGlobal = false; // enable the extension for all users, removing the user preference
 52+$wgWikiLoveTabIcon = true; // use an icon for skins that support them (i.e. Vector)
 53+$wgWikiLoveLogging = false; // enable logging of giving of WikiLove
 54+
 55+// current directory including trailing slash
 56+$dir = dirname( __FILE__ ) . '/';
 57+
 58+// add autoload classes
 59+$wgAutoloadClasses['ApiWikiLove'] = $dir . 'ApiWikiLove.php';
 60+$wgAutoloadClasses['ApiWikiLoveImageLog'] = $dir . 'ApiWikiLoveImageLog.php';
 61+$wgAutoloadClasses['WikiLoveHooks'] = $dir . 'WikiLove.hooks.php';
 62+$wgAutoloadClasses['WikiLoveLocal'] = $dir . 'WikiLove.local.php';
 63+
 64+// i18n messages
 65+$wgExtensionMessagesFiles['WikiLove'] = $dir . 'WikiLove.i18n.php';
 66+
 67+// register hooks
 68+$wgHooks['GetPreferences'][] = 'WikiLoveHooks::getPreferences';
 69+$wgHooks['SkinTemplateNavigation'][] = 'WikiLoveHooks::skinTemplateNavigation';
 70+$wgHooks['SkinTemplateTabs'][] = 'WikiLoveHooks::skinTemplateTabs';
 71+$wgHooks['BeforePageDisplay'][] = 'WikiLoveHooks::beforePageDisplay';
 72+$wgHooks['LoadExtensionSchemaUpdates'][] = 'WikiLoveHooks::loadExtensionSchemaUpdates';
 73+$wgHooks['MakeGlobalVariablesScript'][] = 'WikiLoveHooks::makeGlobalVariablesScript';
 74+
 75+// api modules
 76+$wgAPIModules['wikilove'] = 'ApiWikiLove';
 77+$wgAPIModules['wikiloveimagelog'] = 'ApiWikiLoveImageLog';
 78+
 79+$extWikiLoveTpl = array(
 80+ 'localBasePath' => dirname( __FILE__ ) . '/modules/ext.wikiLove',
 81+ 'remoteExtPath' => 'WikiLove/modules/ext.wikiLove',
 82+);
 83+
 84+// messages for default options, because we want to use them in the default
 85+// options module, but also for the user in the user options module
 86+$wgWikiLoveOptionMessages = array(
 87+ 'wikilove-type-barnstars',
 88+ 'wikilove-type-food',
 89+ 'wikilove-type-kittens',
 90+ 'wikilove-type-makeyourown',
 91+);
 92+
 93+// Because of bug 29608 we can't make a dependancy on a wiki module yet
 94+// For now using 'using' to load the wiki module from within init.
 95+$wgResourceModules += array(
 96+ 'ext.wikiLove.icon' => $extWikiLoveTpl + array(
 97+ 'styles' => 'ext.wikiLove.icon.css',
 98+ 'position' => 'top',
 99+ ),
 100+ 'ext.wikiLove.defaultOptions' => $extWikiLoveTpl + array(
 101+ 'scripts' => array(
 102+ 'ext.wikiLove.defaultOptions.js',
 103+ ),
 104+ 'messages' => $wgWikiLoveOptionMessages,
 105+ ),
 106+ 'ext.wikiLove.startup' => $extWikiLoveTpl + array(
 107+ 'scripts' => array(
 108+ 'ext.wikiLove.core.js',
 109+ ),
 110+ 'styles' => 'ext.wikiLove.css',
 111+ 'messages' => array(
 112+ 'wikilove-tab-text',
 113+ 'wikilove-dialog-title',
 114+ 'wikilove-select-type',
 115+ 'wikilove-get-started-header',
 116+ 'wikilove-get-started-list-1',
 117+ 'wikilove-get-started-list-2',
 118+ 'wikilove-get-started-list-3',
 119+ 'wikilove-add-details',
 120+ 'wikilove-image',
 121+ 'wikilove-select-image',
 122+ 'wikilove-header',
 123+ 'wikilove-title',
 124+ 'wikilove-enter-message',
 125+ 'wikilove-omit-sig',
 126+ 'wikilove-image-example',
 127+ 'wikilove-button-preview',
 128+ 'wikilove-preview',
 129+ 'wikilove-notify',
 130+ 'wikilove-button-send',
 131+ 'wikilove-err-header',
 132+ 'wikilove-err-title',
 133+ 'wikilove-err-msg',
 134+ 'wikilove-err-image',
 135+ 'wikilove-err-image-bad',
 136+ 'wikilove-err-image-api',
 137+ 'wikilove-err-sig',
 138+ 'wikilove-err-gallery',
 139+ 'wikilove-err-gallery-again',
 140+ 'wikilove-what-is-this',
 141+ 'wikilove-anon-warning',
 142+ 'wikilove-commons-text',
 143+ 'wikilove-commons-link',
 144+ 'wikilove-commons-url',
 145+ 'wikilove-err-preview-api',
 146+ 'wikilove-err-send-api',
 147+ ),
 148+ 'dependencies' => array(
 149+ 'ext.wikiLove.defaultOptions',
 150+ 'jquery.ui.dialog',
 151+ 'jquery.ui.button',
 152+ 'jquery.localize',
 153+ 'jquery.elastic',
 154+ ),
 155+ ),
 156+ 'ext.wikiLove.local' => array(
 157+ 'class' => 'WikiLoveLocal',
 158+ ),
 159+ 'ext.wikiLove.init' => $extWikiLoveTpl + array(
 160+ 'scripts' => array(
 161+ 'ext.wikiLove.init.js',
 162+ ),
 163+ 'dependencies' => array(
 164+ 'ext.wikiLove.startup',
 165+ ),
 166+ ),
 167+ 'jquery.elastic' => array(
 168+ 'localBasePath' => dirname( __FILE__ ) . '/modules/jquery.elastic',
 169+ 'remoteExtPath' => 'WikiLove/modules/jquery.elastic',
 170+ 'scripts' => 'jquery.elastic.js',
 171+ ),
 172+);
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/WikiLove.php
___________________________________________________________________
Added: svn:eol-style
1173 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/WikiLove.hooks.php
@@ -0,0 +1,203 @@
 2+<?php
 3+/**
 4+ * Hooks for WikiLove extension
 5+ *
 6+ * @file
 7+ * @ingroup Extensions
 8+ */
 9+
 10+class WikiLoveHooks {
 11+ private static $recipient = '';
 12+
 13+ /**
 14+ * LoadExtensionSchemaUpdates hook
 15+ *
 16+ * @param $updater DatabaseUpdater
 17+ *
 18+ * @return true
 19+ */
 20+ public static function loadExtensionSchemaUpdates( $updater = null ) {
 21+ if ( $updater === null ) {
 22+ global $wgExtNewTables;
 23+ $wgExtNewTables[] = array( 'wikilove_log', dirname( __FILE__ ) . '/patches/WikiLoveLog.sql' );
 24+ $wgExtNewTables[] = array( 'wikilove_image_log', dirname( __FILE__ ) . '/patches/WikiLoveImageLog.sql' );
 25+ } else {
 26+ $updater->addExtensionUpdate( array( 'addTable', 'wikilove_log',
 27+ dirname( __FILE__ ) . '/patches/WikiLoveLog.sql', true ) );
 28+ $updater->addExtensionUpdate( array( 'addTable', 'wikilove_image_log',
 29+ dirname( __FILE__ ) . '/patches/WikiLoveImageLog.sql', true ) );
 30+ }
 31+ return true;
 32+ }
 33+
 34+ /**
 35+ * Add the preference in the user preferences with the GetPreferences hook.
 36+ * @param $user User
 37+ * @param $preferences array
 38+ *
 39+ * @return true
 40+ */
 41+ public static function getPreferences( $user, &$preferences ) {
 42+ global $wgWikiLoveGlobal;
 43+ if ( !$wgWikiLoveGlobal ) {
 44+ $preferences['wikilove-enabled'] = array(
 45+ 'type' => 'check',
 46+ 'section' => 'editing/labs',
 47+ 'label-message' => 'wikilove-enable-preference',
 48+ );
 49+ }
 50+ return true;
 51+ }
 52+
 53+ /**
 54+ * Adds the required module if we are on a user (talk) page.
 55+ *
 56+ * @param $out OutputPage
 57+ * @param $skin Skin
 58+ *
 59+ * @return true
 60+ */
 61+ public static function beforePageDisplay( $out, $skin ) {
 62+ global $wgWikiLoveGlobal, $wgUser;
 63+ if ( !$wgWikiLoveGlobal && !$wgUser->getOption( 'wikilove-enabled' ) ) {
 64+ return true;
 65+ }
 66+
 67+ $title = self::getUserTalkPage( $skin->getTitle() );
 68+ if ( !is_null( $title ) ) {
 69+ $out->addModules( array( 'ext.wikiLove.icon', 'ext.wikiLove.init' ) );
 70+ self::$recipient = $title->getBaseText();
 71+ }
 72+ return true;
 73+ }
 74+
 75+ /**
 76+ * Exports wikilove-recipient and edittoken variables to JS
 77+ *
 78+ * @param $vars array
 79+ *
 80+ * @return true
 81+ */
 82+ public static function makeGlobalVariablesScript( &$vars ) {
 83+ global $wgUser;
 84+ $vars['wikilove-recipient'] = self::$recipient;
 85+ $vars['wikilove-edittoken'] = $wgUser->edittoken();
 86+
 87+ $vars['wikilove-anon'] = 0;
 88+ if ( self::$recipient !== '' ) {
 89+ $receiver = User::newFromName( self::$recipient );
 90+ if ( $receiver === false || $receiver->isAnon() ) $vars['wikilove-anon'] = 1;
 91+ }
 92+ return true;
 93+ }
 94+
 95+ /**
 96+ * Adds a tab the old way (before MW 1.18)
 97+ */
 98+ public static function skinTemplateTabs( $skin, &$contentActions ) {
 99+ self::skinConfigViewsLinks( $skin, $contentActions );
 100+ return true;
 101+ }
 102+
 103+ /**
 104+ * Adds a tab or an icon the new way (MW >1.18)
 105+ */
 106+ public static function skinTemplateNavigation( &$skin, &$links ) {
 107+ if ( self::showIcon( $skin ) ) {
 108+ self::skinConfigViewsLinks( $skin, $links['views']);
 109+ } else {
 110+ self::skinConfigViewsLinks( $skin, $links['actions']);
 111+ }
 112+ return true;
 113+ }
 114+
 115+ /**
 116+ * Configure views links.
 117+ * Helper function for SkinTemplateTabs and SkinTemplateNavigation hooks
 118+ * to configure views links.
 119+ *
 120+ * @param $skin Skin
 121+ * @param $views array
 122+ */
 123+ private static function skinConfigViewsLinks( $skin, &$views ) {
 124+ global $wgWikiLoveGlobal, $wgUser;
 125+
 126+ // If WikiLove is turned off for this user, don't display tab.
 127+ if ( !$wgWikiLoveGlobal && !$wgUser->getOption( 'wikilove-enabled' ) ) {
 128+ return true;
 129+ }
 130+
 131+ if ( !is_null( self::getUserTalkPage( $skin->getTitle() ) ) ) {
 132+ $views['wikilove'] = array(
 133+ 'text' => wfMsg( 'wikilove-tab-text' ),
 134+ 'href' => '#',
 135+ );
 136+ if ( self::showIcon( $skin ) ) {
 137+ $views['wikilove']['class'] = 'icon';
 138+ $views['wikilove']['primary'] = true;
 139+ }
 140+ }
 141+ }
 142+
 143+ /**
 144+ * Only show an icon when the global preference is enabled and the current skin is Vector.
 145+ *
 146+ * @param $skin Skin
 147+ *
 148+ * @return bool
 149+ */
 150+ private static function showIcon( $skin ) {
 151+ global $wgWikiLoveTabIcon;
 152+ return $wgWikiLoveTabIcon && $skin->getSkinName() == 'vector';
 153+ }
 154+
 155+ /**
 156+ * Find the editable talk page of the user we're looking at, or null
 157+ * if such page does not exist.
 158+ *
 159+ * @param $title Title
 160+ *
 161+ * @return Title|null
 162+ */
 163+ public static function getUserTalkPage( $title ) {
 164+ global $wgUser;
 165+
 166+ // Exit early if the sending user isn't logged in
 167+ if ( !$wgUser->isLoggedIn() ) {
 168+ return null;
 169+ }
 170+
 171+ // Exit early if we're in the wrong namespace
 172+ $ns = $title->getNamespace();
 173+ if ( $ns != NS_USER && $ns != NS_USER_TALK ) {
 174+ return null;
 175+ }
 176+
 177+ // If we're on a subpage, get the base page title
 178+ $baseTitle = Title::newFromText( $title->getBaseText(), $ns );
 179+
 180+ // Get the user talk page
 181+ if ( $ns == NS_USER_TALK ) {
 182+ // We're already on the user talk page
 183+ $talkTitle = $baseTitle;
 184+ } elseif ( $ns == NS_USER ) {
 185+ // We're on the user page, so retrieve the user talk page instead
 186+ $talkTitle = $baseTitle->getTalkPage();
 187+ }
 188+
 189+ // If it's a redirect, exit. We don't follow redirects since it might confuse the user or
 190+ // lead to an endless loop (like if the talk page redirects to the user page or a subpage).
 191+ // This means that the WikiLove tab will not appear on user pages or user talk pages if
 192+ // the user talk page is a redirect.
 193+ if ( $talkTitle->isRedirect() ) {
 194+ return null;
 195+ }
 196+
 197+ // Make sure we can edit the page
 198+ if ( $talkTitle->quickUserCan( 'edit' ) ) {
 199+ return $talkTitle;
 200+ } else {
 201+ return null;
 202+ }
 203+ }
 204+}
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/WikiLove.hooks.php
___________________________________________________________________
Added: svn:eol-style
1205 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/sourcefiles/WikiLove-Icon-Source.psd
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/sourcefiles/WikiLove-Icon-Source.psd
___________________________________________________________________
Added: svn:mime-type
2206 + application/octet-stream
Index: branches/wmf/1.17wmf1/extensions/WikiLove/patches/WikiLoveLog.sql
@@ -0,0 +1,28 @@
 2+--
 3+-- WikiLove logging schema
 4+-- Logs all actions of giving WikiLove.
 5+-- Not final, please apply this patch manually for now!
 6+--
 7+
 8+CREATE TABLE IF NOT EXISTS /*_*/wikilove_log (
 9+ wll_id int NOT NULL PRIMARY KEY auto_increment, -- unique id
 10+ wll_timestamp binary(14) NOT NULL, -- timestamp
 11+ wll_sender int(11) NOT NULL, -- user id of the sender
 12+ wll_sender_registration binary(14) default NULL, -- registration date of the sender
 13+ wll_sender_editcount int(11) default NULL, -- total number of edits for the sender
 14+ wll_receiver int(11) NOT NULL, -- user id of the receiver
 15+ wll_receiver_registration binary(14) default NULL, -- registration date of the receiver
 16+ wll_receiver_editcount int(11) default NULL, -- total number of edits for the receiver
 17+ wll_type varchar(64) NOT NULL, -- type (and subtype) of message
 18+ wll_subject varchar(255) NOT NULL, -- subject line
 19+ wll_message blob NOT NULL, -- actual message
 20+ wll_email bool NOT NULL default '0' -- whether or not a notification mail has been sent
 21+) /*$wgDBTableOptions*/;
 22+
 23+CREATE INDEX /*i*/wll_timestamp ON /*_*/wikilove_log (wll_timestamp);
 24+CREATE INDEX /*i*/wll_type_time ON /*_*/wikilove_log (wll_type, wll_timestamp);
 25+CREATE INDEX /*i*/wll_sender_time ON /*_*/wikilove_log (wll_sender, wll_timestamp);
 26+CREATE INDEX /*i*/wll_receiver_time ON /*_*/wikilove_log (wll_receiver, wll_timestamp);
 27+-- ASSUMPTION: once narrowed down to a single user (sender/receiver), we can afford a filesort
 28+-- as a single users will have only limited WikiLove messages from or to him/her. It's not worth
 29+-- the memory of extra indexes to cover all the combinations (sender/receiver/type => 8 indexes)
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/patches/WikiLoveLog.sql
___________________________________________________________________
Added: svn:eol-style
130 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/patches/WikiLoveImageLog.sql
@@ -0,0 +1,16 @@
 2+--
 3+-- WikiLove image logging schema
 4+-- Logs every time someone attempts to preview an award with a user-entered image title.
 5+-- This is mainly to see if people understand the idea of using images from Commons.
 6+--
 7+
 8+CREATE TABLE IF NOT EXISTS /*_*/wikilove_image_log (
 9+ wlil_id int(11) NOT NULL PRIMARY KEY auto_increment,
 10+ wlil_timestamp binary(14) NOT NULL,
 11+ wlil_user_id int(11) NOT NULL,
 12+ wlil_image varchar(128) NOT NULL,
 13+ wlil_success bool NOT NULL
 14+) /*$wgDBTableOptions*/;
 15+
 16+CREATE INDEX /*i*/wlil_timestamp ON /*_*/wikilove_image_log (wlil_timestamp);
 17+CREATE INDEX /*i*/wlil_user_time ON /*_*/wikilove_image_log (wlil_user_id, wlil_timestamp);
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/patches/WikiLoveImageLog.sql
___________________________________________________________________
Added: svn:eol-style
118 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/WikiLove.local.php
@@ -0,0 +1,16 @@
 2+<?php
 3+/*
 4+ * Custom ResourceLoader module that loads a custom WikiLove.js per-wiki.
 5+ */
 6+class WikiLoveLocal extends ResourceLoaderWikiModule {
 7+ protected function getPages( ResourceLoaderContext $context ) {
 8+ return array(
 9+ 'MediaWiki:WikiLove.js' => array( 'type' => 'script' ),
 10+ );
 11+ }
 12+
 13+ public function getMessages() {
 14+ global $wgWikiLoveOptionMessages;
 15+ return $wgWikiLoveOptionMessages;
 16+ }
 17+}
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/WikiLove.local.php
___________________________________________________________________
Added: svn:eol-style
118 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/jquery.elastic/jquery.elastic.js
@@ -0,0 +1,164 @@
 2+/**
 3+* @name Elastic
 4+* @descripton Elastic is jQuery plugin that grow and shrink your textareas automatically
 5+* @version 1.6.10
 6+* @requires jQuery 1.2.6+
 7+*
 8+* @author Jan Jarfalk
 9+* @author-email jan.jarfalk@unwrongest.com
 10+* @author-website http://www.unwrongest.com
 11+*
 12+* @licence MIT License - http://www.opensource.org/licenses/mit-license.php
 13+*
 14+* This file has been downloaded from http://unwrongest.com/projects/elastic/, please notify the author of
 15+* any changes.
 16+*/
 17+
 18+(function(jQuery){
 19+ jQuery.fn.extend({
 20+ elastic: function() {
 21+
 22+ // We will create a div clone of the textarea
 23+ // by copying these attributes from the textarea to the div.
 24+ var mimics = [
 25+ 'paddingTop',
 26+ 'paddingRight',
 27+ 'paddingBottom',
 28+ 'paddingLeft',
 29+ 'fontSize',
 30+ 'lineHeight',
 31+ 'fontFamily',
 32+ 'width',
 33+ 'fontWeight',
 34+ 'border-top-width',
 35+ 'border-right-width',
 36+ 'border-bottom-width',
 37+ 'border-left-width',
 38+ 'borderTopStyle',
 39+ 'borderTopColor',
 40+ 'borderRightStyle',
 41+ 'borderRightColor',
 42+ 'borderBottomStyle',
 43+ 'borderBottomColor',
 44+ 'borderLeftStyle',
 45+ 'borderLeftColor'
 46+ ];
 47+
 48+ return this.each( function() {
 49+
 50+ // Elastic only works on textareas
 51+ if ( this.type !== 'textarea' ) {
 52+ return false;
 53+ }
 54+
 55+ var $textarea = jQuery(this),
 56+ $twin = jQuery('<div />').css({'position': 'absolute','display':'none','word-wrap':'break-word'}),
 57+ lineHeight = parseInt($textarea.css('line-height'),10) || parseInt($textarea.css('font-size'),'10'),
 58+ minheight = parseInt($textarea.css('height'),10) || lineHeight*3,
 59+ maxheight = parseInt($textarea.css('max-height'),10) || Number.MAX_VALUE,
 60+ goalheight = 0;
 61+
 62+ // Opera returns max-height of -1 if not set
 63+ if (maxheight < 0) { maxheight = Number.MAX_VALUE; }
 64+
 65+ // Append the twin to the DOM
 66+ // We are going to meassure the height of this, not the textarea.
 67+ $twin.appendTo($textarea.parent());
 68+
 69+ // Copy the essential styles (mimics) from the textarea to the twin
 70+ var i = mimics.length;
 71+ while(i--){
 72+ $twin.css(mimics[i].toString(),$textarea.css(mimics[i].toString()));
 73+ }
 74+
 75+ // Updates the width of the twin. (solution for textareas with widths in percent)
 76+ function setTwinWidth(){
 77+ curatedWidth = Math.floor(parseInt($textarea.width(),10));
 78+ if($twin.width() !== curatedWidth){
 79+ $twin.css({'width': curatedWidth + 'px'});
 80+
 81+ // Update height of textarea
 82+ update(true);
 83+ }
 84+ }
 85+
 86+ // Sets a given height and overflow state on the textarea
 87+ function setHeightAndOverflow(height, overflow){
 88+
 89+ var curratedHeight = Math.floor(parseInt(height,10));
 90+ if($textarea.height() !== curratedHeight){
 91+ $textarea.css({'height': curratedHeight + 'px','overflow':overflow});
 92+
 93+ // Fire the custom event resize
 94+ //$textarea.trigger('resize');
 95+
 96+ }
 97+ }
 98+
 99+ // This function will update the height of the textarea if necessary
 100+ function update(forced) {
 101+
 102+ // Get curated content from the textarea.
 103+ var textareaContent = $textarea.val().replace(/&/g,'&amp;').replace(/ {2}/g, '&nbsp;').replace(/<|>/g, '&gt;').replace(/\n/g, '<br />');
 104+
 105+ // Compare curated content with curated twin.
 106+ var twinContent = $twin.html().replace(/<br>/ig,'<br />');
 107+
 108+ if(forced || textareaContent+'&nbsp;' !== twinContent){
 109+
 110+ // Add an extra white space so new rows are added when you are at the end of a row.
 111+ $twin.html(textareaContent+'&nbsp;');
 112+
 113+ // Change textarea height if twin plus the height of one line differs more than 3 pixel from textarea height
 114+ if(Math.abs($twin.height() + lineHeight - $textarea.height()) > 3){
 115+
 116+ var goalheight = $twin.height()+lineHeight;
 117+ if(goalheight >= maxheight) {
 118+ setHeightAndOverflow(maxheight,'auto');
 119+ } else if(goalheight <= minheight) {
 120+ setHeightAndOverflow(minheight,'hidden');
 121+ } else {
 122+ setHeightAndOverflow(goalheight,'hidden');
 123+ }
 124+
 125+ }
 126+
 127+ }
 128+
 129+ }
 130+
 131+ // Hide scrollbars
 132+ $textarea.css({'overflow':'hidden'});
 133+
 134+ // Update textarea size on keyup, change, cut and paste
 135+ $textarea.bind('keyup change cut paste', function(){
 136+ update();
 137+ });
 138+
 139+ // Update width of twin if browser or textarea is resized (solution for textareas with widths in percent)
 140+ $(window).bind('resize', setTwinWidth);
 141+ $textarea.bind('resize', setTwinWidth);
 142+ $textarea.bind('update', update);
 143+
 144+ // Compact textarea on blur
 145+ $textarea.bind('blur',function(){
 146+ if($twin.height() < maxheight){
 147+ if($twin.height() > minheight) {
 148+ $textarea.height($twin.height());
 149+ } else {
 150+ $textarea.height(minheight);
 151+ }
 152+ }
 153+ });
 154+
 155+ // And this line is to catch the browser paste event
 156+ $textarea.bind('input paste',function(e){ setTimeout( update, 250); });
 157+
 158+ // Run update once when elastic is initialized
 159+ update();
 160+
 161+ });
 162+
 163+ }
 164+ });
 165+})(jQuery);
\ No newline at end of file
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/jquery.elastic/jquery.elastic.js
___________________________________________________________________
Added: svn:eol-style
1166 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.css
@@ -0,0 +1,391 @@
 2+.ui-widget-overlay {
 3+ min-height: 750px;
 4+}
 5+
 6+/* dialog */
 7+#mw-wikilove-dialog {
 8+ margin: 10px;
 9+ overflow: hidden;
 10+}
 11+
 12+#mw-wikilove-preview-form {
 13+ position: relative;
 14+ clear: both; /* for monobook skin */
 15+}
 16+
 17+/* dialog type selection */
 18+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type {
 19+ float: left;
 20+ width: 250px;
 21+}
 22+
 23+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type ul {
 24+ list-style: none;
 25+ margin: 0;
 26+ padding: 0;
 27+}
 28+
 29+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type ul li,
 30+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a
 31+{
 32+ display: block;
 33+ width: 250px;
 34+ height: 66px;
 35+ padding: 0;
 36+ margin: 0;
 37+ position: relative;
 38+ text-decoration: none;
 39+ outline: none;
 40+}
 41+
 42+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:hover,
 43+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:focus {
 44+ text-decoration:none;
 45+}
 46+
 47+/* IGNORED BY IE6 */
 48+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type ul > li,
 49+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type ul li > a {
 50+ display: inline-block;
 51+}
 52+
 53+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-left-cap,
 54+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-right-cap {
 55+ padding: 0;
 56+ margin: 0;
 57+ width: 6px;
 58+ height: 66px;
 59+ position: absolute;
 60+ top: 0px;
 61+}
 62+
 63+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-l-cap,
 64+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-r-cap,
 65+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-icon-box {
 66+ background-repeat: no-repeat;
 67+ height: 66px;
 68+ position: absolute;
 69+}
 70+
 71+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-l-cap,
 72+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-r-cap {
 73+ width: 6px;
 74+}
 75+
 76+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-l-cap {
 77+ /* @noflip */
 78+ left: 0px;
 79+ /* @embed */
 80+ background-image: url(images/icon-box-left-cap.png);
 81+}
 82+
 83+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:hover .mw-wikilove-l-cap,
 84+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:focus .mw-wikilove-l-cap {
 85+ /* @embed */
 86+ background-image: url(images/icon-box-hover-left-cap.png);
 87+}
 88+
 89+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a.selected .mw-wikilove-l-cap {
 90+ /* @embed */
 91+ background-image: url(images/icon-box-selected-left-cap.png);
 92+}
 93+
 94+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-r-cap {
 95+ /* @noflip */
 96+ right: 0px;
 97+ /* @embed */
 98+ background-image: url(images/icon-box-right-cap.png);
 99+}
 100+
 101+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:hover .mw-wikilove-r-cap,
 102+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:focus .mw-wikilove-r-cap {
 103+ /* @embed */
 104+ background-image: url(images/icon-box-hover-right-cap.png);
 105+}
 106+
 107+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a.selected .mw-wikilove-r-cap {
 108+ /* @embed */
 109+ background-image: url(images/icon-box-selected-right-cap.png);
 110+}
 111+
 112+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-inside {
 113+ padding: 0;
 114+ margin: 0;
 115+ width: 238px;
 116+ height: 66px;
 117+ position: absolute;
 118+ top: 0px;
 119+ left: 6px;
 120+
 121+ /* @embed */
 122+ background-image: url(images/select-bg-sprite.png);
 123+ background-position: 0px 0px;
 124+ background-repeat: repeat-x;
 125+}
 126+
 127+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:hover .mw-wikilove-inside,
 128+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:focus .mw-wikilove-inside {
 129+ background-position: 0px -66px;
 130+}
 131+
 132+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a.selected .mw-wikilove-inside {
 133+ background-position: 0px -132px;
 134+}
 135+
 136+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-icon-box {
 137+ padding: 0;
 138+ margin: 0;
 139+ width: 53px;
 140+ height: 53px;
 141+ position: absolute;
 142+ left: 0px;
 143+ top: 5px;
 144+ /* @embed */
 145+ background-image: url(images/icon-box.png);
 146+}
 147+
 148+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-icon-box img {
 149+ padding: 0;
 150+ margin: 0;
 151+ width: 53px;
 152+ height: 53px;
 153+ position: absolute:
 154+ top: 0px;
 155+ left: 0px;
 156+}
 157+
 158+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:hover .mw-wikilove-icon-box,
 159+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a:focus .mw-wikilove-icon-box {
 160+ /* @embed */
 161+ background-image: url(images/icon-box-hover.png);
 162+}
 163+
 164+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a.selected .mw-wikilove-icon-box {
 165+ /* @embed */
 166+ background-image: url(images/icon-box-selected.png);
 167+}
 168+
 169+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-link-text {
 170+ padding: 0;
 171+ margin: 0;
 172+ width: 170px;
 173+ height: 53px;
 174+ position: absolute;
 175+ left: 64px;
 176+ top: 5px;
 177+ line-height: 53px;
 178+ font-size: 1.2em;
 179+ font-weight: bold;
 180+ text-decoration: none;
 181+ color: white;
 182+}
 183+
 184+/*#mw-wikilove-dialog*/ #mw-wikilove-select-type a .mw-wikilove-no-icon .mw-wikilove-link-text {
 185+ left: 3px;
 186+}
 187+
 188+/* dialog get started */
 189+/*#mw-wikilove-dialog*/ #mw-wikilove-get-started {
 190+ float: right;
 191+ width: 380px;
 192+ margin-top: 40px;
 193+ padding-top: 4px;
 194+ padding-left: 70px;
 195+ font-size: 1.1em;
 196+
 197+ /* @embed */
 198+ background-image: url(images/get-started-ltr.png);
 199+ background-position: top left;
 200+ background-repeat: no-repeat;
 201+}
 202+
 203+/*#mw-wikilove-dialog*/ #mw-wikilove-get-started h2 {
 204+ border: none;
 205+ font-weight: bold;
 206+}
 207+
 208+/*#mw-wikilove-dialog*/ #mw-wikilove-get-started ol {
 209+ margin-left: 1.5em;
 210+}
 211+
 212+/* dialog add details */
 213+/*#mw-wikilove-dialog*/ #mw-wikilove-add-details {
 214+ float: right;
 215+ width: 480px;
 216+ margin-bottom: 5px;
 217+}
 218+
 219+/*#mw-wikilove-dialog*/ #mw-wikilove-add-details label {
 220+ font-weight: bold;
 221+ font-size: 1.1em;
 222+}
 223+
 224+/*#mw-wikilove-dialog*/ #mw-wikilove-add-details .text {
 225+ display: block;
 226+ width: 300px;
 227+}
 228+
 229+/*#mw-wikilove-dialog*/ #mw-wikilove-add-details #mw-wikilove-message {
 230+ width: 100%; /* some old skins don't include this by default */
 231+}
 232+
 233+/*#mw-wikilove-dialog #mw-wikilove-add-details*/ #mw-wikilove-subtype-description {
 234+ margin: 5px 85px 8px 15px;
 235+ font-size: 1.0em;
 236+ line-height: 1.2em;
 237+}
 238+
 239+/*#mw-wikilove-dialog*/ #mw-wikilove-add-details .mw-wikilove-note {
 240+ font-weight: light;
 241+ font-size: 0.9em;
 242+ color: #999;
 243+}
 244+
 245+/*#mw-wikilove-dialog*/ #mw-wikilove-add-details textarea {
 246+ resize: none;
 247+}
 248+
 249+/*#mw-wikilove-dialog*/ #mw-wikilove-commons-text {
 250+ margin: 5px 0px 5px 15px;
 251+}
 252+
 253+/* add details gallery */
 254+/*#mw-wikilove-dialog*/ #mw-wikilove-gallery {
 255+ min-height: 40px;
 256+ position: relative;
 257+}
 258+
 259+/*#mw-wikilove-dialog #mw-wikilove-gallery*/ #mw-wikilove-gallery-error {
 260+ margin-left: 15px;
 261+}
 262+
 263+/*#mw-wikilove-dialog #mw-wikilove-gallery #mw-wikilove-gallery-error*/ #mw-wikilove-gallery-error-again {
 264+ color: #0645AD;
 265+}
 266+
 267+/*#mw-wikilove-dialog*/ #mw-wikilove-gallery img {
 268+ margin-right: 5px;
 269+ margin-bottom: 5px;
 270+ padding: 5px;
 271+}
 272+
 273+/*#mw-wikilove-dialog*/ #mw-wikilove-gallery a:hover img,
 274+/*#mw-wikilove-dialog*/ #mw-wikilove-gallery a:focus img {
 275+ background-color: #aacfe9;
 276+}
 277+
 278+/*#mw-wikilove-dialog*/ #mw-wikilove-gallery a.selected img {
 279+ background-color: #f56427;
 280+}
 281+
 282+/*#mw-wikilove-dialog*/ #mw-wikilove-gallery-spinner {
 283+ float: none;
 284+ position: absolute;
 285+ top: 0;
 286+ left: 50%;
 287+ margin-left: -8px;
 288+ z-index: -1;
 289+}
 290+
 291+/* dialog preview */
 292+/*#mw-wikilove-dialog*/ #mw-wikilove-preview {
 293+ float: right;
 294+ width: 480px;
 295+}
 296+
 297+/*#mw-wikilove-dialog #mw-wikilove-preview*/ #mw-wikilove-preview-area {
 298+ margin-left: 15px;
 299+ width: 465px;
 300+ overflow: auto;
 301+}
 302+
 303+/*#mw-wikilove-dialog #mw-wikilove-preview*/ #mw-wikilove-preview-area .editsection {
 304+ display: none;
 305+}
 306+
 307+/* dialog misc */
 308+#mw-wikilove-dialog input[type=text],
 309+#mw-wikilove-dialog textarea,
 310+#mw-wikilove-dialog select {
 311+ margin: 5px 0px 5px 15px;
 312+ max-width: 460px;
 313+ display: block;
 314+}
 315+
 316+#mw-wikilove-dialog input[type=checkbox] {
 317+ display:inline-box;
 318+ margin: 5px 0px 5px 0px;
 319+}
 320+
 321+#mw-wikilove-dialog select {
 322+ padding: 1px 0;
 323+}
 324+
 325+#mw-wikilove-dialog .submit {
 326+ float: right;
 327+}
 328+
 329+#mw-wikilove-dialog .mw-wikilove-spinner {
 330+ float: right;
 331+ margin-top: 0.9em;
 332+ display: none;
 333+
 334+ /* @embed */
 335+ background-image: url(images/spinner.gif);
 336+ background-position: 0px 0px;
 337+ background-repeat: repeat-x;
 338+ width: 16px;
 339+ height: 16px;
 340+}
 341+
 342+#mw-wikilove-dialog .mw-wikilove-number {
 343+ color: white;
 344+ float: left;
 345+ display: block;
 346+ width: 32px;
 347+ height: 32px;
 348+ line-height: 32px;
 349+ text-align: center;
 350+ margin-right: 5px;
 351+ font-size: 18px;
 352+ font-weight: bold;
 353+
 354+ /* @embed */
 355+ background-image: url(images/number.png);
 356+ background-position: center;
 357+ background-repeat: no-repeat;
 358+}
 359+
 360+#mw-wikilove-dialog .mw-wikilove-error {
 361+ /* @embed */
 362+ background-image: url(images/alert.png);
 363+ background-position: center left;
 364+ background-repeat: no-repeat;
 365+ color: red;
 366+ font-weight: bold;
 367+ line-height: 32px;
 368+ padding-left: 34px;
 369+ padding-bottom: 3px;
 370+}
 371+
 372+#mw-wikilove-dialog #mw-wikilove-image-preview {
 373+ position: absolute;
 374+ top: 1em;
 375+ right: 0;
 376+ width: 75px;
 377+ height: 68px;
 378+}
 379+
 380+#mw-wikilove-dialog #mw-wikilove-image-preview-content {
 381+ text-align: center;
 382+}
 383+
 384+#mw-wikilove-dialog #mw-wikilove-image-preview-spinner {
 385+ float: none;
 386+ margin-left:auto;
 387+ margin-right:auto;
 388+}
 389+
 390+#mw-wikilove-dialog a {
 391+ color: #0645AD;
 392+}
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.css
___________________________________________________________________
Added: svn:eol-style
1393 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.defaultOptions.js
@@ -0,0 +1,376 @@
 2+//See http://www.mediawiki.org/wiki/Extension:WikiLove for basic documentation on configuration.
 3+//<nowiki>
 4+( function( $ ) {
 5+$.wikiLoveOptions = {
 6+ defaultText: '{| style="background-color: $5; border: 1px solid $6;"\n\
 7+|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[$3|$4]]\n\
 8+|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" | \'\'\'$2\'\'\'\n\
 9+|-\n\
 10+|style="vertical-align: middle; padding: 3px;" | $1 ~~~~\n\
 11+|}',
 12+ defaultBackgroundColor: '#fdffe7',
 13+ defaultBorderColor: '#fceb92',
 14+ defaultImageSize: '100px',
 15+ defaultImage: 'Trophy.png',
 16+
 17+ types: {
 18+ // example type, could be removed later
 19+ 'barnstar': {
 20+ name: mw.msg( 'wikilove-type-barnstars' ), // name of the type (appears in the types menu)
 21+ select: 'Select a barnstar:', // subtype select label
 22+ subtypes: { // some different subtypes
 23+ // note that when not using subtypes you should use these subtype options
 24+ // for the top-level type
 25+ 'original': {
 26+ fields: [ 'message' ], // fields to ask for in form
 27+ option: 'Original Barnstar', // option listed in the select list
 28+ descr: 'This barnstar is given to recognize particularly fine contributions to Wikipedia, to let people know that their hard work is seen and appreciated.', // description
 29+ header: 'A barnstar for you!', // header that appears at the top of the talk page post (optional)
 30+ title: 'The Original Barnstar', // title that appears inside the award box (optional)
 31+ image: 'Original Barnstar Hires.png' // image for the award
 32+ },
 33+ 'admins': {
 34+ fields: [ 'message' ],
 35+ option: 'Admin\'s Barnstar',
 36+ descr: 'The Admin\'s Barnstar may be awarded to an administrator who made a particularly difficult decision or performed a tedious but needed admin task.',
 37+ header: 'A barnstar for you!',
 38+ title: 'The Admin\'s Barnstar',
 39+ image: 'Administrator Barnstar Hires.png'
 40+ },
 41+ 'antivandalism': {
 42+ fields: [ 'message' ],
 43+ option: 'Anti-Vandalism Barnstar',
 44+ descr: 'The Anti-Vandalism Barnstar may be awarded to those who show great contributions to protecting and reverting attacks of vandalism on Wikipedia.',
 45+ header: 'A barnstar for you!',
 46+ title: 'The Anti-Vandalism Barnstar',
 47+ image: 'Barnstar of Reversion Hires.png'
 48+ },
 49+ 'diligence': {
 50+ fields: [ 'message' ],
 51+ option: 'Barnstar of Diligence',
 52+ descr: 'The Barnstar of Diligence may be awarded in recognition of a combination of extraordinary scrutiny, precision and community service.',
 53+ header: 'A barnstar for you!',
 54+ title: 'The Barnstar of Diligence',
 55+ image: 'Barnstar of Diligence Hires.png'
 56+ },
 57+ 'diplomacy': {
 58+ fields: [ 'message' ],
 59+ option: 'Barnstar of Diplomacy',
 60+ descr: 'The Barnstar of Diplomacy is awarded to users who have helped to resolve, peacefully, conflicts on Wikipedia.',
 61+ header: 'A barnstar for you!',
 62+ title: 'The Barnstar of Diplomacy',
 63+ image: 'Peace Barnstar Hires.png'
 64+ },
 65+ 'goodhumor': {
 66+ fields: [ 'message' ],
 67+ option: 'Barnstar of Good Humor',
 68+ descr: 'The Barnstar of Good Humor may be awarded to Wikipedians who consistently lighten the mood, defuse conflicts, and make Wikipedia a better place to be.',
 69+ header: 'A barnstar for you!',
 70+ title: 'The Barnstar of Good Humor',
 71+ image: 'Barnstar of Humour Hires.png'
 72+ },
 73+ 'brilliant': {
 74+ fields: [ 'message' ],
 75+ option: 'Brilliant Idea Barnstar',
 76+ descr: 'The Brilliant Idea Barnstar may be awarded to a user who figures out an elegant solution to a particularly difficult problem.',
 77+ header: 'A barnstar for you!',
 78+ title: 'The Brilliant Idea Barnstar',
 79+ image: 'Brilliant Idea Barnstar Hires.png'
 80+ },
 81+ 'citation': {
 82+ fields: [ 'message' ],
 83+ option: 'Citation Barnstar',
 84+ descr: 'The Citation Barnstar is awarded to users who provide references and in-line citations to previously unsourced articles.',
 85+ header: 'A barnstar for you!',
 86+ title: 'The Citation Barnstar',
 87+ image: 'Citation Barnstar Hires.png'
 88+ },
 89+ 'civility': {
 90+ fields: [ 'message' ],
 91+ option: 'Civility Barnstar',
 92+ descr: 'The Civility Barnstar may be awarded to any user who excels at maintaining civility in the midst of contentious situations.',
 93+ header: 'A barnstar for you!',
 94+ title: 'The Civility Barnstar',
 95+ image: 'Civility Barnstar Hires.png'
 96+ },
 97+ 'copyeditor': {
 98+ fields: [ 'message' ],
 99+ option: 'Copyeditor\'s Barnstar',
 100+ descr: 'The Copyeditor\'s Barnstar is awarded for excellence in correcting spelling, grammar, punctuation, and style issues.',
 101+ header: 'A barnstar for you!',
 102+ title: 'The Copyeditor\'s Barnstar',
 103+ image: 'Copyeditor Barnstar Hires.png'
 104+ },
 105+ 'defender': {
 106+ fields: [ 'message' ],
 107+ option: 'Defender of the Wiki Barnstar',
 108+ descr: 'The Defender of the Wiki may be awarded to those who have gone above and beyond to prevent Wikipedia from being used for fraudulent purposes.',
 109+ header: 'A barnstar for you!',
 110+ title: 'The Defender of the Wiki Barnstar',
 111+ image: 'WikiDefender Barnstar Hires.png'
 112+ },
 113+ 'editors': {
 114+ fields: [ 'message' ],
 115+ option: 'Editor\'s Barnstar',
 116+ descr: 'The Editor\'s Barnstar is awarded to individuals who display particularly fine decisions in general editing.',
 117+ header: 'A barnstar for you!',
 118+ title: 'The Editor\'s Barnstar',
 119+ image: 'Editors Barnstar Hires.png'
 120+ },
 121+ 'designers': {
 122+ fields: [ 'message' ],
 123+ option: 'Graphic Designer\'s Barnstar',
 124+ descr: 'The Graphic Designer\'s Barnstar may be awarded to those who work tirelessly to provide Wikipedia with free, high-quality graphics.',
 125+ header: 'A barnstar for you!',
 126+ title: 'The Graphic Designer\'s Barnstar',
 127+ image: 'Graphic Designer Barnstar Hires.png'
 128+ },
 129+ 'half': {
 130+ fields: [ 'message' ],
 131+ option: 'Half Barnstar',
 132+ descr: 'The Half Barnstar is awarded for excellence in cooperation, especially for productive editing with someone who holds an opposing viewpoint.',
 133+ header: 'A barnstar for you!',
 134+ title: 'The Half Barnstar',
 135+ image: 'Halfstar Hires.png',
 136+ imageSize: '60px'
 137+ },
 138+ 'minor': {
 139+ fields: [ 'message' ],
 140+ option: 'Minor Barnstar',
 141+ descr: 'Minor edits are often overlooked, but are essential contributions to Wikipedia. The Minor Barnstar is awarded for making minor edits of the utmost quality.',
 142+ header: 'A barnstar for you!',
 143+ title: 'The Minor barnstar',
 144+ image: 'Minor Barnstar Hires.png'
 145+ },
 146+ 'antispam': {
 147+ fields: [ 'message' ],
 148+ option: 'No Spam Barnstar',
 149+ descr: 'The Anti-Spam Barnstar is awarded to users who do an exceptional job fighting against spam on Wikipedia.',
 150+ header: 'A barnstar for you!',
 151+ title: 'The No Spam Barnstar',
 152+ image: 'No Spam Barnstar Hires.png'
 153+ },
 154+ 'photographers': {
 155+ fields: [ 'message' ],
 156+ option: 'Photographer\'s Barnstar',
 157+ descr: 'The Photographer\'s Barnstar is awarded to those individuals who tirelessly improve the Wikipedia with their photographic skills and contributions.',
 158+ header: 'A barnstar for you!',
 159+ title: 'The Photographer\'s Barnstar',
 160+ image: 'Camera Barnstar Hires.png'
 161+ },
 162+ 'kindness': {
 163+ fields: [ 'message' ],
 164+ option: 'Random Acts of Kindness Barnstar',
 165+ descr: 'The Random Acts of Kindness Barnstar may be awarded to those that show a pattern of going the extra mile to be nice, without being asked.',
 166+ header: 'A barnstar for you!',
 167+ title: 'The Random Acts of Kindness Barnstar',
 168+ image: 'Kindness Barnstar Hires.png'
 169+ },
 170+ 'reallife': {
 171+ fields: [ 'message' ],
 172+ option: 'Real Life Barnstar',
 173+ descr: 'The Real Life Barnstar is awarded to editors who make contributions both online and offline, by organizing wiki-related real-life events.',
 174+ header: 'A barnstar for you!',
 175+ title: 'The Real Life Barnstar',
 176+ image: 'Real Life Barnstar.jpg'
 177+ },
 178+ 'resilient': {
 179+ fields: [ 'message' ],
 180+ option: 'Resilient Barnstar',
 181+ descr: 'The Resilient Barnstar may be given to any editor who learns and improves from criticisms, never letting mistakes impede their growth as a Wikipedian.',
 182+ header: 'A barnstar for you!',
 183+ title: 'The Resilient Barnstar',
 184+ image: 'Resilient Barnstar Hires.png'
 185+ },
 186+ 'rosetta': {
 187+ fields: [ 'message' ],
 188+ option: 'Rosetta Barnstar',
 189+ descr: 'The Rosetta Barnstar may be given to any editor who exhibits outstanding translation efforts on Wikipedia.',
 190+ header: 'A barnstar for you!',
 191+ title: 'The Rosetta Barnstar',
 192+ image: 'Rosetta Barnstar Hires.png'
 193+ },
 194+ 'special': {
 195+ fields: [ 'message' ],
 196+ option: 'Special Barnstar',
 197+ descr: 'The Special Barnstar may be awarded to a user as a gesture of appreciation when there is no other barnstar which would be appropriate.',
 198+ header: 'A barnstar for you!',
 199+ title: 'The Special Barnstar',
 200+ image: 'Special Barnstar Hires.png'
 201+ },
 202+ 'surreal': {
 203+ fields: [ 'message' ],
 204+ option: 'Surreal Barnstar',
 205+ descr: 'The Surreal Barnstar may be awarded to any Wikipedian who adds "special flavor" to the community by acting as a sort of wildcard.',
 206+ header: 'A barnstar for you!',
 207+ title: 'The Surreal Barnstar',
 208+ image: 'Surreal Barnstar Hires.png'
 209+ },
 210+ 'teamwork': {
 211+ fields: [ 'message' ],
 212+ option: 'Teamwork Barnstar',
 213+ descr: 'The Teamwork Barnstar may be awarded when several editors work together to improve an article.',
 214+ header: 'A barnstar for you!',
 215+ title: 'The Teamwork Barnstar',
 216+ image: 'Team Barnstar Hires.png'
 217+ },
 218+ 'technical': {
 219+ fields: [ 'message' ],
 220+ option: 'Technical Barnstar',
 221+ descr: 'The Technical Barnstar may be awarded to anyone who has enhanced Wikipedia through their technical work (programming, bot building, link repair, etc.).',
 222+ header: 'A barnstar for you!',
 223+ title: 'The Technical Barnstar',
 224+ image: 'Vitruvian Barnstar Hires.png'
 225+ },
 226+ 'tireless': {
 227+ fields: [ 'message' ],
 228+ option: 'Tireless Contributor Barnstar',
 229+ descr: 'The Tireless Contributor Barnstar is awarded to especially tireless Wikipedians who contribute an especially large body of work without sacrificing quality.',
 230+ header: 'A barnstar for you!',
 231+ title: 'The Tireless Contributor Barnstar',
 232+ image: 'Tireless Contributor Barnstar Hires.gif'
 233+ },
 234+ 'writers': {
 235+ fields: [ 'message' ],
 236+ option: 'Writer\'s Barnstar',
 237+ descr: 'The Writer\'s Barnstar may be awarded to any user who has written a large number of articles or has contributed a large number of edits.',
 238+ header: 'A barnstar for you!',
 239+ title: 'The Writer\'s Barnstar',
 240+ image: 'Writers Barnstar Hires.png'
 241+ }
 242+ },
 243+ icon: mw.config.get( 'wgExtensionAssetsPath' ) + '/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-barnstar.png' // icon for left-side menu
 244+ },
 245+ 'food': {
 246+ name: mw.msg( 'wikilove-type-food' ), // name of the type (appears in the types menu)
 247+ select: 'Select food or drink item:', // subtype select label
 248+ text: '{| style="background-color: $5; border: 1px solid $6;"\n\
 249+|style="vertical-align: middle; padding: 5px;" | [[$3|$4]]\n\
 250+|style="vertical-align: middle; padding: 3px;" | $1 ~~~~\n\
 251+|}', // custom text
 252+ subtypes: { // some different subtypes
 253+ // note that when not using subtypes you should use these subtype options
 254+ // for the top-level type
 255+ 'baklava': {
 256+ fields: [ 'header', 'message' ], // fields to ask for in form
 257+ option: 'Baklava', // option listed in the select list
 258+ descr: 'Baklava is a rich, sweet pastry made of layers of filo pastry filled with chopped nuts and sweetened with syrup or honey.',
 259+ header: 'Some baklava for you!', // header that appears at the top of the talk page post (optional)
 260+ image: 'Baklava - Turkish special, 80-ply.JPEG', // image for the award
 261+ imageSize: '135px' // size to display image
 262+ },
 263+ 'beer': {
 264+ fields: [ 'header', 'message' ],
 265+ option: 'Beer',
 266+ descr: 'Beer is the world\'s most widely consumed and probably oldest alcoholic beverage. It is the third most popular drink after water and tea.',
 267+ header: 'A beer for you!',
 268+ image: 'Export hell seidel steiner.png',
 269+ imageSize: '70px'
 270+ },
 271+ 'brownie': {
 272+ fields: [ 'header', 'message' ],
 273+ option: 'Brownie',
 274+ descr: 'A brownie is a flat, baked treat made of dense, rich chocolate cake. They are usually served as squares or bars.',
 275+ header: 'A brownie for you!',
 276+ image: 'Brownie transparent.png',
 277+ imageSize: '120px'
 278+ },
 279+ 'bubble tea': {
 280+ fields: [ 'header', 'message' ],
 281+ option: 'Bubble tea',
 282+ descr: 'Bubble tea is a tea or juice beverage containing small chewy balls made of tapioca starch or jelly. First invented in Taiwan, it is now popular in many areas of the world.',
 283+ header: 'Some bubble tea for you!',
 284+ image: 'Bubble_Tea.png',
 285+ imageSize: '65px'
 286+ },
 287+ 'cheeseburger': {
 288+ fields: [ 'header', 'message' ],
 289+ option: 'Cheeseburger',
 290+ descr: 'A staple of diners and fast-food restaurants, cheeseburgers were first popularized in the United States during the 1920s and 30s.',
 291+ header: 'A cheeseburger for you!',
 292+ image: 'Cheeseburger.png',
 293+ imageSize: '120px'
 294+ },
 295+ 'cookie': {
 296+ fields: [ 'header', 'message' ],
 297+ option: 'Cookie',
 298+ descr: 'Cookies (known as biscuits in the UK) are small baked treats that come in a wide array of flavors, shapes, and sizes.',
 299+ header: 'A cookie for you!',
 300+ image: 'Choco_chip_cookie.png',
 301+ imageSize: '120px'
 302+ },
 303+ 'coffee': {
 304+ fields: [ 'header', 'message' ],
 305+ option: 'Cup of coffee',
 306+ descr: 'Appreciated the world over, coffee is known for its energizing effect on people.',
 307+ header: 'A cup of coffee for you!',
 308+ image: 'A small cup of coffee.JPG',
 309+ imageSize: '120px'
 310+ },
 311+ 'tea': {
 312+ fields: [ 'header', 'message' ],
 313+ option: 'Cup of tea',
 314+ descr: 'After water, tea is the most widely consumed beverage in the world. It can be enjoyed hot or cold, with milk or sugar.',
 315+ header: 'A cup of tea for you!',
 316+ image: 'Meissen-teacup pinkrose01.jpg',
 317+ imageSize: '120px'
 318+ },
 319+ 'cupcake': {
 320+ fields: [ 'header', 'message' ],
 321+ option: 'Cupcake',
 322+ descr: 'A cupcake is a small cake designed to serve one person. They are often served with frosting and sprinkles on top.',
 323+ header: 'A cupcake for you!',
 324+ image: 'Choco-Nut Bake with Meringue Top cropped.jpg',
 325+ imageSize: '120px'
 326+ },
 327+ 'pie': {
 328+ fields: [ 'header', 'message' ],
 329+ option: 'Pie',
 330+ descr: 'Pies can be filled with a wide variety of sweet or savory ingredients. Popular varieties include apple, cherry, peach, chocolate, and pecan.',
 331+ header: 'A pie for you!',
 332+ image: 'A very beautiful Nectarine Pie.jpg',
 333+ imageSize: '120px'
 334+ },
 335+ 'strawberries': {
 336+ fields: [ 'header', 'message' ],
 337+ option: 'Strawberries',
 338+ descr: 'The strawberry fruit (which is not actually a berry) is widely appreciated for its characteristic aroma, bright red color, juicy texture, and sweetness.',
 339+ header: 'A bowl of strawberries for you!',
 340+ image: 'Erdbeerteller01.jpg',
 341+ imageSize: '120px'
 342+ },
 343+ 'stroopwafels': {
 344+ fields: [ 'header', 'message' ],
 345+ option: 'Stroopwafels',
 346+ descr: 'A stroopwafel is a Dutch snack made from two thin layers of baked batter with a caramel-like syrup filling in the middle.',
 347+ header: 'Some stroopwafels for you!',
 348+ image: 'Gaufre biscuit.jpg',
 349+ imageSize: '135px'
 350+ }
 351+ },
 352+ icon: mw.config.get( 'wgExtensionAssetsPath' ) + '/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-food.png'
 353+ },
 354+ 'kitten': {
 355+ name: mw.msg( 'wikilove-type-kittens' ),
 356+ fields: [ 'header', 'message' ],
 357+ header: 'A kitten for you!',
 358+ text: '[[$3|left|150px]]\n$1\n\n~~~~\n<br style="clear: both"/>', // $3 is the image filename
 359+ gallery: {
 360+ imageList: [ 'Cucciolo gatto Bibo.jpg', 'Kitten (06) by Ron.jpg', 'Kitten-stare.jpg', 'Red Kitten 01.jpg', 'Kitten in a helmet.jpg', 'Cute grey kitten.jpg' ],
 361+ width: 145,
 362+ height: 150,
 363+ number: 3
 364+ },
 365+ icon: mw.config.get( 'wgExtensionAssetsPath' ) + '/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-kitten.png'
 366+ },
 367+ // default type, nice to leave this one in place when adding other types
 368+ 'makeyourown': {
 369+ name: mw.msg( 'wikilove-type-makeyourown' ),
 370+ fields: [ 'header', 'title', 'image', 'message' ],
 371+ icon: mw.config.get( 'wgExtensionAssetsPath' ) + '/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-create.png'
 372+ }
 373+ }
 374+};
 375+
 376+} )( jQuery );
 377+//</nowiki>
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.defaultOptions.js
___________________________________________________________________
Added: svn:eol-style
1378 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.init.js
@@ -0,0 +1 @@
 2+mw.loader.using( 'ext.wikiLove.local', jQuery.wikiLove.init );
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.init.js
___________________________________________________________________
Added: svn:eol-style
13 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-selected-left-cap.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-selected-left-cap.png
___________________________________________________________________
Added: svn:mime-type
24 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/spinner.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/spinner.gif
___________________________________________________________________
Added: svn:mime-type
35 + image/gif
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-hover.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-hover.png
___________________________________________________________________
Added: svn:mime-type
46 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/heart-icons-blue.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/heart-icons-blue.png
___________________________________________________________________
Added: svn:mime-type
57 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-selected.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-selected.png
___________________________________________________________________
Added: svn:mime-type
68 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/alert.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/alert.png
___________________________________________________________________
Added: svn:mime-type
79 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-left-cap.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-left-cap.png
___________________________________________________________________
Added: svn:mime-type
810 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/select-bg-sprite.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/select-bg-sprite.png
___________________________________________________________________
Added: svn:mime-type
911 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-hover-right-cap.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-hover-right-cap.png
___________________________________________________________________
Added: svn:mime-type
1012 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box.png
___________________________________________________________________
Added: svn:mime-type
1113 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-selected-right-cap.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-selected-right-cap.png
___________________________________________________________________
Added: svn:mime-type
1214 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/get-started-ltr.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/get-started-ltr.png
___________________________________________________________________
Added: svn:mime-type
1315 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/get-started-rtl.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/get-started-rtl.png
___________________________________________________________________
Added: svn:mime-type
1416 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/select-sprite.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/select-sprite.png
___________________________________________________________________
Added: svn:mime-type
1517 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/heart-icons-red.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/heart-icons-red.png
___________________________________________________________________
Added: svn:mime-type
1618 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/heart-icons-black.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/heart-icons-black.png
___________________________________________________________________
Added: svn:mime-type
1719 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-create.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-create.png
___________________________________________________________________
Added: svn:mime-type
1820 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-food.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-food.png
___________________________________________________________________
Added: svn:mime-type
1921 + application/octet-stream
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-cookie.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-cookie.png
___________________________________________________________________
Added: svn:mime-type
2022 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-wikiproject.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-wikiproject.png
___________________________________________________________________
Added: svn:mime-type
2123 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-welcome.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-welcome.png
___________________________________________________________________
Added: svn:mime-type
2224 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-barnstar.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-barnstar.png
___________________________________________________________________
Added: svn:mime-type
2325 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-beer.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-beer.png
___________________________________________________________________
Added: svn:mime-type
2426 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-kitten.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icons/wikilove-icon-kitten.png
___________________________________________________________________
Added: svn:mime-type
2527 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-hover-left-cap.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-hover-left-cap.png
___________________________________________________________________
Added: svn:mime-type
2628 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/number.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/number.png
___________________________________________________________________
Added: svn:mime-type
2729 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/tab-break.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/tab-break.png
___________________________________________________________________
Added: svn:mime-type
2830 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-right-cap.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/images/icon-box-right-cap.png
___________________________________________________________________
Added: svn:mime-type
2931 + image/png
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.icon.css
@@ -0,0 +1,46 @@
 2+/* include fix from r87101 here for older versions; these three blocks can become deprecated later */
 3+div.vectorTabs span {
 4+ display: inline-block;
 5+ /* @embed */
 6+ background-image: url(images/tab-break.png);
 7+ background-position: bottom right;
 8+ background-repeat: no-repeat;
 9+}
 10+
 11+div.vectorTabs li a {
 12+ background-image: none;
 13+}
 14+
 15+div.vectorTabs li#ca-wikilove {
 16+ line-height: 1.4em; /* account for scripts with tall ascenders */
 17+}
 18+
 19+#ca-unwatch.icon,
 20+#ca-watch.icon {
 21+ margin-right: 0px;
 22+}
 23+
 24+/* icon style */
 25+#ca-wikilove.icon a {
 26+ margin: 0;
 27+ padding: 0;
 28+ outline: none;
 29+ display: block;
 30+ width: 27px;
 31+ /* This hides the text but shows the background image */
 32+ padding-top: 3.1em;
 33+ margin-top: 0;
 34+ /* Only applied in IE6 */
 35+ margin-top: -0.8em !ie;
 36+ height: 0;
 37+ overflow: hidden;
 38+ /* @embed */
 39+ background-image: url(images/heart-icons-red.png);
 40+}
 41+#ca-wikilove.icon a {
 42+ background-position: 5px 60%;
 43+}
 44+#ca-wikilove.icon a:hover,
 45+#ca-wikilove.icon a:focus {
 46+ background-position: -19px 60%;
 47+}
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.icon.css
___________________________________________________________________
Added: svn:eol-style
148 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.core.js
@@ -0,0 +1,915 @@
 2+( function( $ ) {
 3+
 4+var options = {}, // options modifiable by the user
 5+ $dialog = null, // dialog jQuery object
 6+ currentTypeId = null, // id of the currently selected type (e.g. 'barnstar' or 'makeyourown')
 7+ currentSubtypeId = null, // id of the currently selected subtype (e.g. 'original' or 'special')
 8+ currentTypeOrSubtype = null, // content of the current (sub)type (i.e. an object with title, descr, text, etc.)
 9+ rememberData = null, // input data to remember when switching types or subtypes
 10+ emailable = false,
 11+ gallery = {};
 12+
 13+$.wikiLove = {
 14+ /*
 15+ * Opens the dialog and builds it if necessary.
 16+ */
 17+ openDialog: function() {
 18+ if ( $dialog === null ) {
 19+ // Test to see if the 'E-mail this user' link exists
 20+ emailable = $( '#t-emailuser' ).length ? true : false;
 21+
 22+ // Build a type list like this:
 23+ var $typeList = $( '<ul id="mw-wikilove-types"></ul>' ),
 24+ type;
 25+ for ( var typeId in options.types ) {
 26+ type = options.types[typeId];
 27+ if ( !$.isPlainObject( type ) ) {
 28+ continue;
 29+ }
 30+ var $button = $( '<a href="#"></a>' ),
 31+ $buttonInside = $( '<div class="mw-wikilove-inside"></div>' );
 32+
 33+ if ( typeof type.icon == 'string' ) {
 34+ $buttonInside.append( '<div class="mw-wikilove-icon-box"><img src="'
 35+ + mw.html.escape( type.icon ) + '"/></div>' );
 36+ } else {
 37+ $buttonInside.addClass( 'mw-wikilove-no-icon' );
 38+ }
 39+
 40+ $buttonInside.append( '<div class="mw-wikilove-link-text">' + mw.html.escape( type.name ) + '</div>' );
 41+
 42+ $button.data( 'typeId', typeId );
 43+ $button.append( '<div class="mw-wikilove-l-cap"></div>');
 44+ $button.append( $buttonInside );
 45+ $button.append( '<div class="mw-wikilove-r-cap"></div>');
 46+ $typeList.append( $( '<li tabindex="0"></li>' ).append( $button ) );
 47+ }
 48+
 49+ $dialog = $( '\
 50+<div id="mw-wikilove-dialog">\
 51+<div id="mw-wikilove-select-type">\
 52+ <span class="mw-wikilove-number">1</span>\
 53+ <h3><html:msg key="wikilove-select-type"/></h3>\
 54+ <ul id="mw-wikilove-types"></ul>\
 55+</div>\
 56+<div id="mw-wikilove-get-started">\
 57+ <h2><html:msg key="wikilove-get-started-header"/></h2>\
 58+ <ol>\
 59+ <li><html:msg key="wikilove-get-started-list-1"/></li>\
 60+ <li><html:msg key="wikilove-get-started-list-2"/></li>\
 61+ <li><html:msg key="wikilove-get-started-list-3"/></li>\
 62+ </ol>\
 63+ <p><a target="_blank" href="http://www.mediawiki.org/wiki/WikiLove">\
 64+ <html:msg key="wikilove-what-is-this"/>\
 65+ </a></p>\
 66+ <p id="mw-wikilove-anon-warning"><strong><html:msg key="wikilove-anon-warning"/></strong></p>\
 67+</div>\
 68+<div id="mw-wikilove-add-details">\
 69+ <span class="mw-wikilove-number">2</span>\
 70+ <h3><html:msg key="wikilove-add-details"/></h3>\
 71+ <form id="mw-wikilove-preview-form">\
 72+ <div id="mw-wikilove-image-preview">\
 73+ <div id="mw-wikilove-image-preview-spinner" class="mw-wikilove-spinner"></div>\
 74+ <div id="mw-wikilove-image-preview-content"></div>\
 75+ </div>\
 76+ <label for="mw-wikilove-subtype" id="mw-wikilove-subtype-label"></label>\
 77+ <select id="mw-wikilove-subtype"></select>\
 78+ <div id="mw-wikilove-subtype-description"></div>\
 79+ <label id="mw-wikilove-gallery-label"><html:msg key="wikilove-select-image"/></label>\
 80+ <div id="mw-wikilove-gallery">\
 81+ <div id="mw-wikilove-gallery-error">\
 82+ <html:msg key="wikilove-err-gallery"/>\
 83+ <a href="#" id="mw-wikilove-gallery-error-again"><html:msg key="wikilove-err-gallery-again"/></a>\
 84+ </div>\
 85+ <div id="mw-wikilove-gallery-spinner" class="mw-wikilove-spinner"></div>\
 86+ <div id="mw-wikilove-gallery-content"></div>\
 87+ </div>\
 88+ <label for="mw-wikilove-header" id="mw-wikilove-header-label"><html:msg key="wikilove-header"/></label>\
 89+ <input type="text" class="text" id="mw-wikilove-header"/>\
 90+ <label for="mw-wikilove-title" id="mw-wikilove-title-label"><html:msg key="wikilove-title"/></label>\
 91+ <input type="text" class="text" id="mw-wikilove-title"/>\
 92+ <label for="mw-wikilove-image" id="mw-wikilove-image-label"><html:msg key="wikilove-image"/></label>\
 93+ <span class="mw-wikilove-note" id="mw-wikilove-image-note"><html:msg key="wikilove-image-example"/></span>\
 94+ <input type="text" class="text" id="mw-wikilove-image"/>\
 95+ <div id="mw-wikilove-commons-text">\
 96+ ' + mw.msg( 'wikilove-commons-text', '<a href="' + mw.msg( 'wikilove-commons-url' ) + '" target="_blank">' + mw.msg( 'wikilove-commons-link' ) +'</a>' ) + '\
 97+ </div>\
 98+ <label for="mw-wikilove-message" id="mw-wikilove-message-label"><html:msg key="wikilove-enter-message"/></label>\
 99+ <span class="mw-wikilove-note" id="mw-wikilove-message-note"><html:msg key="wikilove-omit-sig"/></span>\
 100+ <textarea id="mw-wikilove-message"></textarea>\
 101+ <div id="mw-wikilove-notify">\
 102+ <input type="checkbox" id="mw-wikilove-notify-checkbox" name="notify"/>\
 103+ <label for="mw-wikilove-notify-checkbox"><html:msg key="wikilove-notify"/></label>\
 104+ </div>\
 105+ <button class="submit" id="mw-wikilove-button-preview" type="submit"></button>\
 106+ <div id="mw-wikilove-preview-spinner" class="mw-wikilove-spinner"></div>\
 107+ </form>\
 108+</div>\
 109+<div id="mw-wikilove-preview">\
 110+ <span class="mw-wikilove-number">3</span>\
 111+ <h3><html:msg key="wikilove-preview"/></h3>\
 112+ <div id="mw-wikilove-preview-area"></div>\
 113+ <form id="mw-wikilove-send-form">\
 114+ <button class="submit" id="mw-wikilove-button-send" type="submit"></button>\
 115+ <div id="mw-wikilove-send-spinner" class="mw-wikilove-spinner"></div>\
 116+ </form>\
 117+</div>\
 118+</div>' );
 119+ $dialog.localize();
 120+
 121+ $dialog.dialog({
 122+ width: 800,
 123+ position: ['center', 80],
 124+ autoOpen: false,
 125+ title: mw.msg( 'wikilove-dialog-title' ),
 126+ modal: true,
 127+ resizable: false
 128+ });
 129+
 130+ if ( mw.config.get( 'skin' ) == 'vector' ) {
 131+ $( '#mw-wikilove-button-preview' ).button( {
 132+ label: mw.msg( 'wikilove-button-preview' ),
 133+ icons: {
 134+ primary:'ui-icon-search'
 135+ }
 136+ } );
 137+ } else {
 138+ $( '#mw-wikilove-button-preview' ).button( {
 139+ label: mw.msg( 'wikilove-button-preview' )
 140+ } );
 141+ }
 142+ $( '#mw-wikilove-button-send' ).button( {
 143+ label: mw.msg( 'wikilove-button-send' )
 144+ } );
 145+ $( '#mw-wikilove-add-details' ).hide();
 146+ $( '#mw-wikilove-preview' ).hide();
 147+ $( '#mw-wikilove-types' ).replaceWith( $typeList );
 148+ $( '#mw-wikilove-gallery-error-again' ).click( $.wikiLove.showGallery );
 149+ $( '#mw-wikilove-types a' ).click( $.wikiLove.clickType );
 150+ $( '#mw-wikilove-subtype' ).change( $.wikiLove.changeSubtype );
 151+ $( '#mw-wikilove-preview-form' ).submit( $.wikiLove.validatePreviewForm );
 152+ $( '#mw-wikilove-send-form' ).click( $.wikiLove.submitSend );
 153+ $( '#mw-wikilove-message' ).elastic(); // have the message textarea grow automatically
 154+
 155+ if ( mw.config.get( 'wikilove-anon' ) === 0 ) {
 156+ $( '#mw-wikilove-anon-warning' ).hide();
 157+ }
 158+
 159+ // When the image changes, we want to reset the preview and error message.
 160+ $( '#mw-wikilove-image' ).change( function() {
 161+ $( '#mw-wikilove-dialog' ).find( '.mw-wikilove-error' ).remove();
 162+ $( '#mw-wikilove-preview' ).hide();
 163+ } );
 164+ }
 165+
 166+ $dialog.dialog( 'open' );
 167+ },
 168+
 169+ /*
 170+ * Handler for the left menu. Selects a new type and initialises next section
 171+ * depending on whether or not to show subtypes.
 172+ */
 173+ clickType: function( e ) {
 174+ e.preventDefault();
 175+ $.wikiLove.rememberInputData(); // remember previously entered data
 176+ $( '#mw-wikilove-get-started' ).hide(); // always hide the get started section
 177+
 178+ var newTypeId = $( this ).data( 'typeId' );
 179+ if( currentTypeId != newTypeId ) { // only do stuff when a different type is selected
 180+ currentTypeId = newTypeId;
 181+ currentSubtypeId = null; // reset the subtype id
 182+
 183+ $( '#mw-wikilove-types' ).find( 'a' ).removeClass( 'selected' );
 184+ $( this ).addClass( 'selected' ); // highlight the new type in the menu
 185+
 186+ if( typeof options.types[currentTypeId].subtypes == 'object' ) {
 187+ // we're dealing with subtypes here
 188+ currentTypeOrSubtype = null; // reset the (sub)type object until a subtype is selected
 189+ $( '#mw-wikilove-subtype' ).html( '' ); // clear the subtype menu
 190+
 191+ for( var subtypeId in options.types[currentTypeId].subtypes ) {
 192+ // add all the subtypes to the menu while setting their subtype ids in jQuery data
 193+ var subtype = options.types[currentTypeId].subtypes[subtypeId];
 194+ if ( typeof subtype.option != 'undefined' ) {
 195+ $( '#mw-wikilove-subtype' ).append(
 196+ $( '<option></option>' ).text( subtype.option ).data( 'subtypeId', subtypeId )
 197+ );
 198+ }
 199+ }
 200+ $( '#mw-wikilove-subtype' ).show();
 201+
 202+ // change and show the subtype label depending on the type
 203+ $( '#mw-wikilove-subtype-label' ).text( options.types[currentTypeId].select || mw.msg( 'wikilove-select-type' ) );
 204+ $( '#mw-wikilove-subtype-label' ).show();
 205+ $.wikiLove.changeSubtype(); // update controls depending on the currently selected (i.e. first) subtype
 206+ }
 207+ else {
 208+ // there are no subtypes, just use this type for the current (sub)type
 209+ currentTypeOrSubtype = options.types[currentTypeId];
 210+ $( '#mw-wikilove-subtype' ).hide();
 211+ $( '#mw-wikilove-subtype-label' ).hide();
 212+ $( '#mw-wikilove-image-preview' ).hide();
 213+ $.wikiLove.updateAllDetails(); // update controls depending on this type
 214+ }
 215+
 216+ $( '#mw-wikilove-add-details' ).show();
 217+ $( '#mw-wikilove-preview' ).hide();
 218+ }
 219+ },
 220+
 221+ /*
 222+ * Handler for changing the subtype.
 223+ */
 224+ changeSubtype: function() {
 225+ $.wikiLove.rememberInputData(); // remember previously entered data
 226+
 227+ // find out which subtype is selected
 228+ var newSubtypeId = $( '#mw-wikilove-subtype option:selected' ).first().data( 'subtypeId' );
 229+ if( currentSubtypeId != newSubtypeId ) { // only change stuff when a different subtype is selected
 230+ currentSubtypeId = newSubtypeId;
 231+ currentTypeOrSubtype = options.types[currentTypeId]
 232+ .subtypes[currentSubtypeId];
 233+ $( '#mw-wikilove-subtype-description' ).html( currentTypeOrSubtype.descr );
 234+
 235+ if( currentTypeOrSubtype.gallery === undefined && currentTypeOrSubtype.image ) { // not a gallery
 236+ $.wikiLove.showImagePreview();
 237+ } else {
 238+ $( '#mw-wikilove-image-preview' ).hide();
 239+ }
 240+
 241+ $.wikiLove.updateAllDetails();
 242+ $( '#mw-wikilove-preview' ).hide();
 243+ }
 244+ },
 245+
 246+ /*
 247+ * Remember data the user entered if it is different from the default.
 248+ */
 249+ rememberInputData: function() {
 250+ if ( rememberData === null) {
 251+ rememberData = {
 252+ header : '',
 253+ title : '',
 254+ message: '',
 255+ image : ''
 256+ };
 257+ }
 258+ if ( currentTypeOrSubtype !== null ) {
 259+ if ( $.inArray( 'header', currentTypeOrSubtype.fields ) >= 0 &&
 260+ ( !currentTypeOrSubtype.header || $( '#mw-wikilove-header' ).val() != currentTypeOrSubtype.header ) )
 261+ {
 262+ rememberData.header = $( '#mw-wikilove-header' ).val();
 263+ }
 264+ if ( $.inArray( 'title', currentTypeOrSubtype.fields ) >= 0 &&
 265+ ( !currentTypeOrSubtype.title || $( '#mw-wikilove-title' ).val() != currentTypeOrSubtype.title ) )
 266+ {
 267+ rememberData.title = $( '#mw-wikilove-title' ).val();
 268+ }
 269+ if ( $.inArray( 'message', currentTypeOrSubtype.fields ) >= 0 &&
 270+ ( !currentTypeOrSubtype.message || $( '#mw-wikilove-message' ).val() != currentTypeOrSubtype.message ) )
 271+ {
 272+ rememberData.message = $( '#mw-wikilove-message' ).val();
 273+ }
 274+ if ( currentTypeOrSubtype.gallery === undefined && $.inArray( 'image', currentTypeOrSubtype.fields ) >= 0 &&
 275+ ( !currentTypeOrSubtype.image || $( '#mw-wikilove-image' ).val() != currentTypeOrSubtype.image ) )
 276+ {
 277+ rememberData.image = $( '#mw-wikilove-image' ).val();
 278+ }
 279+ }
 280+ },
 281+
 282+ /*
 283+ * Show a preview of the image for a subtype.
 284+ */
 285+ showImagePreview: function() {
 286+ $( '#mw-wikilove-image-preview' ).show();
 287+ $( '#mw-wikilove-image-preview-content' ).html( '' );
 288+ $( '#mw-wikilove-image-preview-spinner' ).fadeIn( 200 );
 289+ var title = $.wikiLove.normalizeFilename( currentTypeOrSubtype.image );
 290+ var loadingType = currentTypeOrSubtype;
 291+ $.ajax({
 292+ url: mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/api.php?',
 293+ data: {
 294+ 'action' : 'query',
 295+ 'format' : 'json',
 296+ 'prop' : 'imageinfo',
 297+ 'iiprop' : 'mime|url',
 298+ 'titles' : title,
 299+ 'iiurlwidth' : 75,
 300+ 'iiurlheight' : 68
 301+ },
 302+ dataType: 'json',
 303+ type: 'POST',
 304+ success: function( data ) {
 305+ if ( !data || !data.query || !data.query.pages ) {
 306+ $( '#mw-wikilove-image-preview-spinner' ).fadeOut( 200 );
 307+ return;
 308+ }
 309+ if ( loadingType != currentTypeOrSubtype ) {
 310+ return;
 311+ }
 312+ $.each( data.query.pages, function( id, page ) {
 313+ if ( page.imageinfo && page.imageinfo.length ) {
 314+ // build an image tag with the correct url
 315+ var $img = $( '<img/>' )
 316+ .attr( 'src', page.imageinfo[0].thumburl )
 317+ .hide()
 318+ .load( function() {
 319+ $( '#mw-wikilove-image-preview-spinner' ).hide();
 320+ $( this ).css( 'display', 'inline-block' );
 321+ } );
 322+ $( '#mw-wikilove-image-preview-content' ).append( $img );
 323+ }
 324+ });
 325+ },
 326+ error: function() {
 327+ $( '#mw-wikilove-image-preview-spinner' ).fadeOut( 200 );
 328+ }
 329+ });
 330+ },
 331+
 332+ /*
 333+ * Called when type or subtype changes, updates controls.
 334+ */
 335+ updateAllDetails: function() {
 336+ $( '#mw-wikilove-dialog' ).find( '.mw-wikilove-error' ).remove();
 337+
 338+ // use remembered data for fields that can be set by the user
 339+ var currentRememberData = {
 340+ 'header' : ( $.inArray( 'header', currentTypeOrSubtype.fields ) >= 0 ? rememberData.header : '' ),
 341+ 'title' : ( $.inArray( 'title', currentTypeOrSubtype.fields ) >= 0 ? rememberData.title : '' ),
 342+ 'message': ( $.inArray( 'message', currentTypeOrSubtype.fields ) >= 0 ? rememberData.message : '' ),
 343+ 'image' : ( $.inArray( 'image', currentTypeOrSubtype.fields ) >= 0 ? rememberData.image : '' )
 344+ };
 345+
 346+ // only show the description if it exists for this type or subtype
 347+ if( typeof currentTypeOrSubtype.descr == 'string' ) {
 348+ $( '#mw-wikilove-subtype-description').show();
 349+ } else {
 350+ $( '#mw-wikilove-subtype-description').hide();
 351+ }
 352+
 353+ // show or hide header label and textbox depending on fields configuration
 354+ $( '#mw-wikilove-header, #mw-wikilove-header-label' )
 355+ .toggle( $.inArray( 'header', currentTypeOrSubtype.fields ) >= 0 );
 356+
 357+ // set the new text for the header textbox
 358+ $( '#mw-wikilove-header' ).val( currentRememberData.header || currentTypeOrSubtype.header || '' );
 359+
 360+ // show or hide title label and textbox depending on fields configuration
 361+ $( '#mw-wikilove-title, #mw-wikilove-title-label')
 362+ .toggle( $.inArray( 'title', currentTypeOrSubtype.fields ) >= 0 );
 363+
 364+ // set the new text for the title textbox
 365+ $( '#mw-wikilove-title' ).val( currentRememberData.title || currentTypeOrSubtype.title || '' );
 366+
 367+ // show or hide image label and textbox depending on fields configuration
 368+ $( '#mw-wikilove-image, #mw-wikilove-image-label, #mw-wikilove-image-note, #mw-wikilove-commons-text' )
 369+ .toggle( $.inArray( 'image', currentTypeOrSubtype.fields ) >= 0 );
 370+
 371+ // set the new text for the image textbox
 372+ $( '#mw-wikilove-image' ).val( currentRememberData.image || currentTypeOrSubtype.image || '' );
 373+
 374+ if( typeof currentTypeOrSubtype.gallery == 'object'
 375+ && $.isArray( currentTypeOrSubtype.gallery.imageList )
 376+ ) {
 377+ $( '#mw-wikilove-gallery, #mw-wikilove-gallery-label' ).show();
 378+ $.wikiLove.showGallery(); // build gallery from array of images
 379+ }
 380+ else {
 381+ $( '#mw-wikilove-gallery, #mw-wikilove-gallery-label' ).hide();
 382+ }
 383+
 384+ // show or hide message label and textbox depending on fields configuration
 385+ $( '#mw-wikilove-message, #mw-wikilove-message-label, #mw-wikilove-message-note' )
 386+ .toggle( $.inArray( 'message', currentTypeOrSubtype.fields ) >= 0 );
 387+
 388+ // set the new text for the message textbox
 389+ $( '#mw-wikilove-message' ).val( currentRememberData.message || currentTypeOrSubtype.message || '' );
 390+
 391+ if( $.inArray( 'notify', currentTypeOrSubtype.fields ) >= 0 && emailable ) {
 392+ $( '#mw-wikilove-notify' ).show();
 393+ } else {
 394+ $( '#mw-wikilove-notify' ).hide();
 395+ $( '#mw-wikilove-notify-checkbox' ).attr('checked', false);
 396+ }
 397+ },
 398+
 399+ /*
 400+ * Handler for clicking the preview button.
 401+ */
 402+ validatePreviewForm: function( e ) {
 403+ e.preventDefault();
 404+ $( '#mw-wikilove-preview' ).hide();
 405+ $( '#mw-wikilove-dialog' ).find( '.mw-wikilove-error' ).remove();
 406+
 407+ // Check for a header if it is required
 408+ if( $.inArray( 'header', currentTypeOrSubtype.fields ) >= 0 && $( '#mw-wikilove-header' ).val().length === 0 ) {
 409+ $.wikiLove.showAddDetailsError( 'wikilove-err-header' ); return false;
 410+ }
 411+
 412+ // Check for a title if it is required, and otherwise use the header text
 413+ if( $.inArray( 'title', currentTypeOrSubtype.fields ) >= 0 && $( '#mw-wikilove-title' ).val().length === 0 ) {
 414+ $( '#mw-wikilove-title' ).val( $( '#mw-wikilove-header' ).val() );
 415+ }
 416+
 417+ if( $.inArray( 'message', currentTypeOrSubtype.fields ) >= 0 ) {
 418+ // Check for a message if it is required
 419+ if ( $( '#mw-wikilove-message' ).val().length <= 0 ) {
 420+ $.wikiLove.showAddDetailsError( 'wikilove-err-msg' ); return false;
 421+ }
 422+ // If there's a signature already in the message, throw an error
 423+ if ( $( '#mw-wikilove-message' ).val().indexOf( '~~~' ) >= 0 ) {
 424+ $.wikiLove.showAddDetailsError( 'wikilove-err-sig' ); return false;
 425+ }
 426+ }
 427+
 428+ // Split image validation depending on whether or not it is a gallery
 429+ if ( typeof currentTypeOrSubtype.gallery == 'undefined' ) { // not a gallery
 430+ if ( $.inArray( 'image', currentTypeOrSubtype.fields ) >= 0 ) { // asks for an image
 431+ if ( $( '#mw-wikilove-image' ).val().length === 0 ) { // no image entered
 432+ // Give them the default image and continue with preview.
 433+ $( '#mw-wikilove-image' ).val( options.defaultImage );
 434+ $.wikiLove.submitPreview();
 435+ } else { // image was entered by user
 436+ // Make sure the image exists
 437+ var imageTitle = $.wikiLove.normalizeFilename( $( '#mw-wikilove-image' ).val() );
 438+ $( '#mw-wikilove-preview-spinner' ).fadeIn( 200 );
 439+
 440+ $.ajax( {
 441+ url: mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/api.php?',
 442+ data: {
 443+ 'action': 'query',
 444+ 'format': 'json',
 445+ 'titles': imageTitle,
 446+ 'prop': 'imageinfo'
 447+ },
 448+ dataType: 'json',
 449+ success: function( data ) {
 450+ // See if image exists locally or through InstantCommons
 451+ if ( !data.query.pages[-1] || data.query.pages[-1].imageinfo) {
 452+ // Image exists
 453+ $.wikiLove.submitPreview();
 454+ $.wikiLove.logCustomImageUse( imageTitle, 1 );
 455+ } else {
 456+ // Image does not exist
 457+ $.wikiLove.showAddDetailsError( 'wikilove-err-image-bad' );
 458+ $.wikiLove.logCustomImageUse( imageTitle, 0 );
 459+ $( '#mw-wikilove-preview-spinner' ).fadeOut( 200 );
 460+ }
 461+ },
 462+ error: function() {
 463+ $.wikiLove.showAddDetailsError( 'wikilove-err-image-api' );
 464+ $( '#mw-wikilove-preview-spinner' ).fadeOut( 200 );
 465+ }
 466+ } );
 467+ }
 468+ } else { // doesn't ask for an image
 469+ $.wikiLove.submitPreview();
 470+ }
 471+ } else { // a gallery
 472+ if ( $( '#mw-wikilove-image' ).val().length === 0 ) { // no image selected
 473+ // Display an error telling them to select an image.
 474+ $.wikiLove.showAddDetailsError( 'wikilove-err-image' ); return false;
 475+ } else { // image was selected
 476+ $.wikiLove.submitPreview();
 477+ }
 478+ }
 479+ },
 480+
 481+ /*
 482+ * After the form is validated, perform preview.
 483+ */
 484+ submitPreview: function() {
 485+ var text = $.wikiLove.prepareMsg( currentTypeOrSubtype.text || options.types[currentTypeId].text || options.defaultText );
 486+ $.wikiLove.doPreview( '==' + $( '#mw-wikilove-header' ).val() + "==\n" + text );
 487+ },
 488+
 489+ showAddDetailsError: function( errmsg ) {
 490+ $( '#mw-wikilove-add-details' ).append( $( '<div class="mw-wikilove-error"></div>' ).text( mw.msg( errmsg ) ) );
 491+ },
 492+
 493+ showPreviewError: function( errmsg ) {
 494+ $( '#mw-wikilove-preview' ).append( $( '<div class="mw-wikilove-error"></div>' ).text( mw.msg( errmsg ) ) );
 495+ },
 496+
 497+ /*
 498+ * Prepares a message or e-mail body by replacing placeholders.
 499+ * $1: message entered by the user
 500+ * $2: title of the item
 501+ * $3: title of the image
 502+ * $4: image size
 503+ * $5: background color
 504+ * $6: border color
 505+ * $7: username of the recipient
 506+ */
 507+ prepareMsg: function( msg ) {
 508+
 509+ msg = msg.replace( '$1', $( '#mw-wikilove-message' ).val() ); // replace the raw message
 510+ msg = msg.replace( '$2', $( '#mw-wikilove-title' ).val() ); // replace the title
 511+ var imageName = $.wikiLove.normalizeFilename( $( '#mw-wikilove-image' ).val() );
 512+ msg = msg.replace( '$3', imageName ); // replace the image
 513+ msg = msg.replace( '$4', currentTypeOrSubtype.imageSize || options.defaultImageSize ); // replace the image size
 514+ msg = msg.replace( '$5', currentTypeOrSubtype.backgroundColor || options.defaultBackgroundColor ); // replace the background color
 515+ msg = msg.replace( '$6', currentTypeOrSubtype.borderColor || options.defaultBorderColor ); // replace the border color
 516+ msg = msg.replace( '$7', '<nowiki>' + mw.config.get( 'wikilove-recipient' ) + '</nowiki>' ); // replace the username we're sending to
 517+
 518+ return msg;
 519+ },
 520+
 521+ /*
 522+ * Normalize a filename.
 523+ * This function will extract a filename from a URL or add a "File:" prefix if there isn't
 524+ * already a media namespace prefix.
 525+ */
 526+ normalizeFilename: function( filename ) {
 527+ // If a URL is given, extract and decode the filename
 528+ var index = filename.lastIndexOf( "/" ) + 1;
 529+ filename = filename.substr( index );
 530+ if ( index > 0 ) filename = decodeURI( filename );
 531+ // Can't use mw.Title in 1.17
 532+ var prefixSplit = filename.split( ':' ),
 533+ // Make sure the we don't fail in case input is like "File.jpg"
 534+ prefix = prefixSplit[1] ? prefixSplit[0] : '',
 535+ normalized = $.trim( prefix ).toLowerCase().replace( /\s/g, '_' );
 536+ // wgNamespaceIds is missing 'file' in 1.17 on non-English wikis
 537+ if ( mw.config.get( 'wgNamespaceIds' )[normalized] !== 6 && normalized !== 'file' ) {
 538+ filename = 'File:' + filename;
 539+ }
 540+ return filename;
 541+ },
 542+
 543+ /*
 544+ * Log each time a user attempts to use a custom image via the Make your own feature.
 545+ */
 546+ logCustomImageUse: function( imageTitle, success ) {
 547+ $.ajax( {
 548+ url: mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/api.php?',
 549+ data: {
 550+ 'action': 'wikiloveimagelog',
 551+ 'image': imageTitle,
 552+ 'success': success,
 553+ 'format': 'json'
 554+ },
 555+ dataType: 'json'
 556+ } );
 557+ },
 558+
 559+ /*
 560+ * Fires AJAX request for previewing wikitext.
 561+ */
 562+ doPreview: function( wikitext ) {
 563+ $( '#mw-wikilove-preview-spinner' ).fadeIn( 200 );
 564+ $.ajax({
 565+ url: mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/api.php?',
 566+ data: {
 567+ 'action': 'parse',
 568+ 'title': mw.config.get( 'wgPageName' ),
 569+ 'format': 'json',
 570+ 'text': wikitext,
 571+ 'prop': 'text',
 572+ 'pst': true
 573+ },
 574+ dataType: 'json',
 575+ type: 'POST',
 576+ success: function( data ) {
 577+ $.wikiLove.showPreview( data.parse.text['*'] );
 578+ $( '#mw-wikilove-preview-spinner' ).fadeOut( 200 );
 579+ },
 580+ error: function() {
 581+ $.wikiLove.showAddDetailsError( 'wikilove-err-preview-api' );
 582+ $( '#mw-wikilove-preview-spinner' ).fadeOut( 200 );
 583+ }
 584+ });
 585+ },
 586+
 587+ /*
 588+ * Callback for the preview function. Sets the preview area with the HTML and fades it in.
 589+ */
 590+ showPreview: function( html ) {
 591+ $( '#mw-wikilove-preview-area' ).html( html );
 592+ $( '#mw-wikilove-preview' ).fadeIn( 200 );
 593+ },
 594+
 595+ /*
 596+ * Handler for the send (final submit) button. Builds the data for the AJAX request.
 597+ * The type sent for statistics is 'typeId-subtypeId' when using subtypes,
 598+ * or simply 'typeId' otherwise.
 599+ */
 600+ submitSend: function( e ) {
 601+ e.preventDefault();
 602+ $( '#mw-wikilove-dialog' ).find( '.mw-wikilove-error' ).remove();
 603+
 604+ // Check for a header if it is required
 605+ if( $.inArray( 'header', currentTypeOrSubtype.fields ) >= 0 && $( '#mw-wikilove-header' ).val().length === 0 ) {
 606+ $.wikiLove.showAddDetailsError( 'wikilove-err-header' ); return false;
 607+ }
 608+
 609+ // Check for a title if it is required, and otherwise use the header text
 610+ if( $.inArray( 'title', currentTypeOrSubtype.fields ) >= 0 && $( '#mw-wikilove-title' ).val().length === 0 ) {
 611+ $( '#mw-wikilove-title' ).val( $( '#mw-wikilove-header' ).val() );
 612+ }
 613+
 614+ if( $.inArray( 'message', currentTypeOrSubtype.fields ) >= 0 ) {
 615+ // If there's a signature already in the message, throw an error
 616+ if ( $( '#mw-wikilove-message' ).val().indexOf( '~~~' ) >= 0 ) {
 617+ $.wikiLove.showAddDetailsError( 'wikilove-err-sig' ); return false;
 618+ }
 619+ }
 620+
 621+ // We don't need to do any image validation here since its not actually possible to click
 622+ // Send WikiLove without having a valid image entered.
 623+
 624+ var submitData = {
 625+ 'header': $( '#mw-wikilove-header' ).val(),
 626+ 'text': $.wikiLove.prepareMsg( currentTypeOrSubtype.text || options.types[currentTypeId].text || options.defaultText ),
 627+ 'message': $( '#mw-wikilove-message' ).val(),
 628+ 'type': currentTypeId
 629+ + (currentSubtypeId !== null ? '-' + currentSubtypeId : '')
 630+ };
 631+ if ( $( '#mw-wikilove-notify-checkbox:checked' ).val() && emailable ) {
 632+ submitData.email = $.wikiLove.prepareMsg( currentTypeOrSubtype.email );
 633+ }
 634+ $.wikiLove.doSend( submitData.header, submitData.text,
 635+ submitData.message, submitData.type, submitData.email );
 636+ },
 637+
 638+ /*
 639+ * Fires the final AJAX request and then redirects to the talk page where the content is added.
 640+ */
 641+ doSend: function( subject, wikitext, message, type, email ) {
 642+ $( '#mw-wikilove-send-spinner' ).fadeIn( 200 );
 643+
 644+ var sendData = {
 645+ action: 'wikilove',
 646+ format: 'json',
 647+ title: mw.config.get( 'wgPageName' ),
 648+ type: type,
 649+ text: wikitext,
 650+ message: message,
 651+ subject: subject,
 652+ token: mw.config.get( 'wikilove-edittoken' ) // after 1.17 this can become mw.user.tokens.get( 'editToken' )
 653+ };
 654+
 655+ if ( email ) {
 656+ sendData.email = email;
 657+ }
 658+
 659+ $.ajax( {
 660+ url: mw.config.get( 'wgScriptPath' ) + '/api.php',
 661+ data: sendData,
 662+ dataType: 'json',
 663+ type: 'POST',
 664+ success: function( data ) {
 665+ $( '#mw-wikilove-send-spinner' ).fadeOut( 200 );
 666+
 667+ if ( data.error !== undefined ) {
 668+ $.wikiLove.showPreviewError( data.error.info );
 669+ return;
 670+ }
 671+
 672+ if ( data.redirect !== undefined ) {
 673+ var targetBaseUrl = mw.util.wikiGetlink( data.redirect.pageName ),
 674+ // currentBaseUrl is the current URL minus the hash fragment
 675+ currentBaseUrl = window.location.href.split("#")[0];
 676+
 677+ // Set window location to user talk page URL + WikiLove anchor hash.
 678+ // Unfortunately, in the most common scenario (starting from the user talk
 679+ // page) this won't reload the page since the browser will simply try to jump
 680+ // to the anchor within the existing page (which doesn't exist). This does,
 681+ // however, prepare us for the subsequent reload, making sure that the user is
 682+ // directed to the WikiLove message instead of just being left at the top of
 683+ // the page. In the case that we are starting from a different page, this sends
 684+ // the user immediately to the new WikiLove message on the user talk page.
 685+ window.location = targetBaseUrl + '#' + data.redirect.fragment; // data.redirect.fragment is already encoded
 686+
 687+ // If we were already on the user talk page, then reload the page so that the
 688+ // new WikiLove message is displayed.
 689+ if (
 690+ targetBaseUrl === currentBaseUrl
 691+ // Compatibility with 1.17, 1.18
 692+ || mw.config.get( 'wgServer' ) + targetBaseUrl === currentBaseUrl
 693+ ) {
 694+ window.location.reload();
 695+ }
 696+ } else {
 697+ $.wikiLove.showPreviewError( 'wikilove-err-send-api' );
 698+ }
 699+ },
 700+ error: function() {
 701+ $.wikiLove.showPreviewError( 'wikilove-err-send-api' );
 702+ $( '#mw-wikilove-send-spinner' ).fadeOut( 200 );
 703+ }
 704+ });
 705+ },
 706+
 707+ /*
 708+ * This function is called if the gallery is an array of images. It retrieves the image
 709+ * thumbnails from the API, and constructs a thumbnail gallery with them.
 710+ */
 711+ showGallery: function() {
 712+ $( '#mw-wikilove-gallery-content' ).html( '' );
 713+ gallery = {};
 714+ $( '#mw-wikilove-gallery-spinner' ).fadeIn( 200 );
 715+ $( '#mw-wikilove-gallery-error' ).hide();
 716+
 717+ if ( currentTypeOrSubtype.gallery.number === undefined
 718+ || currentTypeOrSubtype.gallery.number <= 0
 719+ ) {
 720+ currentTypeOrSubtype.gallery.number = currentTypeOrSubtype.gallery.imageList.length;
 721+ }
 722+
 723+ var titles = '';
 724+ var imageList = currentTypeOrSubtype.gallery.imageList.slice( 0 );
 725+ for ( var i=0; i<currentTypeOrSubtype.gallery.number; i++ ) {
 726+ // get a random image from imageList and add it to the list of titles to be retrieved
 727+ var id = Math.floor( Math.random() * imageList.length );
 728+ titles = titles + $.wikiLove.normalizeFilename( imageList[id] ) + '|';
 729+
 730+ // remove the randomly selected image from imageList so that it can't be added twice
 731+ imageList.splice(id, 1);
 732+ }
 733+
 734+ var index = 0,
 735+ loadingType = currentTypeOrSubtype,
 736+ loadingIndex = 0;
 737+ $.ajax({
 738+ url: mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/api.php?',
 739+ data: {
 740+ 'action' : 'query',
 741+ 'format' : 'json',
 742+ 'prop' : 'imageinfo',
 743+ 'iiprop' : 'mime|url',
 744+ 'titles' : titles,
 745+ 'iiurlwidth' : currentTypeOrSubtype.gallery.width,
 746+ 'iiurlheight' : currentTypeOrSubtype.gallery.height
 747+ },
 748+ dataType: 'json',
 749+ type: 'POST',
 750+ success: function( data ) {
 751+ if ( !data || !data.query || !data.query.pages ) {
 752+ $( '#mw-wikilove-gallery-error' ).show();
 753+ $( '#mw-wikilove-gallery-spinner' ).fadeOut( 200 );
 754+ return;
 755+ }
 756+
 757+ if ( loadingType != currentTypeOrSubtype ) {
 758+ return;
 759+ }
 760+ var galleryNumber = currentTypeOrSubtype.gallery.number;
 761+
 762+ $.each( data.query.pages, function( id, page ) {
 763+ if ( page.imageinfo && page.imageinfo.length ) {
 764+ // build an image tag with the correct url
 765+ var $img = $( '<img/>' )
 766+ .attr( 'src', page.imageinfo[0].thumburl )
 767+ .hide()
 768+ .load( function() {
 769+ $( this ).css( 'display', 'inline-block' );
 770+ loadingIndex++;
 771+ if ( loadingIndex >= galleryNumber ) {
 772+ $( '#mw-wikilove-gallery-spinner' ).fadeOut( 200 );
 773+ }
 774+ } );
 775+ $( '#mw-wikilove-gallery-content' ).append(
 776+ $( '<a href="#"></a>' )
 777+ .attr( 'id', 'mw-wikilove-gallery-img-' + index )
 778+ .append( $img )
 779+ .click( function( e ) {
 780+ e.preventDefault();
 781+ $( '#mw-wikilove-gallery a' ).removeClass( 'selected' );
 782+ $( this ).addClass( 'selected' );
 783+ $( '#mw-wikilove-image' ).val( gallery[$( this ).attr( 'id' )] );
 784+ })
 785+ );
 786+ gallery['mw-wikilove-gallery-img-' + index] = page.title;
 787+ index++;
 788+ }
 789+ } );
 790+ // Pre-select first image
 791+ /* $('#mw-wikilove-gallery-img-0 img').trigger('click'); */
 792+ },
 793+ error: function() {
 794+ $( '#mw-wikilove-gallery-error' ).show();
 795+ $( '#mw-wikilove-gallery-spinner' ).fadeOut( 200 );
 796+ }
 797+ });
 798+ },
 799+
 800+ /*
 801+ * Init function which is called upon page load. Binds the WikiLove icon to opening the dialog.
 802+ */
 803+ init: function() {
 804+ var $wikiLoveLink = $( [] );
 805+ options = $.wikiLoveOptions;
 806+
 807+ if ( $( '#ca-wikilove' ).length ) {
 808+ $wikiLoveLink = $( '#ca-wikilove' ).find( 'a' );
 809+ } else { // legacy skins
 810+ $wikiLoveLink = $( '#topbar a:contains(' + mw.msg( 'wikilove-tab-text' ) + ')' );
 811+ }
 812+ $wikiLoveLink.unbind( 'click' );
 813+ $wikiLoveLink.click( function( e ) {
 814+ e.preventDefault();
 815+ $.wikiLove.openDialog();
 816+ });
 817+ }
 818+
 819+ /*
 820+ * This is a bit of a hack to show some random images. A predefined set of image infos are
 821+ * retrieved using the API. Then we randomise this set ourselves and select some images to
 822+ * show. Eventually we probably want to make a custom API call that does this properly and
 823+ * also allows for using remote galleries such as Commons, which is now prohibited by JS.
 824+ *
 825+ * For now this function is disabled. It also shares code with the current gallery function,
 826+ * so when enabling it again it should be implemented cleaner with a custom API call, and
 827+ * without duplicate code between functions
 828+ */
 829+ /*
 830+ makeGallery: function() {
 831+ $( '#mw-wikilove-gallery-content' ).html( '' );
 832+ gallery = {};
 833+ $( '#mw-wikilove-gallery-spinner' ).fadeIn( 200 );
 834+
 835+ $.ajax({
 836+ url: mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/api.php?',
 837+ data: {
 838+ 'action' : 'query',
 839+ 'format' : 'json',
 840+ 'prop' : 'imageinfo',
 841+ 'iiprop' : 'mime|url',
 842+ 'iiurlwidth' : currentTypeOrSubtype.gallery.width,
 843+ 'generator' : 'categorymembers',
 844+ 'gcmtitle' : currentTypeOrSubtype.gallery.category,
 845+ 'gcmnamespace': 6,
 846+ 'gcmsort' : 'timestamp',
 847+ 'gcmlimit' : currentTypeOrSubtype.gallery.total
 848+ },
 849+ dataType: 'json',
 850+ type: 'POST',
 851+ success: function( data ) {
 852+ // clear
 853+ $( '#mw-wikilove-gallery-content' ).html( '' );
 854+ gallery = {};
 855+
 856+ // if we have any images at all
 857+ if( data.query) {
 858+ // get the page keys which are just ids
 859+ var keys = Object.keys( data.query.pages );
 860+
 861+ // try to find "num" images to show
 862+ for( var i=0; i<currentTypeOrSubtype.gallery.num; i++ ) {
 863+ // continue looking for a new image until we have found one thats valid
 864+ // or until we run out of images
 865+ while( keys.length > 0 ) {
 866+ // get a random page
 867+ var id = Math.floor( Math.random() * keys.length );
 868+ var page = data.query.pages[keys[id]];
 869+
 870+ // remove the random page from the keys array
 871+ keys.splice(id, 1);
 872+
 873+ // only add the image if it's actually an image
 874+ if( page.imageinfo[0].mime.substr(0,5) == 'image' ) {
 875+ // build an image tag with the correct url and width
 876+ var $img = $( '<img/>' )
 877+ .attr( 'src', page.imageinfo[0].url )
 878+ .attr( 'width', currentTypeOrSubtype.gallery.width )
 879+ .hide()
 880+ .load( function() { $( this ).css( 'display', 'inline-block' ); } );
 881+
 882+ // append the image to the gallery and also make sure it's selectable
 883+ $( '#mw-wikilove-gallery-content' ).append(
 884+ $( '<a href="#"></a>' )
 885+ .attr( 'id', 'mw-wikilove-gallery-img-' + i )
 886+ .append( $img )
 887+ .click( function( e ) {
 888+ e.preventDefault();
 889+ $( '#mw-wikilove-gallery a' ).removeClass( 'selected' );
 890+ $( this ).addClass( 'selected' );
 891+ $( '#mw-wikilove-image' ).val( gallery[$( this ).attr( 'id' )] );
 892+ })
 893+ );
 894+
 895+ // save the page title into an array so we know which image id maps to which title
 896+ gallery['mw-wikilove-gallery-img-' + i] = page.title;
 897+ break;
 898+ }
 899+ }
 900+ }
 901+ }
 902+ if( gallery.length === 0 ) {
 903+ $( '#mw-wikilove-gallery' ).hide();
 904+ $( '#mw-wikilove-gallery-label' ).hide();
 905+ }
 906+
 907+ $( '#mw-wikilove-gallery-spinner' ).fadeOut( 200 );
 908+ }
 909+ });
 910+ },
 911+ */
 912+};
 913+
 914+
 915+$( document ).ready( $.wikiLove.init );
 916+} ) ( jQuery );
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/modules/ext.wikiLove/ext.wikiLove.core.js
___________________________________________________________________
Added: svn:eol-style
1917 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/ApiWikiLove.php
@@ -0,0 +1,179 @@
 2+<?php
 3+class ApiWikiLove extends ApiBase {
 4+ public function execute() {
 5+ global $wgRequest, $wgWikiLoveLogging, $wgParser;
 6+
 7+ $params = $this->extractRequestParams();
 8+
 9+ $title = Title::newFromText( $params['title'] );
 10+ if ( is_null( $title ) ) {
 11+ $this->dieUsageMsg( array( 'invaliduser', $params['title'] ) );
 12+ }
 13+
 14+ $talk = WikiLoveHooks::getUserTalkPage( $title );
 15+ if ( is_null( $talk ) ) {
 16+ $this->dieUsageMsg( array( 'invaliduser', $params['title'] ) );
 17+ }
 18+
 19+ if ( $wgWikiLoveLogging ) {
 20+ $this->saveInDb( $talk, $params['subject'], $params['message'], $params['type'], isset( $params['email'] ) ? 1 : 0 );
 21+ }
 22+
 23+ // not using section => 'new' here, as we like to give our own edit summary
 24+ $api = new ApiMain( new FauxRequest( array(
 25+ 'action' => 'edit',
 26+ 'title' => $talk->getFullText(),
 27+ // need to do this, as Article::replaceSection fails for non-existing pages
 28+ 'appendtext' => ( $talk->exists() ? "\n\n" : '' ) . wfMsgForContent( 'newsectionheaderdefaultlevel', $params['subject'] )
 29+ . "\n\n" . $params['text'],
 30+ 'token' => $params['token'],
 31+ 'summary' => wfMsgForContent( 'wikilove-summary', $wgParser->stripSectionName( $params['subject'] ) ),
 32+ 'notminor' => true,
 33+ ), false, array( 'wsEditToken' => $wgRequest->getSessionData( 'wsEditToken' ) ) ), true );
 34+
 35+ $api->execute();
 36+
 37+ if ( isset( $params['email'] ) ) {
 38+ $this->emailUser( $talk, $params['subject'], $params['email'], $params['token'] );
 39+ }
 40+
 41+ $this->getResult()->addValue( 'redirect', 'pageName', $talk->getPrefixedDBkey() );
 42+ $this->getResult()->addValue( 'redirect', 'fragment', Title::escapeFragmentForURL( $params['subject'] ) );
 43+ // note that we cannot use Title::makeTitle here as it doesn't sanitize the fragment
 44+ }
 45+
 46+ /**
 47+ * @param $talk Title
 48+ * @param $subject
 49+ * @param $message
 50+ * @param $type
 51+ * @param $email
 52+ * @return void
 53+ */
 54+ private function saveInDb( $talk, $subject, $message, $type, $email ) {
 55+ global $wgUser;
 56+ $dbw = wfGetDB( DB_MASTER );
 57+ $receiver = User::newFromName( $talk->getSubjectPage()->getBaseText() );
 58+ if ( $receiver === false || $receiver->isAnon() ) {
 59+ $this->setWarning( 'Not logging unregistered recipients' );
 60+ return;
 61+ }
 62+
 63+ $values = array(
 64+ 'wll_timestamp' => $dbw->timestamp(),
 65+ 'wll_sender' => $wgUser->getId(),
 66+ 'wll_sender_editcount' => $wgUser->getEditCount(),
 67+ 'wll_sender_registration' => $wgUser->getRegistration(),
 68+ 'wll_receiver' => $receiver->getId(),
 69+ 'wll_receiver_editcount' => $receiver->getEditCount(),
 70+ 'wll_receiver_registration' => $receiver->getRegistration(),
 71+ 'wll_type' => $type,
 72+ 'wll_subject' => $subject,
 73+ 'wll_message' => $message,
 74+ 'wll_email' => $email,
 75+ );
 76+
 77+ try{
 78+ $dbw->insert( 'wikilove_log', $values, __METHOD__ );
 79+ } catch( DBQueryError $dbqe ) {
 80+ $this->setWarning( 'Action was not logged' );
 81+ }
 82+ }
 83+
 84+ /**
 85+ * @param $talk Title
 86+ * @param $subject string
 87+ * @param $text string
 88+ * @param $token string
 89+ */
 90+ private function emailUser( $talk, $subject, $text, $token ) {
 91+ global $wgRequest;
 92+ $api = new ApiMain( new FauxRequest( array(
 93+ 'action' => 'emailuser',
 94+ 'target' => User::newFromName( $talk->getSubjectPage()->getBaseText() )->getName(),
 95+ 'subject' => $subject,
 96+ 'text' => $text,
 97+ 'token' => $token,
 98+ ), false, array( 'wsEditToken' => $wgRequest->getSessionData( 'wsEditToken' ) ) ), true );
 99+ try{
 100+ $api->execute();
 101+ } catch( DBQueryError $dbqe ) {
 102+ $this->setWarning( 'E-mail was not sent' );
 103+ }
 104+ }
 105+
 106+ public function getAllowedParams() {
 107+ return array(
 108+ 'title' => array(
 109+ ApiBase::PARAM_TYPE => 'string',
 110+ ApiBase::PARAM_REQUIRED => true,
 111+ ),
 112+ 'text' => array(
 113+ ApiBase::PARAM_TYPE => 'string',
 114+ ApiBase::PARAM_REQUIRED => true,
 115+ ),
 116+ 'message' => array(
 117+ ApiBase::PARAM_TYPE => 'string',
 118+ ),
 119+ 'token' => array(
 120+ ApiBase::PARAM_TYPE => 'string',
 121+ ApiBase::PARAM_REQUIRED => true,
 122+ ),
 123+ 'subject' => array(
 124+ ApiBase::PARAM_TYPE => 'string',
 125+ ApiBase::PARAM_REQUIRED => true,
 126+ ),
 127+ 'type' => array(
 128+ ApiBase::PARAM_TYPE => 'string',
 129+ ),
 130+ 'email' => array(
 131+ ApiBase::PARAM_TYPE => 'string',
 132+ ),
 133+ );
 134+ }
 135+
 136+ public function getParamDescription() {
 137+ return array(
 138+ 'title' => 'Title of the user or user talk page to send WikiLove to',
 139+ 'text' => 'Raw wikitext to add in the new section',
 140+ 'message' => 'Actual message the user has entered, for logging purposes',
 141+ 'token' => 'Edit token. You can get one of these through prop=info',
 142+ 'subject' => 'Subject header of the new section',
 143+ 'email' => 'Content of the optional e-mail message to send to the user',
 144+ 'type' => array( 'Type of WikiLove (for statistics); this corresponds with a type',
 145+ 'selected in the left menu, and optionally a subtype after that',
 146+ '(e.g. "barnstar-normal" or "kitten")',
 147+ ),
 148+ );
 149+ }
 150+
 151+ public function getDescription() {
 152+ return array(
 153+ 'Give WikiLove to another user.',
 154+ "WikiLove is a positive message posted to a user's talk page through a",
 155+ 'convenient interface with preset or locally defined templates. This action',
 156+ 'adds the specified wikitext to a certain talk page. For statistical purposes,',
 157+ 'the type and other data are logged.',
 158+ );
 159+ }
 160+
 161+ public function getPossibleErrors() {
 162+ return array_merge( parent::getPossibleErrors(), array(
 163+ array( 'invalidtitle', 'title' ),
 164+ array(
 165+ 'code' => 'nologging',
 166+ 'info' => 'Warning: action was not logged!'
 167+ ),
 168+ ) );
 169+ }
 170+
 171+ public function getExamples() {
 172+ return array(
 173+ 'api.php?action=wikilove&title=User:Dummy&text=Love&subject=Hi&token=%2B\\',
 174+ );
 175+ }
 176+
 177+ public function getVersion() {
 178+ return __CLASS__ . ': $Id$';
 179+ }
 180+}
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/ApiWikiLove.php
___________________________________________________________________
Added: svn:keywords
1181 + Id
Added: svn:eol-style
2182 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/README
@@ -0,0 +1,5 @@
 2+WikiLove is an extension designed to promote the spread of WikiLove,
 3+message of positive reinforcement that users can send to each other.
 4+
 5+See documentation at the MediaWiki wiki:
 6+ http://www.mediawiki.org/wiki/Extension:WikiLove
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/README
___________________________________________________________________
Added: svn:eol-style
17 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/WikiLove.i18n.php
@@ -0,0 +1,1732 @@
 2+<?php
 3+/**
 4+ * Internationalisation for WikiLove extension
 5+ *
 6+ * @file
 7+ * @ingroup Extensions
 8+ */
 9+
 10+$messages = array();
 11+
 12+/** English
 13+ * @author Ryan Kaldari, Jan Paul Posma
 14+ */
 15+$messages['en'] = array(
 16+ 'wikilove-desc' => 'Adds an interface for facilitating positive user feedback to user talk pages',
 17+ 'wikilove' => 'WikiLove',
 18+ 'wikilove-enable-preference' => 'Enable showing appreciation for other users with the WikiLove tab (experimental)',
 19+ 'wikilove-tab-text' => 'WikiLove',
 20+ 'tooltip-ca-wikilove' => 'Post a message for this user showing your appreciation',
 21+ 'wikilove-dialog-title' => 'WikiLove – Send a message of appreciation to another user',
 22+ 'wikilove-select-type' => 'Select type',
 23+ 'wikilove-get-started-header' => "Let's get started!",
 24+ 'wikilove-get-started-list-1' => 'Select the type of WikiLove you wish to send',
 25+ 'wikilove-get-started-list-2' => 'Add details to your WikiLove',
 26+ 'wikilove-get-started-list-3' => 'Send your WikiLove!',
 27+ 'wikilove-add-details' => 'Add details',
 28+ 'wikilove-image' => 'Enter an image filename:',
 29+ 'wikilove-select-image' => 'Select an image:',
 30+ 'wikilove-header' => 'Enter a header:',
 31+ 'wikilove-title' => 'Enter an award title:',
 32+ 'wikilove-enter-message' => 'Enter a message:',
 33+ 'wikilove-omit-sig' => '(without a signature)',
 34+ 'wikilove-image-example' => '(example: Trophy.png)',
 35+ 'wikilove-button-preview' => 'Preview',
 36+ 'wikilove-preview' => 'Preview',
 37+ 'wikilove-notify' => 'Notify the user by e-mail',
 38+ 'wikilove-button-send' => 'Send WikiLove',
 39+ 'wikilove-type-barnstars' => 'Barnstars',
 40+ 'wikilove-type-food' => 'Food and drink',
 41+ 'wikilove-type-kittens' => 'Kittens',
 42+ 'wikilove-type-makeyourown' => 'Make your own',
 43+ 'wikilove-err-header' => 'Please enter a header.',
 44+ 'wikilove-err-title' => 'Please enter a title.',
 45+ 'wikilove-err-msg' => 'Please enter a personalized message.',
 46+ 'wikilove-err-image' => 'Please select an image.',
 47+ 'wikilove-err-image-bad' => 'Image does not exist.',
 48+ 'wikilove-err-image-api' => 'Something went wrong when retrieving the image. Please try again.',
 49+ 'wikilove-err-sig' => 'Please do not include a signature in the message.',
 50+ 'wikilove-err-gallery' => 'Something went wrong when loading the images.',
 51+ 'wikilove-err-gallery-again' => 'Try again',
 52+ 'wikilove-err-preview-api' => 'Something went wrong during previewing. Please try again.',
 53+ 'wikilove-err-send-api' => 'Something went wrong when sending the message. Please try again.',
 54+ 'wikilove-summary' => '/* $1 */ new WikiLove message',
 55+ 'wikilove-what-is-this' => "What is this?",
 56+ 'wikilove-anon-warning' => 'Note: This user is not registered, he or she may not notice this message.',
 57+ 'wikilove-commons-text' => 'You can find images by browsing $1.',
 58+ 'wikilove-commons-link' => 'Wikimedia Commons',
 59+ 'wikilove-commons-url' => 'http://commons.wikimedia.org',
 60+);
 61+
 62+/** Message documentation (Message documentation)
 63+ * @author EugeneZelenko
 64+ * @author Hamilton Abreu
 65+ * @author McDutchie
 66+ * @author Purodha
 67+ * @author SPQRobin
 68+ */
 69+$messages['qqq'] = array(
 70+ 'wikilove-enable-preference' => '',
 71+ 'wikilove-tab-text' => '[[File:Wiki Love 001.png|thumb]]',
 72+ 'tooltip-ca-wikilove' => '[[File:Wiki Love 001.png|thumb]]',
 73+ 'wikilove-dialog-title' => '[[File:Wiki Love 002.png|thumb]]',
 74+ 'wikilove-select-type' => '[[File:Wiki Love 002.png|thumb]]',
 75+ 'wikilove-get-started-header' => '[[File:Wiki Love 002.png|thumb]]',
 76+ 'wikilove-get-started-list-1' => '[[File:Wiki Love 002.png|thumb]]',
 77+ 'wikilove-get-started-list-2' => '[[File:Wiki Love 002.png|thumb]]',
 78+ 'wikilove-get-started-list-3' => '[[File:Wiki Love 002.png|thumb]]',
 79+ 'wikilove-add-details' => '[[File:Wiki Love 003.png|thumb]]',
 80+ 'wikilove-image' => '[[File:Wiki Love 004.png|thumb]]',
 81+ 'wikilove-header' => '[[File:Wiki Love 003.png|thumb]]
 82+Header is the subject of the added message (so perhaps subject is a better term..), i.e. what gets between == ... ==',
 83+ 'wikilove-title' => '[[File:Wiki Love 004.png|thumb]]
 84+Title is the title of the wikilove box (e.g. "Barnstar")',
 85+ 'wikilove-enter-message' => '[[File:Wiki Love 003.png|thumb]]',
 86+ 'wikilove-omit-sig' => '[[File:Wiki Love 003.png|thumb]]',
 87+ 'wikilove-image-example' => '[[File:Wiki Love 004.png|thumb]]
 88+The filename should be an actual image on Wikimedia Commons.',
 89+ 'wikilove-button-preview' => '[[File:Wiki Love 003.png|thumb]]
 90+Button text. Verb.
 91+{{Identical|Preview}}',
 92+ 'wikilove-preview' => '[[File:Wiki Love 003.png|thumb]]
 93+Title. Noun.
 94+{{Identical|Preview}}',
 95+ 'wikilove-button-send' => '[[File:Wiki Love 003.png|thumb]]',
 96+ 'wikilove-type-barnstars' => '[[File:Wiki Love 002.png|thumb]]
 97+Label for a button. Should be no longer than 22 characters.',
 98+ 'wikilove-type-food' => '[[File:Wiki Love 002.png|thumb]]
 99+Label for a button. Should be no longer than 22 characters.',
 100+ 'wikilove-type-kittens' => '[[File:Wiki Love 002.png|thumb]]
 101+Label for a button. Should be no longer than 22 characters.',
 102+ 'wikilove-type-makeyourown' => '[[File:Wiki Love 002.png|thumb]]
 103+Label for a button. Should be no longer than 22 characters.',
 104+ 'wikilove-err-header' => '[[File:Wiki Love 004.png|thumb]]
 105+Use the same translation for "header" as was used for {{msg-mw|wikilove-header}}.',
 106+ 'wikilove-err-title' => '
 107+Title is the title of the wikilove box (e.g. "Barnstar")',
 108+ 'wikilove-what-is-this' => '[[File:Wiki Love 002.png|thumb]]',
 109+ 'wikilove-commons-text' => '[[File:Wiki Love 004.png|thumb]]
 110+$1 gets replaced by a link with {{msg-mw|wikilove-commons-link}} ("Wikimedia Commons") as caption and {{msg-mw|wikilove-commons-url}} as URL.',
 111+ 'wikilove-commons-url' => 'This URL can be changed to point at a localised page on Wikimedia Commons.',
 112+);
 113+
 114+/** Afrikaans (Afrikaans)
 115+ * @author Naudefj
 116+ */
 117+$messages['af'] = array(
 118+ 'wikilove-desc' => "Voeg 'n koppelvlak by vir die fasilitering van positiewe terugvoer op gebruikers se besprekingsblaaie",
 119+ 'wikilove' => 'Wikiwaardering',
 120+ 'wikilove-enable-preference' => 'Aktiveer toon van waardering vir ander gebruikers met die Wikiwaardering-oortjie (eksperimenteel)',
 121+ 'wikilove-tab-text' => 'Wikiwaardering',
 122+ 'tooltip-ca-wikilove' => "Plaas 'n boodskap vir hierdie gebruiker om u waardering te wys",
 123+ 'wikilove-dialog-title' => "Wikiwaardering - stuur 'n boodskap van waardering aan 'n ander gebruiker",
 124+ 'wikilove-select-type' => 'Kies tipe',
 125+ 'wikilove-get-started-header' => 'Kom ons begin!',
 126+ 'wikilove-get-started-list-1' => 'Kies die tipe Wikiwaardering wat u wil stuur',
 127+ 'wikilove-get-started-list-2' => 'Voeg besonderhede by u Wikiwaardering by',
 128+ 'wikilove-get-started-list-3' => 'Stuur u Wikiwaardering!',
 129+ 'wikilove-add-details' => 'Voeg besonderhede by',
 130+ 'wikilove-image' => 'Verskaf lêernaam vir beeld:',
 131+ 'wikilove-select-image' => "Kies 'n beeld:",
 132+ 'wikilove-header' => 'Verskaf opskrif:',
 133+ 'wikilove-title' => "Verskaf 'n toekenningtitel:",
 134+ 'wikilove-enter-message' => "Tik 'n boodskap:",
 135+ 'wikilove-omit-sig' => "(sonder 'n handtekening)",
 136+ 'wikilove-image-example' => '(Voorbeeld: Trophy.png)',
 137+ 'wikilove-button-preview' => 'Voorskou',
 138+ 'wikilove-preview' => 'Voorskou',
 139+ 'wikilove-notify' => "Stuur gebruiker 'n kennisgewing via E-pos",
 140+ 'wikilove-button-send' => 'Stuur Wikiwaardering',
 141+ 'wikilove-type-makeyourown' => 'Maak u eie',
 142+ 'wikilove-err-header' => "Verskaf asseblief 'n opskrif.",
 143+ 'wikilove-err-title' => "Verskaf asseblief 'n titel.",
 144+ 'wikilove-err-msg' => "Verskaf asseblief 'n boodskap.",
 145+ 'wikilove-err-image' => "Kies asseblief 'n beeld.",
 146+ 'wikilove-err-image-bad' => 'Beeld bestaan ​​nie.',
 147+ 'wikilove-err-image-api' => 'Laai van beeld het gefaal. Probeer asseblief weer.',
 148+ 'wikilove-err-sig' => "Moet asseblief nie 'n handtekening in die boodskap plaas nie.",
 149+ 'wikilove-err-gallery' => 'Iets het verkeerd geloop met die laai van die beelde.',
 150+ 'wikilove-err-gallery-again' => 'Probeer weer',
 151+ 'wikilove-err-preview-api' => 'Iets het verkeerd geloop met die voorskou. Probeer asseblief weer.',
 152+ 'wikilove-err-send-api' => 'Iets het verkeerd geloop met die stuur van die boodskap. Probeer asseblief weer.',
 153+ 'wikilove-summary' => '/ * $1 * / nuwe Wikiwaardering-boodskap',
 154+ 'wikilove-what-is-this' => 'Wat is dit?',
 155+ 'wikilove-anon-warning' => 'Nota: Hierdie gebruiker is nie geregistreer nie, hy of sy mag moontlik nie die boodskap ontvang nie.',
 156+ 'wikilove-commons-text' => 'U kan beelde vind deur op $1 te blaai.',
 157+);
 158+
 159+/** Arabic (العربية)
 160+ * @author Abanima
 161+ * @author Zack wadghiri
 162+ */
 163+$messages['ar'] = array(
 164+ 'wikilove-desc' => 'لإضافة واجهة للإثناء على المستخدم في صفحة نقاشه',
 165+ 'wikilove' => 'ويكي الحب',
 166+ 'wikilove-enable-preference' => 'لفتح باب التقدير لمستخدم بإظهار تبويب ويكي الحب (قيد التجربة)',
 167+ 'wikilove-tab-text' => 'ويكي الحب',
 168+ 'tooltip-ca-wikilove' => 'أرسل رسالة تقدير إلى هذا المستخدم',
 169+ 'wikilove-dialog-title' => 'ويكي الحب - أرسل رسالة تقدير إلى مستخدم آخر',
 170+ 'wikilove-select-type' => 'اختر نوعا',
 171+ 'wikilove-get-started-header' => 'فلنبدأ',
 172+ 'wikilove-get-started-list-1' => 'اختر نوع رسالة ويكي الحب التي تريد إرسالها',
 173+ 'wikilove-get-started-list-2' => 'أضف تفاصيل إلى رسالتك',
 174+ 'wikilove-get-started-list-3' => 'أرسلها',
 175+ 'wikilove-add-details' => 'أضف تفاصيل',
 176+ 'wikilove-image' => 'ضع اسم الصورة:',
 177+ 'wikilove-select-image' => 'اختر صورة:',
 178+ 'wikilove-header' => 'ضع ترويسة:',
 179+ 'wikilove-title' => 'ضع عنوان الجائزة:',
 180+ 'wikilove-enter-message' => 'ضع رسالة:',
 181+ 'wikilove-omit-sig' => '(بدون توقيع)',
 182+ 'wikilove-image-example' => '(مثال: Trophy.png)',
 183+ 'wikilove-button-preview' => 'معاينة',
 184+ 'wikilove-preview' => 'معاينة',
 185+ 'wikilove-notify' => 'أخبر المستخدم برسالة إلكترونية',
 186+ 'wikilove-button-send' => 'أرسالها',
 187+ 'wikilove-type-barnstars' => 'أوسمة',
 188+ 'wikilove-type-food' => 'أغذية',
 189+ 'wikilove-type-kittens' => 'قطط',
 190+ 'wikilove-type-makeyourown' => 'غير ذلك',
 191+ 'wikilove-err-header' => 'ضع ترويسة',
 192+ 'wikilove-err-title' => 'ضع عنوانا',
 193+ 'wikilove-err-msg' => 'ضع رسالتك هنا.',
 194+ 'wikilove-err-image' => 'اختر صورة',
 195+ 'wikilove-err-image-bad' => 'الصورة غير موجودة',
 196+ 'wikilove-err-image-api' => 'وقع خطأ في الإتيان بالصورة. كرر المحاولة.',
 197+ 'wikilove-err-sig' => 'لا توقع الرسالة',
 198+ 'wikilove-err-gallery' => 'وقع خطأ في تحميل الصورة',
 199+ 'wikilove-err-gallery-again' => 'كرر المحاولة',
 200+ 'wikilove-err-preview-api' => 'وقع خطأ في المعاينة. كرر المحاولة.',
 201+ 'wikilove-err-send-api' => 'وقع خطأ في إرسال الرسالة. كرر المحاولة.',
 202+ 'wikilove-summary' => '/* $1 */ رسالة ويكي حب جديدة',
 203+ 'wikilove-what-is-this' => 'ما هذا؟',
 204+ 'wikilove-anon-warning' => 'تنبيه: هذا المستخدم غير مسجل وقد لا ينتبه إلى هذه الرسالة.',
 205+ 'wikilove-commons-text' => 'تجد هذه الصورة في صفحة $1.',
 206+);
 207+
 208+/** Belarusian (Taraškievica orthography) (‪Беларуская (тарашкевіца)‬)
 209+ * @author EugeneZelenko
 210+ * @author Jim-by
 211+ * @author Wizardist
 212+ */
 213+$messages['be-tarask'] = array(
 214+ 'wikilove-desc' => 'Дадае інтэрфэйс для спрашчэньне дадаваньня станоўчых водгукаў на старонках гутарак удзельнікаў',
 215+ 'wikilove' => 'WikiLove',
 216+ 'wikilove-enable-preference' => 'Дазволіць закладку WikiLove для паказу ўдзячнасьці іншым удзельнікам (экспэрымэнтальна)',
 217+ 'wikilove-tab-text' => 'WikiLove',
 218+ 'tooltip-ca-wikilove' => 'Даслаць паведамленьне гэтаму ўдзельніку, паказаць яму сваю ўдзячнасьць',
 219+ 'wikilove-dialog-title' => 'WikiLove — Дашліце паведамленьне іншаму ўдзельніку з выразам удзячнасьці',
 220+ 'wikilove-select-type' => 'Выберыце тып',
 221+ 'wikilove-get-started-header' => 'Пачынаем!',
 222+ 'wikilove-get-started-list-1' => 'Выбраць тып WikiLove, якую Вы жадаеце даслаць',
 223+ 'wikilove-get-started-list-2' => 'Дадаць падрабязнасьці да Вашай WikiLove',
 224+ 'wikilove-get-started-list-3' => 'Даслаць WikiLove!',
 225+ 'wikilove-add-details' => 'Дадаць падрабязнасьці',
 226+ 'wikilove-image' => 'Увядзіце назву выявы:',
 227+ 'wikilove-select-image' => 'Выбар выявы:',
 228+ 'wikilove-header' => 'Увядзіце загаловак:',
 229+ 'wikilove-title' => 'Увядзіце назву ўзнагароды:',
 230+ 'wikilove-enter-message' => 'Увядзіце паведамленьне:',
 231+ 'wikilove-omit-sig' => '(без подпісу)',
 232+ 'wikilove-image-example' => '(прыклад: Trophy.png)',
 233+ 'wikilove-button-preview' => 'Папярэдні прагляд',
 234+ 'wikilove-preview' => 'Папярэдні прагляд',
 235+ 'wikilove-notify' => 'Паведаміць удзельніку праз электронную пошту',
 236+ 'wikilove-button-send' => 'Даслаць WikiLove',
 237+ 'wikilove-type-barnstars' => 'Ордэны',
 238+ 'wikilove-type-food' => 'Ежа і напоі',
 239+ 'wikilove-type-kittens' => 'Кацяняты',
 240+ 'wikilove-type-makeyourown' => 'Зрабіць уласны',
 241+ 'wikilove-err-header' => 'Калі ласка, увядзіце загаловак.',
 242+ 'wikilove-err-title' => 'Калі ласка, увядзіце назву.',
 243+ 'wikilove-err-msg' => 'Калі ласка, увядзіце паведамленьне.',
 244+ 'wikilove-err-image' => 'Калі ласка, выберыце выяву.',
 245+ 'wikilove-err-image-bad' => 'Выява не існуе.',
 246+ 'wikilove-err-image-api' => 'Нешта пайшло ня так, падчас атрыманьня выявы. Калі ласка, паспрабуйце зноў.',
 247+ 'wikilove-err-sig' => 'Калі ласка, не ўключайце подпіс у паведамленьне.',
 248+ 'wikilove-err-gallery' => 'Нешта пайшло ня так падчас загрузкі выяваў.',
 249+ 'wikilove-err-gallery-again' => 'Паспрабаваць зноў',
 250+ 'wikilove-err-preview-api' => 'Нешта пайшло ня так, падчас папярэдняга прагляду. Калі ласка, паспрабуйце зноў.',
 251+ 'wikilove-err-send-api' => 'Нешта пайшло ня так, падчас адпраўкі паведамленьня. Калі ласка, паспрабуйце зноў.',
 252+ 'wikilove-summary' => '/* $1 */ новае WikiLove паведамленьне',
 253+ 'wikilove-what-is-this' => 'Што гэта?',
 254+ 'wikilove-anon-warning' => 'Заўвага: гэты ўдзельнік не зарэгістраваны, ён ці яна ня можа заўважыць гэтае паведамленьне.',
 255+ 'wikilove-commons-text' => 'Вы можаце знайсьці выявы ў праекце $1.',
 256+);
 257+
 258+/** Bulgarian (Български)
 259+ * @author DCLXVI
 260+ */
 261+$messages['bg'] = array(
 262+ 'wikilove' => 'УикиОбич',
 263+ 'wikilove-tab-text' => 'УикиОбич',
 264+ 'wikilove-dialog-title' => 'УикиОбич - Изпращане на благодарствено съобщение на друг потребител',
 265+ 'wikilove-add-details' => 'Добавяне на подробности',
 266+ 'wikilove-select-image' => 'Избиране на изображение:',
 267+ 'wikilove-omit-sig' => '(без подпис)',
 268+ 'wikilove-image-example' => '(пример: Trophy.png)',
 269+ 'wikilove-button-preview' => 'Предварителен преглед',
 270+ 'wikilove-preview' => 'Предварителен преглед',
 271+ 'wikilove-notify' => 'Уведомяване на потребителя на електронната поща',
 272+ 'wikilove-button-send' => 'Изпращане на УикиОбич',
 273+ 'wikilove-err-image-bad' => 'Изображението не съществува.',
 274+ 'wikilove-err-sig' => 'В съобщението не трябва да се вклчва подпис.',
 275+ 'wikilove-err-gallery' => 'Възникна грешка при зареждане на изображенията!',
 276+ 'wikilove-err-gallery-again' => 'Опитайте отново',
 277+ 'wikilove-summary' => '/* $1 */ ново съобщение за УикиОбич',
 278+ 'wikilove-what-is-this' => 'Какво е това?',
 279+);
 280+
 281+/** Breton (Brezhoneg)
 282+ * @author Fulup
 283+ */
 284+$messages['br'] = array(
 285+ 'wikilove-desc' => 'Ouzhpennañ a ra un etrefas evit aesaat merkañ evezhiadennoù pozitivel war pajenn gaozeal un implijer',
 286+ 'wikilove' => 'WikiLove',
 287+ 'wikilove-enable-preference' => 'Aotren a ra diskouez priziadennoù evit implijerien all gant an ivinell WikiLove (arnodel)',
 288+ 'wikilove-tab-text' => 'WikiLove',
 289+ 'tooltip-ca-wikilove' => 'Lakaat ur gemennadenn evit an implijer-mañ da ziskouez e priziit an traoù',
 290+ 'wikilove-dialog-title' => "WikiLove – Kas ur gemennadenn pe ur soñj bennak d'un implijer all",
 291+ 'wikilove-select-type' => 'Diuzañ ur seurt',
 292+ 'wikilove-get-started-header' => 'Krogomp ganti !',
 293+ 'wikilove-get-started-list-1' => "Diuzit ar seurt WikiLove hoc'h eus c'hoant da gas",
 294+ 'wikilove-get-started-list-2' => "Ouzhpennit titouroù d'ho WikiLove",
 295+ 'wikilove-get-started-list-3' => 'Kasit ho WikiLove !',
 296+ 'wikilove-add-details' => 'Ouzhpennañ titouroù',
 297+ 'wikilove-image' => 'Lakat anv ur skeudenn :',
 298+ 'wikilove-select-image' => 'Diuzañ ur skeudenn :',
 299+ 'wikilove-header' => 'Lakaat un talbenn :',
 300+ 'wikilove-title' => 'Lakaat un titl :',
 301+ 'wikilove-enter-message' => 'Lakaat ur gemennadenn',
 302+ 'wikilove-omit-sig' => '(hep sinadur)',
 303+ 'wikilove-image-example' => '(skouer : Trophy.png)',
 304+ 'wikilove-button-preview' => 'Rakwelet',
 305+ 'wikilove-preview' => 'Rakwelet',
 306+ 'wikilove-notify' => "Kas ur c'hemenn dre bostel d'an implijer",
 307+ 'wikilove-button-send' => 'Kas ar WikiLove',
 308+ 'wikilove-type-makeyourown' => "Krouit ho-hini deoc'h-c'hwi",
 309+ 'wikilove-err-header' => 'Merkit un talbenn.',
 310+ 'wikilove-err-title' => 'Merkit un titl.',
 311+ 'wikilove-err-msg' => 'Merkit ur gemennadenn.',
 312+ 'wikilove-err-image' => 'Diuzit ur skeudenn.',
 313+ 'wikilove-err-image-bad' => "N'eus ket eus ar skeudenn-mañ",
 314+ 'wikilove-err-image-api' => "C'hoarvezet ez eus un dra bennak a-dreuz en ur adpakañ ar skeudenn. Klaskit en-dro.",
 315+ 'wikilove-err-sig' => 'Arabat sinañ ar gemennadenn.',
 316+ 'wikilove-err-gallery' => "Un dra bennak a-dreuz zo c'hoarvezet en ur gargañ ar skeudennoù !",
 317+ 'wikilove-err-gallery-again' => 'Klask en-dro',
 318+ 'wikilove-summary' => '/* $1 */ kemennadenn WikiLove nevez',
 319+ 'wikilove-what-is-this' => 'Petra eo se ?',
 320+);
 321+
 322+/** Bosnian (Bosanski)
 323+ * @author CERminator
 324+ */
 325+$messages['bs'] = array(
 326+ 'wikilove-select-type' => 'Odaberite vrstu',
 327+ 'wikilove-add-details' => 'Dodaj detalje',
 328+ 'wikilove-enter-message' => 'Unesite poruku:',
 329+ 'wikilove-button-preview' => 'Pregled',
 330+ 'wikilove-preview' => 'Pregled',
 331+);
 332+
 333+/** German (Deutsch)
 334+ * @author Kghbln
 335+ */
 336+$messages['de'] = array(
 337+ 'wikilove-desc' => 'Ergänzt ein Hilfsmittel zum Ausdrücken persönlicher Wertschätzung gegenüber einem Benutzer auf dessen Diskussionsseite',
 338+ 'wikilove' => 'Wertschätzung',
 339+ 'wikilove-enable-preference' => 'Menüreiter für das Hilfsmittel zum Ausdrücken persönlicher Wertschätzung gegenüber einem anderen Benutzer aktivieren (experimentell)',
 340+ 'wikilove-tab-text' => 'Wertschätzen',
 341+ 'tooltip-ca-wikilove' => 'Diesem Benutzer die persönliche Wertschätzung in Form einer Nachricht hinterlassen',
 342+ 'wikilove-dialog-title' => 'Eine Nachricht der Wertschätzung an einen anderen Benutzer senden',
 343+ 'wikilove-select-type' => 'Art auswählen',
 344+ 'wikilove-get-started-header' => 'Los geht’s!',
 345+ 'wikilove-get-started-list-1' => 'Die Art der persönlichen Wertschätzung auswählen, die ausgedrückt werden soll',
 346+ 'wikilove-get-started-list-2' => 'Persönliche Wertschätzung ergänzen',
 347+ 'wikilove-get-started-list-3' => 'Persönliche Wertschätzung senden',
 348+ 'wikilove-add-details' => 'Ergänzungen hinzufügen',
 349+ 'wikilove-image' => 'Gib den Namen der Bilddatei an:',
 350+ 'wikilove-select-image' => 'Wähle ein Bild aus:',
 351+ 'wikilove-header' => 'Gib den Text für die Überschrift ein:',
 352+ 'wikilove-title' => 'Gib den Titel für die Wertschätzung ein:',
 353+ 'wikilove-enter-message' => 'Gibt eine Nachricht ein:',
 354+ 'wikilove-omit-sig' => '(bitte ohne Signatur)',
 355+ 'wikilove-image-example' => '(Beispiel: Drei Sonnenblumen im Feld.JPG)',
 356+ 'wikilove-button-preview' => 'Vorschau',
 357+ 'wikilove-preview' => 'Vorschau',
 358+ 'wikilove-notify' => 'Den Benutzer per E-Mail benachrichtigen',
 359+ 'wikilove-button-send' => 'Persönliche Wertschätzung senden',
 360+ 'wikilove-type-barnstars' => 'Orden',
 361+ 'wikilove-type-food' => 'Essen und Trinken',
 362+ 'wikilove-type-kittens' => 'Schmusekätzchen',
 363+ 'wikilove-type-makeyourown' => 'Eigene erstellen',
 364+ 'wikilove-err-header' => 'Bitte den Inhalt für den Kopfbereich eingeben.',
 365+ 'wikilove-err-title' => 'Bitte einen Titel eingeben.',
 366+ 'wikilove-err-msg' => 'Bitte eine persönliche Nachricht eingeben.',
 367+ 'wikilove-err-image' => 'Bitte ein Bild auswählen.',
 368+ 'wikilove-err-image-bad' => 'Das Bild ist nicht vorhanden.',
 369+ 'wikilove-err-image-api' => 'Während des Abrufens des Bildes ist ein Fehler aufgetreten. Bitte versuche es erneut.',
 370+ 'wikilove-err-sig' => 'Bitte keine Signatur im Nachrichtentext eingeben.',
 371+ 'wikilove-err-gallery' => 'Während des Ladens der Bilder ist ein Fehler aufgetreten.',
 372+ 'wikilove-err-gallery-again' => 'Bitte versuche es erneut.',
 373+ 'wikilove-err-preview-api' => 'Während der Vorschau ist ein Fehler aufgetreten. Bitte versuche es erneut.',
 374+ 'wikilove-err-send-api' => 'Während des Sendens der Wertschätzung ist ein Fehler aufgetreten. Bitte versuche es erneut.',
 375+ 'wikilove-summary' => '/* $1 */ neue persönliche Wertschätzung',
 376+ 'wikilove-what-is-this' => 'Worum handelt es sich?',
 377+ 'wikilove-anon-warning' => 'Hinweis: Es handelt sich um einen Benutzer ohne Benutzerkonto. Daher wird er oder sie die Nachricht wahrscheinlich nicht bemerken.',
 378+ 'wikilove-commons-text' => 'Bilder können gefunden werden, indem man $1 durchsucht.',
 379+);
 380+
 381+/** German (formal address) (‪Deutsch (Sie-Form)‬)
 382+ * @author Kghbln
 383+ */
 384+$messages['de-formal'] = array(
 385+ 'wikilove-image' => 'Geben Sie den Namen der Bilddatei an:',
 386+ 'wikilove-select-image' => 'Wählen Sie ein Bild aus:',
 387+ 'wikilove-header' => 'Geben Sie den Text für die Überschrift ein:',
 388+ 'wikilove-title' => 'Geben Sie den Titel für die Wertschätzung ein:',
 389+ 'wikilove-enter-message' => 'Geben Sie eine Nachricht ein:',
 390+ 'wikilove-err-image-api' => 'Während des Abrufens des Bildes ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.',
 391+ 'wikilove-err-gallery' => 'Während des Ladens der Bilder ist ein Fehler aufgetreten.',
 392+ 'wikilove-err-gallery-again' => 'Bitte versuchen Sie es erneut.',
 393+ 'wikilove-err-preview-api' => 'Während der Vorschau ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.',
 394+ 'wikilove-err-send-api' => 'Während des Sendens der Wertschätzung ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.',
 395+);
 396+
 397+/** Spanish (Español)
 398+ * @author Fitoschido
 399+ */
 400+$messages['es'] = array(
 401+ 'wikilove-desc' => 'Añade una interfaz para facilitar comentarios positivos de los usuarios a las páginas de discusión de otros usuarios',
 402+ 'wikilove' => 'WikiAprecio',
 403+ 'wikilove-enable-preference' => 'Permitir el mostrar agradecimiento a otros usuarios con la pestaña WikiAprecio (experimental)',
 404+ 'wikilove-tab-text' => 'WikiAprecio',
 405+ 'tooltip-ca-wikilove' => 'Publicar un mensaje para este usuario mostrando tu agradecimiento',
 406+ 'wikilove-dialog-title' => 'WikiAprecio – Enviar un mensaje de agradecimiento a otro usuario',
 407+ 'wikilove-select-type' => 'Seleccionar tipo',
 408+ 'wikilove-get-started-header' => '¡Comencemos!',
 409+ 'wikilove-get-started-list-1' => 'Selecciona el tipo de WikiAprecio que quieres enviar',
 410+ 'wikilove-get-started-list-2' => 'Añadir detalles al WikiAprecio',
 411+ 'wikilove-get-started-list-3' => '¡Enviar WikiAprecio!',
 412+ 'wikilove-add-details' => 'Añadir detalles',
 413+ 'wikilove-image' => 'Introduce un nombre de archivo de imagen:',
 414+ 'wikilove-select-image' => 'Selecciona una imagen:',
 415+ 'wikilove-header' => 'Introduce un encabezado:',
 416+ 'wikilove-title' => 'Introduce un título de adjudicación:',
 417+ 'wikilove-enter-message' => 'Escribe un mensaje:',
 418+ 'wikilove-omit-sig' => '(sin firma)',
 419+ 'wikilove-image-example' => '(ejemplo: Trophy.png)',
 420+ 'wikilove-button-preview' => 'Previsualizar',
 421+ 'wikilove-preview' => 'Previsualización',
 422+ 'wikilove-notify' => 'Notificar al usuario por correo-e',
 423+ 'wikilove-button-send' => 'Enviar WikiAprecio',
 424+ 'wikilove-type-barnstars' => 'Reconocimientos',
 425+ 'wikilove-type-food' => 'Comida y bebida',
 426+ 'wikilove-type-kittens' => 'Gatitos',
 427+ 'wikilove-type-makeyourown' => 'Personalizado',
 428+ 'wikilove-err-header' => 'Introduce un encabezado.',
 429+ 'wikilove-err-title' => 'Introduce un título.',
 430+ 'wikilove-err-msg' => 'Introduce un mensaje personal.',
 431+ 'wikilove-err-image' => 'Selecciona una imagen.',
 432+ 'wikilove-err-image-bad' => 'La imagen no existe.',
 433+ 'wikilove-err-image-api' => 'Algo salió mal al recuperar la imagen. Por favor, inténtalo de nuevo.',
 434+ 'wikilove-err-sig' => 'No incluyas tu firma en el mensaje.',
 435+ 'wikilove-err-gallery' => 'Algo salió mal al cargar las imágenes.',
 436+ 'wikilove-err-gallery-again' => 'Reintentar',
 437+ 'wikilove-err-preview-api' => 'Algo salió mal durante la previsualización. Por favor, inténtalo de nuevo.',
 438+ 'wikilove-err-send-api' => 'Algo salió mal al enviar el mensaje. Por favor, inténtalo de nuevo.',
 439+ 'wikilove-summary' => '/* $1 */ mensaje de WikiAprecio nuevo',
 440+ 'wikilove-what-is-this' => '¿Qué es esto?',
 441+ 'wikilove-anon-warning' => 'Nota: Este usuario no está registrado, él o ella pudiera no ver este mensaje.',
 442+ 'wikilove-commons-text' => 'Puedes encontrar imágenes navegando por $1.',
 443+);
 444+
 445+/** French (Français)
 446+ * @author Crochet.david
 447+ * @author Hashar
 448+ * @author IAlex
 449+ * @author Jean-Frédéric
 450+ * @author Kaldari
 451+ * @author Seb35
 452+ * @author Sherbrooke
 453+ */
 454+$messages['fr'] = array(
 455+ 'wikilove-desc' => "Ajoute une interface pour faciliter la rétroaction positive sur la page de discussion d'un utilisateur",
 456+ 'wikilove' => 'WikiLove',
 457+ 'wikilove-enable-preference' => "Active l'onglet WikiLove servant à signifier aux autres contributeurs votre appréciation (expérimental)",
 458+ 'wikilove-tab-text' => 'WikiLove',
 459+ 'tooltip-ca-wikilove' => 'Poster un message à cet utilisateur pour indiquer votre appréciation',
 460+ 'wikilove-dialog-title' => 'WikiLove – Envoyez un message d’appréciation à un autre utilisateur',
 461+ 'wikilove-select-type' => 'Sélectionnez le type',
 462+ 'wikilove-get-started-header' => 'Commençons !',
 463+ 'wikilove-get-started-list-1' => 'Sélectionnez le type de WikiLove que vous souhaitez envoyer',
 464+ 'wikilove-get-started-list-2' => 'Ajoutez des détails à votre WikiLove',
 465+ 'wikilove-get-started-list-3' => 'Envoyez votre WikiLove !',
 466+ 'wikilove-add-details' => 'Ajouter des détails',
 467+ 'wikilove-image' => 'Entrez le nom du fichier image :',
 468+ 'wikilove-select-image' => 'Sélectionnez une image :',
 469+ 'wikilove-header' => 'Entrez un en-tête :',
 470+ 'wikilove-title' => 'Entrez un titre de récompense :',
 471+ 'wikilove-enter-message' => 'Entrez un message :',
 472+ 'wikilove-omit-sig' => '(sans signature)',
 473+ 'wikilove-image-example' => '(exemple : Trophy.png)',
 474+ 'wikilove-button-preview' => 'Prévisualiser',
 475+ 'wikilove-preview' => 'Prévisualiser',
 476+ 'wikilove-notify' => 'Notifier l’utilisateur par courriel',
 477+ 'wikilove-button-send' => 'Envoyer le WikiLove',
 478+ 'wikilove-type-barnstars' => 'Récompenses',
 479+ 'wikilove-type-food' => 'Nourriture et boissons',
 480+ 'wikilove-type-kittens' => 'Chatons',
 481+ 'wikilove-type-makeyourown' => 'Créez votre propre',
 482+ 'wikilove-err-header' => "S'il vous plaît inscrire un en-tête.",
 483+ 'wikilove-err-title' => "S'il vous plaît inscrire un titre.",
 484+ 'wikilove-err-msg' => 'Entrez un message personnalisé.',
 485+ 'wikilove-err-image' => "S'il vous plaît sélectionner une image.",
 486+ 'wikilove-err-image-bad' => 'L’image n’existe pas.',
 487+ 'wikilove-err-image-api' => 'Quelque chose n’a pas fonctionné en récupérant l’image. Veuillez réessayer.',
 488+ 'wikilove-err-sig' => "S'il vous plaît ne pas inclure une signature dans le message.",
 489+ 'wikilove-err-gallery' => "Quelque chose n'a pas fonctionné lors du chargement des images !",
 490+ 'wikilove-err-gallery-again' => 'Essayez à nouveau',
 491+ 'wikilove-err-preview-api' => 'Quelque chose n’a pas fonctionné pendant la prévisualisation. Veuillez réessayer.',
 492+ 'wikilove-err-send-api' => 'Quelque chose n’a pas fonctionné lors de l’envoi du message. Veuillez réessayer.',
 493+ 'wikilove-summary' => '/* $1 */ nouveau message WikiLove',
 494+ 'wikilove-what-is-this' => 'Qu’est-ce que c’est ?',
 495+ 'wikilove-anon-warning' => 'Note : cet utilisateur n’est pas enregistré, il ou elle peut ne pas voir ce message.',
 496+ 'wikilove-commons-text' => 'Vous pouvez trouver des images en surfant sur $1.',
 497+);
 498+
 499+/** Franco-Provençal (Arpetan)
 500+ * @author ChrisPtDe
 501+ * @author Kaldari
 502+ */
 503+$messages['frp'] = array(
 504+ 'wikilove' => 'VouiquiAmôr',
 505+ 'wikilove-tab-text' => 'VouiquiAmôr',
 506+ 'wikilove-dialog-title' => 'VouiquiAmôr – Mandâd un mèssâjo de remarciement a un ôtro utilisator',
 507+ 'wikilove-select-type' => 'Chouèsésséd lo tipo',
 508+ 'wikilove-get-started-header' => 'Comencens !',
 509+ 'wikilove-get-started-list-1' => 'Chouèsésséd lo tipo de VouiquiAmôr que vos souhètâd mandar',
 510+ 'wikilove-get-started-list-2' => 'Apondéd des dètalys a voutron VouiquiAmôr',
 511+ 'wikilove-get-started-list-3' => 'Mandâd voutron VouiquiAmôr !',
 512+ 'wikilove-add-details' => 'Apondre des dètalys',
 513+ 'wikilove-image' => 'Buchiéd lo nom d’un fichiér émâge :',
 514+ 'wikilove-select-image' => 'Chouèsir una émâge :',
 515+ 'wikilove-header' => 'Buchiéd un en-téta :',
 516+ 'wikilove-title' => 'Buchiéd lo titro d’un prix :',
 517+ 'wikilove-enter-message' => 'Buchiéd un mèssâjo :',
 518+ 'wikilove-omit-sig' => '(sen signatura)',
 519+ 'wikilove-image-example' => '(ègzemplo : Trophy.png)',
 520+ 'wikilove-button-preview' => 'Prèvisualisar',
 521+ 'wikilove-preview' => 'Prèvisualisacion',
 522+ 'wikilove-notify' => 'Notifiar l’utilisator per mèssageria èlèctronica',
 523+ 'wikilove-button-send' => 'Mandar lo VouiquiAmôr',
 524+ 'wikilove-type-barnstars' => 'Dècoracions',
 525+ 'wikilove-type-food' => 'Megiér et bêre',
 526+ 'wikilove-type-kittens' => 'Minons',
 527+ 'wikilove-type-makeyourown' => 'Féte voutron prôpro',
 528+ 'wikilove-err-header' => 'Volyéd buchiér un en-téta.',
 529+ 'wikilove-err-title' => 'Volyéd buchiér un titro.',
 530+ 'wikilove-err-msg' => 'Volyéd buchiér un mèssâjo pèrsonalisâ.',
 531+ 'wikilove-err-image' => 'Volyéd chouèsir una émâge.',
 532+ 'wikilove-err-image-bad' => 'L’émâge ègziste pas.',
 533+ 'wikilove-err-sig' => 'Volyéd pas encllure una signatura dens lo mèssâjo.',
 534+ 'wikilove-err-gallery-again' => 'Tornâd èprovar',
 535+ 'wikilove-summary' => '/* $1 */ mèssâjo novél VouiquiAmôr',
 536+ 'wikilove-what-is-this' => 'Qu’est-o qu’il est ?',
 537+);
 538+
 539+/** Galician (Galego)
 540+ * @author Kaldari
 541+ * @author Toliño
 542+ */
 543+$messages['gl'] = array(
 544+ 'wikilove-desc' => 'Engade unha interface para facilitar a mostra de aprecio cara a un usuario na súa páxina de conversa',
 545+ 'wikilove' => 'Amor wiki',
 546+ 'wikilove-enable-preference' => 'Activar o envío de mostras de aprecio aos outros usuarios mediante a lapela de amor wiki (experimental)',
 547+ 'wikilove-tab-text' => 'Amor wiki',
 548+ 'tooltip-ca-wikilove' => 'Déixelle unha mensaxe a este usuario mostrando o seu aprecio',
 549+ 'wikilove-dialog-title' => 'Amor wiki - Envíe unha mensaxe de aprecio a outro usuario',
 550+ 'wikilove-select-type' => 'Seleccione o tipo',
 551+ 'wikilove-get-started-header' => 'Comecemos!',
 552+ 'wikilove-get-started-list-1' => 'Seleccione tipo de amor wiki que queira enviar',
 553+ 'wikilove-get-started-list-2' => 'Engadir detalles ao seu amor wiki',
 554+ 'wikilove-get-started-list-3' => 'Enviar o seu amor wiki!',
 555+ 'wikilove-add-details' => 'Engadir detalles',
 556+ 'wikilove-image' => 'Insira un nome de ficheiro para a imaxe:',
 557+ 'wikilove-select-image' => 'Seleccione unha imaxe:',
 558+ 'wikilove-header' => 'Insira unha cabeceira:',
 559+ 'wikilove-title' => 'Insira un título para o premio:',
 560+ 'wikilove-enter-message' => 'Escriba unha mensaxe:',
 561+ 'wikilove-omit-sig' => '(sen sinatura)',
 562+ 'wikilove-image-example' => '(exemplo: Trophy.png)',
 563+ 'wikilove-button-preview' => 'Vista previa',
 564+ 'wikilove-preview' => 'Vista previa',
 565+ 'wikilove-notify' => 'Informar ao usuario por correo electrónico',
 566+ 'wikilove-button-send' => 'Enviar o amor wiki',
 567+ 'wikilove-type-makeyourown' => 'Faga o seu',
 568+ 'wikilove-err-header' => 'Escriba unha cabeceira.',
 569+ 'wikilove-err-title' => 'Escriba un título.',
 570+ 'wikilove-err-msg' => 'Escriba unha mensaxe.',
 571+ 'wikilove-err-image' => 'Seleccione unha imaxe.',
 572+ 'wikilove-err-image-bad' => 'A imaxe non existe',
 573+ 'wikilove-err-image-api' => 'Houbo un problema ao acceder á imaxe. Inténteo de novo.',
 574+ 'wikilove-err-sig' => 'Non incluír a sinatura na mensaxe.',
 575+ 'wikilove-err-gallery' => 'Houbo un problema ao cargar as imaxes!',
 576+ 'wikilove-err-gallery-again' => 'Inténteo de novo',
 577+ 'wikilove-err-preview-api' => 'Houbo un problema ao ollar a vista previa. Inténteo de novo.',
 578+ 'wikilove-err-send-api' => 'Houbo un problema ao enviar a mensaxe. Inténteo de novo.',
 579+ 'wikilove-summary' => '/* $1 */ nova mensaxe de amor wiki',
 580+ 'wikilove-what-is-this' => 'Que é isto?',
 581+ 'wikilove-anon-warning' => 'Nota: Este usuario non está rexistrado, el ou ela puido non ver esta mensaxe.',
 582+ 'wikilove-commons-text' => 'Pode atopar imaxes navegando por $1.',
 583+);
 584+
 585+/** Hebrew (עברית)
 586+ * @author Amire80
 587+ */
 588+$messages['he'] = array(
 589+ 'wikilove-desc' => 'הוספת ממשק לשליחת תגובות חיוביות לדפי שיחת משתמש',
 590+ 'wikilove' => 'ויקי־אהבה',
 591+ 'wikilove-enable-preference' => 'הפעלה של הצגת הערכה למשתמשים אחרים באמצעות לשונית ויקי־אהבה (ניסיוני)',
 592+ 'wikilove-tab-text' => 'ויקי־אהבה',
 593+ 'tooltip-ca-wikilove' => 'לשלוח למשתמש הזה הודעה שמראה את הערכתך',
 594+ 'wikilove-dialog-title' => 'ויקי־אהבה – שליחת הודעת הערכה למשתמש אחר',
 595+ 'wikilove-select-type' => 'בחירת סוג',
 596+ 'wikilove-get-started-header' => 'בואו נתחיל!',
 597+ 'wikilove-get-started-list-1' => 'איזה סוג של ויקי‏־אהבה לשלוח',
 598+ 'wikilove-get-started-list-2' => 'להוסיף פרטים להודעת ויקי־‏אהבה',
 599+ 'wikilove-get-started-list-3' => 'לשלוח ויקי־אהבה!',
 600+ 'wikilove-add-details' => 'הוספת פרטים',
 601+ 'wikilove-image' => 'שם קובץ תמונה:',
 602+ 'wikilove-select-image' => 'בחירת תמונה:',
 603+ 'wikilove-header' => 'כותרת פסקה:',
 604+ 'wikilove-title' => 'שם הצל"ש:',
 605+ 'wikilove-enter-message' => 'הודעה:',
 606+ 'wikilove-omit-sig' => '(ללא חתימה)',
 607+ 'wikilove-image-example' => '(למשל: Trophy.png)',
 608+ 'wikilove-button-preview' => 'תצוגה מקדימה',
 609+ 'wikilove-preview' => 'תצוגה מקדימה',
 610+ 'wikilove-notify' => 'להודיע למשתמש בדואר אלקטרוני',
 611+ 'wikilove-button-send' => 'לשלוח ויקי־אהבה',
 612+ 'wikilove-type-barnstars' => 'כוכבים',
 613+ 'wikilove-type-food' => 'אוכל ושתייה',
 614+ 'wikilove-type-kittens' => 'חתולים',
 615+ 'wikilove-type-makeyourown' => 'יצירה אישית',
 616+ 'wikilove-err-header' => 'נא להזין כותרת פסקה.',
 617+ 'wikilove-err-title' => 'נא להזין שם לצל"ש.',
 618+ 'wikilove-err-msg' => 'נא להזין הודעה מותאמת אישית.',
 619+ 'wikilove-err-image' => 'נא לבחור תמונה.',
 620+ 'wikilove-err-image-bad' => 'התמונה אינה קיימת.',
 621+ 'wikilove-err-image-api' => 'משהו השתבש בעת אחזור התמונה. נא לנסות שוב.',
 622+ 'wikilove-err-sig' => 'נא לא לכתוב חתימה בהודעה.',
 623+ 'wikilove-err-gallery' => 'משהו השתבש בעת טעינת התמונות.',
 624+ 'wikilove-err-gallery-again' => 'לנסות שוב',
 625+ 'wikilove-err-preview-api' => 'משהו השתבש במהלך תצוגה מקדימה. נא לנסות שוב.',
 626+ 'wikilove-err-send-api' => 'משהו השתבש בעת שליחת ההודעה. נא לנסות שוב.',
 627+ 'wikilove-summary' => '/* $1 */ הודעת ויקי־אהבה חדשה',
 628+ 'wikilove-what-is-this' => 'מה זה?',
 629+ 'wikilove-anon-warning' => 'הערה: משתמש זה אינו רשום ואולי לא יבחין בהודעה זו.',
 630+ 'wikilove-commons-text' => 'אפשר לחפש תמונות באתר $1.',
 631+);
 632+
 633+/** Hindi (हिन्दी)
 634+ * @author Kaldari
 635+ * @author Mayur
 636+ * @author Vibhijain
 637+ */
 638+$messages['hi'] = array(
 639+ 'wikilove-desc' => 'उपयोगकर्ता वार्ता पृष्ठो पर सकारात्मक उपयोगकर्ता राय की सुविधा के लिए इंटरफ़ेस जोड़ता है',
 640+ 'wikilove' => 'विकिप्रेम',
 641+ 'wikilove-enable-preference' => 'विकिप्रेम टैब (प्रयोगात्मक) के साथ अन्य उपयोगकर्ताओं के लिए प्रशंसा देखना सक्षम करे',
 642+ 'wikilove-tab-text' => 'विकिप्रेम',
 643+ 'tooltip-ca-wikilove' => 'इस उपयोगकर्ता को अपनी प्रशंसा दिखाने के लिए एक संदेश पोस्ट करे',
 644+ 'wikilove-dialog-title' => 'विकिप्रेम - किसी अन्य उपयोगकर्ता के लिए सराहना की एक संदेश भेजें',
 645+ 'wikilove-select-type' => 'प्रकार का चयन करें',
 646+ 'wikilove-get-started-header' => 'चलो शुरू हो जाओ!',
 647+ 'wikilove-get-started-list-1' => 'विकिप्रेम के जिस प्रकार को आप भेजना चाहते हैं उसका चयन करें',
 648+ 'wikilove-get-started-list-2' => 'अपने विकिप्रेम में विवरण जोड़ें',
 649+ 'wikilove-get-started-list-3' => 'अपना विकिप्रेम भेजे !',
 650+ 'wikilove-add-details' => 'विवरण जोड़ें',
 651+ 'wikilove-image' => 'चित्र नाम दर्ज करें:',
 652+ 'wikilove-select-image' => 'चित्र का चयन करें:',
 653+ 'wikilove-header' => 'शीर्षक दर्ज करें:',
 654+ 'wikilove-title' => 'एक पुरस्कार शीर्षक दर्ज करें:',
 655+ 'wikilove-enter-message' => 'संदेश दर्ज करें:',
 656+ 'wikilove-omit-sig' => '(हस्ताक्षर के बिना)',
 657+ 'wikilove-image-example' => '(उदाहरण: Trophy.png)',
 658+ 'wikilove-button-preview' => 'पूर्वावलोकन',
 659+ 'wikilove-preview' => 'पूर्वावलोकन',
 660+ 'wikilove-notify' => 'ई - मेल द्वारा उपयोगकर्ता को सूचित करें',
 661+ 'wikilove-button-send' => 'विकिप्रेम भेजे',
 662+ 'wikilove-type-barnstars' => 'बार्नस्टार(Barnstars)',
 663+ 'wikilove-type-food' => 'खाद्य और पेय',
 664+ 'wikilove-type-kittens' => 'नन्ही बिल्लियाँ',
 665+ 'wikilove-type-makeyourown' => 'अपना खुद का बनाएँ',
 666+ 'wikilove-err-header' => 'कृपया कोई शीर्षक दर्ज करें।',
 667+ 'wikilove-err-title' => 'कृपया कोई शीर्षक दर्ज करें।',
 668+ 'wikilove-err-msg' => 'कृपया संदेश प्रविष्ट करें।',
 669+ 'wikilove-err-image' => 'कृपया चित्र का चयन करें।',
 670+ 'wikilove-err-image-bad' => 'चित्र अस्तित्व में नहीं हैं।',
 671+ 'wikilove-err-image-api' => 'संदेश को पुन: प्राप्त करते समय कुछ गलत हो गया। कृपया वापिस कोशिश करे।',
 672+ 'wikilove-err-sig' => 'कृपया इस संदेश में हस्ताक्षर शामिल नहीं करे।',
 673+ 'wikilove-err-gallery' => 'चित्र लोड करते समय कुछ गलत हो गया।',
 674+ 'wikilove-err-gallery-again' => 'पुन: प्रयास करें',
 675+ 'wikilove-err-preview-api' => 'पूर्वावलोकन करते समय कुछ गलत हो गया। कृपया वापिस कोशिश करे।',
 676+ 'wikilove-err-send-api' => 'संदेश को भेजते समय कुछ गलत हो गया। कृपया वापिस कोशिश करे।',
 677+ 'wikilove-summary' => '/ * $1 * / नया विकिप्रेम संदेश',
 678+ 'wikilove-what-is-this' => 'यह क्या है?',
 679+ 'wikilove-anon-warning' => 'नोट: यह उपयोगकर्ता पंजीकृत नहीं है, वह शायद यह संदेश नहीं देख सकते हैं।',
 680+ 'wikilove-commons-text' => 'आप $1 को ब्राउज़ करके चित्र खोज सकते है।',
 681+);
 682+
 683+/** Hungarian (Magyar)
 684+ * @author Bdamokos
 685+ * @author Dani
 686+ * @author Kaldari
 687+ * @author Xbspiro
 688+ */
 689+$messages['hu'] = array(
 690+ 'wikilove-desc' => 'Létrehoz egy felületet, amely megkönnyíti a pozitív szerkesztői visszajelzéseket a szerkesztők vitalapjain.',
 691+ 'wikilove' => 'Wikibók',
 692+ 'wikilove-enable-preference' => 'Az elismerés (WikiLove) fül engedélyezése szerkesztői lapokon. (kísérleti)',
 693+ 'wikilove-tab-text' => 'Wikibók',
 694+ 'tooltip-ca-wikilove' => 'Elismerő üzenet küldése ennek a felhasználónak',
 695+ 'wikilove-dialog-title' => 'Wikibók – Küldj elismerő üzenetet egy másik felhasználónak',
 696+ 'wikilove-select-type' => 'Válassz típust',
 697+ 'wikilove-get-started-header' => 'Kezdjük!',
 698+ 'wikilove-get-started-list-1' => 'Válaszd ki a wikibók típusát',
 699+ 'wikilove-get-started-list-2' => 'Töltsd ki a részleteket',
 700+ 'wikilove-get-started-list-3' => 'Küldd el a wikibókot!',
 701+ 'wikilove-add-details' => 'Részletek',
 702+ 'wikilove-image' => 'Kép fájlneve:',
 703+ 'wikilove-select-image' => 'Válassz egy képet:',
 704+ 'wikilove-header' => 'A fejléc tartalma:',
 705+ 'wikilove-title' => 'A díj címe:',
 706+ 'wikilove-enter-message' => 'Üzenet:',
 707+ 'wikilove-omit-sig' => '(aláírás nélkül)',
 708+ 'wikilove-image-example' => '(példa: Trophy.png)',
 709+ 'wikilove-button-preview' => 'Előnézet',
 710+ 'wikilove-preview' => 'Előnézet',
 711+ 'wikilove-notify' => 'Felhasználó értesítése e-mailben',
 712+ 'wikilove-button-send' => 'Wikibók elküldése',
 713+ 'wikilove-type-barnstars' => 'Barnstarok',
 714+ 'wikilove-type-food' => 'Étel és ital',
 715+ 'wikilove-type-kittens' => 'Cicák',
 716+ 'wikilove-type-makeyourown' => 'Egyedi készítése',
 717+ 'wikilove-err-header' => 'Add meg a fejlécet!',
 718+ 'wikilove-err-title' => 'Add meg a címet!',
 719+ 'wikilove-err-msg' => 'Ide írd a személyes üzenetedet.',
 720+ 'wikilove-err-image' => 'Válassz egy képet!',
 721+ 'wikilove-err-image-bad' => 'A kép nem létezik.',
 722+ 'wikilove-err-image-api' => 'Valami probléma történt a kép lekérése közben. Próbáld újra!',
 723+ 'wikilove-err-sig' => 'Ne helyezz el aláírást az üzenetben!',
 724+ 'wikilove-err-gallery' => 'Valami hiba történt a képek betöltése közben!',
 725+ 'wikilove-err-gallery-again' => 'Újrapróbálkozás',
 726+ 'wikilove-err-preview-api' => 'Valami probléma történt az előnézet előkészítése közben. Próbáld újra!',
 727+ 'wikilove-err-send-api' => 'Valami probléma történt az üzenet elküldése közben. Próbáld újra!',
 728+ 'wikilove-summary' => '/* $1 */ Új wikibók',
 729+ 'wikilove-what-is-this' => 'Mi ez?',
 730+ 'wikilove-anon-warning' => 'Megjegyzés: ez a felhasználó nem regisztrált, lehet, hogy nem fogja észrevenni az üzenetet.',
 731+ 'wikilove-commons-text' => 'Képeket a $1on kereshetsz.',
 732+ 'wikilove-commons-link' => 'Wikimédia Commons',
 733+);
 734+
 735+/** Interlingua (Interlingua)
 736+ * @author McDutchie
 737+ */
 738+$messages['ia'] = array(
 739+ 'wikilove-desc' => 'Adde un interfacie pro exprimer appreciation in le paginas de discussion de usatores',
 740+ 'wikilove' => 'WikiLove',
 741+ 'wikilove-enable-preference' => 'Permitter monstrar appreciation pro altere usatores con le scheda WikiLove (experimental)',
 742+ 'wikilove-tab-text' => 'WikiLove',
 743+ 'tooltip-ca-wikilove' => 'Publicar un message pro iste usator que monstra tu appreciation',
 744+ 'wikilove-dialog-title' => 'WikiLove: Inviar un message de appreciation a un altere usator',
 745+ 'wikilove-select-type' => 'Selige typo',
 746+ 'wikilove-get-started-header' => 'Nos comencia!',
 747+ 'wikilove-get-started-list-1' => 'Selige le typo de WikiLove que tu vole inviar',
 748+ 'wikilove-get-started-list-2' => 'Adde detalios a tu WikiLove',
 749+ 'wikilove-get-started-list-3' => 'Invia tu WikiLove!',
 750+ 'wikilove-add-details' => 'Adder detalios',
 751+ 'wikilove-image' => 'Entra le nomine de file de un imagine:',
 752+ 'wikilove-select-image' => 'Selige un imagine:',
 753+ 'wikilove-header' => 'Entra un texto de capite:',
 754+ 'wikilove-title' => 'Entra le titulo de un premio:',
 755+ 'wikilove-enter-message' => 'Entra un message:',
 756+ 'wikilove-omit-sig' => '(sin signatura)',
 757+ 'wikilove-image-example' => '(exemplo: Stella-Auro-Interlingua.jpg)',
 758+ 'wikilove-button-preview' => 'Previsualisar',
 759+ 'wikilove-preview' => 'Previsualisation',
 760+ 'wikilove-notify' => 'Notificar le usator per e-mail',
 761+ 'wikilove-button-send' => 'Inviar WikiLove',
 762+ 'wikilove-type-barnstars' => 'Medalias',
 763+ 'wikilove-type-food' => 'Mangiar e biber',
 764+ 'wikilove-type-kittens' => 'Cattones',
 765+ 'wikilove-type-makeyourown' => 'Crear le tue',
 766+ 'wikilove-err-header' => 'Per favor entra un capite.',
 767+ 'wikilove-err-title' => 'Per favor entra un titulo.',
 768+ 'wikilove-err-msg' => 'Per favor entra un message personalisate.',
 769+ 'wikilove-err-image' => 'Per favor selige un imagine.',
 770+ 'wikilove-err-image-bad' => 'Le imagine non existe.',
 771+ 'wikilove-err-image-api' => 'Un problema occurreva durante le obtention del imagine. Per favor reproba.',
 772+ 'wikilove-err-sig' => 'Per favor non include un signatura in le message.',
 773+ 'wikilove-err-gallery' => 'Un problema occurreva durante le cargamento del imagines!',
 774+ 'wikilove-err-gallery-again' => 'Reprobar',
 775+ 'wikilove-err-preview-api' => 'Un problema occurreva durante le previsualisation. Per favor reproba.',
 776+ 'wikilove-err-send-api' => 'Un problema occurreva durante le invio del message. Per favor reproba.',
 777+ 'wikilove-summary' => '/* $1 */ nove message de WikiLove',
 778+ 'wikilove-what-is-this' => 'Que es isto?',
 779+ 'wikilove-anon-warning' => 'Nota: Iste usator non es registrate, e ille o illa non recipera notification de iste message.',
 780+ 'wikilove-commons-text' => 'Tu pote trovar imagines in $1.',
 781+ 'wikilove-commons-link' => 'Wikimedia Commons',
 782+ 'wikilove-commons-url' => 'http://commons.wikimedia.org/wiki/Pagina_principal?uselang=ia',
 783+);
 784+
 785+/** Indonesian (Bahasa Indonesia)
 786+ * @author Iwan Novirion
 787+ * @author Kaldari
 788+ */
 789+$messages['id'] = array(
 790+ 'wikilove-desc' => 'Menambahkan penghargaan ke halaman pembicaraan pengguna atas kontribusi positifnya',
 791+ 'wikilove' => 'WikiSalut',
 792+ 'wikilove-enable-preference' => 'Aktifkan tab WikiSalut untuk mengirim penghargaan bagi pengguna lain (uji coba)',
 793+ 'wikilove-tab-text' => 'WikiSalut',
 794+ 'wikilove-dialog-title' => 'WikiSalut - Kirim pesan penghargaan kepada pengguna lain',
 795+ 'wikilove-select-type' => 'Pilih jenis',
 796+ 'wikilove-get-started-header' => 'Ayo kita mulai!',
 797+ 'wikilove-select-image' => 'Pilih gambar:',
 798+ 'wikilove-header' => 'Masukkan judul pesan:',
 799+ 'wikilove-title' => 'Masukkan nama penghargaan:',
 800+ 'wikilove-enter-message' => 'Masukkan pesan:',
 801+ 'wikilove-omit-sig' => '(tanpa tanda tangan)',
 802+ 'wikilove-image-example' => '(contoh: Piala.png)',
 803+ 'wikilove-button-preview' => 'Pratayang',
 804+ 'wikilove-preview' => 'Pratayang',
 805+ 'wikilove-notify' => 'Beritahu pengguna dengan e-mail',
 806+ 'wikilove-button-send' => 'Kirim WikiSalut',
 807+ 'wikilove-type-makeyourown' => 'Coba buat sendiri',
 808+ 'wikilove-err-image-bad' => 'Gambar tidak ada.',
 809+ 'wikilove-err-gallery-again' => 'Coba lagi',
 810+ 'wikilove-summary' => '/ * $1 * / pesan WikiSalut baru',
 811+ 'wikilove-what-is-this' => 'Apa ini?',
 812+ 'wikilove-commons-text' => 'Anda dapat menemukan gambar dengan mengunjungi $1.',
 813+);
 814+
 815+/** Italian (Italiano)
 816+ * @author Beta16
 817+ * @author Kaldari
 818+ * @author Rippitippi
 819+ */
 820+$messages['it'] = array(
 821+ 'wikilove-desc' => "Aggiunge un'interfaccia per facilitare il feedback positivo ad un utente nella sua pagina di discussione",
 822+ 'wikilove' => 'WikiLove',
 823+ 'wikilove-enable-preference' => "Abilita la possibilità di mostrarti l'apprezzamento dagli altri utenti con la scheda WikiLove (sperimentale)",
 824+ 'wikilove-tab-text' => 'WikiLove',
 825+ 'tooltip-ca-wikilove' => 'Invia un messaggio a questo utente per mostrare il tuo apprezzamento',
 826+ 'wikilove-dialog-title' => 'WikiLove - Invia un messaggio di apprezzamento ad un altro utente',
 827+ 'wikilove-select-type' => 'Seleziona un tipo',
 828+ 'wikilove-get-started-header' => 'Cominciamo!',
 829+ 'wikilove-get-started-list-1' => 'Seleziona il tipo di WikiLove che vuoi inviare',
 830+ 'wikilove-get-started-list-2' => 'Aggiungi dettagli al tuo WikiLove',
 831+ 'wikilove-get-started-list-3' => 'Invia il tuo WikiLove!',
 832+ 'wikilove-add-details' => 'Aggiungi dettagli',
 833+ 'wikilove-image' => "Inserisci il nome del file con l'immagine",
 834+ 'wikilove-select-image' => "Seleziona un'immagine:",
 835+ 'wikilove-header' => "Inserisci un'intestazione:",
 836+ 'wikilove-title' => 'Inserisci un titolo del premio:',
 837+ 'wikilove-enter-message' => 'Inserisci un messaggio:',
 838+ 'wikilove-omit-sig' => '(senza firma)',
 839+ 'wikilove-image-example' => '(esempio: Trophy.png)',
 840+ 'wikilove-button-preview' => 'Anteprima',
 841+ 'wikilove-preview' => 'Anteprima',
 842+ 'wikilove-notify' => "Notifica all'utente tramite e-mail",
 843+ 'wikilove-button-send' => 'Invia WikiLove',
 844+ 'wikilove-type-makeyourown' => 'Crea il tuo',
 845+ 'wikilove-err-header' => "Inserisci un'intestazione.",
 846+ 'wikilove-err-title' => 'Inserisci un titolo.',
 847+ 'wikilove-err-msg' => 'Inserisci un messaggio.',
 848+ 'wikilove-err-image' => "Seleziona un'immagine.",
 849+ 'wikilove-err-image-bad' => "L'immagine non esiste.",
 850+ 'wikilove-err-image-api' => "Qualcosa è andato storto durante l'inserimento dell'immagine. Per favore riprova.",
 851+ 'wikilove-err-sig' => 'Non includere la firma nel messaggio.',
 852+ 'wikilove-err-gallery' => 'Qualcosa è andato storto nel caricamento delle immagini.',
 853+ 'wikilove-err-gallery-again' => 'Riprova',
 854+ 'wikilove-err-preview-api' => "Qualcosa è andato storto durante l'anteprima. Per favore riprova.",
 855+ 'wikilove-err-send-api' => "Qualcosa è andato storto durante l'invio del messaggio. Per favore riprova.",
 856+ 'wikilove-summary' => '/* $1 */ nuovo messaggio WikiLove',
 857+ 'wikilove-what-is-this' => "Cos'è questo?",
 858+ 'wikilove-anon-warning' => 'Nota: Questo utente non è registrato, lui o lei potrebbe non notare questo messaggio.',
 859+ 'wikilove-commons-text' => 'Potete trovare le immagini cercando in $1.',
 860+);
 861+
 862+/** Japanese (日本語)
 863+ * @author Akaniji
 864+ * @author Whym
 865+ */
 866+$messages['ja'] = array(
 867+ 'wikilove-desc' => '利用者の会話ページに前向きな反応を寄せやすくする機能を、追加します',
 868+ 'wikilove' => 'ウィキラブ',
 869+ 'wikilove-enable-preference' => 'ウィキラブのタブによる、他の利用者に対して感謝の意を示す機能を有効にする(試用版)',
 870+ 'wikilove-tab-text' => 'ウィキラブ',
 871+ 'tooltip-ca-wikilove' => 'この利用者に向けた感謝の言葉を書き込む',
 872+ 'wikilove-dialog-title' => 'WikiLove - 他の利用者に感謝の言葉を送る',
 873+ 'wikilove-select-type' => '種類をお選びください',
 874+ 'wikilove-get-started-header' => 'さあ、始めましょう !',
 875+ 'wikilove-get-started-list-1' => '送りたいウィキラブの種類を選択してください',
 876+ 'wikilove-get-started-list-2' => 'そのウィキラブに詳細を加えてください',
 877+ 'wikilove-get-started-list-3' => 'そのウィキラブを送ってください!',
 878+ 'wikilove-add-details' => '詳細をお書きください',
 879+ 'wikilove-image' => '画像のファイル名を入力してください:',
 880+ 'wikilove-select-image' => '画像をお選びください:',
 881+ 'wikilove-header' => '表題を入力してください:',
 882+ 'wikilove-title' => '賞の名前を入力してください:',
 883+ 'wikilove-enter-message' => 'メッセージを入力してください:',
 884+ 'wikilove-omit-sig' => '(署名は不要)',
 885+ 'wikilove-image-example' => '(例: Trophy.png)',
 886+ 'wikilove-button-preview' => 'プレビュー',
 887+ 'wikilove-preview' => 'プレビュー',
 888+ 'wikilove-notify' => '電子メールでこの利用者に通知する',
 889+ 'wikilove-button-send' => 'ウィキラブを送る',
 890+ 'wikilove-type-makeyourown' => '自作する',
 891+ 'wikilove-err-header' => '表題を入力してください。',
 892+ 'wikilove-err-title' => '賞の名前を入力してください。',
 893+ 'wikilove-err-msg' => 'メッセージを入力してください。',
 894+ 'wikilove-err-image' => '画像を選択してください。',
 895+ 'wikilove-err-image-bad' => '画像が存在しません。',
 896+ 'wikilove-err-image-api' => '画像を取得する際に問題が起きました。もう一度お試しください。',
 897+ 'wikilove-err-sig' => 'メッセージに署名を入れないでください。',
 898+ 'wikilove-err-gallery' => '画像を読み込む際に問題が起きました。',
 899+ 'wikilove-err-gallery-again' => 'もう一度お試しください',
 900+ 'wikilove-err-preview-api' => 'プレビュー中に問題が起きました。もう一度お試しください。',
 901+ 'wikilove-err-send-api' => 'メッセージを送る際に問題が起きました。もう一度お試しください。',
 902+ 'wikilove-summary' => '/* $1 */ 新しいウィキラブのメッセージ',
 903+ 'wikilove-what-is-this' => 'これは何?',
 904+ 'wikilove-anon-warning' => '注:この利用者は登録していないので、このメッセージに気づかないかもしれません。',
 905+ 'wikilove-commons-text' => '$1で画像を見つけることができます。',
 906+);
 907+
 908+/** Colognian (Ripoarisch)
 909+ * @author Kaldari
 910+ * @author Purodha
 911+ */
 912+$messages['ksh'] = array(
 913+ 'wikilove-desc' => 'Määd et müjjelesch, einem sing Aanäkännong ußzeshpräsche, övver däm sing Klaafsigg em Wiki.',
 914+ 'wikilove' => 'Leev Wiki',
 915+ 'wikilove-enable-preference' => 'Määd et müjjelesch, einem sing Aanäkännong ußzeshpräsche (för zom Ußprobeere)',
 916+ 'wikilove-tab-text' => 'Aanäkännong',
 917+ 'tooltip-ca-wikilove' => 'Donn Ding Aanerkennong en ene päsöönlesche Nohreesch ußdröcke',
 918+ 'wikilove-dialog-title' => 'Donn Ding Aanäkännong em Wiki ußdröcke',
 919+ 'wikilove-select-type' => 'Donn en Zoot ußwähle',
 920+ 'wikilove-get-started-header' => 'Lom_mer ens med aanfange!',
 921+ 'wikilove-get-started-list-1' => 'Donn de Aad udder Zoot vun Dinge Aanäkännong ußwähle, di de över et Wiki schecke wells',
 922+ 'wikilove-get-started-list-2' => 'Donn Einzelheite övver Ding päsöönlesche Aanäkännong dobei',
 923+ 'wikilove-get-started-list-3' => 'Donn Ding Aanäkännong övverjävve',
 924+ 'wikilove-add-details' => 'Don noch Einzelheite dobei',
 925+ 'wikilove-image' => 'Jivv ene Name för en Dattei med enem Beld aan:',
 926+ 'wikilove-select-image' => 'Söhg e Beld uß:',
 927+ 'wikilove-header' => 'Jivv en Övverschreff en för Dinge Täx en:',
 928+ 'wikilove-title' => 'Jivv en Övverschreff för Ding Aanäkännong en:',
 929+ 'wikilove-enter-message' => 'Jiv ene Täx en',
 930+ 'wikilove-omit-sig' => '(der ohne en Ongerschreff)',
 931+ 'wikilove-image-example' => '(För e Beispell: De drei Sunnebloome.jpeg)',
 932+ 'wikilove-button-preview' => 'Vör-Aansesch',
 933+ 'wikilove-preview' => 'Vör-Aansesch',
 934+ 'wikilove-notify' => 'Donn dämm Medmaacher en <i lang="en">e-mail</i> schecke.',
 935+ 'wikilove-button-send' => 'Donn e joot Jeföhl schecke',
 936+ 'wikilove-type-barnstars' => 'Jummibeersche',
 937+ 'wikilove-type-food' => 'Esse un Drenke',
 938+ 'wikilove-type-kittens' => 'Käzje',
 939+ 'wikilove-type-makeyourown' => 'Maach Ding eije',
 940+ 'wikilove-err-header' => 'Bes esu jood un jivv en Övverschreff en.',
 941+ 'wikilove-err-title' => 'Bes esu jood un jivv en Övverschreff en.',
 942+ 'wikilove-err-msg' => 'Bes esu jood un jivv en Nohreesch en.',
 943+ 'wikilove-err-image' => 'Bes esu jood un söhg e Beld uß.',
 944+ 'wikilove-err-image-bad' => 'Dat Beld jidd et nit.',
 945+ 'wikilove-err-image-api' => 'Beim Beld_Laade es_ene Fähler opjetrodde. Bes_esu_jood_un versöhg_ed_norr_ens.',
 946+ 'wikilove-err-sig' => 'Bes esu jood un donn kein „Ongerschrevv“ en Dingem Täx enjävve.',
 947+ 'wikilove-err-gallery' => 'Beim Belder_Laade es_ene Fähler opjetrodde.',
 948+ 'wikilove-err-gallery-again' => 'Bes_esu jood_un versöhg_ed norr_ens.',
 949+ 'wikilove-err-preview-api' => 'Beim vöraf_Beloore es enne Fähler opjetrodde. Bes_esu jood_un versöhg_ed norr_ens.',
 950+ 'wikilove-err-send-api' => 'Beim Nohreesch_Verschecke es_ene Fähler opjetrodde. Bes_esu_jood_un versöhg_ed_norr_ens.',
 951+ 'wikilove-summary' => '/* $1 */ En neuje päsöönlesche Nohreesch för Aanäkännong ußzeshpräsche',
 952+ 'wikilove-what-is-this' => 'Wat sul dat heh bedügge?',
 953+ 'wikilove-anon-warning' => 'Opjepaß: Dat es keine aanjemälldte Metmaacher. Döm es nit domet ze rääschne, dat dä dat lißß.',
 954+ 'wikilove-commons-text' => 'Belder fenk mer op $1.',
 955+ 'wikilove-commons-link' => '<i lang="en">Wikimedia Commons</i>',
 956+ 'wikilove-commons-url' => 'http://commons.wikimedia.org/wiki/Main_Page?uselang=ksh',
 957+);
 958+
 959+/** Luxembourgish (Lëtzebuergesch)
 960+ * @author Robby
 961+ */
 962+$messages['lb'] = array(
 963+ 'wikilove' => 'WikiLove',
 964+ 'wikilove-tab-text' => 'WikiLove',
 965+ 'wikilove-dialog-title' => 'WikiLove - Schéckt e Message vun der Wäertschätzung un en anere Benotzer',
 966+ 'wikilove-select-type' => 'Typ eraussichen',
 967+ 'wikilove-get-started-header' => 'Elo geet et lass!',
 968+ 'wikilove-add-details' => 'Detailer derbäisetzen',
 969+ 'wikilove-image' => 'Gitt den Numm vum Fichier vun engem Bild un:',
 970+ 'wikilove-select-image' => 'Sicht e Bild eraus:',
 971+ 'wikilove-header' => 'Eng Iwwerschrëft aginn:',
 972+ 'wikilove-title' => 'Gitt en Titel vun enger Wäertschätzung un:',
 973+ 'wikilove-enter-message' => 'Gitt e Message an:',
 974+ 'wikilove-omit-sig' => '(ouni Ënnerschrëft)',
 975+ 'wikilove-image-example' => '(Beispill: Trophy.png)',
 976+ 'wikilove-button-preview' => 'Kucken ouni ofzespäicheren',
 977+ 'wikilove-preview' => 'Kucken ouni ofzespäicheren',
 978+ 'wikilove-notify' => 'De Benotzer per Mail informéieren',
 979+ 'wikilove-type-barnstars' => 'Medaillen',
 980+ 'wikilove-type-food' => 'Iessen an Drénken',
 981+ 'wikilove-type-makeyourown' => 'Maacht Ären Eegenen',
 982+ 'wikilove-err-header' => 'Gitt w.e.g. eng Iwwerschrëft un.',
 983+ 'wikilove-err-title' => 'Gitt w.e.g. en Titel un.',
 984+ 'wikilove-err-msg' => 'Gitt w.e.g. e perseinleche Message an.',
 985+ 'wikilove-err-image' => 'Sicht w.e.g. e Bild eraus.',
 986+ 'wikilove-err-image-bad' => 'Bild gëtt et net.',
 987+ 'wikilove-err-image-api' => 'Beim Opruffe vum Bild ass eppes schif gaang. Probéiert et w.e.g. nach emol.',
 988+ 'wikilove-err-gallery' => 'Beim Luede vun de Biller huet eppes net fonctionnéiert.',
 989+ 'wikilove-err-gallery-again' => 'Probéiert nach emol',
 990+ 'wikilove-err-send-api' => 'Beim Schécke vun der Noriicht ass eppes schif gaang. Probéiert et w.e.g. nach emol.',
 991+ 'wikilove-summary' => '/* $1 */ neie WikiLove Message',
 992+ 'wikilove-what-is-this' => 'Wat ass dat?',
 993+ 'wikilove-anon-warning' => 'Notiz: Dëse Benotzer ass net registréiert, hien oder si gesäit dëse Message méiglecherweis net.',
 994+);
 995+
 996+/** Macedonian (Македонски)
 997+ * @author Bjankuloski06
 998+ */
 999+$messages['mk'] = array(
 1000+ 'wikilove-desc' => 'Додава посредник за искажување на позитивни мислења и поддршка на кориснички страници за разговор',
 1001+ 'wikilove' => 'ВикиЉубов',
 1002+ 'wikilove-enable-preference' => 'Овозможи оддавање на признанија и заслуги со јазичето ВикиЉубов (експериментално)',
 1003+ 'wikilove-tab-text' => 'ВикиЉубов',
 1004+ 'tooltip-ca-wikilove' => 'Оставете му порака на корисников кажувајќи му дека го цените',
 1005+ 'wikilove-dialog-title' => 'ВикиЉубов - испратете порака на корисник, оддавајќи му признание за работата',
 1006+ 'wikilove-select-type' => 'Одберете тип',
 1007+ 'wikilove-get-started-header' => 'Да почнеме!',
 1008+ 'wikilove-get-started-list-1' => 'Одберете го типот на ВикиЉубов што сакате да ја испратите',
 1009+ 'wikilove-get-started-list-2' => 'Внесете содржина на ВикиЉубов-та',
 1010+ 'wikilove-get-started-list-3' => 'Испратете ја вашата ВикиЉубов',
 1011+ 'wikilove-add-details' => 'Внесете содржина',
 1012+ 'wikilove-image' => 'Внесете име на слика:',
 1013+ 'wikilove-select-image' => 'Одберете слика:',
 1014+ 'wikilove-header' => 'Внесете заглавие:',
 1015+ 'wikilove-title' => 'Внесете назив на наградата:',
 1016+ 'wikilove-enter-message' => 'Внесете порака:',
 1017+ 'wikilove-omit-sig' => '(без потпис)',
 1018+ 'wikilove-image-example' => '(пример: Trophy.png)',
 1019+ 'wikilove-button-preview' => 'Преглед',
 1020+ 'wikilove-preview' => 'Преглед',
 1021+ 'wikilove-notify' => 'Извести го корисникот по е-пошта',
 1022+ 'wikilove-button-send' => 'Испрати ВикиЉубов',
 1023+ 'wikilove-type-barnstars' => 'Одликувања',
 1024+ 'wikilove-type-food' => 'Храна и пијалоци',
 1025+ 'wikilove-type-kittens' => 'Мачиња',
 1026+ 'wikilove-type-makeyourown' => 'Направете своја',
 1027+ 'wikilove-err-header' => 'Внесете заглавие.',
 1028+ 'wikilove-err-title' => 'Внесете наслов.',
 1029+ 'wikilove-err-msg' => 'Внесете ваша порака.',
 1030+ 'wikilove-err-image' => 'Одберете слика.',
 1031+ 'wikilove-err-image-bad' => 'Сликата не постои.',
 1032+ 'wikilove-err-image-api' => 'Се појави проблем при преземањето на сликата. Обидете се повторно.',
 1033+ 'wikilove-err-sig' => 'Не ставајте потпис во пораката.',
 1034+ 'wikilove-err-gallery' => 'Се појави грешка при вчитувањето на сликите!',
 1035+ 'wikilove-err-gallery-again' => 'Обиди се повторно',
 1036+ 'wikilove-err-preview-api' => 'Се појави проблем при прегледувањето. Обидете се повторно.',
 1037+ 'wikilove-err-send-api' => 'Се појави проблем при испраќањето на пораката. Обидете се повторно.',
 1038+ 'wikilove-summary' => '/* $1 */ нова порака (ВикиЉубов)',
 1039+ 'wikilove-what-is-this' => 'Што е ова?',
 1040+ 'wikilove-anon-warning' => 'Напомена: Корисникот не е регистриран, па затоа може да не ја примети поракава.',
 1041+ 'wikilove-commons-text' => 'Слики можете да најдете во проектот $1.',
 1042+ 'wikilove-commons-link' => 'Заедничка Ризница',
 1043+ 'wikilove-commons-url' => 'http://commons.wikimedia.org/wiki/Главна_страница?uselang=mk',
 1044+);
 1045+
 1046+/** Malayalam (മലയാളം)
 1047+ * @author Praveenp
 1048+ */
 1049+$messages['ml'] = array(
 1050+ 'wikilove-desc' => 'ഉപയോക്താക്കൾക്ക് സംവാദം താളുകൾ വഴി ഗുണാത്മക അഭിപ്രായങ്ങൾ പ്രകടിപ്പിക്കാനുള്ള സമ്പർക്കമുഖം കൂട്ടിച്ചേർക്കുന്നു',
 1051+ 'wikilove' => 'വിക്കിസ്നേഹം',
 1052+ 'wikilove-enable-preference' => 'വിക്കിസ്നേഹം റ്റാബ് ഉപയോഗിച്ച് മറ്റ് ഉപയോക്താക്കളെ അഭിനന്ദനങ്ങൾ അറിയിക്കൽ സജ്ജമാക്കുക (പരീക്ഷണാടിസ്ഥാനം)',
 1053+ 'wikilove-tab-text' => 'വിക്കിസ്നേഹം',
 1054+ 'tooltip-ca-wikilove' => 'താങ്കളുടെ അഭിനന്ദനം അറിയിക്കാൻ ഈ ഉപയോക്താവിന് ഒരു സന്ദേശയമയ്ക്കുക',
 1055+ 'wikilove-dialog-title' => 'വിക്കിസ്നേഹം - മറ്റൊരു ഉപയോക്താവിനെ അഭിനന്ദനം അറിയിക്കാനൊരു സന്ദേശം നൽകുക',
 1056+ 'wikilove-select-type' => 'ഇനം തിരഞ്ഞെടുക്കുക',
 1057+ 'wikilove-get-started-header' => 'നമുക്ക് തുടങ്ങാം!',
 1058+ 'wikilove-get-started-list-1' => 'താങ്കൾ അയയ്ക്കാനാഗ്രഹിക്കുന്ന തരം വിക്കിസ്നേഹം തിരഞ്ഞെടുക്കുക',
 1059+ 'wikilove-get-started-list-2' => 'താങ്കളുടെ വിക്കിസ്നേഹത്തിലേയ്ക്ക് കൂടുതൽ വിവരങ്ങൾ കൂട്ടിച്ചേർക്കുക',
 1060+ 'wikilove-get-started-list-3' => 'താങ്കളുടെ വിക്കിസ്നേഹം അയയ്ക്കുക!',
 1061+ 'wikilove-add-details' => 'അധികവിവരങ്ങൾ ചേർക്കുക',
 1062+ 'wikilove-image' => 'ഒരു ചിത്രത്തിന്റെ പേര് നൽകുക:',
 1063+ 'wikilove-select-image' => 'ചിത്രം തിരഞ്ഞെടുക്കുക:',
 1064+ 'wikilove-header' => 'തലക്കുറി നൽകുക:',
 1065+ 'wikilove-title' => 'പുരസ്കാരത്തിന്റെ തലക്കെട്ട് നൽകുക:',
 1066+ 'wikilove-enter-message' => 'സന്ദേശം നൽകുക:',
 1067+ 'wikilove-omit-sig' => '(ഒപ്പ് ചേർക്കേണ്ടതില്ല)',
 1068+ 'wikilove-image-example' => '(ഉദാ: Trophy.png)',
 1069+ 'wikilove-button-preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
 1070+ 'wikilove-preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
 1071+ 'wikilove-notify' => 'ഉപയോക്താവിനെ ഇമെയിൽ വഴി അറിയിക്കുക',
 1072+ 'wikilove-button-send' => 'വിക്കിസ്നേഹം അയയ്ക്കുക',
 1073+ 'wikilove-type-barnstars' => 'പ്രവർത്തനതാരകങ്ങൾ',
 1074+ 'wikilove-type-food' => 'ഭക്ഷണപാനീയങ്ങൾ',
 1075+ 'wikilove-type-kittens' => 'പൂച്ചക്കുട്ടികൾ',
 1076+ 'wikilove-type-makeyourown' => 'സ്വന്തമായിട്ടൊന്നുണ്ടാക്കുക',
 1077+ 'wikilove-err-header' => 'ദയവായി ഒരു തലക്കുറി ചേർക്കുക.',
 1078+ 'wikilove-err-title' => 'ദയവായി തലക്കെട്ട് നൽകുക.',
 1079+ 'wikilove-err-msg' => 'ദയവായി ഒരു സന്ദേശം ചേർക്കുക.',
 1080+ 'wikilove-err-image' => 'ദയവായി ചിത്രം തിരഞ്ഞെടുക്കുക.',
 1081+ 'wikilove-err-image-bad' => 'ചിത്രം നിലവിലില്ല.',
 1082+ 'wikilove-err-image-api' => 'ചിത്രം എടുക്കാൻ നോക്കിയപ്പോൾ എന്തോ പിഴവുണ്ടായി. വീണ്ടും ശ്രമിക്കുക.',
 1083+ 'wikilove-err-sig' => 'ദയവായി സന്ദേശത്തിൽ ഒപ്പ് ഉൾപ്പെടുത്തരുത്.',
 1084+ 'wikilove-err-gallery' => 'ചിത്രങ്ങൾ ശേഖരിച്ചുകൊണ്ടിരിക്കെ എന്തോ കുഴപ്പമുണ്ടായി!',
 1085+ 'wikilove-err-gallery-again' => 'വീണ്ടും ശ്രമിക്കുക',
 1086+ 'wikilove-err-preview-api' => 'പ്രിവ്യൂ എടുത്തപ്പോൾ എന്തോ പിഴവുണ്ടായി. ദയവായി വീണ്ടും ശ്രമിക്കുക.',
 1087+ 'wikilove-err-send-api' => 'സന്ദേശം അയയ്ക്കാൻ നോക്കിയപ്പോൾ എന്തോ പിഴവുണ്ടായി. വീണ്ടും ശ്രമിക്കുക.',
 1088+ 'wikilove-summary' => '/* $1 */ പുതിയ വിക്കിസ്നേഹസന്ദേശം',
 1089+ 'wikilove-what-is-this' => 'എന്താണിത്?',
 1090+ 'wikilove-anon-warning' => 'കുറിപ്പ്: ഈ ഉപയോക്താവ് അംഗത്വമെടുത്തിട്ടില്ല, അദ്ദേഹം ഈ സന്ദേശം ശ്രദ്ധിക്കാനിടയില്ല.',
 1091+ 'wikilove-commons-text' => '$1 ബ്രൗസ് ചെയ്ത് ചിത്രങ്ങൾ കണ്ടുപിറ്റിക്കാവുന്നതാണ്.',
 1092+);
 1093+
 1094+/** Malay (Bahasa Melayu)
 1095+ * @author Anakmalaysia
 1096+ */
 1097+$messages['ms'] = array(
 1098+ 'wikilove-desc' => 'Menambahkan antara muka untuk memudahkan maklum balas pengguna yang positif kepada laman perbincangan pengguna',
 1099+ 'wikilove' => 'WikiLove',
 1100+ 'wikilove-enable-preference' => 'Membolehkan pengguna saling memberikan penghargaan dengan tab WikiLove (percubaan)',
 1101+ 'wikilove-tab-text' => 'WikiLove',
 1102+ 'tooltip-ca-wikilove' => 'Kirim satu pesanan kepada pengguna ini sebagai tanda penghargaan',
 1103+ 'wikilove-dialog-title' => 'WikiLove – Kirim pesanan penghargaan kepada pengguna lain',
 1104+ 'wikilove-select-type' => 'Pilih jenis',
 1105+ 'wikilove-get-started-header' => 'Mari kita bermula!',
 1106+ 'wikilove-get-started-list-1' => 'Pilih jenis WikiLove yang ingin anda kirim',
 1107+ 'wikilove-get-started-list-2' => 'Tambahkan butiran pada WikiLove anda',
 1108+ 'wikilove-get-started-list-3' => 'Hantar WikiLove anda!',
 1109+ 'wikilove-add-details' => 'Tambah butiran',
 1110+ 'wikilove-image' => 'Isikan nama fail imej:',
 1111+ 'wikilove-select-image' => 'Pilih imej:',
 1112+ 'wikilove-header' => 'Isikan pengatas:',
 1113+ 'wikilove-title' => 'Isikan gelaran anugerah:',
 1114+ 'wikilove-enter-message' => 'Isikan mesej:',
 1115+ 'wikilove-omit-sig' => '(tanpa tandatangan)',
 1116+ 'wikilove-image-example' => '(contoh: Trophy.png)',
 1117+ 'wikilove-button-preview' => 'Pralihat',
 1118+ 'wikilove-preview' => 'Pralihat',
 1119+ 'wikilove-notify' => 'Beritahu pengguna melalui e-mel',
 1120+ 'wikilove-button-send' => 'Hantar WikiLove',
 1121+ 'wikilove-type-barnstars' => 'Barnstar',
 1122+ 'wikilove-type-food' => 'Makanan dan minuman',
 1123+ 'wikilove-type-kittens' => 'Anak kucing',
 1124+ 'wikilove-type-makeyourown' => 'Bikin sendiri',
 1125+ 'wikilove-err-header' => 'Sila isikan pengatas.',
 1126+ 'wikilove-err-title' => 'Sila isikan tajuk.',
 1127+ 'wikilove-err-msg' => 'Sila tuliskan pesanan peribadi.',
 1128+ 'wikilove-err-image' => 'Sila pilih imej.',
 1129+ 'wikilove-err-image-bad' => 'Imej tidak wujud.',
 1130+ 'wikilove-err-image-api' => 'Masalah timbul ketika mendapatkan imej itu. Sila cuba lagi.',
 1131+ 'wikilove-err-sig' => 'Tolong jangan sertakan tandatangan dalam pesanan.',
 1132+ 'wikilove-err-gallery' => 'Masalah timbu ketika memuatkan imej.',
 1133+ 'wikilove-err-gallery-again' => 'Cuba lagi',
 1134+ 'wikilove-err-preview-api' => 'Masalah timbul ketika pralihat. Sila cuba lagi.',
 1135+ 'wikilove-err-send-api' => 'Masalah timbul ketika menghantar pesanan. Sila cuba lagi.',
 1136+ 'wikilove-summary' => '/* $1 */ pesanan WikiLove baru',
 1137+ 'wikilove-what-is-this' => 'Apakah ini?',
 1138+ 'wikilove-anon-warning' => 'Perhatian: Pengguna ini tidak berdaftar, jadi mungkin dia tidak dapat perasan pesanan ini.',
 1139+ 'wikilove-commons-text' => 'Anda boleh mencari imej dengan melayari $1.',
 1140+);
 1141+
 1142+/** Dutch (Nederlands)
 1143+ * @author SPQRobin
 1144+ * @author Siebrand
 1145+ * @author Tjcool007
 1146+ */
 1147+$messages['nl'] = array(
 1148+ 'wikilove-desc' => "Voegt een interface toe voor het geven van positieve terugkoppeling op overlegpagina's van gebruikers",
 1149+ 'wikilove' => 'Wikiwaardering',
 1150+ 'wikilove-enable-preference' => 'Waardering geven aan andere gebruikers via Wikiwaardering inschakelen (experimenteel)',
 1151+ 'wikilove-tab-text' => 'Wikiwaardering',
 1152+ 'tooltip-ca-wikilove' => 'Plaats een bericht voor deze gebruiker om uw waardering te tonen',
 1153+ 'wikilove-dialog-title' => 'Wikiwaardering - stuur een boodschap van waardering naar een andere gebruiker',
 1154+ 'wikilove-select-type' => 'Selecteer type',
 1155+ 'wikilove-get-started-header' => 'Begin ermee!',
 1156+ 'wikilove-get-started-list-1' => 'Selecteer het type Wikiwaardering dat u wilt achterlaten',
 1157+ 'wikilove-get-started-list-2' => 'Voeg gegevens toe aan uw Wikiwaardering',
 1158+ 'wikilove-get-started-list-3' => 'Verzend uw Wikiwaardering!',
 1159+ 'wikilove-add-details' => 'Gegevens toevoegen',
 1160+ 'wikilove-image' => 'Geef de bestandsnaam van een afbeelding op:',
 1161+ 'wikilove-select-image' => 'Kies een afbeelding:',
 1162+ 'wikilove-header' => 'Geef een koptekst op:',
 1163+ 'wikilove-title' => 'Geef een waarderingsnaam op:',
 1164+ 'wikilove-enter-message' => 'Voer een bericht in:',
 1165+ 'wikilove-omit-sig' => '(zonder ondertekening)',
 1166+ 'wikilove-image-example' => '(Voorbeeld: Trophy.png)',
 1167+ 'wikilove-button-preview' => 'Voorvertoning',
 1168+ 'wikilove-preview' => 'Voorvertoning',
 1169+ 'wikilove-notify' => 'De gebruiker een bericht sturen via e-mail',
 1170+ 'wikilove-button-send' => 'Wikiwaardering versturen',
 1171+ 'wikilove-type-barnstars' => 'Sterren',
 1172+ 'wikilove-type-food' => 'Eten en drinken',
 1173+ 'wikilove-type-kittens' => 'Katjes',
 1174+ 'wikilove-type-makeyourown' => 'Uw eigen maken',
 1175+ 'wikilove-err-header' => 'Geef een koptekst op.',
 1176+ 'wikilove-err-title' => 'Geef een naam op.',
 1177+ 'wikilove-err-msg' => 'Geef een persoonlijk bericht op.',
 1178+ 'wikilove-err-image' => 'Selecteer een afbeelding.',
 1179+ 'wikilove-err-image-bad' => 'Afbeelding bestaat niet.',
 1180+ 'wikilove-err-image-api' => 'Er is iets misgegaan bij het ophalen van de afbeelding. Probeer het opnieuw.',
 1181+ 'wikilove-err-sig' => 'Neem geen ondertekening op in dit bericht.',
 1182+ 'wikilove-err-gallery' => 'Er iets misgegaan bij het laden van de afbeeldingen.',
 1183+ 'wikilove-err-gallery-again' => 'Probeer het opnieuw',
 1184+ 'wikilove-err-preview-api' => 'Er is iets misgegaan tijdens de voorvertoning. Probeer het opnieuw.',
 1185+ 'wikilove-err-send-api' => 'Er is iets misgegaan bij het verzenden van de afbeelding. Probeer het opnieuw.',
 1186+ 'wikilove-summary' => '/* $1 */ nieuw Wikiwaarderingbericht',
 1187+ 'wikilove-what-is-this' => 'Wat is dit?',
 1188+ 'wikilove-anon-warning' => 'Opmerking: Deze gebruiker is niet geregistreerd, hij of zij ziet dit bericht misschien niet.',
 1189+ 'wikilove-commons-text' => 'U kunt afbeeldingen vinden door op $1 te bladeren.',
 1190+);
 1191+
 1192+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 1193+ * @author Cocu
 1194+ * @author Stigmj
 1195+ */
 1196+$messages['no'] = array(
 1197+ 'wikilove-desc' => 'Legger til et grensesnitt for å forenkle positive tilbakemeldinger til brukeres diskusjonssider',
 1198+ 'wikilove' => 'WikiLove',
 1199+ 'wikilove-enable-preference' => 'Aktiver muligheten for å vise takknemlighet til andre brukere med WikiLove-fanen (eksperimentell)',
 1200+ 'wikilove-tab-text' => 'WikiLove',
 1201+ 'tooltip-ca-wikilove' => 'Legg inn en melding til denne brukeren som viser din takknemlighet',
 1202+ 'wikilove-dialog-title' => 'WikiLove - Send en takknemlighetsmelding til en annen bruker',
 1203+ 'wikilove-select-type' => 'Velg type',
 1204+ 'wikilove-get-started-header' => 'La oss sette i gang!',
 1205+ 'wikilove-get-started-list-1' => 'Velg WikiLove-typen du vil sende',
 1206+ 'wikilove-get-started-list-2' => 'Legg til detaljer i WikiLove-meldingen din',
 1207+ 'wikilove-get-started-list-3' => 'Send din WikiLove!',
 1208+ 'wikilove-add-details' => 'Legg til detaljer',
 1209+ 'wikilove-image' => 'Skriv inn filnavnet til et bilde:',
 1210+ 'wikilove-select-image' => 'Velg et bilde:',
 1211+ 'wikilove-header' => 'Angi en topptekst:',
 1212+ 'wikilove-title' => 'Skriv inn en tittel for tildelingen:',
 1213+ 'wikilove-enter-message' => 'Skriv inn en melding:',
 1214+ 'wikilove-omit-sig' => '(uten signatur)',
 1215+ 'wikilove-image-example' => '(eksempel: Trophy.png)',
 1216+ 'wikilove-button-preview' => 'Forhåndsvisning',
 1217+ 'wikilove-preview' => 'Forhåndsvis',
 1218+ 'wikilove-notify' => 'Varsle brukeren via e-post',
 1219+ 'wikilove-button-send' => 'Send WikiLove',
 1220+ 'wikilove-type-food' => 'Mat og drikke',
 1221+ 'wikilove-type-makeyourown' => 'Lag din egen',
 1222+ 'wikilove-err-header' => 'Vennligst skriv inn en overskrift.',
 1223+ 'wikilove-err-title' => 'Vennligst skriv inn en tittel.',
 1224+ 'wikilove-err-msg' => 'Vennligst skriv inn en melding.',
 1225+ 'wikilove-err-image' => 'Vennligst velg et bilde.',
 1226+ 'wikilove-err-image-bad' => 'Bildet finnes ikke.',
 1227+ 'wikilove-err-image-api' => 'Noe gikk galt under henting av bildet. Vennligst prøv igjen.',
 1228+ 'wikilove-err-sig' => 'Vennligst ikke inkluder en signatur i meldingen.',
 1229+ 'wikilove-err-gallery' => 'Noe gikk galt ved innlasting av bilder.',
 1230+ 'wikilove-err-gallery-again' => 'Prøv igjen',
 1231+ 'wikilove-err-preview-api' => 'Noe gikk galt under forhåndsvisningen. Vennligst prøv igjen.',
 1232+ 'wikilove-err-send-api' => 'Noe gikk galt under sending av meldingen. Vennligst prøv igjen.',
 1233+ 'wikilove-summary' => '/ * $1 * / ny WikiLove-melding',
 1234+ 'wikilove-what-is-this' => 'Hva er dette?',
 1235+ 'wikilove-anon-warning' => 'Merk: Denne brukeren er ikke registrert, det kan derfor hende at vedkommende ikke legger merke til denne meldingen.',
 1236+ 'wikilove-commons-text' => 'Du kan finne bilder ved å bla gjennom $1.',
 1237+);
 1238+
 1239+/** Polish (Polski)
 1240+ * @author Sp5uhe
 1241+ */
 1242+$messages['pl'] = array(
 1243+ 'wikilove-desc' => 'Dodaje interfejs ułatwiający dodawanie pozytywnych opinii do stron dyskusji innych użytkowników.',
 1244+ 'wikilove' => 'WikiLove',
 1245+ 'wikilove-enable-preference' => 'Wyświetlaj innym użytkownikom zakładkę WikiLove umożliwiającą wysłanie wiadomości wyrażającej uznanie (eksperymentalne)',
 1246+ 'wikilove-tab-text' => 'WikiLove',
 1247+ 'tooltip-ca-wikilove' => 'Napisz wiadomość do tego użytkownika, wyrażając swoje uznanie',
 1248+ 'wikilove-dialog-title' => 'WikiLove – wyślij do innego użytkownika wiadomość wyrażającą uznanie',
 1249+ 'wikilove-select-type' => 'Wybierz typ',
 1250+ 'wikilove-get-started-header' => 'Zaczynamy!',
 1251+ 'wikilove-get-started-list-1' => 'Wybierz typ wiadomości WikiLove, którą chcesz wysłać',
 1252+ 'wikilove-get-started-list-2' => 'Dodaj szczegółowe informacje do ​​WikiLove',
 1253+ 'wikilove-get-started-list-3' => 'Wyślij WikiLove!',
 1254+ 'wikilove-add-details' => 'Dodaj szczegółowe informacje',
 1255+ 'wikilove-image' => 'Nazwa pliku obrazka',
 1256+ 'wikilove-select-image' => 'Wybierz obrazek',
 1257+ 'wikilove-header' => 'Nagłówek',
 1258+ 'wikilove-title' => 'Powód wyrażenia uznania',
 1259+ 'wikilove-enter-message' => 'Wiadomość',
 1260+ 'wikilove-omit-sig' => '(bez podpisu)',
 1261+ 'wikilove-image-example' => '(przykład: Trophy.png)',
 1262+ 'wikilove-button-preview' => 'Podgląd',
 1263+ 'wikilove-preview' => 'Podgląd',
 1264+ 'wikilove-notify' => 'Poinformuj użytkownika przez e‐mail',
 1265+ 'wikilove-button-send' => 'Wyślij',
 1266+ 'wikilove-type-barnstars' => 'Gwiazdy',
 1267+ 'wikilove-type-food' => 'Jedzenie i picie',
 1268+ 'wikilove-type-kittens' => 'Kociaki',
 1269+ 'wikilove-type-makeyourown' => 'Stwórz własne',
 1270+ 'wikilove-err-header' => 'Wpisz nagłówek',
 1271+ 'wikilove-err-title' => 'Należy wpisać tytuł.',
 1272+ 'wikilove-err-msg' => 'Wpisz spersonalizowaną wiadomość.',
 1273+ 'wikilove-err-image' => 'Wybierz obrazek.',
 1274+ 'wikilove-err-image-bad' => 'Taki obrazek nie istnieje.',
 1275+ 'wikilove-err-image-api' => 'Coś poszło nie tak podczas pobierania obrazka. Spróbuj ponownie.',
 1276+ 'wikilove-err-sig' => 'Nie podpisuj wiadomości.',
 1277+ 'wikilove-err-gallery' => 'Coś poszło nie tak podczas ładowania obrazków.',
 1278+ 'wikilove-err-gallery-again' => 'Spróbuj ponownie',
 1279+ 'wikilove-err-preview-api' => 'Coś poszło nie tak podczas wyświetlania podglądu. Spróbuj ponownie.',
 1280+ 'wikilove-err-send-api' => 'Coś poszło nie tak podczas wysyłania wiadomości. Spróbuj ponownie.',
 1281+ 'wikilove-summary' => '/* $1 */ nowa wiadomość WikiLove',
 1282+ 'wikilove-what-is-this' => 'Co to jest?',
 1283+ 'wikilove-anon-warning' => 'Uwaga! Ten użytkownik nie jest zarejestrowany, on lub ona może nie zauważyć tej wiadomości.',
 1284+ 'wikilove-commons-text' => 'Możesz znaleźć obrazki przeglądając $1.',
 1285+);
 1286+
 1287+/** Pashto (پښتو)
 1288+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
 1289+ */
 1290+$messages['ps'] = array(
 1291+ 'wikilove-image' => 'انځور:',
 1292+ 'wikilove-title' => 'سرليک:',
 1293+);
 1294+
 1295+/** Portuguese (Português)
 1296+ * @author Hamilton Abreu
 1297+ */
 1298+$messages['pt'] = array(
 1299+ 'wikilove-desc' => 'Adiciona uma interface para facilitar a colocação de demonstrações de apreço nas páginas de discussão dos utilizadores',
 1300+ 'wikilove' => 'WikiApreço',
 1301+ 'wikilove-enable-preference' => 'Permite enviar demonstrações de apreço a outros utilizadores usando o separador "WikiApreço" (experimental)',
 1302+ 'wikilove-tab-text' => 'WikiApreço',
 1303+ 'tooltip-ca-wikilove' => 'Envie uma mensagem a este utilizador demonstrando o seu apreço',
 1304+ 'wikilove-dialog-title' => 'WikiApreço - Envie uma mensagem de apreço a outro utilizador',
 1305+ 'wikilove-select-type' => 'Escolha o tipo',
 1306+ 'wikilove-get-started-header' => 'Vamos começar!',
 1307+ 'wikilove-get-started-list-1' => 'Escolha o tipo de WikiApreço que pretende enviar',
 1308+ 'wikilove-get-started-list-2' => 'Acrescente detalhes ao seu WikiApreço',
 1309+ 'wikilove-get-started-list-3' => 'Envie o seu WikiApreço!',
 1310+ 'wikilove-add-details' => 'Adicionar detalhes',
 1311+ 'wikilove-image' => 'Introduza o nome de uma imagem:',
 1312+ 'wikilove-select-image' => 'Seleccione uma imagem:',
 1313+ 'wikilove-header' => 'Introduza um cabeçalho:',
 1314+ 'wikilove-title' => 'Introduza o título de um prémio:',
 1315+ 'wikilove-enter-message' => 'Introduza uma mensagem:',
 1316+ 'wikilove-omit-sig' => '(sem assinatura)',
 1317+ 'wikilove-image-example' => '(exemplo: Trophy.png)',
 1318+ 'wikilove-button-preview' => 'Antever',
 1319+ 'wikilove-preview' => 'Antevisão',
 1320+ 'wikilove-notify' => 'Notificar o utilizador por correio electrónico',
 1321+ 'wikilove-button-send' => 'Enviar WikiApreço',
 1322+ 'wikilove-type-barnstars' => 'Distinções',
 1323+ 'wikilove-type-food' => 'Comes e bebes',
 1324+ 'wikilove-type-kittens' => 'Gatinhos',
 1325+ 'wikilove-type-makeyourown' => 'Crie o seu',
 1326+ 'wikilove-err-header' => 'Introduza um cabeçalho, por favor.',
 1327+ 'wikilove-err-title' => 'Introduza um título, por favor.',
 1328+ 'wikilove-err-msg' => 'Introduza uma mensagem personalizada, por favor.',
 1329+ 'wikilove-err-image' => 'Escolha uma imagem, por favor.',
 1330+ 'wikilove-err-image-bad' => 'A imagem não existe.',
 1331+ 'wikilove-err-image-api' => 'Ocorreu um erro ao aceder à imagem. Tente novamente, por favor.',
 1332+ 'wikilove-err-sig' => 'Não inclua uma assinatura na mensagem, por favor.',
 1333+ 'wikilove-err-gallery' => 'Ocorreu um erro ao carregar as imagens!',
 1334+ 'wikilove-err-gallery-again' => 'Tente novamente',
 1335+ 'wikilove-err-preview-api' => 'Ocorreu um erro durante a antevisão. Tente novamente, por favor.',
 1336+ 'wikilove-err-send-api' => 'Ocorreu um erro ao enviar a mensagem. Tente novamente, por favor.',
 1337+ 'wikilove-summary' => '/* $1 */ nova mensagem de WikiApreço',
 1338+ 'wikilove-what-is-this' => 'O que é isto?',
 1339+ 'wikilove-anon-warning' => 'Nota: Este utilizador não está registado e poderá não se aperceber desta mensagem.',
 1340+ 'wikilove-commons-text' => 'Pode encontrar imagens na $1.',
 1341+);
 1342+
 1343+/** Brazilian Portuguese (Português do Brasil)
 1344+ * @author Kaldari
 1345+ * @author Raylton P. Sousa
 1346+ */
 1347+$messages['pt-br'] = array(
 1348+ 'wikilove-desc' => 'Adiciona uma interface para facilitar a demonstrações de apreço nas páginas de discussão dos utilizadores',
 1349+ 'wikilove' => 'WikiApreço',
 1350+ 'wikilove-enable-preference' => 'Permite enviar demonstrações de apreço a outros utilizadores usando o separador "WikiApreço" (experimental)',
 1351+ 'wikilove-tab-text' => 'WikiApreço',
 1352+ 'tooltip-ca-wikilove' => 'Envie uma mensagem a este utilizador demonstrando o seu apreço',
 1353+ 'wikilove-dialog-title' => 'WikiApreço - Envie uma mensagem de apreço a outro utilizador',
 1354+ 'wikilove-select-type' => 'Escolha o tipo',
 1355+ 'wikilove-get-started-header' => 'Vamos começar!',
 1356+ 'wikilove-get-started-list-1' => 'Escolha o tipo de WikiApreço que pretende enviar',
 1357+ 'wikilove-get-started-list-2' => 'Acrescente detalhes ao seu WikiApreço',
 1358+ 'wikilove-get-started-list-3' => 'Enviar o seu WikiApreço!',
 1359+ 'wikilove-add-details' => 'Adicionar detalhes',
 1360+ 'wikilove-image' => 'Introduza o nome de uma imagem:',
 1361+ 'wikilove-select-image' => 'Selecione uma imagem:',
 1362+ 'wikilove-header' => 'Introduza um cabeçalho:',
 1363+ 'wikilove-title' => 'Introduza o título de um prémio:',
 1364+ 'wikilove-enter-message' => 'Introduza uma mensagem:',
 1365+ 'wikilove-omit-sig' => '(sem assinatura)',
 1366+ 'wikilove-image-example' => '(exemplo: Troféu.png)',
 1367+ 'wikilove-button-preview' => 'Antever',
 1368+ 'wikilove-preview' => 'Antevisão',
 1369+ 'wikilove-notify' => 'Notificar o utilizador por correio eletrônico',
 1370+ 'wikilove-button-send' => 'Enviar WikiApreço',
 1371+ 'wikilove-type-barnstars' => 'Distinções',
 1372+ 'wikilove-type-food' => 'Comes e bebes',
 1373+ 'wikilove-type-kittens' => 'Gatinhos',
 1374+ 'wikilove-type-makeyourown' => 'Crie o seu',
 1375+ 'wikilove-err-header' => 'Introduza um cabeçalho, por favor.',
 1376+ 'wikilove-err-title' => 'Introduza um título, por favor.',
 1377+ 'wikilove-err-msg' => 'Introduza uma mensagem, por favor.',
 1378+ 'wikilove-err-image' => 'Escolha uma imagem, por favor.',
 1379+ 'wikilove-err-image-bad' => 'A imagem não existe.',
 1380+ 'wikilove-err-image-api' => 'Ocorreu um erro ao tentar recuperar à imagem. Tente novamente, por favor.',
 1381+ 'wikilove-err-sig' => 'Não inclua uma assinatura na mensagem, por favor.',
 1382+ 'wikilove-err-gallery' => 'Ocorreu um erro ao carregar as imagens!',
 1383+ 'wikilove-err-gallery-again' => 'Tente novamente',
 1384+ 'wikilove-err-preview-api' => 'Ocorreu um erro durante a antevisão. Tente novamente, por favor.',
 1385+ 'wikilove-err-send-api' => 'Ocorreu um erro ao enviar a mensagem. Tente novamente, por favor.',
 1386+ 'wikilove-summary' => '/* $1 */ nova mensagem de WikiApreço',
 1387+ 'wikilove-what-is-this' => 'O que é isto?',
 1388+ 'wikilove-anon-warning' => 'Nota: Este utilizador não está registado e poderá não perceber esta mensagem.',
 1389+ 'wikilove-commons-text' => 'Pode encontrar imagens pesquisando-as em $1.',
 1390+);
 1391+
 1392+/** Tarandíne (Tarandíne)
 1393+ * @author Joetaras
 1394+ */
 1395+$messages['roa-tara'] = array(
 1396+ 'wikilove-err-gallery-again' => 'Pruève arrete',
 1397+);
 1398+
 1399+/** Russian (Русский)
 1400+ * @author Александр Сигачёв
 1401+ */
 1402+$messages['ru'] = array(
 1403+ 'wikilove-desc' => 'Добавляет интерфейс для упрощения добавления положительных отзывов на страницы обсуждения участников',
 1404+ 'wikilove' => 'ВикиСимпатия',
 1405+ 'wikilove-enable-preference' => 'Включить вкладку ВикиСимпатия для выражения признательности другим пользователям (экспериментальная)',
 1406+ 'wikilove-tab-text' => 'ВикиСимпатия',
 1407+ 'tooltip-ca-wikilove' => 'Отправить сообщение для этого участника, выразить ему признательность',
 1408+ 'wikilove-dialog-title' => 'ВикиСимпатия — выразите признательность другому участнику',
 1409+ 'wikilove-select-type' => 'Выберите тип',
 1410+ 'wikilove-get-started-header' => 'Давайте начнём!',
 1411+ 'wikilove-get-started-list-1' => 'Выберите тип ВикиСимпатии, которую вы хотите выразить',
 1412+ 'wikilove-get-started-list-2' => 'Добавьте подробности к вашей ВикиСимпатии',
 1413+ 'wikilove-get-started-list-3' => 'Отправьте вашу ВикиСимпатию!',
 1414+ 'wikilove-add-details' => 'Добавить подробности',
 1415+ 'wikilove-image' => 'Введите имя файла с изображением:',
 1416+ 'wikilove-select-image' => 'Выберите изображение:',
 1417+ 'wikilove-header' => 'Введите заголовок:',
 1418+ 'wikilove-title' => 'Введите название награды:',
 1419+ 'wikilove-enter-message' => 'Введите сообщение:',
 1420+ 'wikilove-omit-sig' => '(без подписи)',
 1421+ 'wikilove-image-example' => '(например: Trophy.png)',
 1422+ 'wikilove-button-preview' => 'Предпросмотр',
 1423+ 'wikilove-preview' => 'Предпросмотр',
 1424+ 'wikilove-notify' => 'Уведомить участника по электронной почте',
 1425+ 'wikilove-button-send' => 'Отправить ВикиСимпатию',
 1426+ 'wikilove-type-barnstars' => 'Ордена',
 1427+ 'wikilove-type-food' => 'Еда и напитки',
 1428+ 'wikilove-type-kittens' => 'Котята',
 1429+ 'wikilove-type-makeyourown' => 'Сделать собственный',
 1430+ 'wikilove-err-header' => 'Пожалуйста, введите заголовок.',
 1431+ 'wikilove-err-title' => 'Пожалуйста, введите название.',
 1432+ 'wikilove-err-msg' => 'Пожалуйста, введите персонализированное сообщение.',
 1433+ 'wikilove-err-image' => 'Пожалуйста, выберите изображение.',
 1434+ 'wikilove-err-image-bad' => 'Нет такого изображения.',
 1435+ 'wikilove-err-image-api' => 'Что-то пошло не так, при получении изображения. Пожалуйста, попробуйте ещё раз.',
 1436+ 'wikilove-err-sig' => 'Пожалуйста, не включайте подпись в сообщение.',
 1437+ 'wikilove-err-gallery' => 'Что-то пошло не так при загрузке изображений!',
 1438+ 'wikilove-err-gallery-again' => 'Попробуйте ещё раз',
 1439+ 'wikilove-err-preview-api' => 'Что-то пошло не так во время предпросмотра. Пожалуйста, попробуйте ещё раз.',
 1440+ 'wikilove-err-send-api' => 'Что-то пошло не так при отправке сообщения. Пожалуйста, попробуйте ещё раз.',
 1441+ 'wikilove-summary' => '/ * $1 * / новая ВикиСимпатия',
 1442+ 'wikilove-what-is-this' => 'Что это?',
 1443+ 'wikilove-anon-warning' => 'Примечание. Этот участник не зарегистрирован, он или она может не заметить это сообщение.',
 1444+ 'wikilove-commons-text' => 'Вы можете найти изображения в проекте $1.',
 1445+ 'wikilove-commons-link' => 'Викисклад',
 1446+ 'wikilove-commons-url' => 'http://commons.wikimedia.org/wiki/Main_Page?uselang=ru',
 1447+);
 1448+
 1449+/** Slovenian (Slovenščina)
 1450+ * @author Dbc334
 1451+ */
 1452+$messages['sl'] = array(
 1453+ 'wikilove-desc' => 'Doda vmesnik za olajšanje pozitivne povratne informacije uporabnika na uporabniških pogovornih straneh',
 1454+ 'wikilove' => 'WikiLjubezen',
 1455+ 'wikilove-enable-preference' => 'Omogoči izkazovanje hvaležnosti drugim uporabnikom z zavihkom WikiLjubezen (preizkusno)',
 1456+ 'wikilove-tab-text' => 'WikiLjubezen',
 1457+ 'tooltip-ca-wikilove' => 'Objavite sporočilo za tega uporabnika, s katerim boste izkazali svojo hvaležnost',
 1458+ 'wikilove-dialog-title' => 'WikiLjubezen – Pošljite drugemu uporabniku sporočilo hvaležnosti',
 1459+ 'wikilove-select-type' => 'Izberite vrsto',
 1460+ 'wikilove-get-started-header' => 'Začnimo!',
 1461+ 'wikilove-get-started-list-1' => 'Izberite vrsto WikiLjubezni, ki jo želite poslati',
 1462+ 'wikilove-get-started-list-2' => 'Dodajte podrobnosti svoji WikiLjubezni',
 1463+ 'wikilove-get-started-list-3' => 'Pošljite svojo WikiLjubezen!',
 1464+ 'wikilove-add-details' => 'Dodaj podrobnosti',
 1465+ 'wikilove-image' => 'Vnesite ime datoteke slike:',
 1466+ 'wikilove-select-image' => 'Izberite sliko:',
 1467+ 'wikilove-header' => 'Vnesite glavo:',
 1468+ 'wikilove-title' => 'Vnesite naslov nagrade:',
 1469+ 'wikilove-enter-message' => 'Vnesite sporočilo:',
 1470+ 'wikilove-omit-sig' => '(brez podpisa)',
 1471+ 'wikilove-image-example' => '(primer: Trophy.png)',
 1472+ 'wikilove-button-preview' => 'Predoglej',
 1473+ 'wikilove-preview' => 'Predogled',
 1474+ 'wikilove-notify' => 'Obvesti uporabnika po e-pošti',
 1475+ 'wikilove-button-send' => 'Pošljite WikiLjubezen',
 1476+ 'wikilove-type-barnstars' => 'Zvezde',
 1477+ 'wikilove-type-food' => 'Hrana in pijača',
 1478+ 'wikilove-type-kittens' => 'Mucke',
 1479+ 'wikilove-type-makeyourown' => 'Naredite svojo',
 1480+ 'wikilove-err-header' => 'Prosimo, vnesite glavo.',
 1481+ 'wikilove-err-title' => 'Prosimo, vnesite naslov.',
 1482+ 'wikilove-err-msg' => 'Prosimo, vnesite osebno sporočilo.',
 1483+ 'wikilove-err-image' => 'Prosimo, izberite sliko.',
 1484+ 'wikilove-err-image-bad' => 'Slika ne obstaja.',
 1485+ 'wikilove-err-image-api' => 'Med pridobivanjem slike je nekaj šlo narobe. Prosimo, poskusite znova.',
 1486+ 'wikilove-err-sig' => 'Prosimo, da v sporočilo ne vključite svojega podpisa.',
 1487+ 'wikilove-err-gallery' => 'Nekaj je šlo narobe pri nalaganju slik!',
 1488+ 'wikilove-err-gallery-again' => 'Poskusite znova',
 1489+ 'wikilove-err-preview-api' => 'Med predogledom je nekaj šlo narobe. Prosimo, poskusite znova.',
 1490+ 'wikilove-err-send-api' => 'Med pošiljanjem sporočila je nekaj šlo narobe. Prosimo, poskusite znova.',
 1491+ 'wikilove-summary' => '/* $1 */ novo sporočilo WikiLjubezen',
 1492+ 'wikilove-what-is-this' => 'Kaj je to?',
 1493+ 'wikilove-anon-warning' => 'Opomba: Uporabnik ni registriran, zato sporočila morda ne bo opazil.',
 1494+ 'wikilove-commons-text' => 'Slike lahko najdete z brskanjem po $1.',
 1495+);
 1496+
 1497+/** Swedish (Svenska)
 1498+ * @author Ainali
 1499+ */
 1500+$messages['sv'] = array(
 1501+ 'wikilove-desc' => 'Lägger till ett gränssnitt för att förenkla positiv feedback från användarna till Användardiskussionssidor',
 1502+ 'wikilove' => 'WikiLove',
 1503+ 'wikilove-enable-preference' => 'Gör det möjligt att visa uppskattning till andra användare med WikiLove-fliken (experimentell)',
 1504+ 'wikilove-tab-text' => 'WikiLove',
 1505+ 'tooltip-ca-wikilove' => 'Skicka ett meddelande till den här användaren för att visa din uppskattning',
 1506+ 'wikilove-dialog-title' => 'WikiLove - Skicka ett meddelande för att visa uppskattning till en annan användare',
 1507+ 'wikilove-select-type' => 'Välj typ',
 1508+ 'wikilove-get-started-header' => 'Sätt igång!',
 1509+ 'wikilove-get-started-list-1' => 'Välj typ av WikiLove du vill skicka',
 1510+ 'wikilove-get-started-list-2' => 'Lägg till information till din WikiLove',
 1511+ 'wikilove-get-started-list-3' => 'Skicka din WikiLove!',
 1512+ 'wikilove-add-details' => 'Lägg till information',
 1513+ 'wikilove-image' => 'Skriv in ett filnamn på en bild:',
 1514+ 'wikilove-select-image' => 'Välj en bild:',
 1515+ 'wikilove-header' => 'Ange en rubrik:',
 1516+ 'wikilove-title' => 'Ange en rubrik för utmärkelsen:',
 1517+ 'wikilove-enter-message' => 'Ange ett meddelande:',
 1518+ 'wikilove-omit-sig' => '(utan signatur)',
 1519+ 'wikilove-image-example' => '(exempel: Trophy.png)',
 1520+ 'wikilove-button-preview' => 'Förhandsgranska',
 1521+ 'wikilove-preview' => 'Förhandsgranskning',
 1522+ 'wikilove-notify' => 'Meddela användaren via e-post',
 1523+ 'wikilove-button-send' => 'Skicka WikiLove',
 1524+ 'wikilove-type-barnstars' => 'Barnstars',
 1525+ 'wikilove-type-food' => 'Mat och dryck',
 1526+ 'wikilove-type-kittens' => 'Kattungar',
 1527+ 'wikilove-type-makeyourown' => 'Skapa en egen',
 1528+ 'wikilove-err-header' => 'Ange en rubrik.',
 1529+ 'wikilove-err-title' => 'Ange en titel.',
 1530+ 'wikilove-err-msg' => 'Ange ett personligt meddelande.',
 1531+ 'wikilove-err-image' => 'Välj en bild.',
 1532+ 'wikilove-err-image-bad' => 'Bilden finns inte.',
 1533+ 'wikilove-err-image-api' => 'Något gick fel vid hämtning av bilden. Försök igen.',
 1534+ 'wikilove-err-sig' => 'Skriv inte en signatur i meddelandet.',
 1535+ 'wikilove-err-gallery' => 'Något gick fel vid inläsning av bilderna.',
 1536+ 'wikilove-err-gallery-again' => 'Försök igen',
 1537+ 'wikilove-err-preview-api' => 'Något gick fel vid förhandsgranskningen. Försök igen.',
 1538+ 'wikilove-err-send-api' => 'Något gick fel när meddelandet skickades. Försök igen.',
 1539+ 'wikilove-summary' => '/ * $1 * / nytt WikiLove-meddelande',
 1540+ 'wikilove-what-is-this' => 'Vad är det här?',
 1541+ 'wikilove-anon-warning' => 'Obs: Den här användaren är inte registrerad, han eller hon kanske inte kommer att upptäcka detta meddelande.',
 1542+ 'wikilove-commons-text' => 'Du kan hitta bilder genom att söka i $1.',
 1543+);
 1544+
 1545+/** Telugu (తెలుగు)
 1546+ * @author Veeven
 1547+ */
 1548+$messages['te'] = array(
 1549+ 'wikilove-add-details' => 'వివరాలను చేర్చు',
 1550+ 'wikilove-title' => 'ఒక శీర్షికను ఇవ్వండి:',
 1551+);
 1552+
 1553+/** Tagalog (Tagalog)
 1554+ * @author AnakngAraw
 1555+ * @author Kaldari
 1556+ */
 1557+$messages['tl'] = array(
 1558+ 'wikilove-desc' => 'Nagdaragdag ng isang ugnayang-mukha para sa pagpapadali ng positibong puna ng tagagamit sa mga pahina ng usapan',
 1559+ 'wikilove' => 'WikiLove',
 1560+ 'wikilove-enable-preference' => 'Paganahin ang pagpapakita ng pagpapahalaga para sa iba pang mga tagagamit sa pamamagitan ng panglaylay na WikiLove (sinusubukan)',
 1561+ 'wikilove-tab-text' => 'Magpakita ng pagpapahalaga',
 1562+ 'tooltip-ca-wikilove' => 'Magpaskil ng isang mensahe para sa tagagamit na ito na nagpapakita ng pagpapahalaga mo',
 1563+ 'wikilove-dialog-title' => 'WikiLove',
 1564+ 'wikilove-select-type' => 'Piliin ang uri',
 1565+ 'wikilove-get-started-header' => 'Magsimula na tayo!',
 1566+ 'wikilove-get-started-list-1' => 'Piliin ang uri ng WikiLove na nais mong ipadala',
 1567+ 'wikilove-get-started-list-2' => 'Magdagdag ng mga detalye sa WikiLove mo',
 1568+ 'wikilove-get-started-list-3' => 'Ipadala ang WikiLove mo!',
 1569+ 'wikilove-add-details' => 'Magdagdag ng mga detalye',
 1570+ 'wikilove-title' => 'Pamagat:',
 1571+ 'wikilove-enter-message' => 'Magpasok ng isang mensahe:',
 1572+ 'wikilove-omit-sig' => '(walang lagda)',
 1573+ 'wikilove-button-preview' => 'Paunang tingin',
 1574+ 'wikilove-preview' => 'Paunang tingin',
 1575+ 'wikilove-button-send' => 'Ipadala ang WikiLove',
 1576+ 'wikilove-type-makeyourown' => 'Gumawa ng sarili mo',
 1577+);
 1578+
 1579+/** Ukrainian (Українська)
 1580+ * @author Microcell
 1581+ */
 1582+$messages['uk'] = array(
 1583+ 'wikilove' => 'Вікісимпатія',
 1584+);
 1585+
 1586+/** Vietnamese (Tiếng Việt)
 1587+ * @author Minh Nguyen
 1588+ */
 1589+$messages['vi'] = array(
 1590+ 'wikilove-desc' => 'Thêm một giao diện cho phép gửi phản hồi khen ngợi cho người dùng khác qua các trang thảo luận cá nhân',
 1591+ 'wikilove' => 'WikiLove',
 1592+ 'wikilove-enable-preference' => 'Cho phép bày tỏ sự biết ơn cho người dùng khác qua thẻ WikiLove (thử nghiệm)',
 1593+ 'wikilove-tab-text' => 'WikiLove',
 1594+ 'tooltip-ca-wikilove' => 'Đăng một thông điệp cho người dùng này để cho biết sự đánh giá cao của bạn',
 1595+ 'wikilove-dialog-title' => 'WikiLove – Gửi thông điệp bày tỏ sự đánh giá cao cho người dùng khác',
 1596+ 'wikilove-select-type' => 'Chọn loại',
 1597+ 'wikilove-get-started-header' => 'Hãy bắt đầu!',
 1598+ 'wikilove-get-started-list-1' => 'Chọn loại WikiLove để gửi',
 1599+ 'wikilove-get-started-list-2' => 'Thêm chi tiết vào WikiLove của bạn',
 1600+ 'wikilove-get-started-list-3' => 'Gửi WikiLove!',
 1601+ 'wikilove-add-details' => 'Thêm chi tiết',
 1602+ 'wikilove-image' => 'Nhập một tên hình:',
 1603+ 'wikilove-select-image' => 'Chọn một hình ảnh:',
 1604+ 'wikilove-header' => 'Nhập đầu đề:',
 1605+ 'wikilove-title' => 'Nhập một tên giải thưởng:',
 1606+ 'wikilove-enter-message' => 'Nhập tin nhắn:',
 1607+ 'wikilove-omit-sig' => '(không ký tên)',
 1608+ 'wikilove-image-example' => '(ví dụ: Trophy.png)',
 1609+ 'wikilove-button-preview' => 'Xem trước',
 1610+ 'wikilove-preview' => 'Xem trước',
 1611+ 'wikilove-notify' => 'Báo người dùng qua thư điện tử',
 1612+ 'wikilove-button-send' => 'Gửi WikiLove',
 1613+ 'wikilove-type-barnstars' => 'Huy chương',
 1614+ 'wikilove-type-food' => 'Đồ ăn uống',
 1615+ 'wikilove-type-kittens' => 'Mèo',
 1616+ 'wikilove-type-makeyourown' => 'Làm lấy',
 1617+ 'wikilove-err-header' => 'Vui lòng đưa vào đầu đề.',
 1618+ 'wikilove-err-title' => 'Vui lòng đưa vào tựa đề.',
 1619+ 'wikilove-err-msg' => 'Vui lòng đưa vào thông điệp tùy biến.',
 1620+ 'wikilove-err-image' => 'Vui lòng chọn một hình ảnh.',
 1621+ 'wikilove-err-image-bad' => 'Hình không tồn tại.',
 1622+ 'wikilove-err-image-api' => 'Đã gặp một lỗi bất ngờ trong việc lấy hình ảnh. Hãy thử lại.',
 1623+ 'wikilove-err-sig' => 'Xin vui lòng đừng đưa một chữ ký vào tin nhắn.',
 1624+ 'wikilove-err-gallery' => 'Đã gặp lỗi khi tải các hình ảnh!',
 1625+ 'wikilove-err-gallery-again' => 'Thử lại',
 1626+ 'wikilove-err-preview-api' => 'Đã gặp một lỗi bất ngờ trong việc xem trước. Hãy thử lại.',
 1627+ 'wikilove-err-send-api' => 'Đã gặp một lỗi bất ngờ trong việc gửi thông điệp. Hãy thử lại.',
 1628+ 'wikilove-summary' => '/* $1 */ thông điệp WikiLove mới',
 1629+ 'wikilove-what-is-this' => 'Này là gì?',
 1630+ 'wikilove-anon-warning' => 'Lưu ý: Người dùng này chưa đăng ký, nên họ có thể không nhận thấy được thông điệp này.',
 1631+ 'wikilove-commons-text' => 'Có thể tìm kiếm hình ảnh tại $1.',
 1632+);
 1633+
 1634+/** Simplified Chinese (‪中文(简体)‬)
 1635+ * @author Kaldari
 1636+ * @author PhiLiP
 1637+ * @author Shizhao
 1638+ * @author Tommyang
 1639+ */
 1640+$messages['zh-hans'] = array(
 1641+ 'wikilove-desc' => '添加一个界面,用于促进在用户讨论页上进行积极反馈',
 1642+ 'wikilove' => '维基友爱',
 1643+ 'wikilove-enable-preference' => '启用维基友爱选项卡赞扬其他用户 (实验性)',
 1644+ 'wikilove-tab-text' => '维基友爱',
 1645+ 'tooltip-ca-wikilove' => '给这个用户留言来表达你的欣赏',
 1646+ 'wikilove-dialog-title' => '维基有爱——发送信息赞赏其他用户',
 1647+ 'wikilove-select-type' => '选择类型',
 1648+ 'wikilove-get-started-header' => '开始吧 !',
 1649+ 'wikilove-get-started-list-1' => '选择要发送的维基友爱的类型',
 1650+ 'wikilove-get-started-list-2' => '在你的维基友爱添加详细信息',
 1651+ 'wikilove-get-started-list-3' => '发送您的友爱!',
 1652+ 'wikilove-add-details' => '添加详细信息',
 1653+ 'wikilove-image' => '输入图像文件名:',
 1654+ 'wikilove-select-image' => '选择一个图像:',
 1655+ 'wikilove-header' => '输入一个标题:',
 1656+ 'wikilove-title' => '输入奖励标题:',
 1657+ 'wikilove-enter-message' => '输入留言:',
 1658+ 'wikilove-omit-sig' => '(不要包含~~~~签名)',
 1659+ 'wikilove-image-example' => '(例: Trophy.png)',
 1660+ 'wikilove-button-preview' => '预览',
 1661+ 'wikilove-preview' => '预览',
 1662+ 'wikilove-notify' => '通过电子邮件通知用户',
 1663+ 'wikilove-button-send' => '发送友爱',
 1664+ 'wikilove-type-barnstars' => '星章',
 1665+ 'wikilove-type-food' => '食品和饮料',
 1666+ 'wikilove-type-kittens' => '小猫',
 1667+ 'wikilove-type-makeyourown' => '制作你自己的维基友爱',
 1668+ 'wikilove-err-header' => '请输入标题。',
 1669+ 'wikilove-err-title' => '请输入奖励标题。',
 1670+ 'wikilove-err-msg' => '请输入一条个性化的消息。',
 1671+ 'wikilove-err-image' => '请选择图像。',
 1672+ 'wikilove-err-image-bad' => '图像不存在。',
 1673+ 'wikilove-err-image-api' => '获取图像时出错。请重试。',
 1674+ 'wikilove-err-sig' => '請不要在留言中包含签名。',
 1675+ 'wikilove-err-gallery' => '加载图像时出现了错误。',
 1676+ 'wikilove-err-gallery-again' => '再试一次',
 1677+ 'wikilove-err-preview-api' => '预览过程中发生错误。请重试。',
 1678+ 'wikilove-err-send-api' => '发送留言时出现了错误。请重试。',
 1679+ 'wikilove-summary' => '/* $1 */ 新的维基有爱留言',
 1680+ 'wikilove-what-is-this' => '这是什么?',
 1681+ 'wikilove-anon-warning' => '注意: 此用户未注册,他或她可能不会注意到此消息。',
 1682+ 'wikilove-commons-text' => '您可以通过浏览$1找到图像。',
 1683+);
 1684+
 1685+/** Traditional Chinese (‪中文(繁體)‬)
 1686+ * @author Kaldari
 1687+ * @author Waihorace
 1688+ */
 1689+$messages['zh-hant'] = array(
 1690+ 'wikilove-desc' => '加入一個界面以使用戶向其他用戶提供正面的意見',
 1691+ 'wikilove' => '維基友愛',
 1692+ 'wikilove-enable-preference' => '顯示維基友愛標籤以便讚賞其他用戶(試驗性)',
 1693+ 'wikilove-tab-text' => '維基友愛',
 1694+ 'tooltip-ca-wikilove' => '張貼一條信息以表示你的欣賞',
 1695+ 'wikilove-dialog-title' => '維基友愛-向其他用戶發送欣賞信息',
 1696+ 'wikilove-select-type' => '選擇類型',
 1697+ 'wikilove-get-started-header' => '開始吧!',
 1698+ 'wikilove-get-started-list-1' => '選擇想發送的維基友愛類型',
 1699+ 'wikilove-get-started-list-2' => '對你的維基友愛加入細節',
 1700+ 'wikilove-get-started-list-3' => '發送你的友愛!',
 1701+ 'wikilove-add-details' => '加入詳情',
 1702+ 'wikilove-image' => '輸入圖像文件名:',
 1703+ 'wikilove-select-image' => '選擇一個圖片:',
 1704+ 'wikilove-header' => '輸入頭部:',
 1705+ 'wikilove-title' => '輸入獎勵標題:',
 1706+ 'wikilove-enter-message' => '輸入信息:',
 1707+ 'wikilove-omit-sig' => '(沒有簽名)',
 1708+ 'wikilove-image-example' => '(例:Trophy.png)',
 1709+ 'wikilove-button-preview' => '預覽',
 1710+ 'wikilove-preview' => '預覽',
 1711+ 'wikilove-notify' => '通過電郵通知這位用戶',
 1712+ 'wikilove-button-send' => '發送友愛',
 1713+ 'wikilove-type-barnstars' => '星章',
 1714+ 'wikilove-type-food' => '食物及飲品',
 1715+ 'wikilove-type-kittens' => '小貓',
 1716+ 'wikilove-type-makeyourown' => '製作你自己的',
 1717+ 'wikilove-err-header' => '請輸入頭部。',
 1718+ 'wikilove-err-title' => '請輸入標題。',
 1719+ 'wikilove-err-msg' => '請輸入一條個性化的信息。',
 1720+ 'wikilove-err-image' => '請選擇圖片。',
 1721+ 'wikilove-err-image-bad' => '圖像不存在。',
 1722+ 'wikilove-err-image-api' => '獲取圖像時出錯,請重試。',
 1723+ 'wikilove-err-sig' => '請不要在信息中包含簽名。',
 1724+ 'wikilove-err-gallery' => '加載圖片時發生了錯誤。',
 1725+ 'wikilove-err-gallery-again' => '再試一次',
 1726+ 'wikilove-err-preview-api' => '預覽過程發生錯誤,請重試。',
 1727+ 'wikilove-err-send-api' => '發送信息時發生錯誤,請重試。',
 1728+ 'wikilove-summary' => '/* $1 */ 新的維基友愛信息',
 1729+ 'wikilove-what-is-this' => '這是甚麼?',
 1730+ 'wikilove-anon-warning' => '注意:此用戶未註冊,他或她可能未能注意到此信息。',
 1731+ 'wikilove-commons-text' => '你可以瀏覽$1找到合適圖像。',
 1732+);
 1733+
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/WikiLove.i18n.php
___________________________________________________________________
Added: svn:eol-style
11734 + native
Index: branches/wmf/1.17wmf1/extensions/WikiLove/ApiWikiLoveImageLog.php
@@ -0,0 +1,64 @@
 2+<?php
 3+
 4+/**
 5+ * This API is for logging each time a user attempts to use a custom image via the Make your own
 6+ * feature. This is basically just to see if users can grok the concept. Once usage analysis is
 7+ * complete, this API can be deleted.
 8+ */
 9+class ApiWikiLoveImageLog extends ApiBase {
 10+ public function execute() {
 11+ global $wgRequest, $wgWikiLoveLogging, $wgParser;
 12+
 13+ $params = $this->extractRequestParams();
 14+
 15+ if ( $wgWikiLoveLogging ) {
 16+ $this->saveInDb( $params['image'], $params['success'] );
 17+ }
 18+ }
 19+
 20+ /**
 21+ * @param $user User ID
 22+ * @param $image string
 23+ * @param $success integer
 24+ */
 25+ private function saveInDb( $image, $success ) {
 26+ global $wgUser;
 27+ $dbw = wfGetDB( DB_MASTER );
 28+
 29+ $values = array(
 30+ 'wlil_timestamp' => $dbw->timestamp(),
 31+ 'wlil_user_id' => $wgUser->getId(),
 32+ 'wlil_image' => $image,
 33+ 'wlil_success' => $success,
 34+ );
 35+
 36+ try{
 37+ $dbw->insert( 'wikilove_image_log', $values, __METHOD__ );
 38+ } catch( DBQueryError $dbqe ) {
 39+ $this->setWarning( 'Action was not logged' );
 40+ }
 41+ }
 42+
 43+ public function getDescription() {
 44+ return array(
 45+ 'This API is for logging each time a user attempts to use a custom image via WikiLove.',
 46+ );
 47+ }
 48+
 49+ public function getAllowedParams() {
 50+ return array(
 51+ 'image' => array(
 52+ ApiBase::PARAM_TYPE => 'string',
 53+ ApiBase::PARAM_REQUIRED => true,
 54+ ),
 55+ 'success' => array(
 56+ ApiBase::PARAM_TYPE => 'integer',
 57+ ApiBase::PARAM_REQUIRED => true,
 58+ )
 59+ );
 60+ }
 61+
 62+ public function getVersion() {
 63+ return __CLASS__ . ': $Id$';
 64+ }
 65+}
Property changes on: branches/wmf/1.17wmf1/extensions/WikiLove/ApiWikiLoveImageLog.php
___________________________________________________________________
Added: svn:keywords
166 + Id
Added: svn:eol-style
267 + native

Status & tagging log