http://www.mediawiki.org/wiki/Special:Code/MediaWiki/100297

Revision: 100297
Author:   reedy
Date:     2011-10-19 23:52:10 +0000 (Wed, 19 Oct 2011)
Log Message:
-----------
1.18wmf1 MFT r100251, r100255, r100258, r100259, r100274, r100276, r100278

Modified Paths:
--------------
    branches/wmf/1.18wmf1/extensions/Contest/Contest.i18n.php
    branches/wmf/1.18wmf1/extensions/Contest/Contest.php
    branches/wmf/1.18wmf1/extensions/Contest/INSTALL
    branches/wmf/1.18wmf1/extensions/Contest/README
    branches/wmf/1.18wmf1/extensions/Contest/RELEASE-NOTES
    branches/wmf/1.18wmf1/extensions/Contest/api/ApiMailContestants.php
    branches/wmf/1.18wmf1/extensions/Contest/includes/Contest.class.php
    branches/wmf/1.18wmf1/extensions/Contest/specials/SpecialContest.php
    branches/wmf/1.18wmf1/extensions/Contest/specials/SpecialEditContest.php

Added Paths:
-----------
    
branches/wmf/1.18wmf1/extensions/Contest/resources/contest.special.contest.js

Property Changed:
----------------
    branches/wmf/1.18wmf1/extensions/Contest/


Property changes on: branches/wmf/1.18wmf1/extensions/Contest
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/REL1_15/phase3/extensions/Contest:51646
/branches/REL1_17/phase3/extensions/Contest:81445,81448
/branches/new-installer/phase3/extensions/Contest:43664-66004
/branches/sqlite/extensions/Contest:58211-58321
/trunk/extensions/Contest:99592,99653,100190-100191,100193,100198,100200,100240,100245,100252,100255,100261,100287,100292
/trunk/phase3/extensions/Contest:92580,92634,92713,92762,92765,92791,92854,92884,92886-92887,92894,92898,92907,92932,92958,93141,93149,93151,93233-93234,93258,93266,93303,93516-93518,93520,93818-93822,93847,93858,93891,93935-93936,94058,94062,94068,94107,94155,94235,94277,94346,94372,94422,94425,94444,94448,94456,94498,94517,94601,94630,94728,94738,94825,94862,94995-94997,95023,95042,95072-95073,95155,95327,95332,95410,95422,95426,95442,95468,95601,95812,98578,98598,98656
   + /branches/REL1_15/phase3/extensions/Contest:51646
/branches/REL1_17/phase3/extensions/Contest:81445,81448
/branches/new-installer/phase3/extensions/Contest:43664-66004
/branches/sqlite/extensions/Contest:58211-58321
/trunk/extensions/Contest:99592,99653,100190-100191,100193,100198,100200,100240,100245,100251-100252,100255,100258-100259,100261,100274,100276,100278,100287,100292,100295
/trunk/phase3/extensions/Contest:92580,92634,92713,92762,92765,92791,92854,92884,92886-92887,92894,92898,92907,92932,92958,93141,93149,93151,93233-93234,93258,93266,93303,93516-93518,93520,93818-93822,93847,93858,93891,93935-93936,94058,94062,94068,94107,94155,94235,94277,94346,94372,94422,94425,94444,94448,94456,94498,94517,94601,94630,94728,94738,94825,94862,94995-94997,95023,95042,95072-95073,95155,95327,95332,95410,95422,95426,95442,95468,95601,95812,98578,98598,98656

Modified: branches/wmf/1.18wmf1/extensions/Contest/Contest.i18n.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/Contest.i18n.php   2011-10-19 
23:40:31 UTC (rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/Contest.i18n.php   2011-10-19 
23:52:10 UTC (rev 100297)
@@ -30,16 +30,16 @@
 
        // Groups
        'group-contestadmin' => 'Contest admins',
-       'group-contestadmin-member' => '{{GENDER:$1|contest admin}}',
-       'grouppage-contestadmin' => 'Project:Contest_admins',
+       'group-contestadmin-member' => '{{GENDER:$1|contest administrator}}',
+       'grouppage-contestadmin' => '{{ns:project}}:Contest_administrators',
 
        'group-contestant' => 'Contestant',
        'group-contestant-member' => '{{GENDER:$1|Contestant}}',
-       'grouppage-contestant' => 'Project:Contestant',
+       'grouppage-contestant' => '{{ns:project}}:Contestants',
 
        'group-contestjudge' => 'Contest judges',
        'group-contestjudge-member' => '{{GENDER:$1|contest judge}}',
-       'grouppage-contestjudge' => 'Project:Contest_judges',
+       'grouppage-contestjudge' => '{{ns:project}}:Contest_judges',
 
        // Preferences
        'prefs-contest' => 'Contests',
@@ -69,7 +69,7 @@
 
        // Special:Contests
        'contest-special-addnew' => 'Add a new contest',
-       'contest-special-namedoc' => 'The name of the contest is the identifier 
used in URLs. ie "name" in Special:Contest/name',
+       'contest-special-namedoc' => 'The name of the contest is the identifier 
used in URLs (i.e. "name" in {{#Special:Contest}}/name).',
        'contest-special-newname' => 'Contest name',
        'contest-special-add' => 'Add contest',
        'contest-special-existing' => 'Existing contests',
@@ -81,7 +81,7 @@
        'contest-special-delete' => 'Delete',
 
        'contest-special-confirm-delete' => 'Are you sure you want to delete 
this contest?',
-       'contest-special-delete-failed' => 'Failed to delete the contest.',
+       'contest-special-delete-failed' => 'It was not possible to delete the 
contest.',
 
        // Special:EditContest
        'editcontest-text' => 'You are editing a contest.',
@@ -95,7 +95,7 @@
        'contest-edit-signup' => 'Signup e-mail page',
        'contest-edit-reminder' => 'Reminder e-mail page',
        'contest-edit-end' => 'Contest end',
-       'contest-edit-exists-already' => 'Note: you are editing an already 
existing contest, not creating a new one.',
+       'contest-edit-exists-already' => 'You are editing an existing contest.',
        'contest-edit-submit' => 'Submit',
 
        'contest-edit-challenges' => 'Contest challenges',
@@ -112,7 +112,7 @@
        'contest-welcome-rules' => 'In order to participate, you are required 
to agree to', // js i18n
        'contest-welcome-rules-link' => 'the contest rules', // js i18n
        'contest-welcome-signup' => 'Signup now',
-       'contest-welcome-js-off' => 'The contest user interface uses JavaScript 
for an improved interface. Your browser either does not support JavaScript or 
has JavaScript turned off.',
+       'contest-welcome-js-off' => 'The contest user interface uses 
JavaScript. Your browser does not support JavaScript or JavaScript is 
disabled.',
        'contest-welcome-accept-challenge' => 'Challenge accepted',
 
        'contest-welcome-select-header' => 'Select your challenge:',
@@ -123,31 +123,49 @@
        'contest-signup-header' => 'Please fill out the form to complete your 
registration for $1.',
        'contest-signup-email' => 'Your e-mail address',
        'contest-signup-realname' => 'Your real name',
-       'contest-signup-volunteer' => 'I am interested in volunteer 
opportunities',
-       'contest-signup-wmf' => 'I am interested in working for the Wikimedia 
Foundation',
+       'contest-signup-volunteer' => 'I am interested in receiving email about 
volunteer opportunities',
+       'contest-signup-wmf' => 'I am interested in being contacted about 
working for the Wikimedia Foundation',
        'contest-signup-cv' => 'Link to your CV',
-       'contest-signup-readrules' => 'I confirm that I have read, and agree 
to, [[$1|the contest rules]]',
+       'contest-signup-readrules' => 'I confirm that I have read [[$1|the 
contest rules]] and agree to them',
        'contest-signup-challenge' => 'What challenge do you want to take on?',
-       'contest-signup-finished' => 'This contest has ended. Thanks for your 
participation!',
-       'contest-signup-draft' => 'This contest has not started yet. Please be 
patient.',
+       'contest-signup-finished' => 'This contest has ended. Thank you for 
your participation!',
+       'contest-signup-draft' => 'This contest has not yet started. Please be 
patient.',
        'contest-signup-country' => 'Your country',
 
-       'contest-signup-require-rules' => 'You need to agree to the contest 
rules.',
-       'contest-signup-require-country' => 'You need to provide your country 
of residence.',
+       'contest-signup-require-rules' => 'You must agree to the contest 
rules.',
+       'contest-signup-require-country' => 'You must provide your country of 
residence.',
        'contest-signup-invalid-email' => 'The e-mail address you provided is 
not valid.',
        'contest-signup-invalid-name' => 'The name you provided is too short.',
        'contest-signup-require-challenge' => 'You must select a challenge.',
-       'contest-signup-invalid-cv' => 'You entered an invalid URL.',
+       'contest-signup-invalid-cv' => 'You have entered an invalid URL.',
 
        // Special:Contest
        'contest-contest-title' => 'Contest: $1',
        'contest-contest-no-results' => 'There are no contestants to display.',
        'contest-contest-name' => 'Name',
        'contest-contest-status' => 'Status',
-       'contest-contest-submissioncount' => 'Amount of participants',
-       'contest-contest-contestants' => 'Contest contestants',
-       'contest-contest-contestants-text' => 'To judge an individual entry, 
click on the entry ID in the left column.',
+       'contest-contest-submissioncount' => 'Number of participants',
+       'contest-contest-end' => 'Contest end',
+       'contest-contest-days-ago' => '$1, $2 {{PLURAL:$2|day|days}} ago',
+       'contest-contest-days-left' => '$1, in $2 {{PLURAL:$2|day|days}}',
+       'contest-contest-contestants' => 'Contestants',
+       'contest-contest-contestants-text' => 'Click on the entry ID in the 
left column to judge an individual entry.',
+       'contest-contest-reminder-mail' => 'Reminder e-mail',
+       'contest-contest-reminder-page' => 'The content for the reminder e-mail 
comes from [[$1|this page]].',
+       'contest-contest-send-reminder' => 'Send reminder',
 
+       // Special:Contest, reminder email JS
+       'contest-contest-reminder-preview' => 'Preview of the reminder e-mail:',
+       'contest-contest-reminder-title' => 'Reminder e-mail',
+       'contest-contest-reminder-send' => 'Send reminder',
+       'contest-contest-reminder-cancel' => 'Cancel',
+       'contest-contest-reminder-sending' => 'Sending...',
+       // We really want // {{PLURAL:$1|contestant|contestants}} here, but the 
JS i18n shizzle does not support it yet :/
+       'contest-contest-reminder-success' => 'Successfully send the reminder 
email to $1 contestants',
+       'contest-contest-reminder-close' => 'Close',
+       'contest-contest-reminder-retry' => 'Retry sending',
+       'contest-contest-reminder-failed' => 'Could not send the reminder 
emails.',
+
        // Contestant pager
        'contest-contestant-id' => 'ID',
        'contest-contestant-challenge-name' => 'Challenge name',
@@ -169,7 +187,7 @@
        'contest-contestant-header-wmf' => 'Interested in WMF job',
        'contest-contestant-header-volunteer' => 'Interested in volunteer 
opportunities',
        'contest-contestant-header-rating' => 'Rating',
-       'contest-contestant-header-comments' => 'Amount of comments',
+       'contest-contestant-header-comments' => 'Number of comments',
        'contest-contestant-submission-url' => 'Submission',
        'contest-contestant-notsubmitted' => 'Not submitted yet',
        'contest-contestant-comments' => 'Comments',
@@ -177,11 +195,11 @@
        'contest-contestant-comment-by' => 'Comment by $1',
        'contest-contestant-rate' => 'Rate this contestant',
        'contest-contestant-not-voted' => 'You have not voted on this 
participant yet.',
-       'contest-contestant-voted' => 'Your current vote is $1.',
+       'contest-contestant-voted' => 'Your current vote is "$1".',
        'contest-contestant-permalink' => 'Permalink',
 
        // Emails
-       'contest-email-signup-title' => 'Thanks for joining the challenge!',
+       'contest-email-signup-title' => 'Thank you for joining the challenge!',
        'contest-email-reminder-title' => 'Only $1 {{PLURAL:$1|day|days}} until 
the end of the challenge!',
 
        // Special:MyContests
@@ -189,19 +207,19 @@
        'contest-mycontests-no-contests' => 'You are not participating in any 
contest.',
        'contest-mycontests-active-header' => 'Running contests',
        'contest-mycontests-finished-header' => 'Passed contests',
-       'contest-mycontests-active-text' => 'These are the contests you are 
currently participating in:',
-       'contest-mycontests-finished-text' => 'These are the past contests you 
have participated in:',
+       'contest-mycontests-active-text' => 'You are currently participating in 
these contests:',
+       'contest-mycontests-finished-text' => 'You have have participated in 
these contests:',
        'contest-mycontests-header-contest' => 'Contest',
        'contest-mycontests-header-challenge' => 'Challenge',
-       'contest-mycontests-signup-success' => 'You have successfully signed up 
for the $1 contest.',
-       'contest-mycontests-addition-success' => 'You have successfully posted 
your submission! Thanks for participating in this contest.',
-       'contest-mycontests-updated-success' => 'You have successfully modified 
your submission.',
+       'contest-mycontests-signup-success' => 'You have successfully signed up 
for the "$1" contest.',
+       'contest-mycontests-addition-success' => 'You have successfully posted 
your submission! Thank you for participating in this contest.',
+       'contest-mycontests-updated-success' => 'You have modified your 
submission.',
        'contest-mycontests-sessionfail' => 'Your submission could not be saved 
due to loss of session data. Please try again.',
 
        'contest-submission-submit' => 'Submit',
        'contest-submission-unknown' => 'There is no contest with the provided 
name.',
-       'contest-submission-header' => 'Thanks for participating in this 
contest! Once you have completed the challenge, you can add a link to your 
submission below.',
-       'contest-submission-finished' => 'This contest has ended. Thanks for 
your participation!',
+       'contest-submission-header' => 'Thank you for participating in this 
contest! Once you have completed the challenge, you can add a link to your 
submission below.',
+       'contest-submission-finished' => 'This contest has ended. Thank you for 
your participation!',
 
        'contest-submission-submission' => 'Link to your submission',
        'contest-submission-invalid-url' => 'This URL does not match one of the 
allowed formats.',
@@ -247,7 +265,10 @@
        'contest-contest-name' => 'Table row header',
        'contest-contest-status' => 'Table row header',
        'contest-contest-submissioncount' => 'Table row header',
+       'contest-contest-end' => 'Table row header',
        'contest-contest-contestants' => 'Page section header',
+       'contest-contest-days-ago' => '$1 is a date, $2 is an integer, the 
amount of days',
+       'contest-contest-days-left' => '$1 is a date, $2 is an integer, the 
amount of days',
        'contest-contestant-id' => 'Table column header',
        'contest-contestant-volunteer' => 'Table column header',
        'contest-contestant-wmf' => 'Table column header',
@@ -276,6 +297,20 @@
        'contest-email-signup-title' => 'Title for signup e-mails',
        'contest-email-reminder-title' => 'Title for reminder e-mails',
 
+       // Special:Contest, reminder email
+       'contest-contest-reminder-mail' => 'Reminder email',
+       'contest-contest-reminder-page' => 'Text explaining the email content 
is pulled from a page, $1 is the page name.',
+       'contest-contest-send-reminder' => 'Send reminder button text',
+       'contest-contest-reminder-preview' => 'Text indicating that the 
following content is the preview for the reminder email.',
+       'contest-contest-reminder-title' => 'Dialog title',
+       'contest-contest-reminder-send' => 'Send button text',
+       'contest-contest-reminder-cancel' => 'Cancel button text',
+       'contest-contest-reminder-sending' => 'Send button text after clicking 
it',
+       'contest-contest-reminder-success' => 'Success message, $1 is the 
amount of contesnats. No PLURAL for now, just assume there are multiple untill 
MWs JS supports plural.',
+       'contest-contest-reminder-close' => 'Close button text',
+       'contest-contest-reminder-retry' => 'Retry button text',
+       'contest-contest-reminder-failed' => 'Failiure message, displayed in an 
alert box',
+
        // Special:MyContests
        'contest-mycontests-toplink' => 'Text for link in the user menu (i.e. 
where watchlist and preferences are linked)',
        'contest-mycontests-no-contests' => 'Message indicating there are no 
contests for the user, displayed instead of a list.',
@@ -289,13 +324,13 @@
        'contest-mycontests-addition-success' => 'Message shown when a user has 
added a submission',
        'contest-mycontests-updated-success' => 'Message shown when a user has 
editied a submission',
        'contest-mycontests-sessionfail' => 'Session failure',
-
        'contest-submission-challenge' => 'Tells the user which challenge they 
are part of. $1 is the challenge name',
        'contest-submission-challenge-description' => 'Output of challenge name 
and description. $1 is the challenge name, $2 is the challenge description',
 );
 
 /** German (Deutsch)
  * @author Kghbln
+ * @author Reedy
  */
 $messages['de'] = array(
        'contest-desc' => 'Ermöglicht Wettbewerbe sowie die anschließende 
Ermittlung der Gewinner durch Juroren',
@@ -394,8 +429,18 @@
        'contest-contest-name' => 'Name',
        'contest-contest-status' => 'Status',
        'contest-contest-submissioncount' => 'Anzahl der Teilnehmer',
+       'contest-contest-end' => 'Wettbewerbsende',
+       'contest-contest-days-ago' => '$1, vor $2 {{PLURAL:$2|Tag|Tagen}}',
+       'contest-contest-days-left' => '$1, in $2 {{PLURAL:$2|Tag|Tagen}}',
        'contest-contest-contestants' => 'Wettbewerbsteilnehmer',
        'contest-contest-contestants-text' => 'Um einen bestimmten 
Wettbewerbsbeitrag zu beurteilen, bitte auf die entsprechende Beitragskennung 
in der linken Spalte klicken.',
+       'contest-contest-reminder-mail' => 'Erinnerungs-E-Mail',
+       'contest-contest-reminder-page' => 'Der Inhalt der Erinnerungs-E-Mail 
wird [[$1|dieser Seite]] entnommen.',
+       'contest-contest-send-reminder' => 'Erinnerung senden',
+       'contest-contest-reminder-preview' => 'Vorschau der 
Erinnerungs-E-Mail:',
+       'contest-contest-reminder-title' => 'Erinnerungs-E-Mail',
+       'contest-contest-reminder-send' => 'Erinnerung senden',
+       'contest-contest-reminder-cancel' => 'Abbrechen',
        'contest-contestant-id' => 'Kennung',
        'contest-contestant-challenge-name' => 'Name der Herausforderung',
        'contest-contestant-volunteer' => 'Freiwilliger',
@@ -430,11 +475,11 @@
        'contest-mycontests-no-contests' => 'Du nimmst an keinem Wettbewerb 
teil.',
        'contest-mycontests-active-header' => 'Laufende Wettbewerbe',
        'contest-mycontests-finished-header' => 'Beendete Wettbewerbe',
-       'contest-mycontests-active-text' => 'Dies sind die Wettbewerbe, an 
denen du derzeit teilnimmst.',
-       'contest-mycontests-finished-text' => 'Dies sind die beendeten 
Wettbewerbe an denen du teilgenommen hast.',
+       'contest-mycontests-active-text' => 'Dies sind die Wettbewerbe, an 
denen du derzeit teilnimmst:',
+       'contest-mycontests-finished-text' => 'Dies sind die beendeten 
Wettbewerbe an denen du teilgenommen hast:',
        'contest-mycontests-header-contest' => 'Wettbewerb',
        'contest-mycontests-header-challenge' => 'Herausforderung',
-       'contest-mycontests-signup-success' => 'Du hast dich erfolgreich für 
diesen Wettbewerb angemeldet.',
+       'contest-mycontests-signup-success' => 'Du hast dich erfolgreich für 
den Wettbewerb $1 angemeldet.',
        'contest-mycontests-addition-success' => 'Du hast deinen Beitrag 
erfolgreich eingereicht. Vielen Dank für die Teilnehme an diesem Wettbewerb.',
        'contest-mycontests-updated-success' => 'Du hast deinen Beitrag 
erfolgreich geändert.',
        'contest-mycontests-sessionfail' => 'Dein Beitrag konnte aufgrund 
verlorengegangener Sitzungsdaten nicht gespeichert werden. Bitte versuche es 
erneut.',
@@ -446,6 +491,8 @@
        'contest-submission-invalid-url' => 'Diese URL entspricht nicht einem 
der zulässigen Formate.',
        'contest-submission-new-submission' => 'Du musst noch den Link zu 
deinem Beitrag hinzufügen. Dies muss noch vor Ablauf der Wettbewerbsfrist 
erfolgen.',
        'contest-submission-current-submission' => 'Dies ist die URL zu deinem 
Beitrag. Du kannst ihn noch bis zum Ende der Wettbewerbsfrist ändern.',
+       'contest-submission-challenge' => 'Du stellst dich gerade der 
Herausforderung $1',
+       'contest-submission-challenge-description' => "'''Aktuelle 
Herausforderung: $1''' -- $2",
        'contest-submission-domains' => 'Beiträge sind auf diese Websites 
beschränkt: $1',
 );
 
@@ -466,9 +513,9 @@
        'contest-contestant-not-voted' => 'Sie haben noch nicht bezüglich 
dieses Teilnehmers abgestimmt.',
        'contest-contestant-voted' => 'Ihre aktuelle Stimmenanzahl beträgt $1.',
        'contest-mycontests-no-contests' => 'Sie nehmen an keinem Wettbewerb 
teil.',
-       'contest-mycontests-active-text' => 'Dies sind die Wettbewerbe, an 
denen Sie derzeit teilnehmen.',
-       'contest-mycontests-finished-text' => 'Dies sind die beendeten 
Wettbewerbe an denen Sie teilgenommen haben.',
-       'contest-mycontests-signup-success' => 'Sie haben sich erfolgreich für 
diesen Wettbewerb angemeldet.',
+       'contest-mycontests-active-text' => 'Dies sind die Wettbewerbe, an 
denen Sie derzeit teilnehmen:',
+       'contest-mycontests-finished-text' => 'Dies sind die beendeten 
Wettbewerbe an denen Sie teilgenommen haben:',
+       'contest-mycontests-signup-success' => 'Sie haben sich erfolgreich für 
den Wettbewerb $1 angemeldet.',
        'contest-mycontests-addition-success' => 'Sie haben Ihren Beitrag 
erfolgreich eingereicht. Vielen Dank für die Teilnehme an diesem Wettbewerb.',
        'contest-mycontests-updated-success' => 'Sie haben Ihren Beitrag 
erfolgreich geändert.',
        'contest-mycontests-sessionfail' => 'Ihr Beitrag konnte aufgrund 
verlorengegangener Sitzungsdaten nicht gespeichert werden. Bitte versuchen Sie 
es erneut.',
@@ -476,10 +523,12 @@
        'contest-submission-submission' => 'Link zu Ihrem Beitrag',
        'contest-submission-new-submission' => 'Sie müssen noch den Link zu 
Ihrem Beitrag hinzufügen. Dies muss noch vor Ablauf der Wettbewerbsfrist 
erfolgen.',
        'contest-submission-current-submission' => 'Dies ist die URL zu Ihrem 
Beitrag. Sie können ihn noch bis zum Ende der Wettbewerbsfrist ändern.',
+       'contest-submission-challenge' => 'Sie stellen sich gerade der 
Herausforderung $1',
 );
 
 /** French (Français)
  * @author Gomoko
+ * @author Reedy
  */
 $messages['fr'] = array(
        'contest-desc' => 'Extension de concours qui permet aux utilisateurs de 
participer à des défis de concours organisés par un administrateur. Via une 
interface de jugement, les juges peuvent discuter et voter sur les 
propositions.',
@@ -614,11 +663,11 @@
        'contest-mycontests-no-contests' => 'Vous ne participez à aucun 
concours.',
        'contest-mycontests-active-header' => 'Concours en cours',
        'contest-mycontests-finished-header' => 'Concours terminés',
-       'contest-mycontests-active-text' => 'Voici les concours auxquels vous 
participez actuellement.',
-       'contest-mycontests-finished-text' => 'Voici les concours terminés 
auxquels vous avez participé.',
+       'contest-mycontests-active-text' => 'Voici les concours auxquels vous 
participez actuellement:',
+       'contest-mycontests-finished-text' => 'Voici les concours terminés 
auxquels vous avez participé:',
        'contest-mycontests-header-contest' => 'Concours',
        'contest-mycontests-header-challenge' => 'Défi',
-       'contest-mycontests-signup-success' => 'Vous avez réussi à vous 
inscrire à ce concours.',
+       'contest-mycontests-signup-success' => 'Vous avez réussi à vous 
inscrire au concours $1.',
        'contest-mycontests-addition-success' => 'Vous avez réussi à envoyer 
votre réponse! Merci de votre participation à ce concours.',
        'contest-mycontests-updated-success' => 'Vous avez réussi à modifier 
votre réponse.',
        'contest-mycontests-sessionfail' => "Votre réponse n'a pas pu être 
enregistrée à cause d'une perte des données de session. Merci d'essayer de 
nouveau.",
@@ -630,11 +679,13 @@
        'contest-submission-invalid-url' => 'Cette URL ne correspond pas à un 
des formats autorisés.',
        'contest-submission-new-submission' => "Vous devez encore entrer l'URL 
de votre réponse. Cela doit être fait avant la date limite.",
        'contest-submission-current-submission' => "Voici l'URL de votre 
réponse, que vous pouvez modifier jusqu'à la date limite.",
+       'contest-submission-challenge' => 'Vous êtes actuellement sur le défi 
$1',
        'contest-submission-domains' => 'Les réponses sont limitées à ces 
sites: $1',
 );
 
 /** Interlingua (Interlingua)
  * @author McDutchie
+ * @author Reedy
  */
 $messages['ia'] = array(
        'contest-desc' => 'Permitte al usatores de participar in concursos 
definite per administratores. Via un interfacie de judicamento, le judices pote 
discuter e votar sur submissiones.',
@@ -790,6 +841,7 @@
 
 /** Macedonian (Македонски)
  * @author Bjankuloski06
+ * @author Reedy
  */
 $messages['mk'] = array(
        'contest-desc' => 'Додаток што им овозможува на корисниците да 
учествуваат во конкурси (задачи) приредени од администраторите. Жири комисијата 
има свој посредник за дискутирање и гласање за поднесеното.',
@@ -844,7 +896,7 @@
        'contest-edit-opportunities' => 'Страница за можности',
        'contest-edit-rulespage' => 'Страница со правила',
        'contest-edit-help' => 'Страница за помош',
-       'contest-edit-signup' => 'Страниз на е-пошта за пријава',
+       'contest-edit-signup' => 'Страница на е-пошта за пријава',
        'contest-edit-reminder' => 'Страница за потсетник на е-пошта',
        'contest-edit-end' => 'Крај на конкурсот',
        'contest-edit-exists-already' => 'Напомена: уредувате веќе постоечки 
конкурс - не создавате нов.',
@@ -852,7 +904,7 @@
        'contest-edit-challenges' => 'Задачи на конкурсот',
        'contest-edit-delete' => 'Избриши задача',
        'contest-edit-add-first' => 'Додај задача',
-       'contest-edit-add-another' => 'одај друга задача',
+       'contest-edit-add-another' => 'Додај друга задача',
        'contest-edit-confirm-delete' => 'Дали сте сигурни дека сакате да го 
избришете конкурсов?',
        'contest-edit-challenge-title' => 'Наслов на задачата',
        'contest-edit-challenge-text' => 'Текст на задачата',
@@ -924,11 +976,11 @@
        'contest-mycontests-no-contests' => 'Не учествувате во ниеден конкурс.',
        'contest-mycontests-active-header' => 'Тековни конкурси',
        'contest-mycontests-finished-header' => 'Минати конкурси',
-       'contest-mycontests-active-text' => 'Моментално учествувате во 
наведениве конкурси.',
-       'contest-mycontests-finished-text' => 'Ова се конкурсите во кои имате 
учествувано.',
+       'contest-mycontests-active-text' => 'Моментално учествувате во следниве 
конкурси:',
+       'contest-mycontests-finished-text' => 'Ова се конкурсите во кои имате 
учествувано:',
        'contest-mycontests-header-contest' => 'Конкурс',
        'contest-mycontests-header-challenge' => 'Задача',
-       'contest-mycontests-signup-success' => 'Успешно се пријавивте за овој 
конкурс.',
+       'contest-mycontests-signup-success' => 'Успешно се пријавивте за овој 
конкурсот $1.',
        'contest-mycontests-addition-success' => 'Успешно поднесено! Ви 
благодариме за учеството.',
        'contest-mycontests-updated-success' => 'Поднесеното е успешно 
изменето.',
        'contest-mycontests-sessionfail' => 'Поднесеното не е зачувано поради 
загуба на сесиски податоци. Обидете се повторно.',
@@ -940,10 +992,12 @@
        'contest-submission-invalid-url' => 'Оваа URL-адреса не одговара на 
допуштените формати.',
        'contest-submission-new-submission' => 'Преостанува да наведете 
URL-адреса во поднесеното. Ова мора да го сторите пред истекот на рокот.',
        'contest-submission-current-submission' => 'Ова е URL-адресата на 
поднесеното, кое можете да го менувате додека не истече рокот.',
+       'contest-submission-challenge' => 'Моментално сте на задачата $1',
        'contest-submission-domains' => 'Поднесувањето е ограничено на следниве 
мрежни места: $1',
 );
 
 /** Dutch (Nederlands)
+ * @author Reedy
  * @author SPQRobin
  */
 $messages['nl'] = array(
@@ -1062,3 +1116,19 @@
        'contest-submission-submission' => 'Verwijzing naar uw inzending',
 );
 
+/** Telugu (తెలుగు)
+ * @author Veeven
+ */
+$messages['te'] = array(
+       'contest-special-name' => 'పేరు',
+       'contest-special-status' => 'స్థితి',
+       'contest-edit-rulespage' => 'నియమాల పుట',
+       'contest-edit-help' => 'సహాయపు పుట',
+       'contest-signup-country' => 'మీ దేశం',
+       'contest-contest-name' => 'పేరు',
+       'contest-contest-status' => 'స్థితి',
+       'contest-contestant-comments' => 'వ్యాఖ్యలు',
+       'contest-contestant-permalink' => 'స్థిరలంకె',
+       'contest-submission-submit' => 'దాఖలుచెయ్యి',
+);
+

Modified: branches/wmf/1.18wmf1/extensions/Contest/Contest.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/Contest.php        2011-10-19 
23:40:31 UTC (rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/Contest.php        2011-10-19 
23:52:10 UTC (rev 100297)
@@ -28,7 +28,7 @@
        die( '<b>Error:</b> Contest requires MediaWiki 1.18 or above.' );
 }
 
-define( 'CONTEST_VERSION', '0.1alpha' );
+define( 'CONTEST_VERSION', '0.1' );
 
 $wgExtensionCredits['other'][] = array(
        'path' => __FILE__,
@@ -156,6 +156,26 @@
        )
 );
 
+$wgResourceModules['contest.special.contest'] = $moduleTemplate + array(
+       'scripts' => array(
+               'contest.special.contest.js'
+       ),
+       'messages' => array(
+               'contest-contest-reminder-title',
+               'contest-contest-reminder-cancel',
+               'contest-contest-reminder-send',
+               'contest-contest-reminder-preview',
+               'contest-contest-reminder-sending',
+               'contest-contest-reminder-success', 
+               'contest-contest-reminder-close',
+               'contest-contest-reminder-retry',
+               'contest-contest-reminder-failed',
+       ),
+       'dependencies' => array(
+               'jquery.ui.button', 'jquery.ui.dialog',
+       )
+);
+
 $wgResourceModules['jquery.ui.timepicker'] = $moduleTemplate + array(
        'scripts' => array(
                'jquery.ui.timepicker.js',

Modified: branches/wmf/1.18wmf1/extensions/Contest/INSTALL
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/INSTALL    2011-10-19 23:40:31 UTC 
(rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/INSTALL    2011-10-19 23:52:10 UTC 
(rev 100297)
@@ -58,7 +58,12 @@
 |-
 | submissionDomains
 | array of string
-| array( 'github.com', 'gitorious.org' )
+| array( 'mediawiki.org', 'github.com', 'gitorious.org' )
 | Domains on which submissions can be placed
+|-
+| reminderJobSize
+| integer
+| 50
+| Max size of the reminder email jobs (in emails to send) 
 |}
 

Modified: branches/wmf/1.18wmf1/extensions/Contest/README
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/README     2011-10-19 23:40:31 UTC 
(rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/README     2011-10-19 23:52:10 UTC 
(rev 100297)
@@ -15,6 +15,7 @@
 * Summary pages per contest listing contestants, which can be filtered and 
sorted.
 * Judging interface that allows for rating and commenting on each participant.
 * All contests, challenges, contestants, comments and votes can be queried and 
exported via the API.
+* Signup and reminder emails.
 
 == Credits to other projects ==
 

Modified: branches/wmf/1.18wmf1/extensions/Contest/RELEASE-NOTES
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/RELEASE-NOTES      2011-10-19 
23:40:31 UTC (rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/RELEASE-NOTES      2011-10-19 
23:52:10 UTC (rev 100297)
@@ -14,4 +14,5 @@
 * Personal contest list and submission interface for each user.
 * Summary pages per contest listing contestants, which can be filtered and 
sorted.
 * Judging interface that allows for rating and commenting on each participant.
-* All contests, challenges, contestants, comments and votes can be queried and 
exported via the API.
\ No newline at end of file
+* All contests, challenges, contestants, comments and votes can be queried and 
exported via the API.
+* Signup and reminder emails.
\ No newline at end of file

Modified: branches/wmf/1.18wmf1/extensions/Contest/api/ApiMailContestants.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/api/ApiMailContestants.php 
2011-10-19 23:40:31 UTC (rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/api/ApiMailContestants.php 
2011-10-19 23:52:10 UTC (rev 100297)
@@ -18,7 +18,6 @@
                parent::__construct( $main, $action );
        }
 
-       // TODO
        public function execute() {
                global $wgUser;
 
@@ -71,11 +70,11 @@
                        $conditions['id'] = $params['ids'];
                }
 
-               $contestants = ContestContestant::s()->select( 'email', 
$conditions );
+               $contestants = ContestContestant::s()->select( array( 
'contest_id', 'email' ), $conditions );
 
                if ( $contestants !== false && count( $contestants ) > 0 ) {
                        $setSize = ContestSettings::get( 'reminderJobSize' );
-                       $limit = count( $contestants ) - $setSize;
+                       $limit = count( $contestants );
 
                        for ( $i = 0; $i <= $limit; $i += $setSize ) {
                                $this->createReminderJob( array_splice( 
$contestants, $i, $setSize ) );

Modified: branches/wmf/1.18wmf1/extensions/Contest/includes/Contest.class.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/includes/Contest.class.php 
2011-10-19 23:40:31 UTC (rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/includes/Contest.class.php 
2011-10-19 23:52:10 UTC (rev 100297)
@@ -16,8 +16,8 @@
        // Constants representing the states a contest can have.
        const STATUS_DRAFT = 0;
        const STATUS_ACTIVE = 1;
-       const STATUS_FINISHED = 2;   // manually stopped by contest manager
-       const STATUS_EXPIRED = 3;    // past configured contest end date
+       const STATUS_FINISHED = 2;   // Manually stopped by contest manager.
+       const STATUS_EXPIRED = 3;    // Past configured contest end date.
 
        /**
         * List of challenges for this contest.
@@ -138,6 +138,7 @@
         */
        public function getDefaults() {
                $defaultPage = 'MediaWiki:Contests/';
+               
                return array(
                        'name' => '',
                        'status' => self::STATUS_DRAFT,
@@ -188,14 +189,18 @@
                                wfMsg( 'contest-status-draft' ) => 
self::STATUS_DRAFT,
                                wfMsg( 'contest-status-active' ) => 
self::STATUS_ACTIVE,
                                wfMsg( 'contest-status-finished' ) => 
self::STATUS_FINISHED,
+                               wfMsg( 'contest-status-expired' ) => 
self::STATUS_EXPIRED,
                        );
                }
 
-               if ( !$onlySettable ) {
-                       $map[wfMsg( 'contest-status-expired')] = 
self::STATUS_EXPIRED;
+               if ( $onlySettable ) {
+                       $messages = $map;
+                       unset( $messages[wfMsg( 'contest-status-expired' )] );
+                       return $messages;
                }
-
-               return $map;
+               else {
+                       return $map;
+               }
        }
 
        /**

Copied: 
branches/wmf/1.18wmf1/extensions/Contest/resources/contest.special.contest.js 
(from rev 100259, trunk/extensions/Contest/resources/contest.special.contest.js)
===================================================================
--- 
branches/wmf/1.18wmf1/extensions/Contest/resources/contest.special.contest.js   
                            (rev 0)
+++ 
branches/wmf/1.18wmf1/extensions/Contest/resources/contest.special.contest.js   
    2011-10-19 23:52:10 UTC (rev 100297)
@@ -0,0 +1,78 @@
+/**
+ * JavasSript for the Contest MediaWiki extension.
+ * @see https://www.mediawiki.org/wiki/Extension:Contest
+ * 
+ * @licence GNU GPL v3 or later
+ * @author Jeroen De Dauw <jeroendedauw at gmail dot com>
+ */
+
+(function( $, mw ) { $( document ).ready( function() {
+       
+       var _this = this;
+       
+       this.sendReminder = function( callback ) {
+               var requestArgs = {
+                       'action': 'mailcontestants',
+                       'format': 'json',
+                       'token': $( '#send-reminder' ).attr( 'data-token' ),
+                       'contestids': $( '#send-reminder' ).attr( 
'data-contest-id' )
+               };
+               
+               $.post(
+                       wgScriptPath + '/api.php',
+                       requestArgs,
+                       function( data ) {
+                               callback( data );
+                       }
+               );
+       };
+       
+       this.showReminderDialog = function() {
+               var $dialog = null;
+               
+               $dialog = $( '<div />' ).html( '' ).dialog( {
+                       'title': mw.msg( 'contest-contest-reminder-title' ),
+                       'buttons': [
+                               {
+                                       'text': mw.msg( 
'contest-contest-reminder-send' ),
+                                       'id': 'reminder-send-button',
+                                       'click': function() {
+                                               var $send = $( 
'#reminder-send-button' );
+                                               var $cancel = $( 
'#reminder-cancel-button' );
+                                               
+                                               $send.button( 'option', 
'disabled', true );
+                                               $send.button( 'option', 
'label', mw.msg( 'contest-contest-reminder-sending' ) );
+                                               
+                                               _this.sendReminder( function( 
data ) {
+                                                       if ( data.success ) {
+                                                               $dialog.text( 
mw.msg( 'contest-contest-reminder-success', data.contestantcount ) );
+                                                               $send.remove();
+                                                               $cancel.button( 
'option', 'label', mw.msg( 'contest-contest-reminder-close' ) );
+                                                       }
+                                                       else {
+                                                               $send.button( 
'option', 'label', mw.msg( 'contest-contest-reminder-retry' ) );
+                                                               $send.button( 
'option', 'disabled', false );
+                                                               
+                                                               alert( mw.msg( 
'contest-contest-reminder-failed' ) );
+                                                       }
+                                               } );
+                                       }
+                               },
+                               {
+                                       'text': mw.msg( 
'contest-contest-reminder-cancel' ),
+                                       'id': 'reminder-cancel-button',
+                                       'click': function() {
+                                               $dialog.dialog( 'close' );
+                                       }
+                               }
+                       ]
+               } );
+               
+               $dialog.append( $( '<p />' ).text( mw.msg( 
'contest-contest-reminder-preview' ) ) ).append( '<hr />' );
+               
+               $dialog.append( $( '#reminder-content' ).html() ); 
+       };
+       
+       $( '#send-reminder' ).button().click( this.showReminderDialog );
+       
+} ); })( window.jQuery, window.mediaWiki );
\ No newline at end of file

Modified: branches/wmf/1.18wmf1/extensions/Contest/specials/SpecialContest.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/specials/SpecialContest.php        
2011-10-19 23:40:31 UTC (rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/specials/SpecialContest.php        
2011-10-19 23:52:10 UTC (rev 100297)
@@ -53,9 +53,13 @@
                }
                else {
                        $out->setPageTitle( wfMsgExt( 'contest-contest-title', 
'parseinline', $contest->getField( 'name' ) ) );
+                       
                        $this->displayNavigation();
                        $this->showGeneralInfo( $contest );
+                       $this->showMailFunctionality( $contest );
                        $this->showContestants( $contest, $challengeTitle );
+                       
+                       $out->addModules( 'contest.special.contest' );
                }
        }
 
@@ -107,11 +111,52 @@
                $stats['name'] = $contest->getField( 'name' );
                $stats['status'] = Contest::getStatusMessage( 
$contest->getStatus() );
                $stats['submissioncount'] = $this->getLang()->formatNum( 
$contest->getField( 'submission_count' ) );
-
+               
+               $stats['end'] = wfMsgExt(
+                       $contest->getDaysLeft() < 0 ? 
'contest-contest-days-ago' : 'contest-contest-days-left',
+                       'parsemag',
+                       $this->getLang()->timeanddate( $contest->getField( 
'end' ), true ),
+                       $this->getLang()->formatNum( abs( 
$contest->getDaysLeft() ) )
+               );
+               
                return $stats;
        }
 
        /**
+        * 
+        * 
+        * @since 0.1
+        * 
+        * @param Contest $contest
+        */
+       protected function showMailFunctionality( Contest $contest ) {
+               $out = $this->getOutput();
+
+               $out->addHTML( Html::element( 'h3', array(), wfMsg( 
'contest-contest-reminder-mail' ) ) );
+               
+               $out->addWikiMsg( 'contest-contest-reminder-page', 
$contest->getField( 'reminder_email' ) );
+               
+               $out->addHTML( Html::element(
+                       'button',
+                       array(
+                               'id' => 'send-reminder',
+                               'data-token' => $this->getUser()->editToken(),
+                               'data-contest-id' => $contest->getId()
+                       ),
+                       wfMsg( 'contest-contest-send-reminder' )
+               ) );
+               
+               $out->addHTML( Html::rawElement(
+                       'div',
+                       array(
+                               'id' => 'reminder-content',
+                               'style' => 'display:none'
+                       ),
+                       ContestUtils::getParsedArticleContent( 
$contest->getField( 'reminder_email' ) )
+               ) );
+       }
+       
+       /**
         * Show a paged list of the contestants foe this contest.
         *
         * @since 0.1

Modified: 
branches/wmf/1.18wmf1/extensions/Contest/specials/SpecialEditContest.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/Contest/specials/SpecialEditContest.php    
2011-10-19 23:40:31 UTC (rev 100296)
+++ branches/wmf/1.18wmf1/extensions/Contest/specials/SpecialEditContest.php    
2011-10-19 23:52:10 UTC (rev 100297)
@@ -278,7 +278,7 @@
                        $fields['id'] = $contest === false ? null : 
$contest->getField( 'id' );
                }
 
-               $contest = new Contest( $fields, true );
+               $contest = new Contest( $fields, is_null( $fields['id'] ) );
 
                $contest->setChallenges( $this->getSubmittedChallenges() );
                $success = $contest->writeAllToDB();


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to