r70087 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r70086‎ | r70087 | r70088 >
Date:12:57, 28 July 2010
Author:werdna
Status:deferred
Tags:
Comment:
Update LiquidThreads alpha to trunk state
Modified paths:
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/LiquidThreads.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/LqtFunctions.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/api/ApiFeedLQTThreads.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/api/ApiQueryLQTThreads.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/api/ApiThreadAction.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/Dispatch.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/Hooks.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/Thread.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/ThreadHistoryPager.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/Threads.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/View.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/compat/HTMLForm.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/i18n/Lqt.i18n.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/js/lqt.toolbar.js (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/lqt.css (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/lqt.js (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/lqt.sql (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/NewUserMessagesView.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/SpecialMoveThread.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/SpecialNewMessages.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/TalkpageHistoryView.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/TalkpageView.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/ThreadPermalinkView.php (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/schema-changes/thread_pending_relationship.sql (modified) (history)
  • /branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/schema-changes/thread_reactions.sql (modified) (history)

Diff [purge]

Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/lqt.css
@@ -482,7 +482,9 @@
483483 top: 15px;
484484 height: 32px;
485485 }
486 -
 486+.TalkpagePager_nav {
 487+ margin: 30px auto 10px;
 488+}
487489 /* Float Clearing - If you confused, http://www.positioniseverything.net/easyclearing.html */
488490 .lqt_thread_heading:after
489491 {
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/LiquidThreads.php
@@ -3,11 +3,11 @@
44 die();
55
66 $wgExtensionCredits['other'][] = array(
7 - 'path' => __FILE__,
8 - 'name' => 'Liquid Threads',
9 - 'version' => '2.0-alpha',
10 - 'url' => 'http://www.mediawiki.org/wiki/Extension:LiquidThreads',
11 - 'author' => array( 'David McCabe', 'Andrew Garrett' ),
 7+ 'path' => __FILE__,
 8+ 'name' => 'Liquid Threads',
 9+ 'version' => '2.0-alpha',
 10+ 'url' => 'http://www.mediawiki.org/wiki/Extension:LiquidThreads',
 11+ 'author' => array( 'David McCabe', 'Andrew Garrett' ),
1212 'descriptionmsg' => 'lqt-desc',
1313 );
1414
@@ -22,15 +22,15 @@
2323 define( 'LQT_OLDEST_THREADS', 'ot' );
2424
2525 // FIXME: would be neat if it was possible to somehow localise this.
26 -$wgCanonicalNamespaceNames[NS_LQT_THREAD] = 'Thread';
27 -$wgCanonicalNamespaceNames[NS_LQT_THREAD_TALK] = 'Thread_talk';
28 -$wgCanonicalNamespaceNames[NS_LQT_SUMMARY] = 'Summary';
 26+$wgCanonicalNamespaceNames[NS_LQT_THREAD] = 'Thread';
 27+$wgCanonicalNamespaceNames[NS_LQT_THREAD_TALK] = 'Thread_talk';
 28+$wgCanonicalNamespaceNames[NS_LQT_SUMMARY] = 'Summary';
2929 $wgCanonicalNamespaceNames[NS_LQT_SUMMARY_TALK] = 'Summary_talk';
3030
3131 // FIXME: would be neat if it was possible to somehow localise this.
32 -$wgExtraNamespaces[NS_LQT_THREAD] = 'Thread';
33 -$wgExtraNamespaces[NS_LQT_THREAD_TALK] = 'Thread_talk';
34 -$wgExtraNamespaces[NS_LQT_SUMMARY] = 'Summary';
 32+$wgExtraNamespaces[NS_LQT_THREAD] = 'Thread';
 33+$wgExtraNamespaces[NS_LQT_THREAD_TALK] = 'Thread_talk';
 34+$wgExtraNamespaces[NS_LQT_SUMMARY] = 'Summary';
3535 $wgExtraNamespaces[NS_LQT_SUMMARY_TALK] = 'Summary_talk';
3636
3737 // Localisation
@@ -171,8 +171,8 @@
172172
173173 // Logging
174174 $wgLogTypes[] = 'liquidthreads';
175 -$wgLogNames['liquidthreads'] = 'lqt-log-name';
176 -$wgLogHeaders['liquidthreads'] = 'lqt-log-header';
 175+$wgLogNames['liquidthreads'] = 'lqt-log-name';
 176+$wgLogHeaders['liquidthreads'] = 'lqt-log-header';
177177
178178 foreach ( array( 'move', 'split', 'merge', 'subjectedit', 'resort' ) as $action ) {
179179 $wgLogActionsHandlers["liquidthreads/$action"] = 'LqtLogFormatter::formatLogEntry';
@@ -192,8 +192,8 @@
193193 $wgAutoloadClasses['ApiThreadAction'] = "$dir/api/ApiThreadAction.php";
194194 $wgAPIModules['threadaction'] = 'ApiThreadAction';
195195
196 -// Name of the extension (wmf-specific, for splitting to versions)
197 -$wgLiquidThreadsExtensionName = 'LiquidThreads';
 196+// Path to the LQT directory
 197+$wgLiquidThreadsExtensionPath = "{$wgScriptPath}/extensions/LiquidThreads";
198198
199199 /** CONFIGURATION SECTION */
200200
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/Threads.php
@@ -92,7 +92,6 @@
9393 }
9494
9595 static function where( $where, $options = array(), $bulkLoad = true ) {
96 - global $wgDBprefix;
9796 $dbr = wfGetDB( DB_SLAVE );
9897
9998 $res = $dbr->select( 'thread', '*', $where, __METHOD__, $options );
@@ -323,12 +322,12 @@
324323 $roundRowsAffected = 0;
325324
326325 // Fix wrong title.
327 - $res = $dbw->update( 'thread', $titleCond, $fixTitleCond,
 326+ $dbw->update( 'thread', $titleCond, $fixTitleCond,
328327 __METHOD__, $options );
329328 $roundRowsAffected += $dbw->affectedRows();
330329
331330 // Fix wrong ID
332 - $res = $dbw->update( 'thread', $idCond, $fixIdCond, __METHOD__, $options );
 331+ $dbw->update( 'thread', $idCond, $fixIdCond, __METHOD__, $options );
333332 $roundRowsAffected += $dbw->affectedRows();
334333
335334 $rowsAffected += $roundRowsAffected;
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/View.php
@@ -80,7 +80,7 @@
8181 if ( $operand ) {
8282 $query['lqt_operand'] = $operand;
8383 }
84 -
 84+
8585 if ( ! $thread ) {
8686 throw new MWException( "Empty thread passed to ".__METHOD__ );
8787 }
@@ -114,7 +114,7 @@
115115
116116 static function linkInContextData( $thread, $contextType = 'page' ) {
117117 $query = array();
118 -
 118+
119119 if ( ! $thread ) {
120120 throw new MWException( "Null thread passed to linkInContextData" );
121121 }
@@ -249,9 +249,6 @@
250250 static function talkpageUrl( $title, $method = null, $operand = null,
251251 $includeFragment = true, $perpetuateOffset = true )
252252 {
253 - global $wgUser;
254 - $sk = $wgUser->getSkin();
255 -
256253 list( $title, $query ) =
257254 self::talkpageLinkData( $title, $method, $operand, $includeFragment,
258255 $perpetuateOffset );
@@ -282,9 +279,9 @@
283280 }
284281
285282 /*************************************************************
286 - * Editing methods (here be dragons) *
 283+ * Editing methods (here be dragons) *
287284 * Forget dragons: This section distorts the rest of the code *
288 - * like a star bending spacetime around itself. *
 285+ * like a star bending spacetime around itself. *
289286 *************************************************************/
290287
291288 /**
@@ -311,7 +308,7 @@
312309 $operand = $this->request->getVal( 'lqt_operand' );
313310
314311 $thread = Threads::withId( intval( $operand ) );
315 -
 312+
316313 $hookResult = wfRunHooks( 'LiquidThreadsDoInlineEditForm',
317314 array(
318315 $thread,
@@ -331,20 +328,20 @@
332329
333330 $this->output->setArticleBodyOnly( true );
334331 }
335 -
 332+
336333 function showNewThreadForm( $talkpage ) {
337334 $submitted_nonce = $this->request->getVal( 'lqt_nonce' );
338335 $nonce_key = wfMemcKey( 'lqt-nonce', $submitted_nonce, $this->user->getName() );
339336 if ( ! $this->handleNonce( $submitted_nonce, $nonce_key ) ) return;
340 -
 337+
341338 if ( Thread::canUserPost( $this->user, $this->article ) !== true ) {
342339 $this->output->addWikiMsg( 'lqt-protected-newthread' );
343340 return;
344341 }
345342 $subject = $this->request->getVal( 'lqt_subject_field', false );
346 -
 343+
347344 $t = null;
348 -
 345+
349346 $subjectOk = Thread::validateSubject( $subject, $t,
350347 null, $this->article );
351348 if ( ! $subjectOk ) {
@@ -354,65 +351,65 @@
355352 $t = $this->scratchTitle();
356353 }
357354 }
358 -
 355+
359356 $article = new Article( $t );
360 -
 357+
361358 LqtHooks::$editTalkpage = $talkpage;
362359 LqtHooks::$editArticle = $article;
363360 LqtHooks::$editThread = null;
364361 LqtHooks::$editType = 'new';
365362 LqtHooks::$editAppliesTo = null;
366 -
 363+
367364 wfRunHooks( 'LiquidThreadsShowNewThreadForm', array( &$e, $talkpage ) );
368 -
 365+
369366 $e = new EditPage( $article );
370 -
 367+
371368 global $wgRequest;
372369 // Quietly force a preview if no subject has been specified.
373370 if ( !$subjectOk ) {
374371 // Dirty hack to prevent saving from going ahead
375372 $wgRequest->setVal( 'wpPreview', true );
376 -
 373+
377374 if ( $this->request->wasPosted() ) {
378375 if ( !$subject ) {
379376 $msg = 'lqt_empty_subject';
380377 } else {
381378 $msg = 'lqt_invalid_subject';
382379 }
383 -
 380+
384381 $e->editFormPageTop .=
385382 Xml::tags( 'div', array( 'class' => 'error' ),
386383 wfMsgExt( $msg, 'parse' ) );
387384 }
388385 }
389 -
 386+
390387 $e->suppressIntro = true;
391388 $e->editFormTextBeforeContent .=
392389 $this->perpetuate( 'lqt_method', 'hidden' ) .
393390 $this->perpetuate( 'lqt_operand', 'hidden' ) .
394391 Xml::hidden( 'lqt_nonce', wfGenerateToken() );
395 -
 392+
396393 $e->mShowSummaryField = false;
397 -
 394+
398395 $summary = wfMsgForContent( 'lqt-newpost-summary', $subject );
399396 $wgRequest->setVal( 'wpSummary', $summary );
400 -
 397+
401398 list( $signatureEditor, $signatureHTML ) = $this->getSignatureEditor( $this->user );
402 -
 399+
403400 $e->editFormTextAfterContent .=
404401 $signatureEditor;
405402 $e->previewTextAfterContent .=
406403 Xml::tags( 'p', null, $signatureHTML );
407 -
 404+
408405 $e->editFormTextBeforeContent .= $this->getSubjectEditor( '', $subject );
409 -
 406+
410407 wfRunHooks( 'LiquidThreadsAfterShowNewThreadForm', array( &$e, $talkpage ) );
411 -
 408+
412409 $e->edit();
413 -
 410+
414411 if ( $e->didSave ) {
415412 $signature = $this->request->getVal( 'wpLqtSignature', null );
416 -
 413+
417414 $info =
418415 array(
419416 'talkpage' => $talkpage,
@@ -422,66 +419,66 @@
423420 'root' => $article,
424421 'subject' => $subject,
425422 );
426 -
 423+
427424 wfRunHooks( 'LiquidThreadsSaveNewThread',
428425 array( &$info, &$e, &$talkpage ) );
429 -
 426+
430427 $thread = LqtView::newPostMetadataUpdates( $info );
431 -
 428+
432429 if ( $submitted_nonce && $nonce_key ) {
433430 global $wgMemc;
434431 $wgMemc->set( $nonce_key, 1, 3600 );
435432 }
436433 }
437 -
 434+
438435 if ( $this->output->getRedirect() != '' ) {
439 - $redirectTitle = clone $talkpage->getTitle();
440 - if ( !empty($thread) ) {
441 - $redirectTitle->setFragment( '#' . $this->anchorName( $thread ) );
442 - }
443 - $this->output->redirect( $this->title->getFullURL() );
 436+ $redirectTitle = clone $talkpage->getTitle();
 437+ if ( !empty($thread) ) {
 438+ $redirectTitle->setFragment( '#' . $this->anchorName( $thread ) );
 439+ }
 440+ $this->output->redirect( $this->title->getFullURL() );
444441 }
445 -
 442+
446443 }
447 -
 444+
448445 function showReplyForm( $thread ) {
449446 global $wgRequest;
450 -
 447+
451448 $submitted_nonce = $this->request->getVal( 'lqt_nonce' );
452449 $nonce_key = wfMemcKey( 'lqt-nonce', $submitted_nonce, $this->user->getName() );
453450 if ( ! $this->handleNonce( $submitted_nonce, $nonce_key ) ) return;
454 -
 451+
455452 $perm_result = $thread->canUserReply( $this->user );
456453 if ( $perm_result !== true ) {
457454 $this->showReplyProtectedNotice( $thread );
458455 return;
459456 }
460 -
 457+
461458 $html = Xml::openElement( 'div',
462459 array( 'class' => 'lqt-reply-form' ) );
463460 $this->output->addHTML( $html );
464461
465 -
 462+
466463 try {
467464 $t = $this->newReplyTitle( null, $thread );
468465 } catch ( MWException $excep ) {
469466 $t = $this->scratchTitle();
470467 $valid_subject = false;
471468 }
472 -
 469+
473470 $article = new Article( $t );
474471 $talkpage = $thread->article();
475 -
 472+
476473 LqtHooks::$editTalkpage = $talkpage;
477474 LqtHooks::$editArticle = $article;
478475 LqtHooks::$editThread = $thread;
479476 LqtHooks::$editType = 'reply';
480477 LqtHooks::$editAppliesTo = $thread;
481 -
 478+
482479 $e = new EditPage( $article );
483 -
 480+
484481 $e->mShowSummaryField = false;
485 -
 482+
486483 $reply_subject = $thread->subject();
487484 $reply_title = $thread->title()->getPrefixedText();
488485 $summary = wfMsgForContent(
@@ -490,37 +487,37 @@
491488 $reply_title
492489 );
493490 $wgRequest->setVal( 'wpSummary', $summary );
494 -
 491+
495492 // Add an offset so it works if it's on the wrong page.
496493 $dbr = wfGetDB( DB_SLAVE );
497494 $offset = wfTimestamp( TS_UNIX, $thread->topmostThread()->sortkey() );
498495 $offset++;
499496 $offset = $dbr->timestamp( $offset );
500 -
 497+
501498 $e->suppressIntro = true;
502499 $e->editFormTextBeforeContent .=
503500 $this->perpetuate( 'lqt_method', 'hidden' ) .
504501 $this->perpetuate( 'lqt_operand', 'hidden' ) .
505502 Xml::hidden( 'lqt_nonce', wfGenerateToken() ) .
506503 Xml::hidden( 'offset', $offset );
507 -
 504+
508505 list( $signatureEditor, $signatureHTML ) = $this->getSignatureEditor( $this->user );
509 -
 506+
510507 $e->editFormTextAfterContent .=
511508 $signatureEditor;
512509 $e->previewTextAfterContent .=
513510 Xml::tags( 'p', null, $signatureHTML );
514 -
 511+
515512 $wgRequest->setVal( 'wpWatchThis', false );
516 -
 513+
517514 wfRunHooks( 'LiquidThreadsShowReplyForm', array( &$e, $thread ) );
518 -
 515+
519516 $e->edit();
520 -
 517+
521518 if ( $e->didSave ) {
522519 $bump = $this->request->getBool( 'wpBumpThread' );
523520 $signature = $this->request->getVal( 'wpLqtSignature', null );
524 -
 521+
525522 $info = array(
526523 'replyTo' => $thread,
527524 'text' => $e->textbox1,
@@ -529,106 +526,106 @@
530527 'signature' => $signature,
531528 'root' => $article,
532529 );
533 -
 530+
534531 wfRunHooks( 'LiquidThreadsSaveReply',
535532 array( &$info, &$e, &$thread ) );
536 -
 533+
537534 $newThread = LqtView::replyMetadataUpdates( $info );
538 -
 535+
539536 if ( $submitted_nonce && $nonce_key ) {
540537 global $wgMemc;
541538 $wgMemc->set( $nonce_key, 1, 3600 );
542539 }
543540 }
544 -
 541+
545542 if ( $this->output->getRedirect() != '' ) {
546 - $redirectTitle = clone $talkpage->getTitle();
547 - if ( !empty( $newThread ) ) {
548 - $redirectTitle->setFragment( '#' .
549 - $this->anchorName( $newThread ) );
550 - }
551 - $this->output->redirect( $this->title->getFullURL() );
 543+ $redirectTitle = clone $talkpage->getTitle();
 544+ if ( !empty( $newThread ) ) {
 545+ $redirectTitle->setFragment( '#' .
 546+ $this->anchorName( $newThread ) );
 547+ }
 548+ $this->output->redirect( $this->title->getFullURL() );
552549 }
553 -
 550+
554551 $this->output->addHTML( '</div>' );
555552 }
556 -
 553+
557554 function showPostEditingForm( $thread ) {
558555 $submitted_nonce = $this->request->getVal( 'lqt_nonce' );
559556 $nonce_key = wfMemcKey( 'lqt-nonce', $submitted_nonce, $this->user->getName() );
560557 if ( ! $this->handleNonce( $submitted_nonce, $nonce_key ) ) return;
561 -
 558+
562559 $subject_expected = $thread->isTopmostThread();
563560 $subject = $this->request->getVal( 'lqt_subject_field', '' );
564 -
 561+
565562 if ( !$subject ) {
566563 $subject = $thread->subject();
567564 }
568 -
 565+
569566 $t = null;
570567 $subjectOk = Thread::validateSubject( $subject, $t,
571568 $thread->superthread(), $this->article );
572569 if ( ! $subjectOk ) {
573570 $subject = false;
574571 }
575 -
 572+
576573 $article = $thread->root();
577574 $talkpage = $thread->article();
578 -
 575+
579576 wfRunHooks( 'LiquidThreadsEditFormContent', array( $thread, &$article, $talkpage ) );
580 -
 577+
581578 LqtHooks::$editTalkpage = $talkpage;
582579 LqtHooks::$editArticle = $article;
583580 LqtHooks::$editThread = $thread;
584581 LqtHooks::$editType = 'edit';
585582 LqtHooks::$editAppliesTo = $thread;
586 -
 583+
587584 $e = new EditPage( $article );
588 -
 585+
589586 global $wgRequest;
590587 // Quietly force a preview if no subject has been specified.
591588 if ( !$subjectOk ) {
592589 // Dirty hack to prevent saving from going ahead
593590 $wgRequest->setVal( 'wpPreview', true );
594 -
 591+
595592 if ( $this->request->wasPosted() ) {
596593 $e->editFormPageTop .=
597594 Xml::tags( 'div', array( 'class' => 'error' ),
598595 wfMsgExt( 'lqt_invalid_subject', 'parse' ) );
599596 }
600597 }
601 -
 598+
602599 // Add an offset so it works if it's on the wrong page.
603600 $dbr = wfGetDB( DB_SLAVE );
604601 $offset = wfTimestamp( TS_UNIX, $thread->topmostThread()->sortkey() );
605602 $offset++;
606603 $offset = $dbr->timestamp( $offset );
607 -
 604+
608605 $e->suppressIntro = true;
609606 $e->editFormTextBeforeContent .=
610607 $this->perpetuate( 'lqt_method', 'hidden' ) .
611608 $this->perpetuate( 'lqt_operand', 'hidden' ) .
612609 Xml::hidden( 'lqt_nonce', wfGenerateToken() ) .
613610 Xml::hidden( 'offset', $offset );
614 -
 611+
615612 list( $signatureEditor, $signatureHTML ) = $this->getSignatureEditor( $thread );
616 -
 613+
617614 $e->editFormTextAfterContent .=
618615 $signatureEditor;
619616 $e->previewTextAfterContent .=
620617 Xml::tags( 'p', null, $signatureHTML );
621 -
 618+
622619 if ( $thread->isTopmostThread() ) {
623620 $e->editFormTextBeforeContent .=
624621 $this->getSubjectEditor( $thread->subject(), $subject );
625622 }
626 -
 623+
627624 $e->edit();
628 -
 625+
629626 if ( $e->didSave ) {
630627 $bump = $this->request->getBool( 'wpBumpThread' );
631628 $signature = $this->request->getVal( 'wpLqtSignature', null );
632 -
 629+
633630 LqtView::editMetadataUpdates(
634631 array(
635632 'thread' => $thread,
@@ -640,63 +637,63 @@
641638 'root' => $article,
642639 )
643640 );
644 -
 641+
645642 if ( $submitted_nonce && $nonce_key ) {
646643 global $wgMemc;
647644 $wgMemc->set( $nonce_key, 1, 3600 );
648645 }
649646 }
650 -
 647+
651648 if ( $this->output->getRedirect() != '' ) {
652 - $redirectTitle = clone $talkpage->getTitle();
653 - $redirectTitle->setFragment( '#' . $this->anchorName( $thread ) );
654 - $this->output->redirect( $this->title->getFullURL() );
 649+ $redirectTitle = clone $talkpage->getTitle();
 650+ $redirectTitle->setFragment( '#' . $this->anchorName( $thread ) );
 651+ $this->output->redirect( $this->title->getFullURL() );
655652 }
656 -
 653+
657654 }
658 -
 655+
659656 function showSummarizeForm( $thread ) {
660657 $submitted_nonce = $this->request->getVal( 'lqt_nonce' );
661658 $nonce_key = wfMemcKey( 'lqt-nonce', $submitted_nonce, $this->user->getName() );
662659 if ( ! $this->handleNonce( $submitted_nonce, $nonce_key ) ) return;
663 -
 660+
664661 if ( $thread->summary() ) {
665662 $article = $thread->summary();
666663 } else {
667664 $t = $this->newSummaryTitle( $thread );
668665 $article = new Article( $t );
669666 }
670 -
 667+
671668 $this->output->addWikiMsg( 'lqt-summarize-intro' );
672 -
 669+
673670 $talkpage = $thread->article();
674 -
 671+
675672 LqtHooks::$editTalkpage = $talkpage;
676673 LqtHooks::$editArticle = $article;
677674 LqtHooks::$editThread = $thread;
678675 LqtHooks::$editType = 'summarize';
679676 LqtHooks::$editAppliesTo = $thread;
680 -
 677+
681678 $e = new EditPage( $article );
682 -
 679+
683680 // Add an offset so it works if it's on the wrong page.
684681 $dbr = wfGetDB( DB_SLAVE );
685682 $offset = wfTimestamp( TS_UNIX, $thread->topmostThread()->sortkey() );
686683 $offset++;
687684 $offset = $dbr->timestamp( $offset );
688 -
 685+
689686 $e->suppressIntro = true;
690687 $e->editFormTextBeforeContent .=
691688 $this->perpetuate( 'lqt_method', 'hidden' ) .
692689 $this->perpetuate( 'lqt_operand', 'hidden' ) .
693690 Xml::hidden( 'lqt_nonce', wfGenerateToken() ) .
694691 Xml::hidden( 'offset', $offset );
695 -
 692+
696693 $e->edit();
697 -
 694+
698695 if ( $e->didSave ) {
699696 $bump = $this->request->getBool( 'wpBumpThread' );
700 -
 697+
701698 LqtView::summarizeMetadataUpdates(
702699 array(
703700 'thread' => $thread,
@@ -705,25 +702,25 @@
706703 'bump' => $bump,
707704 )
708705 );
709 -
 706+
710707 if ( $submitted_nonce && $nonce_key ) {
711708 global $wgMemc;
712709 $wgMemc->set( $nonce_key, 1, 3600 );
713710 }
714711 }
715 -
 712+
716713 if ( $this->output->getRedirect() != '' ) {
717 - $redirectTitle = clone $talkpage->getTitle();
718 - $redirectTitle->setFragment( '#' . $this->anchorName( $thread ) );
719 - $this->output->redirect( $this->title->getFullURL() );
 714+ $redirectTitle = clone $talkpage->getTitle();
 715+ $redirectTitle->setFragment( '#' . $this->anchorName( $thread ) );
 716+ $this->output->redirect( $this->title->getFullURL() );
720717 }
721 -
 718+
722719 }
723 -
 720+
724721 public function handleNonce( $submitted_nonce, $nonce_key ) {
725722 // Add a one-time random string to a hidden field. Store the random string
726 - // in memcached on submit and don't allow the edit to go ahead if it's already
727 - // been added.
 723+ // in memcached on submit and don't allow the edit to go ahead if it's already
 724+ // been added.
728725 if ( $submitted_nonce ) {
729726 global $wgMemc;
730727
@@ -732,13 +729,13 @@
733730 return false;
734731 }
735732 }
736 -
 733+
737734 return true;
738735 }
739 -
 736+
740737 public function getSubjectEditor( $db_subject, $subject ) {
741738 if ( $subject === false ) $subject = $db_subject;
742 -
 739+
743740 $subject_label = wfMsg( 'lqt_subject' );
744741
745742 $attr = array( 'tabindex' => 1 );
@@ -747,7 +744,7 @@
748745 'lqt_subject_field', 60, $subject, $attr ) .
749746 Xml::element( 'br' );
750747 }
751 -
 748+
752749 public function getSignatureEditor( $from ) {
753750 $signatureText = $this->request->getVal( 'wpLqtSignature', null );
754751
@@ -776,19 +773,19 @@
777774 );
778775
779776 $signatureEditor = $signaturePreview . $signatureEditBox;
780 -
 777+
781778 return array( $signatureEditor, $signatureHTML );
782779 }
783 -
 780+
784781 static function replyMetadataUpdates( $data = array() ) {
785782 $requiredFields = array( 'replyTo', 'root', 'text' );
786 -
 783+
787784 foreach ( $requiredFields as $f ) {
788785 if ( !isset( $data[$f] ) ) {
789786 throw new MWException( "Missing required field $f" );
790787 }
791788 }
792 -
 789+
793790 $signature = null;
794791 if ( isset( $data['signature'] ) ) {
795792 $signature = $data['signature'];
@@ -796,72 +793,72 @@
797794 global $wgUser;
798795 $signature = LqtView::getUserSignature( $wgUser );
799796 }
800 -
 797+
801798 $summary = isset( $data['summary'] ) ? $data['summary'] : '';
802 -
 799+
803800 $replyTo = $data['replyTo'];
804801 $root = $data['root'];
805802 $text = $data['text'];
806803 $bump = !empty( $data['bump'] );
807 -
 804+
808805 $subject = $replyTo->subject();
809806 $talkpage = $replyTo->article();
810 -
 807+
811808 $thread = Thread::create(
812809 $root, $talkpage, $replyTo, Threads::TYPE_NORMAL, $subject,
813810 $summary, $bump, $signature
814811 );
815 -
 812+
816813 wfRunHooks( 'LiquidThreadsAfterReplyMetadataUpdates', array( &$thread ) );
817 -
 814+
818815 return $thread;
819816 }
820 -
 817+
821818 static function summarizeMetadataUpdates( $data = array() ) {
822819 $requiredFields = array( 'thread', 'article', 'summary' );
823 -
 820+
824821 foreach ( $requiredFields as $f ) {
825822 if ( !isset( $data[$f] ) ) {
826823 throw new MWException( "Missing required field $f" );
827824 }
828825 }
829 -
 826+
830827 extract( $data );
831 -
 828+
832829 $bump = isset( $bump ) ? $bump : null;
833 -
 830+
834831 $thread->setSummary( $article );
835832 $thread->commitRevision(
836833 Threads::CHANGE_EDITED_SUMMARY, $thread, $summary, $bump );
837 -
 834+
838835 return $thread;
839836 }
840 -
 837+
841838 static function editMetadataUpdates( $data = array() ) {
842839 $requiredFields = array( 'thread', 'text', 'summary' );
843 -
 840+
844841 foreach ( $requiredFields as $f ) {
845842 if ( !isset( $data[$f] ) ) {
846843 throw new MWException( "Missing required field $f" );
847844 }
848845 }
849 -
 846+
850847 $thread = $data['thread'];
851 -
 848+
852849 // Use a separate type if the content is blanked.
853850 $type = strlen( trim( $data['text'] ) )
854851 ? Threads::CHANGE_EDITED_ROOT
855852 : Threads::CHANGE_ROOT_BLANKED;
856 -
 853+
857854 if ( isset( $data['signature'] ) ) {
858855 $thread->setSignature( $data['signature'] );
859856 }
860 -
 857+
861858 $bump = !empty( $data['bump'] );
862859
863860 // Add the history entry.
864861 $thread->commitRevision( $type, $thread, $data['summary'], $bump );
865 -
 862+
866863 // Update subject if applicable.
867864 if ( $thread->isTopmostThread() && !empty( $data['subject'] ) &&
868865 $data['subject'] != $thread->subject() ) {
@@ -872,20 +869,20 @@
873870 // Disabled page-moving for now.
874871 // $this->renameThread( $thread, $subject, $e->summary );
875872 }
876 -
 873+
877874 return $thread;
878875 }
879876
880877 static function newPostMetadataUpdates( $data )
881878 {
882879 $requiredFields = array( 'talkpage', 'root', 'text', 'subject' );
883 -
 880+
884881 foreach ( $requiredFields as $f ) {
885882 if ( !isset( $data[$f] ) ) {
886883 throw new MWException( "Missing required field $f" );
887884 }
888885 }
889 -
 886+
890887 $signature = null;
891888 if ( isset( $data['signature'] ) ) {
892889 $signature = $data['signature'];
@@ -893,9 +890,9 @@
894891 global $wgUser;
895892 $signature = LqtView::getUserSignature( $wgUser );
896893 }
897 -
 894+
898895 $summary = isset( $data['summary'] ) ? $data['summary'] : '';
899 -
 896+
900897 $talkpage = $data['talkpage'];
901898 $root = $data['root'];
902899 $text = $data['text'];
@@ -906,7 +903,7 @@
907904 Threads::TYPE_NORMAL, $subject,
908905 $summary, null, $signature
909906 );
910 -
 907+
911908 wfRunHooks( 'LiquidThreadsAfterNewPostMetadataUpdates', array( &$thread ) );
912909
913910 return $thread;
@@ -958,21 +955,21 @@
959956
960957 return true;
961958 }
962 -
 959+
963960 function scratchTitle() {
964961 return Title::makeTitle( NS_LQT_THREAD, wfGenerateToken() );
965962 }
966963
967964 /**
968965 * Example return value:
969 - * array (
970 - * edit => array( 'label' => 'Edit',
971 - * 'href' => 'http...',
972 - * 'enabled' => false ),
973 - * reply => array( 'label' => 'Reply',
974 - * 'href' => 'http...',
975 - * 'enabled' => true )
976 - * )
 966+ * array (
 967+ * edit => array( 'label' => 'Edit',
 968+ * 'href' => 'http...',
 969+ * 'enabled' => false ),
 970+ * reply => array( 'label' => 'Reply',
 971+ * 'href' => 'http...',
 972+ * 'enabled' => true )
 973+ * )
977974 */
978975 function threadCommands( $thread ) {
979976 wfLoadExtensionMessages( 'LiquidThreads' );
@@ -1038,7 +1035,7 @@
10391036 'enabled' => true
10401037 );
10411038 }
1042 -
 1039+
10431040 $commands['link'] = array(
10441041 'label' => wfMsgExt( 'lqt_permalink', 'parseinline' ),
10451042 'href' => $thread->title()->getFullURL(),
@@ -1046,7 +1043,7 @@
10471044 'showlabel' => true,
10481045 'tooltip' => wfMsgExt( 'lqt_permalink', 'parseinline' )
10491046 );
1050 -
 1047+
10511048 wfRunHooks( 'LiquidThreadsThreadCommands', array( $thread, &$commands ) );
10521049
10531050 return $commands;
@@ -1086,7 +1083,7 @@
10871084 'tooltip' => $label
10881085 );
10891086 }
1090 -
 1087+
10911088 if ( $thread->canUserReply( $this->user ) === true ) {
10921089 $commands['reply'] = array(
10931090 'label' => wfMsgExt( 'lqt_reply', 'parseinline' ),
@@ -1098,12 +1095,12 @@
10991096 'icon' => 'reply.png',
11001097 );
11011098 }
1102 -
 1099+
11031100 // Parent post link
11041101 if ( !$thread->isTopmostThread() ) {
11051102 $parent = $thread->superthread();
11061103 $anchor = $parent->getAnchorName();
1107 -
 1104+
11081105 $commands['parent'] = array(
11091106 'label' => wfMsgExt( 'lqt-parent', 'parseinline' ),
11101107 'href' => '#' . $anchor,
@@ -1111,7 +1108,7 @@
11121109 'showlabel' => 1,
11131110 );
11141111 }
1115 -
 1112+
11161113 wfRunHooks( 'LiquidThreadsThreadMajorCommands',
11171114 array( $thread, &$commands ) );
11181115
@@ -1175,14 +1172,14 @@
11761173 'href' => $summarizeUrl,
11771174 'enabled' => true,
11781175 );
1179 -
 1176+
11801177 wfRunHooks( 'LiquidThreadsTopLevelCommands', array( $thread, &$commands ) );
11811178
11821179 return $commands;
11831180 }
11841181
11851182 /*************************
1186 - * Output methods *
 1183+ * Output methods *
11871184 *************************/
11881185
11891186 static function addJSandCSS() {
@@ -1190,30 +1187,27 @@
11911188 return;
11921189 }
11931190
1194 - global $wgOut, $wgStylePath;
1195 - global $wgScriptPath, $wgStyleVersion;
1196 - global $wgEnableJS2system;
1197 - global $wgLiquidThreadsExtensionName;
 1191+ global $wgOut;
 1192+ global $wgStyleVersion;
 1193+ global $wgLiquidThreadsExtensionPath;
11981194
11991195 LqtHooks::$scriptVariables['wgLqtMessages'] = self::exportJSLocalisation();
12001196
1201 - $basePath = "$wgScriptPath/extensions/$wgLiquidThreadsExtensionName";
1202 -
12031197 if ( method_exists( $wgOut, 'includeJQuery' ) ) {
12041198 $wgOut->includeJQuery();
1205 - $wgOut->addScriptFile( "$basePath/jquery/plugins.js" );
 1199+ $wgOut->addScriptFile( "$wgLiquidThreadsExtensionPath/jquery/plugins.js" );
12061200 } else {
1207 - $wgOut->addScriptFile( "$basePath/jquery/js2.combined.js" );
 1201+ $wgOut->addScriptFile( "$wgLiquidThreadsExtensionPath/jquery/js2.combined.js" );
12081202 }
1209 -
1210 - $wgOut->addExtensionStyle( "$basePath/jquery/jquery-ui-1.7.2.css" );
12111203
1212 - $wgOut->addScriptFile( "$basePath/jquery/jquery.autogrow.js" );
 1204+ $wgOut->addExtensionStyle( "$wgLiquidThreadsExtensionPath/jquery/jquery-ui-1.7.2.css" );
12131205
1214 - $wgOut->addScriptFile( "$basePath/lqt.js" );
1215 - $wgOut->addScriptFile( "$basePath/js/lqt.toolbar.js" );
1216 - $wgOut->addExtensionStyle( "$basePath/lqt.css?{$wgStyleVersion}" );
1217 -
 1206+ $wgOut->addScriptFile( "$wgLiquidThreadsExtensionPath/jquery/jquery.autogrow.js" );
 1207+
 1208+ $wgOut->addScriptFile( "$wgLiquidThreadsExtensionPath/lqt.js" );
 1209+ $wgOut->addScriptFile( "$wgLiquidThreadsExtensionPath/js/lqt.toolbar.js" );
 1210+ $wgOut->addExtensionStyle( "$wgLiquidThreadsExtensionPath/lqt.css?{$wgStyleVersion}" );
 1211+
12181212 if ( class_exists( 'WikiEditorHooks' ) ) {
12191213 $temp = null;
12201214 WikiEditorHooks::addModules( $temp );
@@ -1294,9 +1288,6 @@
12951289 }
12961290
12971291 function showThreadToolbar( $thread ) {
1298 - global $wgLang;
1299 -
1300 - $sk = $this->user->getSkin();
13011292 $html = '';
13021293
13031294 $headerParts = array();
@@ -1361,7 +1352,6 @@
13621353 $tooltip = isset( $command['tooltip'] ) ? $command['tooltip'] : '';
13631354
13641355 if ( isset( $command['icon'] ) ) {
1365 - global $wgScriptPath;
13661356 $icon = Xml::tags( 'div', array( 'title' => $label,
13671357 'class' => 'lqt-command-icon' ), '&#160;' );
13681358 if ( $icon_divs ) {
@@ -1424,12 +1414,12 @@
14251415 $html = '';
14261416
14271417 // No way am I refactoring EditForm to return its output as HTML.
1428 - // so I'm just flushing the HTML and displaying it as-is.
 1418+ // so I'm just flushing the HTML and displaying it as-is.
14291419 $this->showPostEditingForm( $thread );
14301420 $html .= Xml::closeElement( 'div' );
14311421 } elseif ( $showAnything ) {
14321422 $html .= Xml::openElement( 'div', array( 'class' => $divClass ) );
1433 -
 1423+
14341424 $show = wfRunHooks( 'LiquidThreadsShowPostContent',
14351425 array( $thread, &$post ) );
14361426 if ( $show ) {
@@ -1438,7 +1428,7 @@
14391429 $html .= Xml::closeElement( 'div' );
14401430 $html .= Xml::tags( 'div', array( 'style' => 'clear: both; height: 0' ),
14411431 '&#160;' );
1442 -
 1432+
14431433 wfRunHooks( 'LiquidThreadsShowPostThreadBody',
14441434 array( $thread, $this->request, &$html ) );
14451435
@@ -1454,8 +1444,7 @@
14551445 }
14561446
14571447 function threadSignature( $thread ) {
1458 - global $wgUser, $wgLang;
1459 - $sk = $wgUser->getSkin();
 1448+ global $wgLang;
14601449
14611450 $signature = $thread->signature();
14621451 $signature = LqtView::parseSignature( $signature );
@@ -1463,11 +1452,11 @@
14641453 $signature = Xml::tags( 'span', array( 'class' => 'lqt-thread-user-signature' ),
14651454 $signature );
14661455
1467 - $timestamp = $wgLang->timeanddate( $thread->created(), true );
 1456+ $timestamp = $wgLang->timeanddate( $thread->created(), true );
14681457 $signature .= Xml::element( 'span',
14691458 array( 'class' => 'lqt-thread-toolbar-timestamp' ),
14701459 $timestamp );
1471 -
 1460+
14721461 wfRunHooks( 'LiquidThreadsThreadSignature', array( $thread, &$signature ) );
14731462
14741463 $signature = Xml::tags( 'div', array( 'class' => 'lqt-thread-signature' ),
@@ -1493,22 +1482,22 @@
14941483 $lastEdit = $wgLang->timeanddate( $lastEdit, true );
14951484 $editors = '';
14961485 $editorCount = 0;
1497 -
 1486+
14981487 if ( $editedFlag > Threads::EDITED_BY_AUTHOR ) {
14991488 $editors = $thread->editors();
15001489 $editorCount = count( $editors );
15011490 $formattedEditors = array();
1502 -
 1491+
15031492 foreach ( $editors as $ed ) {
15041493 $id = IP::isIPAddress( $ed ) ? 0 : 1;
15051494 $fEditor = $sk->userLink( $id, $ed ) .
15061495 $sk->userToolLinks( $id, $ed );
15071496 $formattedEditors[] = $fEditor;
15081497 }
1509 -
 1498+
15101499 $editors = $wgLang->commaList( $formattedEditors );
15111500 }
1512 -
 1501+
15131502 if ( isset( $ebLookup[$editedFlag] ) ) {
15141503 $editedBy = $ebLookup[$editedFlag];
15151504 // Used messages: lqt-thread-edited-author, lqt-thread-edited-others
@@ -1521,7 +1510,7 @@
15221511 'lqt-thread-toolbar-edited-' . $editedBy ),
15231512 $editedNotice );
15241513 }
1525 -
 1514+
15261515 wfRunHooks( 'LiquidThreadsThreadInfoPanel', array( $thread, &$infoElements ) );
15271516
15281517 if ( ! count( $infoElements ) ) {
@@ -1551,10 +1540,10 @@
15521541 $id = 'lqt-header-' . $thread->id();
15531542
15541543 $html = $thread->formattedSubject();
1555 -
 1544+
15561545 $show = wfRunHooks( 'LiquidThreadsShowThreadHeading',
15571546 array( $thread, &$html ) );
1558 -
 1547+
15591548 if ( $show ) {
15601549 $html = Xml::tags( 'span', array( 'class' => 'mw-headline' ), $html );
15611550 $html .= Xml::hidden( 'raw-header', $thread->subject() );
@@ -1562,7 +1551,7 @@
15631552 array( 'class' => 'lqt_header', 'id' => $id ),
15641553 $html ) . $commands_html;
15651554 }
1566 -
 1555+
15671556 // wrap it all in a container
15681557 $html = Xml::tags( 'div',
15691558 array( 'class' => 'lqt_thread_heading' ),
@@ -1627,8 +1616,6 @@
16281617
16291618 /** Shows a deleted thread. Returns true to show the thread body */
16301619 function showDeletedThread( $thread ) {
1631 - $sk = $this->user->getSkin();
1632 -
16331620 if ( $this->user->isAllowed( 'deletedhistory' ) ) {
16341621 $this->output->addWikiMsg( 'lqt_thread_deleted_for_sysops' );
16351622 return true;
@@ -1764,11 +1751,11 @@
17651752 $cascadeOptions, $interruption = false ) {
17661753 $repliesClass = 'lqt-thread-replies lqt-thread-replies-' .
17671754 $this->threadNestingLevel;
1768 -
 1755+
17691756 if ( $interruption ) {
17701757 $repliesClass .= ' lqt-thread-replies-interruption';
17711758 }
1772 -
 1759+
17731760 $div = Xml::openElement( 'div', array( 'class' => $repliesClass ) );
17741761 $sep = Xml::tags( 'div', array( 'class' => 'lqt-post-sep' ), '&#160;' );
17751762
@@ -1802,7 +1789,7 @@
18031790 ++$showCount;
18041791 if ( $showCount == 1 ) {
18051792 // There's a post sep before each reply group to
1806 - // separate from the parent thread.
 1793+ // separate from the parent thread.
18071794 $this->output->addHTML( $sep . $div );
18081795 }
18091796
@@ -1812,7 +1799,7 @@
18131800
18141801 // Handle must-show threads.
18151802 // FIXME this thread will be duplicated if somebody clicks the
1816 - // "show more" link (probably needs fixing in the JS)
 1803+ // "show more" link (probably needs fixing in the JS)
18171804 if ( $st->type() != Threads::TYPE_DELETED && !$shown &&
18181805 array_key_exists( $st->id(), $mustShowThreads ) ) {
18191806
@@ -1835,7 +1822,6 @@
18361823
18371824 function showThread( $thread, $levelNum = 1, $totalInLevel = 1,
18381825 $options = array() ) {
1839 - global $wgLang;
18401826
18411827 // Safeguard
18421828 if ( $thread->type() & Threads::TYPE_DELETED ||
@@ -1846,7 +1832,7 @@
18471833 $this->threadNestingLevel++;
18481834
18491835 // Figure out which threads *need* to be shown because they're involved in an
1850 - // operation
 1836+ // operation
18511837 $mustShowOption = array();
18521838 if ( isset( $options['mustShowThreads'] ) ) {
18531839 $mustShowOption = $options['mustShowThreads' ];
@@ -1905,12 +1891,8 @@
19061892 ) );
19071893 $replyTo = $this->methodAppliesToThread( 'reply', $thread );
19081894
1909 - $sk = $this->user->getSkin();
19101895 $html = '';
19111896
1912 - $html .= Xml::element( 'a', array( 'name' => $this->anchorName( $thread ) ), ' ' );
1913 - $html .= $this->showThreadHeading( $thread );
1914 -
19151897 $class = $this->threadDivClass( $thread );
19161898 if ( $levelNum == 1 ) {
19171899 $class .= ' lqt-thread-first';
@@ -1923,6 +1905,8 @@
19241906 } else {
19251907 $class .= ' lqt-thread-no-subthreads';
19261908 }
 1909+
 1910+ $class .= ' lqt-thread-wrapper';
19271911
19281912 $html .= Xml::openElement(
19291913 'div',
@@ -1931,6 +1915,9 @@
19321916 'id' => 'lqt_thread_id_' . $thread->id()
19331917 )
19341918 );
 1919+
 1920+ $html .= Xml::element( 'a', array( 'name' => $this->anchorName( $thread ) ), ' ' );
 1921+ $html .= $this->showThreadHeading( $thread );
19351922
19361923 // Metadata stuck in the top of the lqt_thread div.
19371924 // Modified time for topmost threads...
@@ -1949,7 +1936,7 @@
19501937 array( 'id' => 'lqt-thread-sortkey-' . $thread->id() )
19511938 );
19521939 }
1953 -
 1940+
19541941 if ( ! $thread->title() ) {
19551942 throw new MWException( "Thread " . $thread->id() . " has null title" );
19561943 }
@@ -1973,17 +1960,20 @@
19741961
19751962 $cascadeOptions = $options;
19761963 unset( $cascadeOptions['startAt'] );
1977 -
 1964+
19781965 $replyInterruption = $levelNum < $totalInLevel;
19791966
19801967 if ( ( $hasSubthreads && $showThreads ) ) {
 1968+ // If the thread has subthreads, and we want to show them, we should do so.
19811969 $this->showThreadReplies( $thread, $startAt, $maxCount, $showThreads,
19821970 $cascadeOptions, $replyInterruption );
19831971 } elseif ( $hasSubthreads && !$showThreads ) {
 1972+ // If the thread has subthreads, but we don't want to show them, then
 1973+ // show the reply form if necessary, and add the "Show X replies" link.
19841974 if ( $replyTo ) {
19851975 $this->showReplyForm( $thread );
19861976 }
1987 -
 1977+
19881978 // Add a "show subthreads" link.
19891979 $link = $this->getShowReplies( $thread );
19901980
@@ -1994,6 +1984,8 @@
19951985 Xml::tags( 'div', array( 'class' => 'lqt-post-sep' ), '&#160;' ) );
19961986 }
19971987 } elseif ( $levelNum < $totalInLevel ) {
 1988+ // If we have no replies, and we're not at the end of this level, add the post separator
 1989+ // and a reply box if necessary.
19981990 $this->output->addHTML(
19991991 Xml::tags( 'div', array( 'class' => 'lqt-post-sep' ), '&#160;' ) );
20001992
@@ -2002,7 +1994,7 @@
20031995 $this->threadNestingLevel;
20041996 $html = Xml::openElement( 'div', array( 'class' => $class ) );
20051997 $this->output->addHTML( $html );
2006 -
 1998+
20071999 $this->showReplyForm( $thread );
20082000
20092001 $finishDiv = Xml::tags( 'div',
@@ -2016,13 +2008,15 @@
20172009 $this->output->addHTML( $finishHTML );
20182010 }
20192011 } elseif ( !$hasSubthreads && $replyTo ) {
 2012+ // If we have no replies, we're at the end of this level, and we want to reply,
 2013+ // show the reply box.
20202014 $class = 'lqt-thread-replies lqt-thread-replies-' .
20212015 $this->threadNestingLevel;
20222016 $html = Xml::openElement( 'div', array( 'class' => $class ) );
20232017 $this->output->addHTML( $html );
2024 -
 2018+
20252019 $this->showReplyForm( $thread );
2026 -
 2020+
20272021 $html = Xml::tags( 'div',
20282022 array( 'class' => 'lqt-replies-finish' ),
20292023 Xml::tags( 'div',
@@ -2033,17 +2027,18 @@
20342028 $this->output->addHTML( $html );
20352029 }
20362030
2037 - if ( $this->threadNestingLevel == 1 ) {
2038 - if ( !( $hasSubthreads && $showThreads ) ) {
2039 - $this->showReplyBox( $thread );
2040 - $finishDiv = '';
2041 - $finishDiv .= Xml::tags( 'div', array( 'class' => 'lqt-replies-finish' ),
2042 - Xml::tags( 'div', array( 'class' => 'lqt-replies-finish-corner' ), '&#160;' ) );
 2031+ // I don't remember why this is here, commenting out.
 2032+// if ( $this->threadNestingLevel == 1 ) {
 2033+// if ( !( $hasSubthreads && $showThreads && !$replyTo ) ) {
 2034+// $this->showReplyBox( $thread );
 2035+// $finishDiv = '';
 2036+// $finishDiv .= Xml::tags( 'div', array( 'class' => 'lqt-replies-finish' ),
 2037+// Xml::tags( 'div', array( 'class' => 'lqt-replies-finish-corner' ), '&#160;' ) );
 2038+//
 2039+// $this->output->addHTML( $finishDiv );
 2040+// }
 2041+// }
20432042
2044 - $this->output->addHTML( $finishDiv );
2045 - }
2046 - }
2047 -
20482043 $this->output->addHTML( Xml::closeElement( 'div' ) );
20492044
20502045 $this->threadNestingLevel--;
@@ -2052,7 +2047,6 @@
20532048 function showReplyBox( $thread ) {
20542049 // Check if we're actually replying to this thread.
20552050 if ( $this->methodAppliesToThread( 'reply', $thread ) ) {
2056 - // As with above, flush HTML to avoid refactoring EditPage.
20572051 $this->showReplyForm( $thread );
20582052 return;
20592053 } elseif ( !$thread->canUserReply( $this->user ) ) {
@@ -2062,7 +2056,7 @@
20632057 $html = '';
20642058 $html .= Xml::tags( 'div',
20652059 array( 'class' => 'lqt-reply-form lqt-edit-form',
2066 - 'style' => 'display: none;' ),
 2060+ 'style' => 'display: none;' ),
20672061 '' );
20682062
20692063 $this->output->addHTML( $html );
@@ -2149,7 +2143,7 @@
21502144 }
21512145
21522146 static function getUserSignature( $user, $uid = null ) {
2153 - global $wgParser, $wgOut, $wgTitle;
 2147+ global $wgParser;
21542148 if ( !$user ) {
21552149 $user = User::newFromId( $uid );
21562150 }
@@ -2184,8 +2178,8 @@
21852179 }
21862180
21872181 static function signaturePST( $sig, $user ) {
2188 - global $wgParser, $wgOut, $wgTitle;
2189 -
 2182+ global $wgParser, $wgTitle;
 2183+
21902184 $title = $wgTitle ? $wgTitle : $user->getUserPage();
21912185
21922186 // Parser gets antsy about parser options here if it hasn't parsed anything before.
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/Dispatch.php
@@ -28,7 +28,6 @@
2929 */
3030 $action = $request->getVal( 'action' );
3131 $header_actions = array( 'history', 'edit', 'submit', 'delete' );
32 - global $wgRequest;
3332
3433 $lqt_action = $request->getVal( 'lqt_method' );
3534 if ( $action == 'edit' && $request->getVal( 'section' ) == 'new' ) {
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/Hooks.php
@@ -35,8 +35,6 @@
3636
3737 // Custom display for new posts.
3838 if ( $rc->mAttribs['rc_new'] ) {
39 - global $wgOut;
40 -
4139 // Article link, timestamp, user
4240 $s = '';
4341 $s .= $sk->link( $thread->getTitle() );
@@ -304,8 +302,7 @@
305303 }
306304
307305 public static function onLoadExtensionSchemaUpdates() {
308 - global $wgExtNewTables, $wgExtNewFields, $wgExtPGNewFields,
309 - $wgExtPGAlteredFields, $wgExtNewIndexes, $wgDBtype;
 306+ global $wgExtNewTables, $wgExtNewFields, $wgExtNewIndexes;
310307
311308 $dir = realpath( dirname( __FILE__ ) . '/..' );
312309
@@ -405,12 +402,12 @@
406403 static function onPersonalUrls( &$personal_urls, &$title ) {
407404 global $wgUser, $wgLang;
408405
409 - if ( $wgUser->isAnon() ) return true;
 406+ if ( $wgUser->isAnon() ) {
 407+ return true;
 408+ }
410409
411410 wfLoadExtensionMessages( 'LiquidThreads' );
412411
413 - $dbr = wfGetDB( DB_SLAVE );
414 -
415412 $newMessagesCount = NewMessages::newMessageCount( $wgUser );
416413
417414 // Add new messages link.
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/Thread.php
@@ -64,8 +64,6 @@
6565 $type = Threads::TYPE_NORMAL, $subject = '',
6666 $summary = '', $bump = null, $signature = null ) {
6767
68 - $dbw = wfGetDB( DB_MASTER );
69 -
7068 $thread = new Thread( null );
7169
7270 if ( !in_array( $type, self::$VALID_TYPES ) ) {
@@ -80,8 +78,6 @@
8179
8280 global $wgUser;
8381
84 - $timestamp = wfTimestampNow();
85 -
8682 $thread->setAuthor( $wgUser );
8783
8884 if ( is_object( $root ) ) {
@@ -259,7 +255,7 @@
260256 $fname = __METHOD__ . "/" . $fname;
261257 }
262258
263 - $res = $dbr->update( 'thread',
 259+ $dbr->update( 'thread',
264260 /* SET */ $this->getRow(),
265261 /* WHERE */ array( 'thread_id' => $this->id, ),
266262 $fname );
@@ -406,8 +402,6 @@
407403 function leaveTrace( $reason, $oldTitle, $newTitle ) {
408404 $this->dieIfHistorical();
409405
410 - $dbw = wfGetDB( DB_MASTER );
411 -
412406 // Create redirect text
413407 $mwRedir = MagicWord::get( 'redirect' );
414408 $redirectText = $mwRedir->getSynonym( 0 ) .
@@ -1379,7 +1373,6 @@
13801374
13811375 function setSortKey( $k = null ) {
13821376 if ( is_null( $k ) ) {
1383 - $dbr = wfGetDB( DB_SLAVE );
13841377 $k = wfTimestamp( TS_MW );
13851378 }
13861379
@@ -1591,7 +1584,9 @@
15921585 $this->reactions = self::$reactionCacheById[$this->id()];
15931586 } else {
15941587 $reactions = array();
1595 -
 1588+
 1589+ $dbr = wfGetDB( DB_SLAVE );
 1590+
15961591 $res = $dbr->select( 'thread_reaction',
15971592 array( 'tr_thread' => $this->id() ),
15981593 __METHOD__ );
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/classes/ThreadHistoryPager.php
@@ -65,7 +65,7 @@
6666 }
6767
6868 function formatValue( $name, $value ) {
69 - global $wgOut, $wgLang, $wgTitle;
 69+ global $wgLang, $wgTitle;
7070
7171 static $sk = null;
7272
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/lqt.sql
@@ -1,5 +1,5 @@
22 CREATE TABLE /*$wgDBprefix*/thread (
3 - thread_id int(8) unsigned NOT NULL auto_increment,
 3+ thread_id int(8) unsigned NOT NULL PRIMARY KEY auto_increment,
44 thread_root int(8) unsigned UNIQUE NOT NULL,
55 thread_ancestor int(8) unsigned NOT NULL,
66 thread_parent int(8) unsigned NULL,
@@ -19,29 +19,27 @@
2020
2121 -- Special thread types (deleted/move trace/normal)
2222 thread_type int(4) unsigned NOT NULL default 0,
23 -
 23+
2424 -- Sort key
2525 thread_sortkey varchar(255) NOT NULL default '',
26 -
 26+
2727 -- Reply count, -1 means uninitialised.
2828 thread_replies int(8) DEFAULT -1,
29 -
 29+
3030 -- Signature
3131 thread_signature TINYBLOB NULL,
3232
33 - PRIMARY KEY thread_id (thread_id),
34 - UNIQUE INDEX thread_root_page (thread_root),
35 - INDEX thread_ancestor (thread_ancestor, thread_parent),
36 - INDEX thread_article_title (thread_article_namespace, thread_article_title, thread_sortkey),
37 - INDEX thread_article (thread_article_id, thread_sortkey),
38 - INDEX thread_modified (thread_modified),
39 - INDEX thread_created (thread_created),
40 - INDEX thread_summary_page (thread_summary_page),
41 - INDEX (thread_author_id,thread_author_name),
42 - INDEX (thread_sortkey)
 33+ UNIQUE (thread_root)
4334 ) /*$wgDBTableOptions*/;
 35+CREATE INDEX thread_ancestor ON /*$wgDBprefix*/thread (thread_ancestor, thread_parent);
 36+CREATE INDEX thread_article_title ON /*$wgDBprefix*/thread (thread_article_namespace, thread_article_title, thread_sortkey);
 37+CREATE INDEX thread_article ON /*$wgDBprefix*/thread (thread_article_id, thread_sortkey);
 38+CREATE INDEX thread_modified ON /*$wgDBprefix*/thread (thread_modified);
 39+CREATE INDEX thread_created ON /*$wgDBprefix*/thread (thread_created);
 40+CREATE INDEX thread_summary_page ON /*$wgDBprefix*/thread (thread_summary_page);
 41+CREATE INDEX thread_author_name ON /*$wgDBprefix*/thread (thread_author_id,thread_author_name);
 42+CREATE INDEX thread_sortkey ON /*$wgDBprefix*/thread (thread_sortkey);
4443
45 -
4644 -- Old storage table for "historical" (i.e. non-current) threads
4745 -- Now superseded by thread_history.
4846 CREATE TABLE /*$wgDBprefix*/historical_thread (
@@ -52,7 +50,8 @@
5351 hthread_contents BLOB NOT NULL,
5452 hthread_change_type int(4) unsigned NOT NULL,
5553 hthread_change_object int(8) unsigned NULL,
56 - PRIMARY KEY hthread_id_revision (hthread_id, hthread_revision)
 54+
 55+ PRIMARY KEY (hthread_id, hthread_revision)
5756 ) /*$wgDBTableOptions*/;
5857
5958 CREATE TABLE /*$wgDBprefix*/user_message_state (
@@ -60,32 +59,30 @@
6160 ums_thread int(8) unsigned NOT NULL,
6261 ums_read_timestamp varbinary(14),
6362
64 - PRIMARY KEY (ums_user, ums_thread),
65 - KEY (ums_user,ums_read_timestamp)
 63+ PRIMARY KEY (ums_user, ums_thread)
6664 ) /*$wgDBTableOptions*/;
 65+CREATE INDEX ums_user_read ON /*$wgDBprefix*/user_message_state (ums_user,ums_read_timestamp);
6766
6867 -- "New" storage location for history data.
6968 CREATE TABLE /*_*/thread_history (
70 - th_id int unsigned NOT NULL auto_increment,
 69+ th_id int unsigned NOT NULL PRIMARY KEY auto_increment,
7170 th_thread int unsigned NOT NULL,
72 -
 71+
7372 th_timestamp varbinary(14) NOT NULL,
74 -
 73+
7574 th_user int unsigned NOT NULL,
7675 th_user_text varchar(255) NOT NULL,
77 -
 76+
7877 th_change_type int unsigned NOT NULL,
7978 th_change_object int unsigned NOT NULL,
8079 th_change_comment TINYTEXT NOT NULL,
81 -
 80+
8281 -- Actual content, stored as a serialised thread row.
83 - th_content LONGBLOB NOT NULL,
84 -
85 - PRIMARY KEY (th_id),
86 - KEY (th_thread,th_timestamp),
87 - KEY (th_timestamp,th_thread),
88 - KEY (th_user,th_user_text)
 82+ th_content LONGBLOB NOT NULL
8983 ) /*$wgDBTableOptions*/;
 84+CREATE INDEX th_thread_timestamp ON /*$wgDBprefix*/thread_history (th_thread,th_timestamp);
 85+CREATE INDEX th_timestamp_thread ON /*$wgDBprefix*/thread_history (th_timestamp,th_thread);
 86+CREATE INDEX th_user_text ON /*$wgDBprefix*/thread_history (th_user,th_user_text);
9087
9188 -- Storage for "pending" relationships from import
9289 CREATE TABLE /*_*/thread_pending_relationship (
@@ -103,7 +100,7 @@
104101 tr_user_text varbinary(255) NOT NULL,
105102 tr_type varbinary(64) NOT NULL,
106103 tr_value int NOT NULL,
107 -
108 - PRIMARY KEY (tr_thread,tr_user,tr_user_text,tr_type,tr_value),
109 - KEY (tr_user,tr_user_text,tr_type,tr_value)
 104+
 105+ PRIMARY KEY (tr_thread,tr_user,tr_user_text,tr_type,tr_value)
110106 ) /*$wgDBTableOptions*/;
 107+CREATE INDEX tr_user_text_value ON /*$wgDBprefix*/thread_reaction (tr_user,tr_user_text,tr_type,tr_value);
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/SpecialMoveThread.php
@@ -39,7 +39,7 @@
4040
4141 global $wgUser;
4242 $sk = $wgUser->getSkin();
43 - $page = $article_name = $this->mThread->getTitle()->getPrefixedText();
 43+ $page = $this->mThread->getTitle()->getPrefixedText();
4444
4545 $edit_text = wfMsgExt( 'lqt_move_torename_edit', 'parseinline' );
4646 $edit_link = $sk->link(
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/TalkpageHistoryView.php
@@ -34,7 +34,6 @@
3535 function customizeTabs( $skin, &$links ) {
3636 TalkpageView::customizeTalkpageTabs( $skin, $links, $this );
3737
38 - $tabid = $this->article->getTitle()->getNamespaceKey();
3938 $links['history']['class'] = 'selected';
4039 }
4140
@@ -80,7 +79,7 @@
8180 }
8281
8382 function formatValue( $name, $value ) {
84 - global $wgOut, $wgLang, $wgTitle;
 83+ global $wgLang;
8584
8685 static $sk = null;
8786
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/ThreadPermalinkView.php
@@ -218,7 +218,7 @@
219219 }
220220
221221 // Expose feed links.
222 - global $wgFeedClasses, $wgScriptPath, $wgServer;
 222+ global $wgFeedClasses;
223223 $thread = $this->thread->topmostThread()->title()->getPrefixedText();
224224 $apiParams = array(
225225 'action' => 'feedthreads',
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/NewUserMessagesView.php
@@ -26,7 +26,7 @@
2727
2828 function getReadAllButton( $threads ) {
2929 wfLoadExtensionMessages( 'LiquidThreads' );
30 - $ids = array_map( create_function( '$t', 'return $t->id();' ), $threads ); // ew
 30+ $ids = array_map( create_function( '$t', 'return $t->id();' ), $threads ); // ew
3131 return $this->htmlForReadButton(
3232 wfMsg( 'lqt-read-all' ),
3333 wfMsg( 'lqt-read-all-tooltip' ),
@@ -45,7 +45,7 @@
4646 $msg = wfMsgExt( 'lqt-marked-read', 'parseinline', array( $t->subject() ) );
4747 } else {
4848 $count = count( $ids );
49 - $msg = wfMsgExt( 'lqt-count-marked-read', 'parseinline', array( $count ) );
 49+ $msg = wfMsgExt( 'lqt-count-marked-read', 'parseinline', array( $count ) );
5050 }
5151 $operand = implode( ',', $ids );
5252
@@ -84,15 +84,14 @@
8585
8686 function showOnce() {
8787 self::addJSandCSS();
88 -
 88+
8989 NewMessages::recacheMessageCount( $this->user->getId() );
9090
9191 static $scriptDone = false;
9292
9393 if ( !$scriptDone ) {
94 - global $wgOut, $wgScriptPath, $wgLiquidThreadsExtensionName;
95 - $prefix = "{$wgScriptPath}/extensions/{$wgLiquidThreadsExtensionName}";
96 - $wgOut->addScriptFile( "$prefix/newmessages.js" );
 94+ global $wgOut, $wgLiquidThreadsExtensionPath;
 95+ $wgOut->addScriptFile( "$wgLiquidThreadsExtensionPath/newmessages.js" );
9796 }
9897
9998 $this->user->setNewtalk( false );
@@ -180,7 +179,7 @@
181180 $title->setFragment( '#' . $t->getAnchorName() );
182181
183182 // Make sure it points to the right page. The Pager seems to use the DB
184 - // representation of a timestamp for its offset field, odd.
 183+ // representation of a timestamp for its offset field, odd.
185184 $dbr = wfGetDB( DB_SLAVE );
186185 $offset = wfTimestamp( TS_UNIX, $topmostThread->modified() ) + 1;
187186 $offset = $dbr->timestamp( $offset );
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/SpecialNewMessages.php
@@ -2,10 +2,10 @@
33 if ( !defined( 'MEDIAWIKI' ) ) die;
44
55 class SpecialNewMessages extends SpecialPage {
6 - private $user, $output, $request, $title;
 6+ private $user, $output, $request;
77
88 function __construct() {
9 - SpecialPage::SpecialPage( 'NewMessages' );
 9+ parent::SpecialPage( 'NewMessages' );
1010 $this->includable( true );
1111 }
1212
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/pages/TalkpageView.php
@@ -48,8 +48,6 @@
4949
5050 $article = new Article( $this->title );
5151
52 - $oldid = $this->request->getVal( 'oldid', null );
53 -
5452 wfLoadExtensionMessages( 'LiquidThreads' );
5553 // If $article_text == "", the talkpage was probably just created
5654 // when the first thread was posted to make the links blue.
@@ -111,8 +109,6 @@
112110
113111 wfLoadExtensionMessages( 'LiquidThreads' );
114112
115 - $sk = $this->user->getSkin();
116 -
117113 $html = '';
118114
119115 $h2_header = Xml::tags( 'h2', null, wfMsgExt( 'lqt_contents_title', 'parseinline' ) );
@@ -152,7 +148,9 @@
153149
154150 $html .= $headerRow . "\n" . Xml::tags( 'tbody', null, implode( "\n", $rows ) );
155151 $html = $h2_header . Xml::tags( 'table', array( 'class' => 'lqt_toc' ), $html );
156 -
 152+ // wrap our output in a div for containment
 153+ $html = Xml::tags( 'div', array( 'class' => 'lqt-contents-wrapper' ), $html );
 154+
157155 return $html;
158156 }
159157
@@ -180,8 +178,6 @@
181179
182180 if ( $article->exists() ) {
183181 $form_action_url = $this->talkpageUrl( $this->title, 'talkpage_sort_order' );
184 - $go = wfMsg( 'go' );
185 -
186182 $html = '';
187183
188184 $html .= Xml::label( wfMsg( 'lqt_sorting_order' ), 'lqt_sort_select' ) . ' ';
@@ -230,7 +226,7 @@
231227 self::addJSandCSS();
232228
233229 // Expose feed links.
234 - global $wgFeedClasses, $wgScriptPath, $wgServer;
 230+ global $wgFeedClasses;
235231 $apiParams = array( 'action' => 'feedthreads', 'type' => 'replies|newthreads',
236232 'talkpage' => $this->title->getPrefixedText() );
237233 $urlPrefix = wfScript( 'api' ) . '?';
@@ -300,7 +296,6 @@
301297
302298 $this->output->addHTML( $talkpageHeader );
303299
304 - global $wgRequest;
305300 if ( $this->methodApplies( 'talkpage_new_thread' ) ) {
306301 $params = array( 'class' => 'lqt-new-thread lqt-edit-form' );
307302 $this->output->addHTML( Xml::openElement( 'div', $params ) );
@@ -323,6 +318,7 @@
324319 }
325320
326321 $html .= $pager->getNavigationBar();
 322+ $html .= Xml::openElement( 'div', array( 'class' => 'lqt-threads lqt-talkpage-threads' ) );
327323
328324 $this->output->addHTML( $html );
329325
@@ -330,7 +326,7 @@
331327 $this->showThread( $t );
332328 }
333329
334 - $this->output->addHTML( $pager->getNavigationBar() );
 330+ $this->output->addHTML( Xml::closeElement( 'div' ) . $pager->getNavigationBar() );
335331
336332 return false;
337333 }
Property changes on: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/schema-changes/thread_pending_relationship.sql
___________________________________________________________________
Added: svn:eol-style
338334 + native
Property changes on: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/schema-changes/thread_reactions.sql
___________________________________________________________________
Added: svn:eol-style
339335 + native
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/api/ApiQueryLQTThreads.php
@@ -44,8 +44,6 @@
4545 }
4646
4747 public function execute() {
48 - global $wgUser;
49 -
5048 $params = $this->extractRequestParams();
5149 $prop = array_flip( $params['prop'] );
5250 $result = $this->getResult();
@@ -95,7 +93,6 @@
9694 $threads = Threads::loadFromResult( $res, $this->getDB() );
9795 }
9896
99 -
10097 $ids = array();
10198 $count = 0;
10299 foreach ( $res as $row )
@@ -279,6 +276,15 @@
280277 }
281278 }
282279
 280+ public function getCacheMode( $params ) {
 281+ if ( $params['render'] ) {
 282+ // Rendering uses $wgUser
 283+ return 'anon-public-user-private';
 284+ } else {
 285+ return 'public';
 286+ }
 287+ }
 288+
283289 public function getAllowedParams() {
284290 return array (
285291 'startid' => array(
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/api/ApiThreadAction.php
@@ -92,8 +92,6 @@
9393 }
9494
9595 public function actionSplit( $threads, $params ) {
96 - global $wgUser;
97 -
9896 if ( count( $threads ) > 1 ) {
9997 $this->dieUsage( 'You may only split one thread at a time',
10098 'too-many-threads' );
@@ -152,8 +150,6 @@
153151 }
154152
155153 public function actionMerge( $threads, $params ) {
156 - global $wgUser;
157 -
158154 if ( count( $threads ) < 1 ) {
159155 $this->dieUsage( 'You must specify a thread to merge',
160156 'no-specified-threads' );
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/api/ApiFeedLQTThreads.php
@@ -43,7 +43,7 @@
4444 * Wrap the result as an RSS/Atom feed.
4545 */
4646 public function execute() {
47 - global $wgFeedClasses, $wgFeedLimit, $wgSitename, $wgContLanguageCode;
 47+ global $wgFeedClasses;
4848
4949 $params = $this->extractRequestParams();
5050
@@ -173,7 +173,6 @@
174174 }
175175
176176 // Thread conditions
177 - $threadConds = array();
178177 $threads = (array)$params['thread'];
179178 foreach ( $threads as $thread ) {
180179 $root = new Article( Title::newFromText( $thread ) );
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/lqt.js
@@ -5,61 +5,61 @@
66 var liquidThreads = {
77 currentReplyThread : null,
88 currentToolbar : null,
9 -
 9+
1010 'handleReplyLink' : function(e) {
1111 if (e.preventDefault)
1212 e.preventDefault();
1313
1414 var target = this;
15 -
 15+
1616 if ( !this.className && e.target) {
1717 target = $j(e.target);
1818 }
19 -
 19+
2020 var container = $j(target).closest('.lqt_thread')[0];
2121 var thread_id = $j(this).data('thread-id');
22 -
 22+
2323 // hide the form for this thread if it's currently being shown
2424 if ( thread_id == liquidThreads.currentReplyThread && $j( '#wpTextbox1' ).is( ':visible' ) ) {
2525 liquidThreads.cancelEdit({});
2626 return;
2727 }
28 -
 28+
2929 var query = '&lqt_method=reply&lqt_operand='+thread_id;
30 -
 30+
3131 var repliesElement = $j(container).contents().filter('.lqt-thread-replies');
3232 var replyDiv = repliesElement.contents().filter('.lqt-reply-form');
3333 replyDiv = replyDiv.add( $j(container).contents().filter('.lqt-reply-form') );
3434 if (!replyDiv.length) {
3535 // Create a div for it
3636 replyDiv = $j('<div class="lqt-reply-form lqt-edit-form"/>');
37 -
 37+
3838 // Try to find a place for it
3939 if ( !repliesElement.length ) {
4040 repliesElement = liquidThreads.getRepliesElement( $j(container) );
4141 }
42 -
 42+
4343 repliesElement.find('.lqt-replies-finish').before( replyDiv );
4444 }
4545 replyDiv.show();
46 -
 46+
4747 replyDiv = replyDiv[0];
48 -
 48+
4949 liquidThreads.injectEditForm( query, replyDiv, e.preload );
5050 liquidThreads.currentReplyThread = thread_id;
5151 },
52 -
 52+
5353 'getRepliesElement' : function(thread /* a .lqt_thread */ ) {
5454 var repliesElement = thread.contents().filter('.lqt-thread-replies');
55 -
 55+
5656 if ( !repliesElement.length ) {
5757 repliesElement = $j('<div class="lqt-thread-replies"/>' );
58 -
 58+
5959 var finishDiv = $j('<div class="lqt-replies-finish"/>');
6060 finishDiv.append($j('<div class="lqt-replies-finish-corner"/>'));
6161 finishDiv.contents().html('&nbsp;');
6262 repliesElement.append(finishDiv);
63 -
 63+
6464 var repliesFinishElement = thread.contents().filter('.lqt-replies-finish');
6565 if ( repliesFinishElement.length ) {
6666 repliesFinishElement.before(repliesElement);
@@ -67,15 +67,15 @@
6868 thread.append(repliesElement);
6969 }
7070 }
71 -
 71+
7272 return repliesElement;
7373 },
74 -
 74+
7575 'checkEmptyReplies' : function( element, action ) {
7676 var contents = element.contents();
77 -
 77+
7878 contents = contents.not('.lqt-replies-finish,.lqt-post-sep,.lqt-edit-form');
79 -
 79+
8080 if ( !contents.length ) {
8181 if ( typeof action == 'undefined' || action == 'remove' ) {
8282 element.remove();
@@ -84,62 +84,62 @@
8585 }
8686 }
8787 },
88 -
 88+
8989 'handleNewLink' : function(e) {
9090 e.preventDefault();
91 -
 91+
9292 var query = '&lqt_method=talkpage_new_thread';
93 -
 93+
9494 var container = $j('.lqt-new-thread' );
95 -
 95+
9696 liquidThreads.injectEditForm( query, container );
9797 liquidThreads.currentReplyThread = 0;
9898 },
99 -
 99+
100100 'handleEditLink' : function(e) {
101101 e.preventDefault();
102 -
 102+
103103 // Grab the container.
104104 var parent = $j(this).closest('.lqt-post-wrapper');
105 -
 105+
106106 var container = $j('<div/>').addClass('lqt-edit-form');
107107 parent.contents().fadeOut();
108108 parent.append(container);
109109 var query='&lqt_method=edit&lqt_operand='+parent.data('thread-id');
110 -
 110+
111111 liquidThreads.injectEditForm( query, container );
112112 },
113 -
 113+
114114 'injectEditForm' : function(query, container, preload) {
115115 var url = wgServer+wgScript+'?lqt_inline=1&title='+encodeURIComponent(wgPageName)+
116116 query;
117 -
 117+
118118 liquidThreads.cancelEdit( container );
119 -
 119+
120120 var isIE7 = $j.browser.msie && $j.browser.version.substr(0,1) == '7';
121 -
 121+
122122 var loadSpinner = $j('<div class="mw-ajax-loader lqt-loader"/>');
123123 $j(container).before( loadSpinner );
124 -
 124+
125125 var finishShow = function() {
126126 // Scroll to the textbox
127127 var targetOffset = $j(container).offset().top;
128128 var windowHeight = $j(window).height();
129129 var editBoxHeight = $j(container).height();
130 -
 130+
131131 var scrollOffset;
132132 if ( windowHeight < editBoxHeight ) {
133133 scrollOffset = targetOffset;
134134 } else {
135135 scrollOffset = targetOffset - windowHeight + editBoxHeight;
136136 }
137 -
 137+
138138 $j('html,body').animate({scrollTop: scrollOffset}, 'slow');
139139 // Auto-focus and set to auto-grow as well
140140 $j(container).find('#wpTextbox1').focus();//.autogrow();
141141 // Focus the subject field if there is one. Overrides previous line.
142142 $j(container).find('#lqt_subject_field').focus();
143 -
 143+
144144 // Update signature editor
145145 $j(container).find('input[name=wpLqtSignature]').hide();
146146 $j(container).find('.lqt-signature-preview').show();
@@ -150,33 +150,35 @@
151151 $j(container).find('.lqt-signature-preview').after(editLink);
152152 editLink.before(' ');
153153 }
154 -
 154+
155155 var finishSetup = function() {
156156 // Kill the loader.
157157 loadSpinner.remove();
158 -
 158+
159159 if (preload) {
160160 $j("textarea", container)[0].value = preload;
161161 }
162 -
 162+
163163 if ( isIE7 ) {
164164 setTimeout( finishShow, 500 );
165165 } else {
166166 $j(container).slideDown( 'slow', finishShow );
167167 }
168 -
 168+
169169 var cancelButton = $j(container).find('#mw-editform-cancel');
170170 cancelButton.click( liquidThreads.cancelEdit );
171 -
 171+
172172 $j(container).find('#wpTextbox1').attr( 'rows', 12 );
173173 $j(container).find('#wpDiff').hide();
174 -
 174+
175175 if ( $j.fn.wikiEditor && $j.wikiEditor.isSupported( $j.wikiEditor.modules.toolbar ) ) {
176176 if ( wgWikiEditorPreferences.toolbar.dialogs && $j.wikiEditor.isSupported( $j.wikiEditor.modules.dialogs ) ) {
177177 $j( '#wpTextbox1' ).addClass( 'toolbar-dialogs' );
178178 }
179 - // Add wikiEditor toolbar
 179+ // Add wikiEditor toolbar
180180 $j( '#wpTextbox1' ).wikiEditor( 'addModule', { 'toolbar': liquidThreads.toolbar.config, 'dialogs': liquidThreads.toolbar.dialogs } );
 181+ // cleanup unnecessary things from the old toolbar
 182+ $j( '#editpage-specialchars' ).remove();
181183 } else {
182184 // Add old toolbar
183185 mwSetupToolbar()
@@ -187,9 +189,9 @@
188190 currentFocused = this;
189191 } );
190192 };
191 -
 193+
192194 mwEditButtons = [];
193 -
 195+
194196 $j.getScript( stylepath+'/common/edit.js',
195197 function() {
196198 if ( isIE7 ) {
@@ -203,9 +205,9 @@
204206 query+'&lqt_inline=1', finishSetup );
205207 }
206208 } );
207 -
 209+
208210 },
209 -
 211+
210212 'doLivePreview' : function( e ) {
211213 e.preventDefault();
212214 if ( typeof doLivePreview == 'function' ) {
@@ -215,7 +217,7 @@
216218 function() { doLivePreview(e); });
217219 }
218220 },
219 -
 221+
220222 //From http://clipmarks.com/clipmark/CEFC94CB-94D6-4495-A7AA-791B7355E284/
221223 'insertAtCursor' : function(myField, myValue) {
222224 //IE support
@@ -235,7 +237,7 @@
236238 myField.value += myValue;
237239 }
238240 },
239 -
 241+
240242 'getSelection' : function() {
241243 if (window.getSelection) {
242244 return window.getSelection().toString();
@@ -247,79 +249,79 @@
248250 return '';
249251 }
250252 },
251 -
 253+
252254 'cancelEdit' : function( e ) {
253255 if ( typeof e != 'undefined' && typeof e.preventDefault == 'function' ) {
254256 e.preventDefault();
255257 }
256 -
 258+
257259 $j('.lqt-edit-form').not(e).each(
258260 function() {
259261 var repliesElement = $j(this).closest('.lqt-thread-replies');
260262 $j(this).fadeOut('slow',
261263 function() {
262264 $j(this).empty();
263 -
 265+
264266 if ( $j(this).parent().is('.lqt-post-wrapper') ) {
265267 $j(this).parent().contents().fadeIn();
266268 $j(this).remove();
267269 }
268 -
 270+
269271 liquidThreads.checkEmptyReplies( repliesElement );
270272 } )
271273 } );
272 -
 274+
273275 liquidThreads.currentReplyThread = null;
274276 },
275 -
 277+
276278 'setupMenus' : function() {
277279 var post = $j(this);
278 -
 280+
279281 var toolbar = post.contents().filter('.lqt-thread-toolbar');
280282 var threadID = post.data('thread-id');
281283 var menu = post.find('.lqt-thread-toolbar-command-list');
282284 var menuContainer = post.find( '.lqt-thread-toolbar-menu' );
283285 menu.remove().appendTo( menuContainer );
284286 menuContainer.find('.lqt-thread-toolbar-command-list').hide();
285 -
 287+
286288 // Add handler for reply link
287289 var replyLink = toolbar.find('.lqt-command-reply > a');
288290 replyLink.data( 'thread-id', threadID );
289291 replyLink.click( liquidThreads.handleReplyLink );
290 -
 292+
291293 // Add "Drag to new location" to menu
292294 var dragLI = $j('<li class="lqt-command-drag" />' );
293295 var dragLink = $j('<a/>').text( wgLqtMessages['lqt-drag-activate'] );
294296 dragLink.attr('href','#');
295297 dragLI.append(dragLink);
296298 dragLink.click( liquidThreads.activateDragDrop );
297 -
 299+
298300 menu.append(dragLI);
299 -
 301+
300302 // Remove split and merge
301303 menu.contents().filter('.lqt-command-split,.lqt-command-merge').remove();
302304
303 - var trigger = menuContainer.find( '.lqt-thread-actions-trigger' )
 305+ var trigger = menuContainer.find( '.lqt-thread-actions-trigger' )
304306
305307 trigger.show();
306308 menu.hide();
307 -
 309+
308310 trigger.click(
309311 function(e) {
310312 e.stopImmediatePropagation();
311313 e.preventDefault();
312 -
 314+
313315 // Hide the other menus
314316 $j('.lqt-thread-toolbar-command-list').not(menu).hide('fast');
315 -
 317+
316318 menu.toggle( 'fast' );
317 -
 319+
318320 var windowHeight = $j(window).height();
319321 var toolbarOffset = toolbar.offset().top;
320322 var scrollPos = $j(window).scrollTop();
321 -
 323+
322324 var menuBottom = ( toolbarOffset + 150 - scrollPos );
323 -
 325+
324326 if ( menuBottom > windowHeight ) {
325327 // Switch to an upwards menu.
326328 menu.css( 'bottom', toolbar.height() );
@@ -328,44 +330,44 @@
329331 }
330332 } );
331333 },
332 -
 334+
333335 'setupThreadMenu' : function( menu, id ) {
334336 if ( menu.find('.lqt-command-edit-subject').length ) {
335337 return;
336338 }
337 -
 339+
338340 var editSubjectField = $j('<li/>');
339341 var editSubjectLink = $j('<a href="#"/>');
340342 editSubjectLink.text( wgLqtMessages['lqt-change-subject'] );
341343 editSubjectField.append( editSubjectLink );
342344 editSubjectField.click( liquidThreads.handleChangeSubject );
343345 editSubjectField.data( 'thread-id', id )
344 -
 346+
345347 editSubjectField.addClass( 'lqt-command-edit-subject' );
346 -
 348+
347349 menu.append( editSubjectField );
348350 },
349 -
 351+
350352 'handleChangeSubject' : function(e) {
351353 e.preventDefault();
352 -
 354+
353355 $j(this).closest('.lqt-command-edit-subject').hide();
354356
355357 // Grab the h2
356358 var threadId = $j(this).data('thread-id');
357359 var header = $j('#lqt-header-'+threadId);
358360 var headerText = header.find("input[name='raw-header']").val();
359 -
 361+
360362 var textbox = $j('<input type="textbox" />').val(headerText);
361363 textbox.attr('id', 'lqt-subject-input-'+threadId);
362364 textbox.attr('size', '75');
363365 textbox.val(headerText);
364 -
 366+
365367 var saveText = wgLqtMessages['lqt-save-subject'];
366368 var saveButton = $j('<input type="button" />');
367369 saveButton.val( saveText );
368370 saveButton.click( liquidThreads.handleSubjectSave );
369 -
 371+
370372 var cancelButton = $j('<input type="button" />');
371373 cancelButton.val( wgLqtMessages['lqt-cancel-subject-edit'] );
372374 cancelButton.click( function(e) {
@@ -374,11 +376,11 @@
375377 header.contents().filter('.mw-headline').show();
376378 header.next().find('.lqt-command-edit-subject').show();
377379 form.remove();
378 -
 380+
379381 } );
380 -
 382+
381383 header.contents().filter('span.mw-headline').hide();
382 -
 384+
383385 var subjectForm = $j('<span class="mw-subject-editor"/>');
384386 subjectForm.append(textbox);
385387 subjectForm.append( '&nbsp;' );
@@ -386,11 +388,11 @@
387389 subjectForm.append( '&nbsp;' );
388390 subjectForm.append( cancelButton );
389391 subjectForm.data( 'thread-id', threadId );
390 -
 392+
391393 header.append(subjectForm);
392 -
 394+
393395 },
394 -
 396+
395397 'handleSubjectSave' : function(e) {
396398 var button = $j(this);
397399 var subjectForm = button.closest('.mw-subject-editor');
@@ -398,36 +400,36 @@
399401 var threadId = subjectForm.data('thread-id');
400402 var textbox = $j('#lqt-subject-input-'+threadId);
401403 var newSubject = textbox.val().trim();
402 -
 404+
403405 if (!newSubject) {
404406 alert( wgLqtMessages['lqt-ajax-no-subject'] );
405407 return;
406408 }
407 -
 409+
408410 // Add a spinner
409411 var spinner = $j('<div class="mw-ajax-loader"/>');
410412 header.append(spinner);
411413 subjectForm.hide();
412 -
 414+
413415 var request = {
414416 'action' : 'threadaction',
415417 'threadaction' : 'setsubject',
416418 'subject' : newSubject.trim(),
417419 'thread' : threadId
418420 };
419 -
 421+
420422 var errorHandler = function(reply) {
421423 try {
422424 code = reply.error.code;
423425 description = reply.error.info;
424 -
 426+
425427 if (code == 'invalid-subject') {
426428 alert( wgLqtMessages['lqt-ajax-invalid-subject'] );
427429 } else {
428430 var msg = wgLqtMessages['lqt-save-subject-failed'];
429431 msg.replace( '$1', description );
430432 }
431 -
 433+
432434 subjectForm.show();
433435 spinner.remove();
434436 } catch (err) {
@@ -438,21 +440,21 @@
439441 header.next().find('.lqt-command-edit-subject').show();
440442 }
441443 }
442 -
 444+
443445 // Set new subject through API.
444446 liquidThreads.apiRequest( request, function(reply) {
445447 var result;
446 -
 448+
447449 try {
448450 result = reply.threadaction.thread.result;
449451 } catch (err) {
450452 result = 'error';
451453 }
452 -
 454+
453455 if ( result == 'success' ) {
454456 spinner.remove();
455457 header.next().find('.lqt-command-edit-subject').show();
456 -
 458+
457459 var thread = $j('#lqt_thread_id_'+threadId);
458460 liquidThreads.doReloadThread( thread );
459461 } else {
@@ -460,163 +462,172 @@
461463 }
462464 } );
463465 },
464 -
 466+
465467 'handleDocumentClick' : function(e) {
466468 // Collapse all menus
467469 $j('.lqt-thread-toolbar-command-list').hide('fast');
468470 },
469 -
 471+
470472 'checkForUpdates' : function() {
471473 var threadModifiedTS = {};
472474 var threads = [];
473 -
 475+
474476 $j('.lqt-thread-topmost').each( function() {
475477 var tsField = $j(this).find('.lqt-thread-modified');
476 - var oldTS = tsField.val();
477 - // Prefix is lqt-thread-modified-
478 - var threadID = tsField.attr('id').substr( "lqt-thread-modified-".length );
479 -
480 - threadModifiedTS[threadID] = oldTS;
481 - threads.push(threadID);
 478+ if ( tsField.length ) {
 479+ var oldTS = tsField.val();
 480+ // Prefix is lqt-thread-modified-
 481+ var threadID = tsField.attr('id').substr( "lqt-thread-modified-".length );
 482+ threadModifiedTS[threadID] = oldTS;
 483+ threads.push(threadID);
 484+ }
482485 } );
483 -
 486+
484487 // Optimisation: if no threads are to be checked, do not check.
485488 if ( ! threads.length ) {
486489 return;
487490 }
488 -
 491+
489492 var getData = { 'action' : 'query', 'list' : 'threads', 'thid' : threads.join('|'),
490493 'format' : 'json', 'thprop' : 'id|subject|parent|modified' };
491 -
 494+
492495 $j.get( wgScriptPath+'/api.php', getData,
493496 function(data) {
494497 var threads = data.query.threads;
495 -
 498+
496499 $j.each( threads, function( i, thread ) {
497500 var threadID = thread.id;
498501 var threadModified = thread.modified;
499 -
 502+
500503 if ( threadModified != threadModifiedTS[threadID] ) {
501504 liquidThreads.showUpdated(threadID);
502505 }
503506 } );
504507 }, 'json' );
505508 },
506 -
 509+
507510 'showUpdated' : function(id) {
508511 // Check if there's already an updated marker here
509512 var threadObject = $j("#lqt_thread_id_"+id);
510 -
 513+
511514 if ( threadObject.find('.lqt-updated-notification').length ) {
512515 return;
513516 }
514 -
 517+
515518 var notifier = $j('<div/>');
516519 notifier.text( wgLqtMessages['lqt-ajax-updated'] + ' ' );
517520 notifier.addClass( 'lqt-updated-notification' );
518 -
 521+
519522 var updateButton = $j('<a href="#"/>');
520523 updateButton.text( wgLqtMessages['lqt-ajax-update-link'] );
521524 updateButton.addClass( 'lqt-update-link' );
522525 updateButton.click( liquidThreads.updateThread );
523 -
 526+
524527 notifier.append( updateButton );
525 -
 528+
526529 threadObject.prepend(notifier);
527530 },
528 -
 531+
529532 'updateThread' : function(e) {
530533 e.preventDefault();
531 -
 534+
532535 var thread = $j(this).closest('.lqt_thread');
533536
534537 liquidThreads.doReloadThread( thread );
535538 },
536 -
 539+
537540 'doReloadThread' : function( thread /* The .lqt_thread */ ) {
538541 var post = thread.find('div.lqt-post-wrapper')[0];
539542 post = $j(post);
540543 var threadId = thread.data('thread-id');
541544 var loader = $j('<div class="mw-ajax-loader"/>');
542545 var header = $j('#lqt-header-'+threadId);
543 -
 546+
544547 thread.prepend(loader);
545 -
 548+
546549 // Build an AJAX request
547550 var apiReq = { 'action' : 'query', 'list' : 'threads', 'thid' : threadId,
548551 'format' : 'json', 'thrender' : 1 };
549 -
 552+
550553 $j.get( wgScriptPath+'/api.php', apiReq,
551554 function(data) {
552555 // Load data from JSON
553556 var html = data.query.threads[threadId].content;
554557 var newContent = $j(html);
555 -
 558+
556559 // Clear old post and header.
557560 thread.empty();
558561 thread.hide();
559562 header.empty();
560563 header.hide();
561 -
 564+
562565 // Replace post content
563566 var newThread = newContent.filter('div.lqt_thread');
564567 var newThreadContent = newThread.contents();
565568 thread.append( newThreadContent );
566569 thread.attr( 'class', newThread.attr('class') );
567 -
568 - // Replace header content
569 - var newHeader = newContent.filter('#lqt-header-'+threadId);
570 - if ( header.length ) {
571 - var newHeaderContent = $j(newHeader).contents();
572 - header.append( newHeaderContent );
573 - } else {
574 - // No existing header, add one before the thread
575 - thread.before(newHeader);
576 - }
577 -
 570+
 571+// Replace header content
 572+// var newHeader = newContent.filter('#lqt-header-'+threadId);
 573+// if ( header.length ) {
 574+// var newHeaderContent = $j(newHeader).contents();
 575+// header.append( newHeaderContent );
 576+// } else {
 577+// // No existing header, add one before the thread
 578+// thread.before(newHeader);
 579+// }
 580+
578581 // Set up thread.
579582 thread.find('.lqt-post-wrapper').each( function() {
580583 liquidThreads.setupThread( $j(this) );
581584 } );
582 -
 585+
583586 header.fadeIn();
584587 thread.fadeIn();
585 -
 588+
586589 // Scroll to the updated thread.
587590 var targetOffset = $j(thread).offset().top;
588591 $j('html,body').animate({scrollTop: targetOffset}, 'slow');
589 -
 592+
590593 }, 'json' );
591594 },
592 -
 595+
593596 'setupThread' : function(threadContainer) {
594597 var prefixLength = "lqt_thread_id_".length;
595 -
 598+ // add the interruption class if it needs it
 599+ // Fixme - misses a lot of cases
 600+ $parentWrapper = $j( threadContainer )
 601+ .closest( '.lqt-thread-wrapper' ).parent().closest( '.lqt-thread-wrapper' );
 602+ if( $parentWrapper.next( '.lqt-thread-wrapper' ).length > 0 ) {
 603+ $parentWrapper
 604+ .find( '.lqt-thread-replies' )
 605+ .addClass( 'lqt-thread-replies-interruption' );
 606+ }
596607 // Update reply links
597608 var threadWrapper = $j(threadContainer).closest('.lqt_thread')[0]
598609 var threadId = threadWrapper.id.substring( prefixLength );
599 -
 610+
600611 $j(threadContainer).data( 'thread-id', threadId );
601612 $j(threadWrapper).data( 'thread-id', threadId );
602 -
 613+
603614 // Set up reply link
604615 var replyLinks = $j(threadWrapper).find('.lqt-add-reply');
605616 replyLinks.click( liquidThreads.handleReplyLink );
606617 replyLinks.data( 'thread-id', threadId );
607 -
 618+
608619 // Hide edit forms
609620 $j(threadContainer).find('div.lqt-edit-form').each(
610621 function() {
611622 if ( $j(this).find('#wpTextbox1').length ) {
612623 return;
613624 }
614 -
 625+
615626 this.style.display = 'none';
616627 } );
617 -
 628+
618629 // Update menus
619630 $j(threadContainer).each( liquidThreads.setupMenus );
620 -
 631+
621632 // Update thread-level menu, if appropriate
622633 if ( $j(threadWrapper).hasClass( 'lqt-thread-topmost' ) ) {
623634 // To perform better, check the 3 elements before the top-level thread container before
@@ -624,25 +635,25 @@
625636 var menu = undefined;
626637 var threadLevelCommandSelector = '#lqt-threadlevel-commands-'+threadId;
627638 var traverseElement = $j(threadWrapper);
628 -
 639+
629640 for( i=0;i<3 && typeof menu == 'undefined';++i ) {
630641 traverseElement = traverseElement.prev();
631642 if ( traverseElement.is(threadLevelCommandSelector) ) {
632643 menu = traverseElement
633644 }
634645 }
635 -
 646+
636647 if ( typeof menu == 'undefined' ) {
637648 menu = $j(threadLevelCommandSelector);
638649 }
639 -
 650+
640651 liquidThreads.setupThreadMenu( menu, threadId );
641652 }
642653 },
643 -
 654+
644655 'showReplies' : function(e) {
645656 e.preventDefault();
646 -
 657+
647658 // Grab the closest thread
648659 var thread = $j(this).closest('.lqt_thread').find('div.lqt-post-wrapper')[0];
649660 thread = $j(thread);
@@ -650,98 +661,98 @@
651662 var replies = thread.parent().find('.lqt-thread-replies');
652663 var loader = $j('<div class="mw-ajax-loader"/>');
653664 var sep = $j('<div class="lqt-post-sep">&nbsp;</div>');
654 -
 665+
655666 replies.empty();
656667 replies.hide();
657668 replies.before( loader );
658 -
 669+
659670 var apiParams = { 'action' : 'query', 'list' : 'threads', 'thid' : threadId,
660671 'format' : 'json', 'thrender' : '1', 'thprop' : 'id' };
661 -
 672+
662673 $j.get( wgScriptPath+'/api'+wgScriptExtension, apiParams,
663674 function(data) {
664675 // Interpret
665676 var content = data.query.threads[threadId].content;
666677 content = $j(content).find('.lqt-thread-replies')[0];
667 -
 678+
668679 // Inject
669680 replies.empty().append( $j(content).contents() );
670 -
 681+
671682 // Remove post separator, if it follows the replies element
672683 if ( replies.next().is('.lqt-post-sep') ) {
673684 replies.next().remove();
674685 }
675 -
 686+
676687 // Set up
677688 replies.find('div.lqt-post-wrapper').each( function() {
678689 liquidThreads.setupThread( $j(this) );
679690 } );
680 -
 691+
681692 replies.before(sep);
682 -
 693+
683694 // Show
684695 loader.remove();
685696 replies.fadeIn('slow');
686697 }, 'json' );
687698 },
688 -
 699+
689700 'showMore' : function(e) {
690701 e.preventDefault();
691 -
 702+
692703 // Add spinner
693704 var loader = $j('<div class="mw-ajax-loader"/>');
694705 $j(this).after(loader);
695 -
 706+
696707 // Grab the appropriate thread
697708 var thread = $j(this).closest('.lqt_thread').find('div.lqt-post-wrapper')[0];
698709 thread = $j(thread);
699710 var threadId = thread.data('thread-id');
700 -
 711+
701712 // Find the hidden field that gives the point to start at.
702713 var startAtField = $j(this).siblings().filter('.lqt-thread-start-at');
703714 var startAt = startAtField.val();
704715 startAtField.remove();
705 -
 716+
706717 // API request
707718 var apiParams = { 'action' : 'query', 'list' : 'threads', 'thid' : threadId,
708719 'format' : 'json', 'thrender' : '1', 'thprop' : 'id',
709720 'threnderstartrepliesat' : startAt };
710 -
 721+
711722 $j.get( wgScriptPath+'/api.php', apiParams,
712723 function(data) {
713724 var content = data.query.threads[threadId].content;
714725 content = $j(content).find('.lqt-thread-replies')[0];
715726 content = $j(content).contents();
716727 content = content.not('.lqt-replies-finish');
717 -
 728+
718729 if ( $j(content[0]).is('.lqt-post-sep') ) {
719730 content = content.not($j(content[0]));
720731 }
721 -
 732+
722733 // Inject loaded content.
723734 content.hide();
724735 loader.after( content );
725 -
 736+
726737 content.find('div.lqt-post-wrapper').each( function() {
727738 liquidThreads.setupThread( $j(this) );
728739 } );
729 -
 740+
730741 content.fadeIn();
731742 loader.remove();
732743 }, 'json' );
733 -
 744+
734745 $j(this).remove();
735746 },
736 -
 747+
737748 'asyncWatch' : function(e) {
738749 var button = $j(this);
739750 var tlcOffset = "lqt-threadlevel-commands-".length;
740 -
 751+
741752 // Find the title of the thread
742753 var threadLevelCommands = button.closest('.lqt_threadlevel_commands');
743754 var threadID = threadLevelCommands.attr('id').substring( tlcOffset );
744755 var title = $j('#lqt-thread-title-'+threadID).val();
745 -
 756+
746757 // Check if we're watching or unwatching.
747758 var action = '';
748759 if ( button.hasClass( 'lqt-command-watch' ) ) {
@@ -751,26 +762,26 @@
752763 button.removeClass( 'lqt-command-unwatch' );
753764 action = 'unwatch';
754765 }
755 -
 766+
756767 // Replace the watch link with a spinner
757768 button.empty().addClass( 'mw-small-spinner' );
758 -
 769+
759770 // Do the AJAX call.
760771 var apiParams = { 'action' : 'watch', 'title' : title, 'format' : 'json' };
761 -
 772+
762773 if (action == 'unwatch') {
763774 apiParams.unwatch = 'yes';
764775 }
765 -
 776+
766777 $j.get( wgScriptPath+'/api'+wgScriptExtension, apiParams,
767778 function( data ) {
768779 threadLevelCommands.load( window.location.href+' '+
769780 '#'+threadLevelCommands.attr('id')+' > *' );
770781 }, 'json' );
771 -
 782+
772783 e.preventDefault();
773784 },
774 -
 785+
775786 'showThreadLinkWindow' : function(e) {
776787 e.preventDefault();
777788 var linkURL = $j(this).find('a').attr('href');
@@ -778,43 +789,42 @@
779790 var linkTitle = thread.find('.lqt-thread-title-metadata').val();
780791 liquidThreads.showLinkWindow( linkTitle, linkURL );
781792 },
782 -
 793+
783794 'showSummaryLinkWindow' : function(e) {
784795 e.preventDefault();
785796 var linkURL = $j(this).attr('href');
786797 var linkTitle = $j(this).parent().find('input[name=summary-title]').val();
787798 liquidThreads.showLinkWindow( linkTitle, linkURL );
788799 },
789 -
 800+
790801 'showLinkWindow' : function(linkTitle, linkURL) {
791802 linkTitle = '[['+linkTitle+']]';
792 -
 803+
793804 // Build dialog
794805 var urlLabel = $j('<th/>').text(wgLqtMessages['lqt-thread-link-url']);
795806 var urlField = $j('<td/>').addClass( 'lqt-thread-link-url' );
796807 urlField.text(linkURL);
797808 var urlRow = $j('<tr/>').append(urlLabel).append(urlField );
798 -
 809+
799810 var titleLabel = $j('<th/>').text(wgLqtMessages['lqt-thread-link-title']);
800811 var titleField = $j('<td/>').addClass( 'lqt-thread-link-title' );
801812 titleField.text(linkTitle);
802813 var titleRow = $j('<tr/>').append(titleLabel).append(titleField );
803 -
 814+
804815 var table = $j('<table><tbody></tbody></table>');
805816 table.find('tbody').append(urlRow).append(titleRow);
806 -
 817+
807818 var dialog = $j('<div/>').append(table);
808 -
 819+
809820 $j('body').prepend(dialog);
810 -
 821+
811822 var dialogOptions = {
812 - 'AutoOpen' : true,
813823 'width' : 600
814824 };
815 -
 825+
816826 dialog.dialog( dialogOptions );
817827 },
818 -
 828+
819829 'getToken' : function( callback ) {
820830 var getTokenParams =
821831 {
@@ -824,121 +834,81 @@
825835 'titles' : 'Some Title',
826836 'format' : 'json'
827837 };
828 -
 838+
829839 $j.get( wgScriptPath+'/api'+wgScriptExtension, getTokenParams,
830840 function( data ) {
831841 var token = data.query.pages[-1].edittoken;
832 -
 842+
833843 callback(token);
834844 }, 'json' );
835845 },
836 -
 846+
837847 'handleAJAXSave' : function( e ) {
838848 var editform = $j(this).closest('.lqt-edit-form');
839849 var type = editform.find('input[name=lqt_method]').val();
840 -
 850+
841851 var text = editform.find('#wpTextbox1').val();
842852 var summary = editform.find('#wpSummary').val();
843 -
 853+
844854 var signature;
845855 if ( editform.find('input[name=wpLqtSignature]').length ) {
846856 signature = editform.find('input[name=wpLqtSignature]').val();
847857 } else {
848858 signature = undefined
849859 }
850 -
 860+
851861 // Check if summary is undefined
852862 if (summary === undefined) {
853863 summary = '';
854864 }
855 -
 865+
856866 var subject = editform.find( '#lqt_subject_field' ).val();
857867 var replyThread = editform.find('input[name=lqt_operand]').val();
858868 var bump = editform.find('#wpBumpThread').is(':checked') ? 1 : 0;
859 -
 869+
860870 var spinner = $j('<div class="mw-ajax-loader"/>');
861871 editform.prepend(spinner);
862 -
863 - var replyCallback = function( data ) {
864 - // Grab topmost thread, reload it.
865 - var topmostThread = editform.closest('.lqt-thread-topmost');
866 - var post = topmostThread.find('.lqt-post-wrapper');
867 -// var threadID = post.data('thread-id'); Unused, but useful
868 - var newPostID = data.threadaction.thread['thread-id'];
869 -
870 - // Load data from JSON
871 - var html = data.threadaction.thread['html']
872 - var newContent = $j(html);
873 -
874 - // Clear old post.
875 - topmostThread.empty();
876 -
877 - // Replace post content
878 - var newThread = newContent.filter('div.lqt_thread')[0];
879 - var newThreadContent = $j(newThread).contents();
880 - topmostThread.append( newThreadContent );
881 - topmostThread.removeClass( 'lqt-thread-no-subthreads' );
882 - topmostThread.addClass( 'lqt-thread-with-subthreads' );
883 -
884 - // Set up thread.
885 - topmostThread.find('.lqt-post-wrapper').each( function() {
886 - liquidThreads.setupThread( $j(this) );
887 - } );
888 -
889 - // Scroll to the new post.
890 - var newPost = $j('#lqt_thread_id_'+newPostID);
891 - var targetOffset = $j(newPost).offset().top;
892 - $j('html,body').animate({scrollTop: targetOffset}, 'slow');
 872+
 873+ var replyCallback = function( data ) {
 874+ $parent = $j( '#lqt_thread_id_' + data.threadaction.thread['parent-id'] );
 875+ $html = $j( data.threadaction.thread['html'] );
 876+ $newThread = $html.find( '#lqt_thread_id_' + data.threadaction.thread['thread-id'] );
 877+ $parent.find( '.lqt-thread-replies:first' ).append( $newThread );
 878+ liquidThreads.setupThread( $newThread.find( '.lqt-post-wrapper' ) );
 879+ $j( 'html,body' ).animate({scrollTop: $newThread.offset().top}, 'slow');
893880 };
894 -
 881+
895882 var newCallback = function( data ) {
896 - // Grab the thread ID
897 - var newThreadID = data.threadaction.thread['thread-id'];
898 - var html = data.threadaction.thread['html'];
899 -
900 - var newThread = $j(html);
901 -
902 - if ( $j('.lqt_toc').length ) {
903 - $j('.lqt_toc').after(newThread);
904 - } else {
905 - $j('.lqt-no-threads').replaceWith( newThread );
906 - }
907 -
908 - $j(newThread).find( '.lqt-post-wrapper').each(
909 - function() {
910 - // Set up thread.
911 - liquidThreads.setupThread( $j(this) );
912 -
913 - targetOffset = $j(this).offset().top;
914 - $j('html,body').animate(
915 - {scrollTop: targetOffset},
916 - 'slow');
917 - }
918 - );
 883+ var $newThread = $j( data.threadaction.thread['html'] );
 884+ $j( '.lqt-threads' ).prepend( $newThread );
 885+ // remove the no threads message if it's on the page
 886+ $j('.lqt-no-threads').remove();
 887+ liquidThreads.setupThread( $newThread.find( '.lqt-post-wrapper' ) );
 888+ $j( 'html,body' ).animate( { scrollTop: $newThread.offset().top }, 'slow' );
919889 };
920 -
 890+
921891 var editCallback = function( data ) {
922892 var thread = editform.closest('.lqt-thread-topmost');
923 -
 893+
924894 liquidThreads.doReloadThread( thread );
925895 }
926 -
 896+
927897 var doneCallback = function(data) {
928898 try {
929899 var result = data.threadaction.thread.result;
930900 } catch ( err ) {
931901 result = 'error';
932902 }
933 -
 903+
934904 if ( result != 'Success' ) {
935905 // Create a hidden field to mimic the save button, and
936906 // submit it normally, so they'll get a real error message.
937 -
 907+
938908 var saveHidden = $j('<input/>');
939909 saveHidden.attr( 'type', 'hidden' );
940910 saveHidden.attr( 'name', 'wpSave' );
941911 saveHidden.attr( 'value', 'Save' );
942 -
 912+
943913 var form = editform.find('#editform');
944914 form.append(saveHidden);
945915 form.submit();
@@ -946,36 +916,36 @@
947917 }
948918
949919 var callback;
950 -
 920+
951921 if ( type == 'reply' ) {
952922 callback = replyCallback;
953923 }
954 -
 924+
955925 if ( type == 'talkpage_new_thread' ) {
956926 callback = newCallback;
957927 }
958 -
 928+
959929 if ( type == 'edit' ) {
960930 callback = editCallback;
961931 }
962 -
 932+
963933 editform.empty().hide();
964 -
 934+
965935 callback(data);
966 -
 936+
967937 // Load the new TOC
968938 liquidThreads.reloadTOC();
969939 };
970 -
971 - if ( type == 'reply' ) {
 940+
 941+ if ( type == 'reply' ) {
972942 liquidThreads.doReply( replyThread, text, summary,
973943 doneCallback, bump, signature );
974 -
 944+
975945 e.preventDefault();
976946 } else if ( type == 'talkpage_new_thread' ) {
977947 liquidThreads.doNewThread( wgPageName, subject, text, summary,
978948 doneCallback, bump, signature );
979 -
 949+
980950 e.preventDefault();
981951 } else if ( type == 'edit' ) {
982952 liquidThreads.doEditThread( replyThread, subject, text, summary,
@@ -983,19 +953,19 @@
984954 e.preventDefault();
985955 }
986956 },
987 -
 957+
988958 'reloadTOC' : function() {
989959 var toc = $j('.lqt_toc');
990 -
 960+
991961 if ( !toc.length ) {
992962 toc = $j('<table/>').addClass('lqt_toc');
993963 $j('.lqt-new-thread').after(toc);
994 -
 964+
995965 var contentsHeading = $j('<h2/>');
996966 contentsHeading.text(wgLqtMessages['lqt_contents_title']);
997967 toc.before(contentsHeading);
998968 }
999 -
 969+
1000970 var loadTOCSpinner = $j('<div class="mw-ajax-loader"/>');
1001971 loadTOCSpinner.css( 'height', toc.height() );
1002972 toc.empty().append( loadTOCSpinner );
@@ -1004,7 +974,7 @@
1005975 loadTOCSpinner.remove();
1006976 } );
1007977 },
1008 -
 978+
1009979 'doNewThread' : function( talkpage, subject, text, summary, callback, bump, signature ) {
1010980 liquidThreads.getToken(
1011981 function(token) {
@@ -1021,11 +991,11 @@
1022992 'reason' : summary,
1023993 'bump' : bump
1024994 };
1025 -
 995+
1026996 if ( typeof signature != 'undefined' ) {
1027997 newTopicParams.signature = signature;
1028998 }
1029 -
 999+
10301000 $j.post( wgScriptPath+'/api'+wgScriptExtension, newTopicParams,
10311001 function(data) {
10321002 if (callback) {
@@ -1034,7 +1004,7 @@
10351005 }, 'json' );
10361006 } );
10371007 },
1038 -
 1008+
10391009 'doReply' : function( thread, text, summary, callback, bump, signature ) {
10401010 liquidThreads.getToken(
10411011 function(token) {
@@ -1050,11 +1020,11 @@
10511021 'reason' : summary,
10521022 'bump' : bump
10531023 };
1054 -
 1024+
10551025 if ( typeof signature != 'undefined' ) {
10561026 replyParams.signature = signature;
10571027 }
1058 -
 1028+
10591029 $j.post( wgScriptPath+'/api'+wgScriptExtension, replyParams,
10601030 function(data) {
10611031 if (callback) {
@@ -1063,7 +1033,7 @@
10641034 }, 'json' );
10651035 } );
10661036 },
1067 -
 1037+
10681038 'doEditThread' : function( thread, subject, text, summary,
10691039 callback, bump, signature ) {
10701040 var request =
@@ -1078,14 +1048,14 @@
10791049 'bump' : bump,
10801050 'subject':subject
10811051 };
1082 -
 1052+
10831053 if ( typeof signature != 'undefined' ) {
10841054 request.signature = signature;
10851055 }
1086 -
 1056+
10871057 liquidThreads.apiRequest( request, callback );
10881058 },
1089 -
 1059+
10901060 'onTextboxKeyUp' : function(e) {
10911061 // Check if a user has signed their post, and if so, tell them they don't have to.
10921062 var text = $j(this).val().trim();
@@ -1094,30 +1064,30 @@
10951065 if ( prevWarning.length ) {
10961066 return;
10971067 }
1098 -
 1068+
10991069 // Show the warning
11001070 var msg = wgLqtMessages['lqt-sign-not-necessary'];
11011071 var elem = $j('<div id="lqt-sign-warning" class="error"/>');
11021072 elem.text(msg);
1103 -
 1073+
11041074 $j(this).before( elem );
11051075 } else {
11061076 prevWarning.remove();
11071077 }
11081078 },
1109 -
 1079+
11101080 'apiRequest' : function( request, callback ) {
11111081 // Set new subject through API.
11121082 liquidThreads.getToken( function(token) {
1113 -
 1083+
11141084 if ( typeof request == 'function' ) {
11151085 request = request(token);
11161086 } else {
11171087 request.token = token;
11181088 }
1119 -
 1089+
11201090 request.format = 'json';
1121 -
 1091+
11221092 var path = wgScriptPath+'/api'+wgScriptExtension;
11231093 $j.post( path, request,
11241094 function(data) {
@@ -1127,23 +1097,23 @@
11281098 }, 'json' );
11291099 } );
11301100 },
1131 -
 1101+
11321102 'activateDragDrop' : function(e) {
11331103 e.preventDefault();
1134 -
 1104+
11351105 // Set up draggability.
11361106 var thread = $j(this).closest('.lqt_thread');
11371107 var threadID = thread.find('.lqt-post-wrapper').data('thread-id');
11381108 var scrollOffset;
1139 -
 1109+
11401110 $j('html,body').each(
11411111 function() {
11421112 if ( $j(this).attr('scrollTop') )
11431113 scrollOffset = $j(this).attr('scrollTop');
11441114 } );
1145 -
 1115+
11461116 scrollOffset = scrollOffset - thread.offset().top;
1147 -
 1117+
11481118 var helperFunc;
11491119 if ( thread.hasClass( 'lqt-thread-topmost' ) ) {
11501120 var header = $j('#lqt-header-'+threadID);
@@ -1158,7 +1128,7 @@
11591129 return helper;
11601130 };
11611131 }
1162 -
 1132+
11631133 var draggableOptions =
11641134 {
11651135 'axis' : 'y',
@@ -1167,10 +1137,10 @@
11681138 'helper' : helperFunc
11691139 };
11701140 thread.draggable( draggableOptions );
1171 -
 1141+
11721142 // Kill all existing drop zones
11731143 $j('.lqt-drop-zone').remove();
1174 -
 1144+
11751145 // Set up some dropping targets. Add one before the first thread, after every
11761146 // other thread, and as a subthread of every post.
11771147 var createDropZone = function( ) {
@@ -1178,42 +1148,40 @@
11791149 element.text( wgLqtMessages['lqt-drag-drop-zone'] );
11801150 return element;
11811151 };
1182 -
 1152+
11831153 // First drop zone
11841154 var firstDropZone = createDropZone();
11851155 firstDropZone.data( 'sortkey', 'now' );
11861156 firstDropZone.data( 'parent', 'top' );
1187 - var firstThread = $j('.lqt-thread-topmost.lqt-thread-first');
1188 - var firstThreadID = firstThread.find('.lqt-post-wrapper').data('thread-id');
1189 - var firstHeading = $j('#lqt-header-'+firstThreadID);
1190 - firstHeading.before(firstDropZone);
1191 -
 1157+ var firstThread = $j('.lqt-thread-topmost:first');
 1158+ firstThread.before(firstDropZone);
 1159+
11921160 // Now one after every thread
11931161 $j('.lqt-thread-topmost').each( function() {
11941162 var sortkeySelector = 'input[name=lqt-thread-sortkey]';
11951163 var sortkeyField = $j(this).contents().filter(sortkeySelector);
11961164 var sortkey = parseInt(sortkeyField.val());
1197 -
 1165+
11981166 var dropZone = createDropZone();
11991167 dropZone.data( 'sortkey', sortkey - 1 );
12001168 dropZone.data( 'parent', 'top' );
12011169 $j(this).after(dropZone);
12021170 } );
1203 -
 1171+
12041172 // Now one underneath every thread
1205 - $j('.lqt_thread').each( function() {
 1173+ $j('.lqt_thread').not(thread).each( function() {
12061174 var thread = $j(this);
12071175 var repliesElement = liquidThreads.getRepliesElement( thread );
12081176 var dropZone = createDropZone();
12091177 var threadId = thread.data('thread-id');
1210 -
 1178+
12111179 dropZone.data( 'sortkey', 'now' );
12121180 dropZone.data( 'parent', threadId );
1213 -
 1181+
12141182 repliesElement.contents().filter('.lqt-replies-finish').before(dropZone);
1215 -
 1183+
12161184 } );
1217 -
 1185+
12181186 var droppableOptions =
12191187 {
12201188 'activeClass' : 'lqt-drop-zone-active',
@@ -1221,24 +1189,24 @@
12221190 'drop' : liquidThreads.completeDragDrop,
12231191 'tolerance' : 'intersect'
12241192 };
1225 -
 1193+
12261194 $j('.lqt-drop-zone').droppable( droppableOptions );
1227 -
 1195+
12281196 scrollOffset = scrollOffset + thread.offset().top;
1229 -
 1197+
12301198 // Reset scroll position
12311199 $j('html,body').attr( 'scrollTop', scrollOffset );
12321200 },
1233 -
 1201+
12341202 'completeDragDrop' : function( e, ui ) {
12351203 var thread = $j(ui.draggable);
1236 -
 1204+
12371205 // Determine parameters
12381206 var params = {
12391207 'sortkey' : $j(this).data('sortkey'),
12401208 'parent' : $j(this).data('parent')
12411209 };
1242 -
 1210+
12431211 // Figure out an insertion point
12441212 if ( $j(this).prev().length ) {
12451213 params.insertAfter = $j(this).prev();
@@ -1247,76 +1215,80 @@
12481216 } else {
12491217 params.insertUnder = $j(this).parent();
12501218 }
1251 -
 1219+
12521220 // Kill the helper.
12531221 ui.helper.remove();
1254 -
 1222+
12551223 setTimeout( function() { thread.draggable('destroy'); }, 1 );
1256 -
 1224+
12571225 // Remove drop points and schedule removal of empty replies elements.
12581226 var emptyChecks = [];
12591227 $j('.lqt-drop-zone').each( function() {
12601228 var repliesHolder = $j(this).closest('.lqt-thread-replies');
1261 -
 1229+
12621230 $j(this).remove();
1263 -
 1231+
12641232 if (repliesHolder.length) {
12651233 liquidThreads.checkEmptyReplies( repliesHolder, 'hide' );
12661234 emptyChecks = $j.merge( emptyChecks, repliesHolder );
12671235 }
12681236 } );
1269 -
 1237+
12701238 params.emptyChecks = emptyChecks;
1271 -
 1239+
12721240 // Now, let's do our updates
12731241 liquidThreads.confirmDragDrop( thread, params );
12741242 },
1275 -
 1243+
12761244 'confirmDragDrop' : function( thread, params ) {
12771245 var confirmDialog = $j('<div class="lqt-drag-confirm" />');
1278 -
 1246+
12791247 // Add an intro
12801248 var intro = $j('<p/>').text( wgLqtMessages['lqt-drag-confirm'] );
12811249 confirmDialog.append( intro );
1282 -
 1250+
12831251 // Summarize changes to be made
12841252 var actionSummary = $j('<ul/>');
1285 -
 1253+
12861254 var addAction = function(msg) {
12871255 var li = $j('<li/>');
12881256 li.text( wgLqtMessages[msg] );
12891257 actionSummary.append(li);
12901258 };
1291 -
 1259+
12921260 var bump = (params.sortkey == 'now');
12931261 var topLevel = (params.parent == 'top');
12941262 var wasTopLevel = thread.hasClass( 'lqt-thread-topmost' );
1295 -
 1263+
12961264 if ( params.sortkey == 'now' && wasTopLevel && topLevel ) {
12971265 addAction( 'lqt-drag-bump' );
12981266 } else if ( topLevel && params.sortkey != 'now' ) {
12991267 addAction( 'lqt-drag-setsortkey' );
13001268 }
1301 -
 1269+
13021270 if ( !wasTopLevel && topLevel ) {
13031271 addAction( 'lqt-drag-split' );
13041272 } else if ( !topLevel ) {
13051273 addAction( 'lqt-drag-reparent' );
13061274 }
1307 -
 1275+
13081276 confirmDialog.append(actionSummary);
1309 -
 1277+
13101278 // Summary prompt
1311 - var summaryPrompt = $j('<p/>').text( wgLqtMessages['lqt-drag-reason'] );
 1279+ var summaryWrapper = $j('<p/>');
 1280+ var summaryPrompt = $j('<label for="reason" />').text( wgLqtMessages['lqt-drag-reason'] );
13121281 var summaryField = $j('<input type="text" size="45"/>');
1313 - summaryField.addClass( 'lqt-drag-confirm-reason' ).attr('name', 'reason');
1314 - summaryPrompt.append( summaryField );
1315 - confirmDialog.append( summaryPrompt );
1316 -
 1282+ summaryField.addClass( 'lqt-drag-confirm-reason' )
 1283+ .attr( 'name', 'reason' )
 1284+ .attr( 'id', 'reason' );
 1285+ summaryWrapper.append( summaryPrompt );
 1286+ summaryWrapper.append( summaryField );
 1287+ confirmDialog.append( summaryWrapper );
 1288+
13171289 if ( typeof params.reason != 'undefined' ) {
13181290 summaryField.val(params.reason);
13191291 }
1320 -
 1292+
13211293 // New subject prompt, if appropriate
13221294 if ( !wasTopLevel && topLevel ) {
13231295 var subjectPrompt = $j('<p/>').text( wgLqtMessages['lqt-drag-subject'] );
@@ -1326,10 +1298,10 @@
13271299 subjectPrompt.append( subjectField );
13281300 confirmDialog.append( subjectPrompt );
13291301 }
1330 -
 1302+
13311303 // Now dialogify it.
13321304 $j('body').append(confirmDialog);
1333 -
 1305+
13341306 var spinner;
13351307 var successCallback = function() {
13361308 confirmDialog.dialog('close');
@@ -1337,130 +1309,103 @@
13381310 spinner.remove();
13391311 liquidThreads.reloadTOC();
13401312 };
1341 -
 1313+
13421314 var buttonLabel = wgLqtMessages['lqt-drag-save']
13431315 var buttons = {};
13441316 buttons[buttonLabel] =
13451317 function() {
13461318 // Load data
13471319 params.reason = $j(this).find('input[name=reason]').val();
1348 -
 1320+
13491321 if ( !wasTopLevel && topLevel ) {
13501322 params.subject =
13511323 $j(this).find('input[name=subject]').val();
13521324 }
1353 -
 1325+
13541326 // Add spinners
13551327 spinner = $j('<div class="mw-ajax-loader" />');
13561328 thread.before(spinner)
1357 -
 1329+
13581330 if ( typeof params.insertAfter != 'undefined' ) {
13591331 params.insertAfter.after(spinner);
13601332 }
1361 -
 1333+
13621334 $j(this).dialog('close');
1363 -
 1335+
13641336 liquidThreads.submitDragDrop( thread, params,
13651337 successCallback );
13661338 };
1367 - confirmDialog.dialog( { 'AutoOpen' : true, 'buttons' : buttons,
1368 - 'modal' : true } );
 1339+ confirmDialog.dialog( { 'title': wgLqtMessages['lqt-drag-title'],
 1340+ 'buttons' : buttons, 'modal' : true, 'width': 550 } );
13691341 },
1370 -
 1342+
13711343 'submitDragDrop' : function( thread, params, callback ) {
13721344 var newSortkey = params.sortkey;
13731345 var newParent = params.parent;
13741346 var threadId = thread.find('.lqt-post-wrapper').data('thread-id');
1375 -
 1347+
13761348 var bump = (params.sortkey == 'now');
13771349 var topLevel = (newParent == 'top');
13781350 var wasTopLevel = thread.hasClass( 'lqt-thread-topmost' );
1379 -
 1351+
13801352 var doEmptyChecks = function() {
13811353 $j.each( params.emptyChecks, function( k, element ) {
13821354 liquidThreads.checkEmptyReplies( $j(element) );
13831355 } );
13841356 };
1385 -
 1357+
13861358 var doneCallback =
13871359 function(data) {
13881360 // TODO error handling
13891361 var result;
13901362 result = 'success';
1391 -
 1363+
13921364 if (typeof data == 'undefined' || !data ||
13931365 typeof data.threadaction == 'undefined' ) {
13941366 result = 'failure';
13951367 }
1396 -
 1368+
13971369 if (typeof data.error != 'undefined') {
13981370 result = data.error.code+': '+data.error.description;
13991371 }
1400 -
 1372+
14011373 if (result != 'success') {
14021374 alert( "Error: "+result );
14031375 doEmptyChecks();
14041376 return;
14051377 }
1406 -
 1378+
14071379 var payload;
14081380 if ( typeof data.threadaction.thread != 'undefined' ) {
14091381 payload = data.threadaction.thread;
14101382 } else if (typeof data.threadaction[0] != 'undefined') {
14111383 payload = data.threadaction[0];
14121384 }
1413 -
 1385+
14141386 var oldParent = undefined;
14151387 if (!wasTopLevel) {
14161388 oldParent = thread.closest('.lqt-thread-topmost');
14171389 }
1418 -
 1390+
14191391 // Do the actual physical movement
14201392 var threadId = thread.find('.lqt-post-wrapper')
14211393 .data('thread-id');
1422 - var topmost = thread.hasClass('lqt-thread-topmost');
14231394
1424 - if ( topmost ) {
1425 - var heading = $j('#lqt-header-'+threadId);
1426 - }
1427 -
14281395 // Assorted ways of returning a thread to its proper place.
1429 - if ( typeof params.insertAfter != 'undefined' ) {
1430 - // Move the heading
1431 - if ( topmost ) {
1432 - heading.remove();
1433 - params.insertAfter.after(heading);
1434 - thread.remove();
1435 - heading.after( thread );
1436 - } else {
1437 - thread.remove();
1438 - params.insertAfter.after(thread);
1439 - }
 1396+ if ( typeof params.insertAfter != 'undefined' ) {
 1397+ thread.remove();
 1398+ params.insertAfter.after(thread);
14401399 } else if ( typeof params.insertBefore != 'undefined' ) {
1441 - if ( topmost ) {
1442 - heading.remove();
1443 - params.insertBefore.before(heading);
1444 - thread.remove();
1445 - heading.after( thread );
1446 - } else {
1447 - thread.remove();
1448 - params.insertBefore.before( thread );
1449 - }
 1400+ thread.remove();
 1401+ params.insertBefore.before( thread );
14501402 } else if ( typeof params.insertUnder != 'undefined' ) {
1451 - if ( topmost ) {
1452 - heading.remove();
1453 - params.insertUnder.prepend(heading);
1454 - thread.remove();
1455 - heading.after(thread);
1456 - } else {
1457 - thread.remove();
1458 - params.insertUnder.prepend(thread);
1459 - }
 1403+ thread.remove();
 1404+ params.insertUnder.prepend(thread);
14601405 }
1461 -
 1406+
14621407 thread.data('thread-id', threadId);
14631408 thread.find('.lqt-post-wrapper').data('thread-id', threadId);
1464 -
 1409+
14651410 if ( typeof payload['new-sortkey']
14661411 != 'undefined') {
14671412 newSortKey = payload['new-sortkey'];
@@ -1469,36 +1414,36 @@
14701415 } else {
14711416 // Force an update on the top-level thread
14721417 var reloadThread = thread;
1473 -
 1418+
14741419 if ( ! topLevel && typeof payload['new-ancestor-id']
14751420 != 'undefined' ) {
14761421 var ancestorId = payload['new-ancestor-id'];
14771422 reloadThread =
14781423 $j('#lqt_thread_id_'+ancestorId);
14791424 }
1480 -
 1425+
14811426 liquidThreads.doReloadThread( reloadThread );
14821427 }
1483 -
 1428+
14841429 // Kill the heading, if there isn't one.
1485 - if ( !topLevel && wasTopLevel && heading.length ) {
1486 - heading.remove();
 1430+ if ( !topLevel && wasTopLevel ) {
 1431+ thread.find('h2.lqt_header').remove();
14871432 }
1488 -
 1433+
14891434 if ( !wasTopLevel && typeof oldParent != 'undefined' ) {
14901435 liquidThreads.doReloadThread( oldParent );
14911436 }
1492 -
 1437+
14931438 // Call callback
14941439 if ( typeof callback == 'function' ) {
14951440 callback();
14961441 }
1497 -
 1442+
14981443 doEmptyChecks();
14991444 }
1500 -
 1445+
15011446 if ( !topLevel || !wasTopLevel ) {
1502 -
 1447+
15031448 // Is it a split or a merge
15041449 var apiRequest =
15051450 {
@@ -1507,7 +1452,7 @@
15081453 'format' : 'json',
15091454 'reason' : params.reason
15101455 }
1511 -
 1456+
15121457 if (topLevel) {
15131458 apiRequest.threadaction = 'split';
15141459 apiRequest.subject = params.subject;
@@ -1515,14 +1460,14 @@
15161461 apiRequest.threadaction = 'merge';
15171462 apiRequest.newparent = newParent;
15181463 }
1519 -
 1464+
15201465 if ( newSortkey != 'none' ) {
15211466 apiRequest.sortkey = newSortkey;
15221467 }
1523 -
 1468+
15241469 liquidThreads.apiRequest( apiRequest, doneCallback );
1525 -
1526 -
 1470+
 1471+
15271472 } else if (newSortkey != 'none' ) {
15281473 var apiRequest =
15291474 {
@@ -1533,39 +1478,39 @@
15341479 'format' : 'json',
15351480 'reason' : params.reason
15361481 };
1537 -
 1482+
15381483 liquidThreads.apiRequest( apiRequest, doneCallback );
15391484 }
15401485 },
1541 -
 1486+
15421487 'handleEditSignature' : function(e) {
15431488 e.preventDefault();
1544 -
 1489+
15451490 var container = $j(this).parent();
1546 -
 1491+
15471492 container.find('.lqt-signature-preview').hide();
15481493 container.find('input[name=wpLqtSignature]').show();
15491494 $j(this).hide();
1550 -
 1495+
15511496 // Add a save button
15521497 var saveButton = $j('<a href="#"/>');
15531498 saveButton.text( wgLqtMessages['lqt-preview-signature'] );
15541499 saveButton.click( liquidThreads.handlePreviewSignature );
1555 -
 1500+
15561501 container.find('input[name=wpLqtSignature]').after(saveButton);
15571502 },
1558 -
 1503+
15591504 'handlePreviewSignature' : function(e) {
15601505 e.preventDefault();
1561 -
 1506+
15621507 var container = $j(this).parent();
1563 -
 1508+
15641509 var spinner = $j('<span class="mw-small-spinner"/>');
15651510 $j(this).replaceWith(spinner);
15661511
15671512 var textbox = container.find('input[name=wpLqtSignature]');
15681513 var preview = container.find('.lqt-signature-preview');
1569 -
 1514+
15701515 textbox.hide();
15711516 var text = textbox.val();
15721517
@@ -1576,15 +1521,15 @@
15771522 'pst' : '1',
15781523 'prop' : 'text'
15791524 };
1580 -
 1525+
15811526 liquidThreads.apiRequest( function() { return apiReq; },
15821527 function(data) {
15831528 var html = $j(data.parse.text['*'].trim());
1584 -
 1529+
15851530 if (html.length == 2) { // Not 1, because of the NewPP report
15861531 html = html.contents();
15871532 }
1588 -
 1533+
15891534 preview.empty().append(html);
15901535 preview.show();
15911536 spinner.remove();
@@ -1595,50 +1540,51 @@
15961541
15971542 $j(document).ready( function() {
15981543 // One-time setup for the full page
1599 -
 1544+
16001545 // Update the new thread link
16011546 var newThreadLink = $j('.lqt_start_discussion a');
16021547 newThreadLink = newThreadLink.add( $j('li#ca-addsection a') );
1603 -
 1548+
16041549 if (newThreadLink) {
16051550 newThreadLink.click( liquidThreads.handleNewLink );
16061551 }
16071552
16081553 // Find all threads, and do the appropriate setup for each of them
1609 -
 1554+
16101555 var threadContainers = $j('div.lqt-post-wrapper');
1611 -
 1556+
16121557 threadContainers.each( function(i) {
16131558 liquidThreads.setupThread( this );
16141559 } );
1615 -
 1560+
16161561 // Live bind for unwatch/watch stuff.
16171562 $j('.lqt-command-watch').live( 'click', liquidThreads.asyncWatch );
16181563 $j('.lqt-command-unwatch').live( 'click', liquidThreads.asyncWatch );
1619 -
 1564+
16201565 // Live bind for link window
16211566 $j('.lqt-command-link').live( 'click', liquidThreads.showThreadLinkWindow );
1622 -
 1567+
16231568 // Live bind for summary links
16241569 $j('.lqt-summary-link').live( 'click', liquidThreads.showSummaryLinkWindow );
1625 -
 1570+
16261571 // For "show replies"
16271572 $j('a.lqt-show-replies').live( 'click', liquidThreads.showReplies );
1628 -
 1573+
16291574 // "Show more posts" link
16301575 $j('a.lqt-show-more-posts').live( 'click', liquidThreads.showMore );
1631 -
 1576+
16321577 // Edit link handler
16331578 $j('.lqt-command-edit > a').live( 'click', liquidThreads.handleEditLink );
1634 -
 1579+
16351580 // Save handlers
16361581 $j('#wpSave').live( 'click', liquidThreads.handleAJAXSave );
16371582 $j('#wpTextbox1').live( 'keyup', liquidThreads.onTextboxKeyUp );
 1583+ $j('#wpPreview').die('click');
16381584 $j('#wpPreview').live('click', liquidThreads.doLivePreview );
1639 -
 1585+
16401586 // Hide menus when a click happens outside them
16411587 $j(document).click( liquidThreads.handleDocumentClick );
1642 -
 1588+
16431589 // Set up periodic update checking
16441590 setInterval( liquidThreads.checkForUpdates, 60000 );
16451591 } );
Property changes on: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/js/lqt.toolbar.js
___________________________________________________________________
Added: svn:eol-style
16461592 + native
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/i18n/Lqt.i18n.php
@@ -271,6 +271,7 @@
272272 'lqt-drag-setsortkey' => "Adjust post's position on the page",
273273 'lqt-drag-bump' => 'Move post to top of discussion page',
274274 'lqt-drag-save' => 'Confirm',
 275+ 'lqt-drag-title' => 'Confirm drag',
275276 'lqt-drag-reason' => 'Reason:',
276277 'lqt-drag-subject' => 'Subject for new thread:',
277278 'lqt-edit-signature' => '(edit signature)',
@@ -1680,6 +1681,7 @@
16811682 'lqt-drag-setsortkey' => 'Устанавіць пазыцыю паведамленьня на старонцы',
16821683 'lqt-drag-bump' => 'Перанесьці паведамленьне ўверх старонкі абмеркаваньня',
16831684 'lqt-drag-save' => 'Пацьвердзіць',
 1685+ 'lqt-drag-title' => 'Пацьвердзіць перанос',
16841686 'lqt-drag-reason' => 'Прычына:',
16851687 'lqt-drag-subject' => 'Тэма новай галіны:',
16861688 'lqt-edit-signature' => '(рэдагаваць подпіс)',
@@ -1979,6 +1981,7 @@
19801982 'lqt_subject' => 'বিষয়:',
19811983 'lqt_noreason' => 'কোনো কারণ দেওয়া হয়নি।',
19821984 'lqt_summary_notice_link' => 'একটি সারাংশ লিখুন',
 1985+ 'lqt_summary_label' => 'থ্রেড সারাংশ:',
19831986 'lqt_summary_subtitle' => '"$1" এর সারাংশ',
19841987 'lqt_nosuchthread_title' => 'এমন কোনো থ্রেড নাই',
19851988 'lqt_move_torename_edit' => 'এটি সম্পাদনা করুন',
@@ -1988,6 +1991,7 @@
19891992 'lqt_delete_undeleting' => "'''$1''' পুনরুদ্ধার।",
19901993 'lqt_delete_undeletethread' => 'থ্রেড পুনরুদ্ধার',
19911994 'lqt_delete_partof' => "এই থ্রেডটি '''$1''' এর একটি অংশ।",
 1995+ 'lqt_delete_deletethread' => 'থ্রেড এবং উত্তরসমূহ অপসারণ',
19921996 'lqt_delete_deleted' => 'থ্রেড অপসারণ করা হয়েছে।',
19931997 'lqt_delete_undeleted' => 'থ্রেড পুনরুদ্ধার করা হয়েছে।',
19941998 'lqt_delete_return' => '$1 এ ফিরে যান।',
@@ -2036,6 +2040,7 @@
20372041 'lqt-movethread' => 'স্থানান্তর',
20382042 'lqt-menu-trigger' => 'আরও',
20392043 'lqt-newmessages-from' => '$1 হতে',
 2044+ 'lqt-hot-topics' => 'অতি আলোচিত বিষয়সমূহ',
20402045 'lqt-add-reply' => 'উত্তর যোগ করুন',
20412046 'right-lqt-split' => 'থ্রেড পৃথক',
20422047 'right-lqt-merge' => 'থ্রেড একত্রীকরণ',
@@ -2064,6 +2069,11 @@
20652070 'lqt-change-subject' => 'বিষয় পরিবর্তন',
20662071 'lqt-save-subject' => 'সংরক্ষণ',
20672072 'lqt-cancel-subject-edit' => 'বাতিল',
 2073+ 'lqt-drag-save' => 'নিশ্চিত করো',
 2074+ 'lqt-drag-reason' => 'কারণ:',
 2075+ 'lqt-drag-subject' => 'নতুন থ্রেডের জন্য বিষয়:',
 2076+ 'lqt-edit-signature' => '(স্বাক্ষর সম্পাদনা)',
 2077+ 'lqt-preview-signature' => '(প্রাকদর্শন)',
20682078 'lqt-feed-title-all' => '{{SITENAME}} — নতুন পোষ্ট',
20692079 'lqt-feed-title-new-threads' => '{{SITENAME}} — নতুন থ্রেড',
20702080 'lqt-feed-title-new-threads-from' => '{{SITENAME}} — $1 হতে নতুন থ্রেড',
@@ -2079,6 +2089,7 @@
20802090 'lqt-talkpage-history-tab' => 'শীর্ষচরণ',
20812091 'restriction-reply' => 'উত্তর পোষ্ট করুন',
20822092 'restriction-newthread' => 'নতুন থ্রেড পোষ্ট করুন',
 2093+ 'lqt-reply-subpage' => 'উত্তর',
20832094 );
20842095
20852096 /** Breton (Brezhoneg)
@@ -2346,7 +2357,7 @@
23472358 'restriction-newthread' => 'Ouzhpennañ neudennadoù kaozeal nevez',
23482359 'lqt-protected-reply-thread' => "Ne c'helloc'h ket postañ en neudennad-mañ dre ma 'z eo bet gwarezet a-enep ar gemennadennoù nevez.",
23492360 'lqt-protected-reply-talkpage' => "Ne c'helloc'h ket postañ en neudennad-mañ dre ma 'z eo bet gwarezet an neudennad a-enep ar respontoù.",
2350 - 'lqt-protected-newthread' => "Ne c'helloc'h ket postañ neudennadoù nevez er bajenn kaozeal-mañ dre ma 'z eo bet gwarezhet a-enep an neudennadoù nevez.",
 2361+ 'lqt-protected-newthread' => "Ne c'hellit ket postañ neudennadoù nevez er bajenn kaozeal-mañ dre ma 'z eo bet gwarezet a-enep an neudennadoù nevez.",
23512362 'lqt-edit-bump' => 'Adgweredekaat an neudennad-mañ',
23522363 'lqt-edit-bump-tooltip' => 'Kas an neudennad-mañ e laez ar bajenn gaozeal',
23532364 'lqt-historicalrevision-error' => "An adweladenn ho peus dibabet a zo fall, dre-se ne c'hell ket bezañ diskouezet.",
@@ -3189,6 +3200,7 @@
31903201 * @author Goran Maric
31913202 * @author Imre
31923203 * @author JakobVoss
 3204+ * @author Kghbln
31933205 * @author McDutchie
31943206 * @author Merlissimo
31953207 * @author Metalhead64
@@ -3202,7 +3214,7 @@
32033215 * @author Umherirrender
32043216 */
32053217 $messages['de'] = array(
3206 - 'lqt-desc' => 'Verwendung von Themen auf Diskussionsseiten',
 3218+ 'lqt-desc' => 'Realisiert Themenstränge auf Diskussionsseiten',
32073219 'lqt_movethread' => 'Verschiebe Thema auf eine andere Seite',
32083220 'lqt_deletethread' => 'Lösche oder stelle Thema wieder her',
32093221 'lqt_contents_title' => 'Diskussionsthemen',
@@ -3433,6 +3445,7 @@
34343446 'lqt-drag-setsortkey' => 'Position des Beitrags auf der Seite festlegen',
34353447 'lqt-drag-bump' => 'Beitrag an den Seitenanfang verschieben',
34363448 'lqt-drag-save' => 'Bestätigen',
 3449+ 'lqt-drag-title' => 'Ziehen bestätigen',
34373450 'lqt-drag-reason' => 'Grund:',
34383451 'lqt-drag-subject' => 'Betreff für den neuen Diskussionsstrang:',
34393452 'lqt-edit-signature' => '(Unterschrift bearbeiten)',
@@ -4017,6 +4030,7 @@
40184031 'lqt-drag-setsortkey' => 'Poziciju powěsći na boku korigěrowaś',
40194032 'lqt-drag-bump' => 'Powěsć na zachopjeńk diskusijnego boka pśesunuś',
40204033 'lqt-drag-save' => 'Wobkšuśiś',
 4034+ 'lqt-drag-title' => 'Śěgnjenje wobkšuśiś',
40214035 'lqt-drag-reason' => 'Pśicyna:',
40224036 'lqt-drag-subject' => 'Nadpismo za nowu nitku:',
40234037 'lqt-edit-signature' => '(pódpis wobźěłaś)',
@@ -4056,6 +4070,8 @@
40574071 'lqt_delete' => 'Tutui',
40584072 'lqt_move_move' => 'Ɖɔli eƒe nɔƒe',
40594073 'lqt_delete_return' => 'Gbugbɔ yi $1.',
 4074+ 'lqt-movethread' => 'Ɖɔli eƒe nɔƒe',
 4075+ 'lqt-search-button' => 'Dii',
40604076 'lqt_newmessages' => 'Du yeyewo',
40614077 );
40624078
@@ -4764,6 +4780,7 @@
47654781 'lqt-drag-setsortkey' => 'Ajustar la posición del mensaje en la página',
47664782 'lqt-drag-bump' => 'Subir el mensaje al primer lugar de la página de discusión',
47674783 'lqt-drag-save' => 'Confirmar',
 4784+ 'lqt-drag-title' => 'Confirmar arrastre',
47684785 'lqt-drag-reason' => 'Razón:',
47694786 'lqt-drag-subject' => 'Asunto para el nuevo hilo de discusión:',
47704787 'lqt-edit-signature' => '(editar firma)',
@@ -4869,6 +4886,7 @@
48704887 'lqt_nosuchrevision' => 'Lõime sellist redaktsiooni pole.',
48714888 'lqt_nosuchthread' => 'Määratud lõime pole.',
48724889 'lqt_nosuchthread_title' => 'Lõime ei leidu',
 4890+ 'lqt_threadrequired' => 'Pead internetiaadressis lõime määrama.',
48734891 'lqt_move_movingthread' => 'Lõime $1 teisaldamine.
48744892 See lõim on osa leheküljest $2.',
48754893 'lqt_move_torename' => "Lõime ümbernimetamiseks $1 ja muuda väli 'Teema'.",
@@ -5035,6 +5053,7 @@
50365054 'lqt-protected-newthread' => 'Sellele aruteluleheküljele ei saa uusi lõimi postitada, sest see on uute lõimede eest kaitstud.',
50375055 'lqt-edit-bump' => 'Too lõim ette',
50385056 'lqt-edit-bump-tooltip' => 'Liiguta see lõim arutelulehekülje algusesse',
 5057+ 'lqt-historicalrevision-error' => 'Sinu valitud redaktsioon rikutud ja seda ei saa vaadata.',
50395058 'lqt-reply-subpage' => 'vasta',
50405059 );
50415060
@@ -5044,13 +5063,16 @@
50455064 * @author Kobazulo
50465065 */
50475066 $messages['eu'] = array(
 5067+ 'lqt_movethread' => 'Mintzagaia beste orrialde batera mugitu',
50485068 'lqt_contents_title' => 'Edukiak',
50495069 'lqt_toc_thread_title' => 'Eztabaidaren izenburua',
50505070 'lqt_toc_thread_author' => 'Nork hasi duen',
 5071+ 'lqt_toc_thread_replycount' => 'Erantzunak',
50515072 'lqt_toc_thread_modified' => 'Azken aldaketa',
50525073 'lqt_add_header' => 'Goiburua gehitu',
50535074 'lqt_new_thread' => 'Eztabaida berria hasi',
50545075 'lqt_reply' => 'Erantzun',
 5076+ 'lqt-parent' => 'Gurasoa',
50555077 'lqt_delete' => 'Ezabatu',
50565078 'lqt_undelete' => 'Berreskuratu',
50575079 'lqt_permalink' => 'Lotu',
@@ -5058,12 +5080,18 @@
50595081 'lqt_newer' => '← berriagoa',
50605082 'lqt_older' => 'zaharragoa →',
50615083 'lqt-history-title' => 'Eztabaidaren historia',
 5084+ 'lqt_hist_summary_changed' => 'Laburpena aldatua',
 5085+ 'lqt_hist_thread_created' => 'Mintzagai berria sortua',
50625086 'lqt_hist_deleted' => 'Ezabatua',
50635087 'lqt_hist_undeleted' => 'Ezabatu gabea',
50645088 'lqt_hist_moved_talkpage' => 'Mugitua',
 5089+ 'lqt_hist_edited_subject_corrupt' => 'Gaia aldatua',
 5090+ 'lqt_youhavenewmessages' => '[[$1|Mezu berriak]] dituzu.',
50655091 'lqt_protectedfromreply_link' => 'babestua',
50665092 'lqt_subject' => 'Gaia:',
50675093 'lqt_noreason' => 'Arrazoirik eman gabe.',
 5094+ 'lqt_summary_notice_link' => 'laburpena idatzi',
 5095+ 'lqt_summary_label' => 'Mintzagaiaren laburpena:',
50685096 'lqt_move_movingthread' => '$1 mugitzen.
50695097 Eztabaida hau $2-(e)ko zati da.',
50705098 'lqt_move_torename_edit' => 'editatu',
@@ -5071,21 +5099,29 @@
50725100 'lqt_move_noreason' => 'Ez da arrazoirik zehaztu.',
50735101 'lqt_delete_return' => '$1-(e)ra itzuli.',
50745102 'lqt_delete_return_link' => 'eztabaida orria',
 5103+ 'lqt_header_warning_big' => '$1 editatzen ari zara.',
 5104+ 'lqt_header_warning_new_discussion' => 'Eztabaida berria hasi',
50755105 'lqt_sorting_order' => 'Sailkapenerako irizpidea:',
50765106 'lqt_sort_newest_changes' => 'azken aldaketa lehendabizi',
 5107+ 'lqt_sort_newest_threads' => 'mintzagai berrienak lehenik',
 5108+ 'lqt_sort_oldest_threads' => 'mintzagai zaharrenak lehenik',
50775109 'lqt-title' => 'Izenburua',
50785110 'lqt-summary' => 'Laburpena',
50795111 'lqt-older' => 'zaharrago',
50805112 'lqt-newer' => 'berriago',
50815113 'lqt-read-message' => 'Irakurrita moduan adierazi',
 5114+ 'lqt-read-all' => 'Markatu irakurrita gisa',
 5115+ 'lqt-count-marked-read' => '{{PLURAL:$1|mezu bat|$1 mezu}} markatuak irakurrita gisa.',
50825116 'lqt-email-undo' => 'Desegin',
50835117 'lqt-no-new-messages' => 'Ez dago zuretzako mezu berririk.',
50845118 'lqt-new-messages' => '✒ Zuretzako mezu berriak daude.',
 5119+ 'lqt-newmessages-context' => 'Mintzagai osoa',
50855120 'lqt-thread-created' => 'Sortua',
50865121 'lqt-history-time' => 'Ordua',
50875122 'lqt-history-user' => 'Erabiltzailea',
50885123 'lqt-history-action' => 'Jarduera',
50895124 'lqt-history-comment' => 'Iruzkina',
 5125+ 'lqt-history-thread' => 'Mintzagaia',
50905126 'lqt-header-actions' => 'Ekintzak',
50915127 'lqt_summarize_link' => 'Laburtu',
50925128 'lqt-thread-split-thread' => 'Eztabaida:',
@@ -5093,12 +5129,18 @@
50945130 'lqt-movethread' => 'Mugitu',
50955131 'lqt-menu-trigger' => 'Gehiago',
50965132 'lqt-hot-topics' => 'Gai garrantzitsuak',
 5133+ 'lqt-add-reply' => 'Erantzuna gehitu',
50975134 'lqt-merge-submit' => 'Merge',
 5135+ 'lqt-enotif-subject-reply' => '{{SITENAME}} eztabaida - Erantzuna: $1',
 5136+ 'lqt-enotif-subject-newthread' => '{{SITENAME}} eztabaida - Mintzagai berria: $1',
50985137 'lqt-quote' => 'Aipu',
50995138 'lqt-search-button' => 'Bilatu',
51005139 'searchprofile-threads' => 'Eztabaidak',
51015140 'lqt-ajax-update-link' => 'Eguneratu',
 5141+ 'lqt-thread-show-replies' => 'Erakutsi {{PLURAL:$1|erantzun bat|$1 erantzun}}',
51025142 'lqt-thread-link-url' => 'URL lotura:',
 5143+ 'lqt-thread-link-title' => 'Wikitestu lotura:',
 5144+ 'lqt-change-subject' => 'Gaia aldatua',
51035145 'lqt-save-subject' => 'Gorde',
51045146 'lqt-cancel-subject-edit' => 'Utzi',
51055147 'lqt-drag-save' => 'Baieztatu',
@@ -5109,7 +5151,11 @@
51105152 'lqt-feed-title-all-from' => '{{SITENAME}} — Mezu beriak $1- (r)engandik',
51115153 'lqt-feed-title-new-threads' => '{{SITENAME}} — Eztabaida berriak',
51125154 'lqt-feed-title-new-threads-from' => '{{SITENAME}} — Eztabaida berriak $1 - (r)engandik',
 5155+ 'lqt-feed-title-replies' => '{{SITENAME}} — Erantzunak',
 5156+ 'lqt-newmessages-n' => 'Mezu berriak ($1)',
51135157 'lqt_newmessages' => 'Mezu berriak',
 5158+ 'lqt_newmessages-title' => 'Mezu berriak',
 5159+ 'lqt-newpost-summary' => 'Mintzagai berria: $1',
51145160 'lqt-talkpage-history-tab' => 'Goiburua',
51155161 'lqt-reply-subpage' => 'erantzun',
51165162 );
@@ -5266,9 +5312,9 @@
52675313 'lqt-date-info' => 'Tämä linkki ei ole käytössä koska sinulla on näkyvissä ketjut kaikilta ajankohdilta.',
52685314 'lqt-newmessages-context' => 'Koko viestiketju',
52695315 'lqt-thread-created' => 'Luotu',
5270 - 'lqt-history-time' => 'Aika',
 5316+ 'lqt-history-time' => 'Päiväys',
52715317 'lqt-history-user' => 'Käyttäjä',
5272 - 'lqt-history-action' => 'Aktiivisuus',
 5318+ 'lqt-history-action' => 'Toiminto',
52735319 'lqt-history-comment' => 'Kommentti',
52745320 'lqt-history-thread' => 'Ketju',
52755321 'lqt-thread-edited-author' => 'Aloittajan muokkaama.<br />
@@ -5315,7 +5361,7 @@
53165362 'lqt-preference-notify-talk' => 'Lähetä sähköpostia viestiketjun vastauksista, joita tarkkailen',
53175363 'lqt-preference-watch-threads' => 'Tarkkaile viestiketjuja, jotka olen luonnut tai joihin olen vastannut',
53185364 'prefs-lqt' => 'Viestiketjut',
5319 - 'lqt-preference-display-depth' => 'Enimmäissyvyys vastauksia näytettäväksi:',
 5365+ 'lqt-preference-display-depth' => 'Sisäkkäisiä vastauksia oletusnäkymässä:',
53205366 'lqt-preference-display-count' => 'Enimmäismäärä vastauksia näytettäväksi:',
53215367 'lqt-preference-custom-signatures' => 'Näytä käyttäjien mukautetut allekirjoitukset',
53225368 'lqt-enotif-subject-reply' => '{{SITENAME}} – Vastaus keskusteluun $1',
@@ -5643,6 +5689,7 @@
56445690 'lqt-drag-setsortkey' => 'Modifier la position du message dans la page',
56455691 'lqt-drag-bump' => 'Déplacer le message vers le haut de la page de discussion',
56465692 'lqt-drag-save' => 'Confirmer',
 5693+ 'lqt-drag-title' => 'Confirmer le glissement',
56475694 'lqt-drag-reason' => 'Motif :',
56485695 'lqt-drag-subject' => 'Sujet du nouveau fil de discussion',
56495696 'lqt-edit-signature' => '(modifier la signature)',
@@ -5667,7 +5714,7 @@
56685715 'restriction-newthread' => 'Poster des nouveaux fils de discussion',
56695716 'lqt-protected-reply-thread' => 'Vous ne pouvez pas poster dans ce fil de discussion car il a été protégé contre les nouveaux messages.',
56705717 'lqt-protected-reply-talkpage' => 'Vous ne pouvez pas poster dans ce fil car cette page de discussion a été protégée contre les réponses à ses fils.',
5671 - 'lqt-protected-newthread' => 'Vous ne pouvez pas poster des nouveaux fils dans cette page de discussion car elle a été protégée contre les nouveaux fils.',
 5718+ 'lqt-protected-newthread' => 'Vous ne pouvez pas poster de nouveaux fils dans cette page de discussion car elle a été protégée contre les nouveaux fils.',
56725719 'lqt-edit-bump' => 'Réactiver ce fil',
56735720 'lqt-edit-bump-tooltip' => 'Déplacer ce fil en haut de la page de discussion.',
56745721 'lqt-historicalrevision-error' => 'La révision que vous avez sélectionné est corrompue et ne peut pas être affichée.',
@@ -6250,6 +6297,7 @@
62516298 'lqt-drag-setsortkey' => 'Axustar a posición da mensaxe na páxina',
62526299 'lqt-drag-bump' => 'Mover a mensaxe ao comezo da páxina de conversa',
62536300 'lqt-drag-save' => 'Confirmar',
 6301+ 'lqt-drag-title' => 'Confirmar o arrastre',
62546302 'lqt-drag-reason' => 'Motivo:',
62556303 'lqt-drag-subject' => 'Asunto para o novo fío:',
62566304 'lqt-edit-signature' => '(editar a sinatura)',
@@ -7338,6 +7386,7 @@
73397387 'lqt-drag-setsortkey' => 'Poziciju powěsće na stronje skorigować',
73407388 'lqt-drag-bump' => 'Powěsć na spočatk diskusijneje strony přesunyć',
73417389 'lqt-drag-save' => 'Wobkrućić',
 7390+ 'lqt-drag-title' => 'Ćehnjenje wobkrućić',
73427391 'lqt-drag-reason' => 'Přičina:',
73437392 'lqt-drag-subject' => 'Nadpismo za nowu nitku:',
73447393 'lqt-edit-signature' => '(podpis wobdźěłać)',
@@ -7817,7 +7866,7 @@
78187867 'lqt-preference-watch-threads' => 'Observar filos que io crea o al quales io responde',
78197868 'prefs-lqt' => 'Discussion in filos',
78207869 'lqt-preference-display-depth' => 'Profunditate maximal de responsas a monstrar:',
7821 - 'lqt-preference-display-count' => 'Numero maximal de responsas a monstrar:',
 7870+ 'lqt-preference-display-count' => 'Numero maxime de responsas a monstrar:',
78227871 'lqt-preference-custom-signatures' => 'Monstrar signaturas personalisate de usatores',
78237872 'lqt-enotif-subject-reply' => 'Discussion {{SITENAME}} - Responsa: $1',
78247873 'lqt-enotif-subject-newthread' => 'Discussion {{SITENAME}} - Nove filo: $1',
@@ -7863,6 +7912,7 @@
78647913 'lqt-drag-setsortkey' => 'Adjustar le position del message in le pagina',
78657914 'lqt-drag-bump' => 'Displaciar le message verso le alto del pagina',
78667915 'lqt-drag-save' => 'Confirmar',
 7916+ 'lqt-drag-title' => 'Confirmar displaciamento',
78677917 'lqt-drag-reason' => 'Motivo:',
78687918 'lqt-drag-subject' => 'Subjecto del nove filo:',
78697919 'lqt-edit-signature' => '(modificar signatura)',
@@ -7918,6 +7968,7 @@
79197969 * Konflik dengan awalan interwiki atau nama ruang nama.',
79207970 'lqt_empty_subject' => 'Anda harus memasukkan subjek.',
79217971 'lqt_reply' => 'Balas',
 7972+ 'lqt-parent' => 'Induk',
79227973 'lqt_delete' => 'Hapus',
79237974 'lqt_undelete' => 'Batalkan penghapusan',
79247975 'lqt_permalink' => 'Pranala',
@@ -7974,7 +8025,7 @@
79758026 'lqt_summary_notice' => 'Tidak ada perubahan pada diskusi ini selama paling tidak $2 {{PLURAL:$2|hari|hari}}
79768027 Jika telah berakhir, Anda mungkin ingin untuk $1.',
79778028 'lqt_summary_notice_link' => 'tulis ringkasan',
7978 - 'lqt_summary_label' => 'Topik ini telah diringkas sebagai berikut:',
 8029+ 'lqt_summary_label' => 'Ringkasan topik:',
79798030 'lqt_summary_subtitle' => 'Ringkasan dari $1.',
79808031 'lqt_nosuchrevision' => 'Tidak ada revisi seperti itu pada topik ini.',
79818032 'lqt_nosuchthread' => 'Topik yang Anda cari tidak ada.',
@@ -8040,8 +8091,10 @@
80418092 'lqt-history-action' => 'Aktivitas',
80428093 'lqt-history-comment' => 'Komentar',
80438094 'lqt-history-thread' => 'Utas',
8044 - 'lqt-thread-edited-author' => 'Disunting oleh penulis pertama',
8045 - 'lqt-thread-edited-others' => 'Disunting oleh pengguna lainnya',
 8095+ 'lqt-thread-edited-author' => 'Disunting oleh penulis.<br />
 8096+Suntingan terakhir: $1',
 8097+ 'lqt-thread-edited-others' => 'Disunting oleh {{PLURAL:$2|pengguna lain|$2 pengguna}}.<br />
 8098+Suntingan terakhir: $1',
80468099 'lqt-header-actions' => 'Tindakan',
80478100 'lqt_summarize_link' => 'Ringkasan',
80488101 'lqt-summarize-intro' => 'Silakan meringkas utas di bawah ini pada kotak suntingan.
@@ -8064,8 +8117,8 @@
80658118 'lqt-newmessages-from' => 'Dari $1',
80668119 'lqt-hot-topics' => 'Topik hangat',
80678120 'lqt-add-reply' => 'Tambahkan balasan',
8068 - 'lqt_rc_new_discussion' => 'Diskusi baru "$1" pada $2. • $3 menulis:',
8069 - 'lqt_rc_new_reply' => 'Membalas ke "$1" di $2 • $3 menulis:',
 8121+ 'lqt_rc_new_discussion' => 'mengirimkan topik baru, "$1"',
 8122+ 'lqt_rc_new_reply' => 'mengirimkan balasan ke "$1"',
80708123 'right-lqt-split' => 'Pisahkan utas',
80718124 'right-lqt-merge' => 'Gabungkan utas',
80728125 'lqt-thread-merge' => 'Gabung ke utas lain',
@@ -8078,6 +8131,11 @@
80798132 'lqt-log-name' => 'Log diskusi bertingkat',
80808133 'lqt-log-header' => 'Log ini menjelaskan seluruh tindakan yang dilakukan pada topik diskusi.',
80818134 'lqt-log-action-move' => 'memindahkan [[$1]] dari [[$2]] ke [[$3]].',
 8135+ 'lqt-log-action-split' => 'memisahkan [[$1]] dari bawah [[$3]], dengan subyek baru "$2"',
 8136+ 'lqt-log-action-merge-across' => 'memindahkan [[$1]] dari bawah [[$2]] ke bawah [[$3]]',
 8137+ 'lqt-log-action-merge-down' => 'menggabungkan [[$1]] ke bawah [[$3]]',
 8138+ 'lqt-log-action-subjectedit' => 'mengubah subyek [[$1]] dari "$2" ke "$3"',
 8139+ 'lqt-log-action-resort' => 'mengubah aturan urutan [[$1]]. Mengganti kunci urut dari $2 ke $3',
80828140 'lqt-preference-notify-talk' => 'Kirimkan saya surel jika ada balasan pada topik yang saya pantau',
80838141 'lqt-preference-watch-threads' => 'Pantau utas yang saya buat atau balas',
80848142 'prefs-lqt' => 'Diskusi berutas',
@@ -8197,6 +8255,8 @@
81988256 'lqt-history-comment' => 'Komento',
81998257 'lqt-newmessages-from' => 'De $1',
82008258 'lqt-save-subject' => 'Registragar',
 8259+ 'lqt-drag-save' => 'Konfirmar',
 8260+ 'lqt-drag-reason' => 'Motivo:',
82018261 'lqt-newmessages-n' => 'Nova mesaji ($1)',
82028262 'lqt_newmessages' => 'Nova mesaji',
82038263 'lqt_newmessages-title' => 'Nova mesaji',
@@ -8264,6 +8324,8 @@
82658325 'lqt-movethread' => 'Færa',
82668326 'lqt-menu-trigger' => 'Meira',
82678327 'lqt-newmessages-from' => 'Á $1',
 8328+ 'lqt_rc_new_discussion' => 'bjó til þráðinn „$1“',
 8329+ 'lqt_rc_new_reply' => 'svaraði „$1“',
82688330 'lqt-search-label' => 'Leitarorð:',
82698331 'lqt-search-button' => 'Leita',
82708332 'searchprofile-threads' => 'Spjöll',
@@ -8935,6 +8997,7 @@
89368998 ეს ტორი არის $2-ის ნაწილი.',
89378999 'lqt_move_torename' => "ამ ტოტის სახელის შესაცვლელად, $1 და შეცვალეთ 'სათაური' ველი.",
89389000 'lqt_move_torename_edit' => 'მისი რედაქტირება',
 9001+ 'lqt_move_destinationtitle' => 'განხილვის გვერდის სათაური:',
89399002 'lqt_move_move' => 'გადატანა',
89409003 'lqt_move_nodestination' => 'თქვენ უნდა მიუთითოთ დანიშნულების ადგილი.',
89419004 'lqt_move_samedestination' => 'ტოტი უკვე არის ამ გვერდზე!',
@@ -9199,6 +9262,7 @@
92009263 );
92019264
92029265 /** Korean (한국어)
 9266+ * @author Albamhandae
92039267 * @author FriedC
92049268 * @author Klutzy
92059269 * @author Kwj2772
@@ -9302,7 +9366,7 @@
93039367 'lqt_delete_deletethread' => '스레드와 답글을 삭제하기',
93049368 'lqt_delete_deleted' => '스레드가 삭제되었습니다.',
93059369 'lqt_delete_undeleted' => '스레드가 복구되었습니다.',
9306 - 'lqt_delete_return' => '$1로 돌아갑니다.',
 9370+ 'lqt_delete_return' => '$1(으)로 돌아갑니다.',
93079371 'lqt_delete_return_link' => '토론 문서',
93089372 'lqt_delete_unallowed' => '당신은 스레드를 삭제할 수 없습니다.',
93099373 'lqt_delete_show_checkbox' => '삭제된 스레드를 보기',
@@ -9993,6 +10057,7 @@
999410058 'lqt-drag-setsortkey' => "D'Positioun vum Message op der Säit änneren",
999510059 'lqt-drag-bump' => "De Message uewen op d'Diskussiounssäit réckelen",
999610060 'lqt-drag-save' => 'Confirméieren',
 10061+ 'lqt-drag-title' => 'Réckele confirméieren',
999710062 'lqt-drag-reason' => 'Grond:',
999810063 'lqt-drag-subject' => 'Sujet fir déi nei Rubrik:',
999910064 'lqt-edit-signature' => '(Ënnerschrëft änneren)',
@@ -10053,8 +10118,19 @@
1005410119 /** Lithuanian (Lietuvių)
1005510120 * @author Pėstininkas
1005610121 * @author Tomasdd
 10122+ * @author Vpovilaitis
1005710123 */
1005810124 $messages['lt'] = array(
 10125+ 'lqt-desc' => 'Pridėti diskusijų temas į aptarimų puslapius',
 10126+ 'lqt_movethread' => 'Perkelti temą į kitą puslapį',
 10127+ 'lqt_deletethread' => 'Ištrinti arba atstatyti temą',
 10128+ 'lqt_contents_title' => 'Turinys',
 10129+ 'lqt_toc_thread_title' => 'Temos antraštė',
 10130+ 'lqt_toc_thread_author' => 'Pradėjo',
 10131+ 'lqt_toc_thread_replycount' => 'Atsakymai',
 10132+ 'lqt_toc_thread_modified' => 'Paskutinis pakeitimas',
 10133+ 'lqt_add_header' => 'Pridėti antraštę',
 10134+ 'lqt_new_thread' => 'Pradėti naują diskusiją',
1005910135 'lqt_delete' => 'Ištrinti',
1006010136 'lqt-no-new-messages' => 'Jūs negavote naujų žinučių.',
1006110137 'lqt_newmessages' => 'Naujos žinutės',
@@ -10156,7 +10232,7 @@
1015710233 'lqt_subject' => 'Тема:',
1015810234 'lqt_noreason' => 'Нема наведено причина.',
1015910235 'lqt_move_placeholder' => 'Оваа нишка е показател кој означува дека нишката $1 била преместена од оваа страница.
10160 -Преместувањето го извришил корисникот $2 на $3 во $4. Нишката сега се наоѓа на $5.',
 10236+Преместувањето го извршил корисникот $2 на $3 во $4 ч. Нишката сега се наоѓа на $5.',
1016110237 'lqt_thread_deleted_for_sysops' => "Оваа нишка е '''избришана''' и е видлива само за администратори.",
1016210238 'lqt_thread_deleted' => 'Оваа ниншка била избришана.',
1016310239 'lqt_summary_notice' => 'Овој разговор не е изменет барем $2 {{PLURAL:$2|ден|дена}}.
@@ -10322,6 +10398,7 @@
1032310399 'lqt-drag-setsortkey' => 'Прилагоди ја позицијата на пораката во страницата',
1032410400 'lqt-drag-bump' => 'Качи ја пораката најгоре на страницата',
1032510401 'lqt-drag-save' => 'Потврди',
 10402+ 'lqt-drag-title' => 'Потврди повлекување',
1032610403 'lqt-drag-reason' => 'Причина:',
1032710404 'lqt-drag-subject' => 'Наслов на новата нишка:',
1032810405 'lqt-edit-signature' => '(уреди потпис)',
@@ -10592,6 +10669,7 @@
1059310670 'lqt-drag-setsortkey' => 'പ്രസിദ്ധപ്പെടുത്തലിന്റെ സ്ഥാനം താളിൽ ക്രമീകരിക്കുക',
1059410671 'lqt-drag-bump' => 'സംവാദം താളിന്റെ മുകളിലേയ്ക്ക് പ്രസിദ്ധപ്പെടുത്തൽ മാറ്റുക',
1059510672 'lqt-drag-save' => 'സ്ഥിരീകരിക്കുക',
 10673+ 'lqt-drag-title' => 'വലിച്ചിടൽ സ്ഥിരീകരിക്കുക',
1059610674 'lqt-drag-reason' => 'കാരണം:',
1059710675 'lqt-drag-subject' => 'പുതിയ ചരടിന്റെ വിഷയം:',
1059810676 'lqt-edit-signature' => '(ഒപ്പ് തിരുത്തുക)',
@@ -11047,6 +11125,7 @@
1104811126 'lqt-drag-setsortkey' => 'Positie van bericht op de pagina aanpassen',
1104911127 'lqt-drag-bump' => 'Bovenaan de overlegpagina plaatsen',
1105011128 'lqt-drag-save' => 'Bevestigen',
 11129+ 'lqt-drag-title' => 'Slepen bevestigen',
1105111130 'lqt-drag-reason' => 'Reden:',
1105211131 'lqt-drag-subject' => 'Onderwerp:',
1105311132 'lqt-edit-signature' => '(ondertekening bewerken)',
@@ -11473,7 +11552,7 @@
1147411553 'lqt_summarize_link' => 'Lag sammendrag',
1147511554 'lqt-summarize-intro' => 'Du kan oppsummere denne tråden i redigeringsboksen.
1147611555 Du kan bruke all wikitekst i oppsummeringen din.
11477 -Når du er ferdig, trykk "{{int:savearticle}}".',
 11556+Når du er ferdig, trykk «{{int:savearticle}}».',
1147811557 'lqt-thread-split' => 'Del opp til en ny tråd',
1147911558 'lqt-split-success' => 'Du har delt opp tråden $1.',
1148011559 'lqt_split_thread' => 'Del en tråd i to',
@@ -11551,16 +11630,17 @@
1155211631 'lqt-save-subject-failed' => 'Følgende feil oppsto ved endring av emnet på tråden: $1',
1155311632 'lqt-ajax-invalid-subject' => 'Emnet du oppga var ugyldig, sannsynligvis fordi det var for langt.',
1155411633 'lqt-ajax-no-subject' => 'Du må spesifisere et emne.',
11555 - 'lqt-save-subject-error-unknown' => 'En ukjent feil oppsto mens man forsøkte å sette emne på denne tråden. Forsøk igjen ved å trykke på "rediger" på toppen av innlegget.',
 11634+ 'lqt-save-subject-error-unknown' => 'En ukjent feil oppsto mens man forsøkte å sette emne på denne tråden. Forsøk igjen ved å trykke på «rediger» på toppen av innlegget.',
1155611635 'lqt-cancel-subject-edit' => 'Avbryt',
1155711636 'lqt-drag-activate' => 'Dra til ny plassering',
1155811637 'lqt-drag-drop-zone' => 'Slipp her',
11559 - 'lqt-drag-confirm' => 'For å gjøre disse handlingene, fyll inn en grunn og trykk "Bekreft".',
 11638+ 'lqt-drag-confirm' => 'For å gjøre disse handlingene, fyll inn en grunn og trykk «Bekreft».',
1156011639 'lqt-drag-reparent' => 'Flytt posten til under en ny foresatt.',
1156111640 'lqt-drag-split' => 'Flytt innlegg til sin egen tråd',
1156211641 'lqt-drag-setsortkey' => 'Juster postens posisjon på siden',
1156311642 'lqt-drag-bump' => 'Flytt innlegg til toppen av diskusjonssiden',
1156411643 'lqt-drag-save' => 'Bekreft',
 11644+ 'lqt-drag-title' => 'Bekreft draget',
1156511645 'lqt-drag-reason' => 'Årsak:',
1156611646 'lqt-drag-subject' => 'Emne for ny tråd:',
1156711647 'lqt-edit-signature' => '(endre signatur)',
@@ -11867,6 +11947,7 @@
1186811948 $messages['pdc'] = array(
1186911949 'lqt_delete' => 'Lösche',
1187011950 'lqt_discussion_link' => 'Gschwetz',
 11951+ 'lqt_protectedfromreply_link' => 'geschitzt',
1187111952 'lqt_move_move' => 'Ziehe',
1187211953 'lqt_delete_return' => 'Zerick zu $1.',
1187311954 'lqt-title' => 'Titel',
@@ -12402,6 +12483,7 @@
1240312484 'lqt-drag-setsortkey' => 'Rangé la posission dël mëssagi ant la pàgina',
1240412485 'lqt-drag-bump' => 'Tramudé ël mëssagi an cò dla pàgina ëd discussion',
1240512486 'lqt-drag-save' => 'Conferma',
 12487+ 'lqt-drag-title' => 'Conferma la còpia',
1240612488 'lqt-drag-reason' => 'Rason:',
1240712489 'lqt-drag-subject' => 'Soget ëd la neuva discussion:',
1240812490 'lqt-edit-signature' => '(modifiché la firma)',
@@ -12438,12 +12520,15 @@
1243912521 */
1244012522 $messages['ps'] = array(
1244112523 'lqt_contents_title' => 'مينځپانګه',
 12524+ 'lqt_toc_thread_replycount' => 'ځوابونه',
1244212525 'lqt_reply' => 'ځوابول',
1244312526 'lqt_delete' => 'ړنګول',
1244412527 'lqt_undelete' => 'ناړنګول',
 12528+ 'lqt_discussion_link' => 'خبرې اترې',
1244512529 'lqt_from_talk' => 'د $1 لخوا',
1244612530 'lqt_newer' => '← تر دې نوی',
1244712531 'lqt_older' => 'تر دې زوړ →',
 12532+ 'lqt_hist_reply_created' => '[[$1|نوی ځواب]] جوړ شو',
1244812533 'lqt_hist_deleted' => 'ړنګ شو',
1244912534 'lqt_hist_undeleted' => 'ناړنګ شو',
1245012535 'lqt_youhavenewmessages' => 'تاسې [[$1|نوي پيغامونه]] لری.',
@@ -12453,6 +12538,7 @@
1245412539 'lqt_move_torename_edit' => 'دا سمول',
1245512540 'lqt_move_move' => 'لېږدول',
1245612541 'lqt_move_noreason' => 'هېڅ سبب نه دی ورکړ شوی.',
 12542+ 'lqt_delete_return_link' => 'د خبرو اترو مخ',
1245712543 'lqt-title' => 'سرليک',
1245812544 'lqt-summary' => 'لنډيز',
1245912545 'lqt-email-undo' => 'ناکړل',
@@ -12462,14 +12548,22 @@
1246312549 'lqt-history-comment' => 'تبصره',
1246412550 'lqt-movethread' => 'لېږدول',
1246512551 'lqt-menu-trigger' => 'نور',
 12552+ 'lqt-add-reply' => 'يو ځواب ورګډول',
 12553+ 'lqt-enotif-subject-reply' => 'د {{SITENAME}} خبرې اترې - ځوابول: $1',
1246612554 'lqt-search-button' => 'پلټل',
 12555+ 'searchprofile-threads' => 'خبرې اترې',
1246712556 'lqt-ajax-update-link' => 'اوسمهالول',
 12557+ 'lqt-thread-show-replies' => '$1 {{PLURAL:$1|ځواب|ځوابونه}} ښکاره کول',
 12558+ 'lqt-thread-show-more' => 'نور ځوابونه ښکاره کول',
1246812559 'lqt-save-subject' => 'خوندي کول',
1246912560 'lqt-cancel-subject-edit' => 'ناګارل',
1247012561 'lqt-drag-reason' => 'سبب:',
 12562+ 'lqt-feed-title-replies' => '{{SITENAME}} — ځوابونه',
1247112563 'lqt-newmessages-n' => 'نوي پيغامونه ($1)',
1247212564 'lqt_newmessages' => 'نوي پيغامونه',
1247312565 'lqt_newmessages-title' => 'نوي پيغامونه',
 12566+ 'lqt-reply-summary' => '[[$2|$1]] ته ځواب وييل',
 12567+ 'lqt-talkpage-history-title' => 'د خبرو اترو د مخ پېښليک',
1247412568 'lqt-reply-subpage' => 'ځوابول',
1247512569 );
1247612570
@@ -12715,6 +12809,7 @@
1271612810 'lqt-drag-setsortkey' => 'Ajustar posição da mensagem na página',
1271712811 'lqt-drag-bump' => 'Mover o tópico para o topo da página',
1271812812 'lqt-drag-save' => 'Confirmar',
 12813+ 'lqt-drag-title' => 'Confirmar arrastamento',
1271912814 'lqt-drag-reason' => 'Motivo:',
1272012815 'lqt-drag-subject' => 'Assunto do tópico novo:',
1272112816 'lqt-edit-signature' => '(editar assinatura)',
@@ -12987,6 +13082,7 @@
1298813083 'lqt-drag-setsortkey' => 'Ajustar posição da mensagem na página',
1298913084 'lqt-drag-bump' => 'Mover o tópico para o topo da página',
1299013085 'lqt-drag-save' => 'Confirmar',
 13086+ 'lqt-drag-title' => 'Confirmar arraste',
1299113087 'lqt-drag-reason' => 'Motivo:',
1299213088 'lqt-drag-subject' => 'Assunto do tópico novo:',
1299313089 'lqt-edit-signature' => '(editar assinatura)',
@@ -13040,10 +13136,10 @@
1304113137 'lqt_movethread' => 'Mutați thread la o altă pagină',
1304213138 'lqt_deletethread' => 'Şterge sau nu șterge thread',
1304313139 'lqt_contents_title' => 'Cuprins',
13044 - 'lqt_toc_thread_title' => 'Titlu thread',
 13140+ 'lqt_toc_thread_title' => 'Titlu discuție',
1304513141 'lqt_toc_thread_author' => 'Început de',
1304613142 'lqt_toc_thread_replycount' => 'Răspunsuri',
13047 - 'lqt_toc_thread_modified' => 'Ultima dată modificat',
 13143+ 'lqt_toc_thread_modified' => 'Ultima modificare',
1304813144 'lqt_add_header' => 'Adaugă antet',
1304913145 'lqt_new_thread' => 'Începe o nouă discuție',
1305013146 'lqt_invalid_subject' => 'Subiectul care l-ați introdus este invalid.
@@ -13055,12 +13151,12 @@
1305613152 'lqt_delete' => 'Şterge',
1305713153 'lqt_undelete' => 'Recuperare',
1305813154 'lqt_permalink' => 'Legătură către',
13059 - 'lqt_fragment' => 'Fragment a unei $1 de la $2',
 13155+ 'lqt_fragment' => 'Fragment dintr-o $1 de la $2',
1306013156 'lqt_discussion_link' => 'discuție',
13061 - 'lqt_from_talk' => 'de la $1',
 13157+ 'lqt_from_talk' => 'De la $1',
1306213158 'lqt_newer' => '← mai noi',
1306313159 'lqt_older' => 'mai vechi →',
13064 - 'lqt-history-title' => 'Istoric thread',
 13160+ 'lqt-history-title' => 'Istoric discuție',
1306513161 'lqt_hist_comment_edited' => 'Text comentariu [$2 modificat]',
1306613162 'lqt_hist_summary_changed' => 'Rezumat schimbat',
1306713163 'lqt_hist_reply_created' => '[[$1|Răspuns nou]] creat',
@@ -13112,7 +13208,7 @@
1311313209 'lqt_move_torename' => "Pentru a redenumi acest thread, $1 și schimbați câmpul 'Subiect'.",
1311413210 'lqt_move_torename_edit' => 'modificare',
1311513211 'lqt_move_destinationtitle' => 'Titlul paginii de destinație - discuție:',
13116 - 'lqt_move_move' => 'Mutare',
 13212+ 'lqt_move_move' => 'Redenumește',
1311713213 'lqt_move_nodestination' => 'Trebuie să specificați o destinație.',
1311813214 'lqt_move_thread_bad_destination' => 'Destinația de discuție nu este o pagină de discuție.',
1311913215 'lqt_move_samedestination' => 'Threadul este deja pe această pagină !',
@@ -13169,7 +13265,7 @@
1317013266 'lqt-no-threads' => 'Încă nu există discuții pe această pagină.',
1317113267 'lqt-delete-parent-deleted' => 'Discuția părinte a fost ștearsă ($1)',
1317213268 'lqt-movethread' => 'Mutare',
13173 - 'lqt-menu-trigger' => 'Mai mult',
 13269+ 'lqt-menu-trigger' => 'Adiț.',
1317413270 'lqt-newmessages-from' => 'De la $1',
1317513271 'lqt-hot-topics' => 'Subiecte calde',
1317613272 'lqt-add-reply' => 'Adaugă un răspuns',
@@ -13255,6 +13351,7 @@
1325613352 * Vè in conflitte cu le prefisse inderuicchi o 'u nome de le namespace.",
1325713353 'lqt_empty_subject' => "Tu à mettere 'nu suggette.",
1325813354 'lqt_reply' => 'Respunne',
 13355+ 'lqt-parent' => 'Attane',
1325913356 'lqt_delete' => 'Scangille',
1326013357 'lqt_undelete' => 'Repristine',
1326113358 'lqt_permalink' => 'Apponde a',
@@ -13472,6 +13569,7 @@
1347313570 'lqt-drag-setsortkey' => "conziglie 'a posizione d'u messagge jndr'à pàgene",
1347413571 'lqt-drag-bump' => "Spuèste 'u messagge a l'inizie d'a pàgene de le 'ngazzaminde",
1347513572 'lqt-drag-save' => 'Conferme',
 13573+ 'lqt-drag-title' => "Conferme 'u trascinamende",
1347613574 'lqt-drag-reason' => 'Mutive:',
1347713575 'lqt-drag-subject' => "Suggette pe l'argomende nuève:",
1347813576 'lqt-edit-signature' => "(cange 'a firme)",
@@ -13509,6 +13607,7 @@
1351013608 * @author Kaganer
1351113609 * @author Kv75
1351213610 * @author Lockal
 13611+ * @author MaxSem
1351313612 * @author McDutchie
1351413613 * @author Mormegil
1351513614 * @author VasilievVV
@@ -13580,8 +13679,8 @@
1358113680 'lqt_protectedfromreply_link' => 'защищена',
1358213681 'lqt_subject' => 'Заголовок:',
1358313682 'lqt_noreason' => 'Не указана причина.',
13584 - 'lqt_move_placeholder' => 'Эта заглушка ветки показывает, что ветка $1 была перемещена с этой страницы.
13585 -Перемещение произведено участником $2 $3 в $4. Теперь ветку можно найти как $5.',
 13683+ 'lqt_move_placeholder' => 'Ветка $1 была перемещена с этой страницы в $5.
 13684+Перемещение произведено участником $2 $3 в $4.',
1358613685 'lqt_thread_deleted_for_sysops' => "Эта ветка была '''удалена''' и видна только администраторам.",
1358713686 'lqt_thread_deleted' => 'Эта ветка была удалена.',
1358813687 'lqt_summary_notice' => 'Это обсуждение не изменялось как минимум $2 {{PLURAL:$2|день|дня|дней}}.
@@ -13746,6 +13845,7 @@
1374713846 'lqt-drag-setsortkey' => 'Изменить расположение записи на странице',
1374813847 'lqt-drag-bump' => 'Переместить запись в начало страницы обсуждения',
1374913848 'lqt-drag-save' => 'Подтвердить',
 13849+ 'lqt-drag-title' => 'Подтвердить перетаскивание',
1375013850 'lqt-drag-reason' => 'Причина:',
1375113851 'lqt-drag-subject' => 'Тема для новой ветки:',
1375213852 'lqt-edit-signature' => '(править подпись)',
@@ -13781,6 +13881,9 @@
1378213882 * @author Gazeb
1378313883 */
1378413884 $messages['rue'] = array(
 13885+ 'lqt-newmessages-n' => 'Новы повідомлїня $1',
 13886+ 'lqt_newmessages' => 'Новы повідомлїня',
 13887+ 'lqt_newmessages-title' => 'Новы повідомлїня',
1378513888 'lqt-reply-subpage' => 'одповісти',
1378613889 );
1378713890
@@ -14444,6 +14547,7 @@
1444514548 'lqt_youhavenewmessages' => 'Имате [[$1|нових порука]].',
1444614549 'lqt_protectedfromreply_link' => 'заштићено',
1444714550 'lqt_subject' => 'Наслов:',
 14551+ 'lqt_noreason' => 'Није дат разлог.',
1444814552 'lqt_summary_notice_link' => 'напишите сажетак',
1444914553 'lqt_summary_label' => 'Сажетак теме:',
1445014554 'lqt_summary_subtitle' => 'Сажетак за "$1"',
@@ -14556,6 +14660,8 @@
1455714661 'lqt_newmessages' => 'Нове поруке',
1455814662 'lqt_newmessages-title' => 'Нове поруке',
1455914663 'lqt-newpost-summary' => 'Нова тема: $1',
 14664+ 'lqt-reply-summary' => 'Одговор на [[$2|$1]]',
 14665+ 'lqt-talkpage-history-title' => 'Историја стране за разговор',
1456014666 'lqt-talkpage-history-subtitle' => 'За $1',
1456114667 'lqt-talkpage-history-tab' => 'Заглавље',
1456214668 'restriction-reply' => 'Слање одговора',
@@ -14631,6 +14737,7 @@
1463214738 'lqt_youhavenewmessages' => 'Imate [[$1|novih poruka]].',
1463314739 'lqt_protectedfromreply_link' => 'zaštićeno',
1463414740 'lqt_subject' => 'Naslov:',
 14741+ 'lqt_noreason' => 'Nije dat razlog.',
1463514742 'lqt_summary_notice_link' => 'napišite sažetak',
1463614743 'lqt_summary_label' => 'Sažetak teme:',
1463714744 'lqt_summary_subtitle' => 'Sažetak za "$1"',
@@ -14743,6 +14850,8 @@
1474414851 'lqt_newmessages' => 'Nove poruke',
1474514852 'lqt_newmessages-title' => 'Nove poruke',
1474614853 'lqt-newpost-summary' => 'Nova tema: $1',
 14854+ 'lqt-reply-summary' => 'Odgovor na [[$2|$1]]',
 14855+ 'lqt-talkpage-history-title' => 'Istorija strane za razgovor',
1474714856 'lqt-talkpage-history-subtitle' => 'Za $1',
1474814857 'lqt-talkpage-history-tab' => 'Zaglavlje',
1474914858 'restriction-reply' => 'Slanje odgovora',
@@ -15962,11 +16071,11 @@
1596316072 * @author Vito Genovese
1596416073 */
1596516074 $messages['tr'] = array(
15966 - 'lqt-desc' => 'Mesaj sayfalarına düğümlenen tartışmalar ekler',
15967 - 'lqt_movethread' => 'Düğümü başka bir sayfaya taşı',
15968 - 'lqt_deletethread' => 'Düğümü sil ya da silmeyi geri al',
 16075+ 'lqt-desc' => 'Tartışma sayfalarına diziler halinde tartışmalar ekler',
 16076+ 'lqt_movethread' => 'İleti dizisini başka bir sayfaya taşı',
 16077+ 'lqt_deletethread' => 'İleti dizini sil ya da silmeyi geri al',
1596916078 'lqt_contents_title' => 'İçindekiler',
15970 - 'lqt_toc_thread_title' => 'Düğüm başlığı',
 16079+ 'lqt_toc_thread_title' => 'İleti dizisi başlığı',
1597116080 'lqt_toc_thread_author' => 'Başlatan',
1597216081 'lqt_toc_thread_replycount' => 'Cevaplar',
1597316082 'lqt_toc_thread_modified' => 'Son değiştiren',
@@ -15978,7 +16087,7 @@
1597916088 * Vikilerarası bağlantılar ya da ad alanlarıyla çakışma olabilir.',
1598016089 'lqt_empty_subject' => 'Bir konu girmelisiniz.',
1598116090 'lqt_reply' => 'Cevap ver',
15982 - 'lqt-parent' => 'Üst düğüm',
 16091+ 'lqt-parent' => 'Üst dizi',
1598316092 'lqt_delete' => 'Sil',
1598416093 'lqt_undelete' => 'Geri al',
1598516094 'lqt_permalink' => 'Bağlantı ver',
@@ -15987,83 +16096,83 @@
1598816097 'lqt_from_talk' => '$1 sayfasından',
1598916098 'lqt_newer' => '← daha yeni',
1599016099 'lqt_older' => 'daha eski →',
15991 - 'lqt-history-title' => 'Düğüm geçmişi',
 16100+ 'lqt-history-title' => 'İleti dizisi geçmişi',
1599216101 'lqt_hist_comment_edited' => 'Yorum metni [$2 değiştirildi]',
1599316102 'lqt_hist_summary_changed' => 'Özet değiştirildi',
1599416103 'lqt_hist_reply_created' => '[[$1|Yeni yanıt]] oluşturuldu',
15995 - 'lqt_hist_thread_created' => 'Yeni düğüm oluşturuldu',
 16104+ 'lqt_hist_thread_created' => 'Yeni ileti dizisi oluşturuldu',
1599616105 'lqt_hist_deleted' => 'Silindi',
1599716106 'lqt_hist_undeleted' => 'Silinmesi geri alındı',
1599816107 'lqt_hist_moved_talkpage' => 'Taşındı',
1599916108 'lqt_hist_listing_subtitle' => 'Geçmiş listesi görüntüleniyor',
16000 - 'lqt_hist_view_whole_thread' => 'Tüm düğüm için geçmişi gör',
16001 - 'lqt_hist_no_revisions_error' => 'Bu düğümün hiç geçmiş revizyonu yok.',
 16109+ 'lqt_hist_view_whole_thread' => 'Tüm ileti dizisi için geçmişi gör',
 16110+ 'lqt_hist_no_revisions_error' => 'Bu ileti dizisinin hiç geçmiş revizyonu yok.',
1600216111 'lqt_hist_past_last_page_error' => 'Mevcut geçmiş sayfası sayısının çok ötesindesiniz.',
1600316112 'lqt_hist_tooltip_newer_disabled' => 'Bu bağlantı devre dışı bırakıldı çünkü ilk sayfadasınız.',
1600416113 'lqt_hist_tooltip_older_disabled' => 'Bu bağlantı devre dışı bırakıldı çünkü son sayfadasınız.',
16005 - 'lqt_hist_split' => 'Cevabı yeni bir düğüme ayır',
 16114+ 'lqt_hist_split' => 'Cevabı yeni bir ileti dizisine ayır',
1600616115 'lqt_hist_edited_subject' => 'Konuyu $2 iken $3 olarak değiştirdi',
1600716116 'lqt_hist_edited_subject_corrupt' => 'Konuyu değiştirdi',
16008 - 'lqt_hist_merged_from' => '[[$1|Cevap]] başka bir düğüme taşındı',
16009 - 'lqt_hist_merged_to' => '[[$1|Cevap]] başka bir düğümden taşındı',
16010 - 'lqt_hist_split_from' => 'Yeni bir düğüme ayır',
 16117+ 'lqt_hist_merged_from' => '[[$1|Cevap]] başka bir ileti dizisine taşındı',
 16118+ 'lqt_hist_merged_to' => '[[$1|Cevap]] başka bir ileti dizisinden taşındı',
 16119+ 'lqt_hist_split_from' => 'Yeni bir ileti dizisine ayır',
1601116120 'lqt_hist_root_blanked' => 'Yorum metni kaldırıldı',
1601216121 'lqt_hist_adjusted_sortkey' => 'Ayarlanmış konu konumu',
1601316122 'lqt_revision_as_of' => '$2 $3 itibariyle olan revizyon.',
16014 - 'lqt_change_new_thread' => 'Bu düğümün ilk revizyonu.',
 16123+ 'lqt_change_new_thread' => 'Bu ileti dizisinin ilk revizyonu.',
1601516124 'lqt_change_reply_created' => '[$1 Vurgulanan yorum] bu revizyonda oluşturuldu.',
1601616125 'lqt_change_edited_root' => '[$1 Vurgulanan yorum] bu revizyonda değiştirildi.',
16017 - 'lqt_change_edited_summary' => 'Düğümün özeti değiştirildi',
16018 - 'lqt_change_deleted' => '[$1 Bu düğüm] ya da üst düğümü silinmiş',
 16126+ 'lqt_change_edited_summary' => 'İleti dizisinin özeti değiştirildi',
 16127+ 'lqt_change_deleted' => '[$1 Bu ileti dizisi] ya da bu ileti dizisinin üst dizisi silinmiş',
1601916128 'lqt_change_undeleted' => '[$1 Vurgulanan gönderinin] silinmesi geri alındı',
16020 - 'lqt_change_moved' => '[$1 Bu düğüm] başka bir tartışma sayfasına taşındı',
16021 - 'lqt_change_split' => '[$1 Bu düğüm] başka bir düğümden ayrıldı',
16022 - 'lqt_change_edited_subject' => 'Bu düğümün konusu "$2" iken "$3" olarak değiştirildi',
16023 - 'lqt_change_merged_from' => 'Bu düğüme gelen bir [$1 cevap] başka bir düğüme taşındı',
16024 - 'lqt_change_merged_to' => '[$1 Vurgulanan cevap] başka bir düğümden taşındı',
16025 - 'lqt_change_split_from' => 'Bu düğümün bir [$1 altdüğümü] kendi düğümüne ayrıldı',
 16129+ 'lqt_change_moved' => '[$1 Bu ileti dizisi] başka bir tartışma sayfasına taşındı',
 16130+ 'lqt_change_split' => '[$1 Bu ileti dizisi] başka bir ileti dizisinden ayrıldı',
 16131+ 'lqt_change_edited_subject' => 'Bu ileti dizisinin konusu "$2" iken "$3" olarak değiştirildi',
 16132+ 'lqt_change_merged_from' => 'Bu ileti dizisine gelen bir [$1 cevap] başka bir diziye taşındı',
 16133+ 'lqt_change_merged_to' => '[$1 Vurgulanan cevap] başka bir ileti dizisinden taşındı',
 16134+ 'lqt_change_split_from' => 'Bu ileti dizisinin bir [$1 altdizisi] kendi dizisine ayrıldı',
1602616135 'lqt_change_root_blanked' => '[$1 Bir yorumun] metni çıkarıldı.',
1602716136 'lqt_youhavenewmessages' => '[[$1|yeni mesajınız]] var.',
16028 - 'lqt_protectedfromreply' => 'Bu düğüm cevaplanmaya karşı $1.',
 16137+ 'lqt_protectedfromreply' => 'Bu ileti dizisi cevaplanmaya karşı $1.',
1602916138 'lqt_protectedfromreply_link' => 'koruma altında',
1603016139 'lqt_subject' => 'Konu:',
1603116140 'lqt_noreason' => 'Sebep belirtilmemiş.',
16032 - 'lqt_move_placeholder' => 'Bu düğüm, bir düğümün, $1, bu sayfadan başka bir tartışma sayfasına çıkarıldığını belirten bir yertutucudur.
16033 -Bu taşıma $3 $4 tarihinde $2 tarafından yapılmıştır. Düğüm şu anda $5 adresinde bulunuyor.',
16034 - 'lqt_thread_deleted_for_sysops' => "Bu düğüm '''silinmiş''' ve sadece yöneticiler tarafından görülebilir.",
16035 - 'lqt_thread_deleted' => 'Bu düğüm silinmiş.',
 16141+ 'lqt_move_placeholder' => 'Bu ileti dizisi, bir ileti dizisinin, $1, bu sayfadan başka bir tartışma sayfasına çıkarıldığını belirten bir yertutucudur.
 16142+Bu taşıma $3 $4 tarihinde $2 tarafından yapılmıştır. İleti dizisi şu anda $5 adresinde bulunuyor.',
 16143+ 'lqt_thread_deleted_for_sysops' => "Bu ileti dizisi '''silinmiş''' ve sadece yöneticiler tarafından görülebilir.",
 16144+ 'lqt_thread_deleted' => 'Bu ileti dizisi silinmiş.',
1603616145 'lqt_summary_notice' => 'Bu tartışmada en az $2 {{PLURAL:$2|gündür|gündür}} hiçbir değişiklik yok.
1603716146 Eğer sonlandıysa, $1 isteyebilirsiniz.',
1603816147 'lqt_summary_notice_link' => 'bir özet yazmak',
16039 - 'lqt_summary_label' => 'Düğüm özeti:',
 16148+ 'lqt_summary_label' => 'İleti dizisinin özeti:',
1604016149 'lqt_summary_subtitle' => '"$1" için özet',
16041 - 'lqt_nosuchrevision' => 'Bu düğümün böyle bir revizyonu yok',
16042 - 'lqt_nosuchthread' => 'Belirttiğiniz düğüm mevcut değil.',
16043 - 'lqt_nosuchthread_title' => 'Böyle bir düğüm yok',
16044 - 'lqt_threadrequired' => 'URLde bir düğüm belirtmelisiniz.',
 16150+ 'lqt_nosuchrevision' => 'Bu ileti dizisinin böyle bir revizyonu yok',
 16151+ 'lqt_nosuchthread' => 'Belirttiğiniz ileti dizisi mevcut değil.',
 16152+ 'lqt_nosuchthread_title' => 'Böyle bir ileti dizisi yok',
 16153+ 'lqt_threadrequired' => 'URLde bir ileti dizisi belirtmelisiniz.',
1604516154 'lqt_move_movingthread' => "$1 taşınıyor.
16046 -Bu düğüm $2'nin parçası.",
16047 - 'lqt_move_torename' => "Bu düğümü yeniden adlandırmak için, $1 ve 'Konu' alanının değiştirin.",
 16155+Bu ileti dizisi $2'nin parçası.",
 16156+ 'lqt_move_torename' => "Bu ileti dizisini yeniden adlandırmak için, 'Konu' alanını düzenleyerek sayfayı $1.",
1604816157 'lqt_move_torename_edit' => 'değiştirin',
1604916158 'lqt_move_destinationtitle' => 'Hedef tartışma sayfası başlığı:',
1605016159 'lqt_move_move' => 'Taşı',
1605116160 'lqt_move_nodestination' => 'Bir hedef belirtmelisiniz.',
1605216161 'lqt_move_thread_bad_destination' => 'Hedef sayfası bir tartışma sayfası değil.',
16053 - 'lqt_move_samedestination' => 'Düğüm zaten bu sayfada!',
 16162+ 'lqt_move_samedestination' => 'İleti dizisi zaten bu sayfada!',
1605416163 'lqt_move_noreason' => 'Sebep belirtilmemiş.',
16055 - 'lqt_move_success' => 'Düğüm $1 e taşındı.',
 16164+ 'lqt_move_success' => 'İleti dizisi $1 e taşındı.',
1605616165 'lqt_delete_undeleting' => "'''$1''' silinmesi geri alınıyor.",
16057 - 'lqt_delete_undeletethread' => 'Düğümün silinmesini geri al',
16058 - 'lqt_delete_partof' => "Bu düğüm '''$1''' düğümünün bir parçası.",
 16166+ 'lqt_delete_undeletethread' => 'İleti dizisinin silinmesini geri al',
 16167+ 'lqt_delete_partof' => "Bu ileti dizisi '''$1''' dizisinin bir parçası.",
1605916168 'lqt_delete_deleting' => "'''$1''' ve '''tüm cevaplar''' siliniyor.",
16060 - 'lqt_delete_deletethread' => 'Düğümü ve cevapları sil',
16061 - 'lqt_delete_deleted' => 'Düğüm silindi.',
16062 - 'lqt_delete_undeleted' => 'Düğümün silinmesi geri alındı.',
 16169+ 'lqt_delete_deletethread' => 'İleti dizisini ve cevapları sil',
 16170+ 'lqt_delete_deleted' => 'İleti dizisi silindi.',
 16171+ 'lqt_delete_undeleted' => 'İleti dizisinin silinmesi geri alındı.',
1606316172 'lqt_delete_return' => '$1 sayfasına dön.',
1606416173 'lqt_delete_return_link' => 'tartışma sayfası',
16065 - 'lqt_delete_unallowed' => 'Düğümleri silmeye izniniz yok.',
16066 - 'lqt_delete_show_checkbox' => 'Silinen düğümleri göster',
16067 - 'lqt_talkpage_autocreate_summary' => 'Tartışma sayfası ilk düğüm gönderilince otomatik oluşturuldu.',
 16174+ 'lqt_delete_unallowed' => 'İleti dizilerini silmeye izniniz yok.',
 16175+ 'lqt_delete_show_checkbox' => 'Silinen ileti dizilerini göster',
 16176+ 'lqt_talkpage_autocreate_summary' => 'Tartışma sayfası ilk ileti dizisi gönderilince otomatik oluşturuldu.',
1606816177 'lqt_header_warning_big' => 'Bir $1 değiştiriyorsunuz.',
1606916178 'lqt_header_warning_after_big' => 'Başlıklar duyurular ve önsözler içindir.
1607016179 $2 isteyebilirsiniz.',
@@ -16071,96 +16180,96 @@
1607216181 'lqt_header_warning_new_discussion' => 'Yeni bir tartışma başlatmak',
1607316182 'lqt_sorting_order' => 'Sıralama düzeni:',
1607416183 'lqt_sort_newest_changes' => 'önce son değiştirilen',
16075 - 'lqt_sort_newest_threads' => 'önce en yeni düğümler',
16076 - 'lqt_sort_oldest_threads' => 'önce en eski düğümler',
 16184+ 'lqt_sort_newest_threads' => 'önce en yeni ileti dizileri',
 16185+ 'lqt_sort_oldest_threads' => 'önce en eski ileti dizileri',
1607716186 'lqt-title' => 'Başlık',
1607816187 'lqt-summary' => 'Özet',
1607916188 'lqt-older' => 'daha eski',
1608016189 'lqt-newer' => 'daha yeni',
16081 - 'lqt-searching' => 'Düğümler aranıyor',
 16190+ 'lqt-searching' => 'İleti dizileri aranıyor',
1608216191 'lqt-read-message' => 'Okunmuş olarak işaretle',
16083 - 'lqt-read-message-tooltip' => 'Yeni mesajlardan bu düğümü çıkar.
 16192+ 'lqt-read-message-tooltip' => 'Yeni mesajlardan bu ileti dizisini çıkar.
1608416193 Orijinal tartışma sayfasında hala görünür olacaktır.',
1608516194 'lqt-read-all' => 'Hepsini okunmuş olarak işaretle',
16086 - 'lqt-read-all-tooltip' => 'Yeni mesajlardan tüm düğümleri çıkar.
 16195+ 'lqt-read-all-tooltip' => 'Yeni mesajlardan tüm ileti dizilerini çıkar.
1608716196 Orijinal tartışma sayfasında hala görünür olacaklardır.
1608816197 Bu operasyon gerialınabilirdir.',
16089 - 'lqt-marked-read' => "'''$1''' düğümü okunmuş olarak işaretlendi.",
 16198+ 'lqt-marked-read' => "'''$1''' ileti dizisi okunmuş olarak işaretlendi.",
1609016199 'lqt-count-marked-read' => '$1 {{PLURAL:$1|mesaj|mesaj}} okunmuş olarak işaretlendi.',
1609116200 'lqt-email-undo' => 'Geri al',
1609216201 'lqt-messages-sent' => 'Size gönderilen mesajlar:',
1609316202 'lqt-other-messages' => 'Diğer tartışma sayfalarındaki mesajlar:',
1609416203 'lqt-no-new-messages' => 'Sizin için yeni bir mesaj yok.',
1609516204 'lqt-new-messages' => '✒ Yeni mesajlarınız var.',
16096 - 'lqt-email-info-undo' => 'Daha önce attığınız düğümü geri getir.',
16097 - 'lqt-date-info' => 'Bu bağlantı devre dışı bırakıldı çünkü tüm tarihlerden düğümleri görüntülüyorsunuz.',
16098 - 'lqt-newmessages-context' => 'Tam düğüm',
 16205+ 'lqt-email-info-undo' => 'Daha önce attığınız ileti dizisini geri getir.',
 16206+ 'lqt-date-info' => 'Bu bağlantı devre dışı bırakıldı çünkü tüm tarihlerden ileti dizilerini görüntülüyorsunuz.',
 16207+ 'lqt-newmessages-context' => 'Tam ileti dizisi',
1609916208 'lqt-thread-created' => 'Oluşturuldu',
1610016209 'lqt-history-time' => 'Zaman',
1610116210 'lqt-history-user' => 'Kullanıcı',
1610216211 'lqt-history-action' => 'Eylem',
1610316212 'lqt-history-comment' => 'Yorum',
16104 - 'lqt-history-thread' => 'Düğüm',
 16213+ 'lqt-history-thread' => 'İleti dizisi',
1610516214 'lqt-thread-edited-author' => 'Yazar tarafından değiştirildi.<br />
1610616215 Son değişiklik: $1',
1610716216 'lqt-thread-edited-others' => '{{PLURAL:$2|Başka bir kullanıcı|Başka $2 kullanıcı}} tarafından değiştirildi.<br />
1610816217 Son değişiklik: $1',
1610916218 'lqt-header-actions' => 'Eylemler',
1611016219 'lqt_summarize_link' => 'Özetle',
16111 - 'lqt-summarize-intro' => 'Lütfen aşağıdaki düğümü, değiştirme kutusunda özetleyin.
 16220+ 'lqt-summarize-intro' => 'Lütfen aşağıdaki ileti dizisini, değiştirme kutusunda özetleyin.
1611216221 Özetinizde herhangi bir vikimetnini kullanabilirsiniz.
1611316222 Bitirdiğinizde "{{int:savearticle}}"e tıklayın.',
16114 - 'lqt-thread-split' => 'Yeni düğüme ayır',
16115 - 'lqt-split-success' => '$1 düğümünü başarıyla ayırdınız.',
16116 - 'lqt_split_thread' => 'Bir düğümü ayır',
16117 - 'lqt-thread-split-subject' => 'Yeni düğüm konusu:',
16118 - 'lqt-thread-split-thread' => 'Düğüm:',
 16223+ 'lqt-thread-split' => 'Yeni ileti dizisine ayır',
 16224+ 'lqt-split-success' => '$1 ileti dizisini başarıyla ayırdınız.',
 16225+ 'lqt_split_thread' => 'Bir ileti dizisini ayır',
 16226+ 'lqt-thread-split-subject' => 'Yeni ileti dizisinin konusu:',
 16227+ 'lqt-thread-split-thread' => 'İleti dizisi:',
1611916228 'lqt-split-submit' => 'Ayır',
1612016229 'lqt_split_badsubject' => 'Girdiğiniz konu geçersiz.',
16121 - 'lqt-no-threads' => 'Bu sayfada henüz düğüm yok.',
16122 - 'lqt-delete-parent-warning' => 'Bu cevaba sahip yüksek-seviyeli bir düğüm.
 16230+ 'lqt-no-threads' => 'Bu sayfada henüz ileti dizisi yok.',
 16231+ 'lqt-delete-parent-warning' => 'Bu ileti dizisi cevapları bulunan bir üst dizi.
1612316232 Cevaplar da otomatik olarak silinecektir.
16124 -Bundan kaçınmak için, cevapları düğümü silmeden önce düğümden ayırın.',
16125 - 'lqt-delete-parent-deleted' => 'Ana düğüm silindi ($1)',
16126 - 'lqt-delete-replies-done' => 'Bu düğüme olan tüm cevaplar da silindi.',
 16233+Bundan kaçınmak için, cevapları ileti dizisini silmeden önce diziden ayırın.',
 16234+ 'lqt-delete-parent-deleted' => 'Ana ileti dizisi silindi ($1)',
 16235+ 'lqt-delete-replies-done' => 'Bu ileti dizisine yazılmış tüm cevaplar da silindi.',
1612716236 'lqt-movethread' => 'Taşı',
16128 - 'lqt-menu-trigger' => 'Daha fazla',
 16237+ 'lqt-menu-trigger' => 'Diğer',
1612916238 'lqt-newmessages-from' => 'Gönderen $1',
1613016239 'lqt-hot-topics' => 'Taze başlıklar',
1613116240 'lqt-add-reply' => 'Bir cevap ekle',
16132 - 'lqt_rc_new_discussion' => 'yeni bir düğüm gönderdi, "$1"',
16133 - 'lqt_rc_new_reply' => '"$1" düğümüne yeni bir cevap yazdı',
16134 - 'right-lqt-split' => 'Düğümleri ayır',
16135 - 'right-lqt-merge' => 'Düğümleri birleştir',
16136 - 'lqt-thread-merge' => 'Diğer bir düğüme birleştir',
16137 - 'lqt-thread-merge-to' => 'Bu düğüme birleştir',
16138 - 'lqt_merge_thread' => 'Düğümü birleştir',
16139 - 'lqt-thread-merge-source' => 'Kaynak düğüm:',
16140 - 'lqt-thread-merge-dest' => 'Hedef düğüm:',
 16241+ 'lqt_rc_new_discussion' => 'yeni bir ileti dizisi gönderdi, "$1"',
 16242+ 'lqt_rc_new_reply' => '"$1" ileti dizisine yeni bir cevap yazdı',
 16243+ 'right-lqt-split' => 'İleti dizilerini ayır',
 16244+ 'right-lqt-merge' => 'İleti dizilerini birleştir',
 16245+ 'lqt-thread-merge' => 'Diğer bir ileti dizisine birleştir',
 16246+ 'lqt-thread-merge-to' => 'Bu ileti dizisine birleştir',
 16247+ 'lqt_merge_thread' => 'İleti dizisini birleştir',
 16248+ 'lqt-thread-merge-source' => 'Kaynak dizi:',
 16249+ 'lqt-thread-merge-dest' => 'Hedef dizi:',
1614116250 'lqt-merge-submit' => 'Birleştir',
16142 - 'lqt-merge-success' => '$1 düğümünü başarıyla $2 düğümünün altına birleştirdiniz.',
16143 - 'lqt-log-name' => 'Düğümlenmiş tartışma günlüğü',
16144 - 'lqt-log-header' => 'Bu günlük tartışma düğümlerinde alınan eylemleri detaylandırır.',
16145 - 'lqt-log-action-move' => '[[$1]] düğümünü [[$2]] sayfasından [[$3]] sayfasına taşıdı.',
16146 - 'lqt-log-action-split' => '[[$1]] düğümünü [[$3]] düğümünün altından ayırdı, yeni konu: "$2"',
16147 - 'lqt-log-action-merge-across' => '[[$1]] düğümünü [[$2]] düğümünün altından [[$3]] düğümünün altına taşıdı',
16148 - 'lqt-log-action-merge-down' => '[[$1]] düğümünü [[$3]] düğümünün altına birleştirdi',
16149 - 'lqt-log-action-subjectedit' => '[[$1]] düğümünün konusunu "$2" iken "$3" olarak değiştirdi',
16150 - 'lqt-log-action-resort' => '[[$1]] düğümünün sıralama düzenini değiştirdi. Sıralama anahtarı $2 iken $3 olarak değiştirildi.',
16151 - 'lqt-preference-notify-talk' => 'İzlediğim bir düğüme cevap geldiğinde bana e-posta gönder',
16152 - 'lqt-preference-watch-threads' => 'Oluşturduğum ya da cevap verdiğim düğümleri izle',
16153 - 'prefs-lqt' => 'Düğümlü tartışma',
 16251+ 'lqt-merge-success' => '$1 ileti dizisini başarıyla $2 ileti dizisinin altına birleştirdiniz.',
 16252+ 'lqt-log-name' => 'Dizi haline getirilmiş tartışma günlüğü',
 16253+ 'lqt-log-header' => 'Bu günlük tartışma dizilerinde alınan eylemleri detaylandırır.',
 16254+ 'lqt-log-action-move' => '[[$1]] ileti dizisini [[$2]] sayfasından [[$3]] sayfasına taşıdı.',
 16255+ 'lqt-log-action-split' => '[[$1]] iletiti dizisini [[$3]] ileti dizisinin altından ayırdı, yeni konu: "$2"',
 16256+ 'lqt-log-action-merge-across' => '[[$1]] ileti dizisini [[$2]] ileti dizisinin altından [[$3]] ileti dizisinin altına taşıdı',
 16257+ 'lqt-log-action-merge-down' => '[[$1]] ileti dizisini [[$3]] ileti dizisinin altına birleştirdi',
 16258+ 'lqt-log-action-subjectedit' => '[[$1]] ileti dizisinin konusunu "$2" iken "$3" olarak değiştirdi',
 16259+ 'lqt-log-action-resort' => '[[$1]] ileti dizisinin sıralama düzenini değiştirdi. Sıralama anahtarı $2 iken $3 olarak değiştirildi.',
 16260+ 'lqt-preference-notify-talk' => 'İzlediğim bir ileti dizisine cevap geldiğinde bana e-posta gönder',
 16261+ 'lqt-preference-watch-threads' => 'Oluşturduğum ya da cevap verdiğim ileti dizilerini izle',
 16262+ 'prefs-lqt' => 'Dizileştirilmiş tartışma',
1615416263 'lqt-preference-display-depth' => 'Gösterilecek azami cevap derinliği:',
1615516264 'lqt-preference-display-count' => 'Gösterilecek azami cevap sayısı:',
1615616265 'lqt-preference-custom-signatures' => 'Özel kullanıcı imzalarını göster',
1615716266 'lqt-enotif-subject-reply' => '{{SITENAME}} tartışması - Cevap: $1',
16158 - 'lqt-enotif-subject-newthread' => '{{SITENAME}} tartışması - Yeni düğüm: $1',
 16267+ 'lqt-enotif-subject-newthread' => '{{SITENAME}} tartışması - Yeni ileti dizisi: $1',
1615916268 'lqt-enotif-newthread' => "Merhaba $1,
16160 -Bu {{SITENAME}} sitesinden bir bildirimdir: $5 sayfasında '$2' adlı yeni bir düğüm, $3 $4 tarihinde oluşturuldu.
 16269+Bu {{SITENAME}} sitesinden bir bildirimdir: $5 sayfasında '$2' adlı yeni bir ileti dizisi, $3 $4 tarihinde oluşturuldu.
1616116270
1616216271 Bunu <$6> adresinde görebilirsin.",
1616316272 'lqt-enotif-reply' => "Merhaba $1,
16164 -Bu {{SITENAME}} sitesinden bir bildirimdir: $5 sayfasında '$2' düğümüne yeni bir cevap $3 $4 tarihinde oluşturuldu.
 16273+Bu {{SITENAME}} sitesinden bir bildirimdir: $5 sayfasında '$2' ileti dizisine yeni bir cevap $3 $4 tarihinde oluşturuldu.
1616516274
1616616275 Bunu <$6> adresinde görebilirsin.",
1616716276 'lqt-quote-intro' => '$2 $3 tarihinde, [[User:$1|$1]] yazdı:',
@@ -16169,23 +16278,23 @@
1617016279 'lqt-search-label' => 'Arama terimleri:',
1617116280 'lqt-search-button' => 'Ara',
1617216281 'searchprofile-threads' => 'Tartışmalar',
16173 - 'searchprofile-threads-tooltip' => 'Düğümlü tartışmaları ve tartışma sayfalarını ara',
16174 - 'lqt-ajax-updated' => 'Bu düğüme yeni gönderiler var.',
 16282+ 'searchprofile-threads-tooltip' => 'Dizileştirilmiş tartışmaları ve tartışma sayfalarını ara',
 16283+ 'lqt-ajax-updated' => 'Bu ileti dizinde yeni gönderiler var.',
1617516284 'lqt-ajax-update-link' => 'Güncelle',
16176 - 'lqt-thread-show-replies' => '$1 cevap göster',
 16285+ 'lqt-thread-show-replies' => '$1 cevabı göster',
1617716286 'lqt-thread-show-more' => 'Daha fazla cevap göster',
1617816287 'lqt-thread-link-url' => 'Bağlantı URLsi:',
1617916288 'lqt-thread-link-title' => 'Vikimetin bağlantısı:',
1618016289 'lqt-thread-link-copy' => 'Panoya kopyala',
16181 - 'lqt-sign-not-necessary' => 'Gönderinizi dört tilda ile imzalamanıza gerek yoktur.
 16290+ 'lqt-sign-not-necessary' => 'Gönderinizi dört tilde ile imzalamanıza gerek yoktur.
1618216291 İmza otomatik olarak görünecektir.',
16183 - 'lqt-marked-as-read-placeholder' => 'Düğüm $1 okunmuş olarak işaretlendi.',
 16292+ 'lqt-marked-as-read-placeholder' => '$1 ileti dizisi okunmuş olarak işaretlendi.',
1618416293 'lqt-change-subject' => 'Konuyu değiştir',
1618516294 'lqt-save-subject' => 'Kaydet',
16186 - 'lqt-save-subject-failed' => 'Bu düğümün başlığını değiştirmeye çalışırken şu hata oluştu: $1',
 16295+ 'lqt-save-subject-failed' => 'Bu ileti dizisinin başlığını değiştirmeye çalışırken şu hata oluştu: $1',
1618716296 'lqt-ajax-invalid-subject' => 'Belirttiğiniz konu geçersiz, muhtemelen çok uzun olduğu için.',
1618816297 'lqt-ajax-no-subject' => 'Bir konu belirtmelisiniz.',
16189 - 'lqt-save-subject-error-unknown' => 'Bu düğümün konusunu ayarlamaya çalışırken bilinmeyen bir hata oluştu. Lütfen bunu en üst gönderide "değiştir"e tıklayarak yapmaya deneyin.',
 16298+ 'lqt-save-subject-error-unknown' => 'Bu ileti dizisinin konusunu ayarlamaya çalışırken bilinmeyen bir hata oluştu. Lütfen bunu en üst gönderide "değiştir"e tıklayarak yapmaya deneyin.',
1619016299 'lqt-cancel-subject-edit' => 'İptal',
1619116300 'lqt-drag-activate' => 'Yeni yere sürükle',
1619216301 'lqt-drag-drop-zone' => 'Buraya bırak',
@@ -16201,27 +16310,27 @@
1620216311 'lqt-preview-signature' => '(ön izleme)',
1620316312 'lqt-feed-title-all' => '{{SITENAME}} — Yeni gönderiler',
1620416313 'lqt-feed-title-all-from' => '{{SITENAME}} — $1 sayfaları için yeni gönderiler',
16205 - 'lqt-feed-title-new-threads' => '{{SITENAME}} — Yeni düğümler',
16206 - 'lqt-feed-title-new-threads-from' => '{{SITENAME}} — $1 sayfaları için yeni düğümler',
 16314+ 'lqt-feed-title-new-threads' => '{{SITENAME}} — Yeni ileti dizileri',
 16315+ 'lqt-feed-title-new-threads-from' => '{{SITENAME}} — $1 sayfaları için yeni ileti dizileri',
1620716316 'lqt-feed-title-replies' => '{{SITENAME}} — Cevaplar',
1620816317 'lqt-feed-title-replies-from' => '{{SITENAME}} — $1 sayfaları için cevaplar',
16209 - 'lqt-feed-new-thread-intro' => '$1 sayfasında yeni düğüm $2 tarafından gönderildi',
16210 - 'lqt-feed-reply-intro' => '$3 düğümüne cevap ($1 sayfasında) $2 tarafından gönderildi',
 16318+ 'lqt-feed-new-thread-intro' => '$1 sayfasına $2 tarafından yeni bir ileti dizisi gönderildi',
 16319+ 'lqt-feed-reply-intro' => '$3 ileti dizisine cevap ($1 sayfasında) $2 tarafından gönderildi',
1621116320 'lqt-newmessages-n' => 'Yeni mesaj ($1)',
1621216321 'lqt_newmessages' => 'Yeni iletiler',
1621316322 'lqt_newmessages-title' => 'Yeni mesaj',
16214 - 'lqt-newpost-summary' => 'Yeni düğüm: $1',
16215 - 'lqt-reply-summary' => '[[$2|$1]] düğümüne cevap ver',
 16323+ 'lqt-newpost-summary' => 'Yeni ileti dizisi: $1',
 16324+ 'lqt-reply-summary' => '[[$2|$1]] ileti dizisine cevap ver',
1621616325 'lqt-talkpage-history-title' => 'Tartışma sayfası geçmişi',
1621716326 'lqt-talkpage-history-subtitle' => '$1 için',
1621816327 'lqt-talkpage-history-tab' => 'Başlık',
1621916328 'restriction-reply' => 'Cevap gönder',
16220 - 'restriction-newthread' => 'Yeni mesaj dizisi postala',
 16329+ 'restriction-newthread' => 'Yeni ileti dizisi postala',
1622116330 'lqt-protected-reply-thread' => 'Bu diziye mesaj ekleyemezsiniz, zira yeni gönderilere karşı korumaya alınmış.',
1622216331 'lqt-protected-reply-talkpage' => 'Bu diziye mesaj ekleyemezsiniz, zira bu tartışma sayfası mesaj dizilerine cevap yazılmaması için korumaya alınmış durumda.',
1622316332 'lqt-protected-newthread' => 'Bu tartışma sayfasına yeni mesaj dizileri ekleyemezsiniz, zira yeni mesaj dizisi eklemelerine karşı korumaya alınmış durumda.',
16224 - 'lqt-edit-bump' => 'Bu düğümü çarp',
16225 - 'lqt-edit-bump-tooltip' => 'Bu düğümü, tartışma sayfasının en üstüne taşı',
 16333+ 'lqt-edit-bump' => 'Bu ilet dizisini içindekiler listesinde üste taşı',
 16334+ 'lqt-edit-bump-tooltip' => 'Bu ileti dizisini, tartışma sayfasının en üstüne taşı',
1622616335 'lqt-historicalrevision-error' => 'Seçtiğiniz revizyon bozuk, ve görüntülenemez.',
1622716336 'lqt-reply-subpage' => 'cevap',
1622816337 );
@@ -17044,6 +17153,7 @@
1704517154 'lqt-drag-setsortkey' => 'Điều chỉnh vị trí của bài trên trang',
1704617155 'lqt-drag-bump' => 'Di chuyển bài lên đầu trang thảo luận',
1704717156 'lqt-drag-save' => 'Xác nhận',
 17157+ 'lqt-drag-title' => 'Xác nhận kéo',
1704817158 'lqt-drag-reason' => 'Lý do:',
1704917159 'lqt-drag-subject' => 'Chủ đề cho luồng mới:',
1705017160 'lqt-edit-signature' => '(sửa chữ ký)',
@@ -17086,6 +17196,12 @@
1708717197 'lqt_newmessages' => 'Nuns Nulik',
1708817198 );
1708917199
 17200+/** Wu (吴语) */
 17201+$messages['wuu'] = array(
 17202+ 'lqt-cancel-subject-edit' => '取消',
 17203+ 'lqt-drag-reason' => '理由:',
 17204+);
 17205+
1709017206 /** Kalmyk (Хальмг)
1709117207 * @author Huuchin
1709217208 */
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/LqtFunctions.php
@@ -38,8 +38,6 @@
3939 }
4040
4141 function lqtSetupParserFunctions( &$parser ) {
42 - global $wgLiquidThreadsAllowUserControl;
43 -
4442 $parser->setFunctionHook(
4543 'useliquidthreads',
4644 array( 'LqtParserFunctions', 'useLiquidThreads' )
Index: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha/compat/HTMLForm.php
@@ -89,8 +89,6 @@
9090 }
9191
9292 function show() {
93 - $html = '';
94 -
9593 self::addJS();
9694
9795 // Load data from the request.
@@ -541,8 +539,6 @@
542540 return wfMsgExt( 'htmlform-int-invalid', 'parse' );
543541 }
544542
545 - $in_range = true;
546 -
547543 if ( isset( $this->mParams['min'] ) ) {
548544 $min = $this->mParams['min'];
549545 if ( $min > $value )
Property changes on: branches/wmf/1.16wmf4/extensions/LiquidThreads_alpha
___________________________________________________________________
Modified: svn:mergeinfo
550546 Merged /trunk/extensions/LiquidThreads:r68807-70084

Status & tagging log