r12060 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r12059‎ | r12060 | r12061 >
Date:13:07, 11 December 2005
Author:magnus_manske
Status:old
Tags:
Comment:
New toys, still much to do
Modified paths:
  • /trunk/extensions/Tasks/Tasks.php (modified) (history)

Diff [purge]

Index: trunk/extensions/Tasks/Tasks.php
@@ -26,7 +26,6 @@
2727 ) TYPE=InnoDB;
2828
2929 Known bugs:
30 -* setPageTitle in page_management doesn't work for some reason
3130 * Both the "article" and "tasks" tabs are displayed as active when viewing the "tasks" tab
3231 * sidebar task list for Monobook only?
3332
@@ -45,14 +44,18 @@
4645 $wgExtensionFunctions[] = 'wfTasksExtension' ;
4746
4847 # Misc hooks
 48+$wgHooks['SkinTemplatePreventOtherActiveTabs'][] = 'wfTasksExtensionPreventOtherActiveTabs' ;
4949 $wgHooks['SkinTemplateTabs'][] = 'wfTasksExtensionTab' ;
5050 $wgHooks['UnknownAction'][] = 'wfTasksExtensionAction' ;
5151 $wgHooks['ArticleSaveComplete'][] = 'wfTasksExtensionArticleSaveComplete' ;
5252 $wgHooks['ArticleDeleteComplete'][] = 'wfTasksExtensionArticleDeleteComplete' ;
5353 $wgHooks['SpecialMovepageAfterMove'][] = 'wfTasksExtensionAfterMove' ;
5454 $wgHooks['MonoBookTemplateToolboxEnd'][] = 'wfTasksExtensionAfterToolbox' ;
 55+$wgHooks['ArticleViewHeader'][] = 'wfTaskExtensionHeaderHook' ;
 56+$wgHooks['EditPage::showEditForm:initial'][] = 'wfTaskExtensionEditFormInitialHook' ;
5557
5658
 59+
5760 # BEGIN logging functions
5861 $wgHooks['LogPageValidTypes'][] = 'wfTasksAddLogType';
5962 $wgHooks['LogPageLogName'][] = 'wfTasksAddLogName';
@@ -94,7 +97,7 @@
9598 $wgMessageCache->addMessages(
9699 array(
97100 'tasks_tab' => 'Tasks',
98 - 'tasks_title' => "Tasks for $1",
 101+ 'tasks_title' => "Tasks for \"$1\"",
99102 'tasks_form_new' => "Create new task",
100103 'tasks_form_comment' => "Comment",
101104 'tasks_error1' => "Task was not created: there is already such a task!<br/>",
@@ -111,9 +114,11 @@
112115 'tasks_created_by' => "Created by $1",
113116 'tasks_discussion_page_link' => "Task discussion page",
114117 'tasks_closedby' => "Closed by $1",
 118+ 'tasks_assigned_myself_log' => "Self-assignment of task \"$1\"",
 119+ 'tasks_discussion_page_for' => "This task is for the page \"$1\". The list of all tasks for that page is $2.",
 120+ 'tasks_sidebar_title' => "Open tasks",
 121+ 'tasks_here' => "here",
115122
116 - 'tasks_sidebar_title' => "Tasks",
117 -
118123 'tasks_task_types' => "1:cleanup:Cleanup|2:wikify:Wikify|3:rewrite:Rewrite|4:delete:Delete|5:create:Create|6:write:Write",
119124 'tasks_status_open' => "Open" ,
120125 'tasks_status_assigned' => "Assigned" ,
@@ -140,6 +145,48 @@
141146 # Hook functions
142147
143148 /**
 149+* Display header on "Task:" pages (dummy hook for edit pages)
 150+*/
 151+function wfTaskExtensionEditFormInitialHook ( &$editPage ) {
 152+ global $wgArticle ;
 153+ wfTaskExtensionHeaderHook ( $wgArticle ) ;
 154+}
 155+
 156+/**
 157+* Display header on "Task:" pages
 158+*/
 159+function wfTaskExtensionHeaderHook ( &$article ) {
 160+ global $wgTasksNamespace , $wgOut , $wgUser ;
 161+ $title = $article->getTitle() ;
 162+ $ns = $title->getNamespace() ;
 163+ if ( $ns != $wgTasksNamespace AND $ns != $wgTasksNamespace+1 ) return ; # Doesn't concern us
 164+
 165+ $subtitle = "" ;
 166+ $taskid = $title->getText() ;
 167+ $taskid = explode ( "(" , $taskid ) ;
 168+ $taskid = explode ( ")" , array_pop ( $taskid ) ) ;
 169+ $taskid = array_shift ( $taskid ) ;
 170+
 171+ wfTasksAddCache() ;
 172+ $st = new SpecialTasks ;
 173+ $task = "" ;
 174+ $page_title = $st->get_title_from_task ( $taskid , &$task ) ;
 175+ if ( $task == "" ) return ; # No such task
 176+
 177+ $sk =& $wgUser->getSkin() ;
 178+ $link1 = $sk->makeLink ( $page_title->getPrefixedText() ) ;
 179+ $link2 = $sk->makeLink ( $page_title->getPrefixedText() , wfMsg('tasks_here') , "action=tasks" ) ;
 180+ $subtitle .= wfMsg ( 'tasks_discussion_page_for' , $link1 , $link2 ) ;
 181+ $subtitle .= "<br/><table border='1' cellspacing='1' cellpadding='2'>" .
 182+ "<tr>" . wfMsg('tasks_existing_table_header') . "</tr>" ;
 183+ $subtitle .= $st->get_task_table_row ( $task , $page_title , true ) ;
 184+ $subtitle .= "</table>" ;
 185+
 186+ $subtitle = $wgOut->getSubtitle() . "<br/>" . $subtitle ;
 187+ $wgOut->setSubtitle ( $subtitle ) ;
 188+}
 189+
 190+/**
144191 * Display in sidebar
145192 */
146193 function wfTasksExtensionAfterToolbox (&$tpl) {
@@ -219,7 +266,7 @@
220267 $tasks = $st->get_tasks_for_page ( $t , true ) ;
221268 foreach ( $tasks AS $task ) {
222269 if ( !$st->is_creation_task ( $task->task_type ) ) continue ; # Not a "create" task
223 - if ( $sk->is_closed ( $task->task_status ) ) continue ; # Not open
 270+ if ( $st->is_closed ( $task->task_status ) ) continue ; # Not open
224271 $st->change_task_status ( $task->task_id , 3 ) ; # "Closed"
225272 $t->mArticleID = $new_id ;
226273 $st->set_new_article_id ( $t ) ;
@@ -229,6 +276,12 @@
230277 return false ;
231278 }
232279
 280+# Prevents other tabs shown as active
 281+function wfTasksExtensionPreventOtherActiveTabs ( &$skin , &$prevent_active_tabs ) {
 282+ global $action ;
 283+ $prevent_active_tabs = $action == "tasks" ; ;
 284+}
 285+
233286 /**
234287 * Show the tab
235288 */
@@ -454,8 +507,6 @@
455508
456509 function get_task_discussion_page ( &$task ) {
457510 global $wgExtraNamespaces , $wgTasksNamespace ;
458 - #$tdp = substr ( $title->getPrefixedText() , 0 , 200 ) ;
459 - #$tdp = $wgExtraNamespaces[$wgTasksNamespace] . ":" . $ttype . ' "' . $tdp . '" (' . $task->task_id . ")" ;
460511 $ttype = $this->get_type_text ( $this->task_types[$task->task_type]) ;
461512 $tdp = $wgExtraNamespaces[$wgTasksNamespace] . ":" . $ttype . ' (' . $task->task_id . ")" ;
462513 return $tdp ;
@@ -480,7 +531,7 @@
481532 /**
482533 * Checks if there's a "mode" set in the URL of the current page (performs changes on tasks, like assigning or closing them)
483534 */
484 - function check_mode ( &$title ) {
 535+ function check_mode ( $title ) {
485536 global $wgUser , $wgRequest ;
486537 $mode = $wgRequest->getText('mode', "") ;
487538 $taskid = $wgRequest->getText('taskid', "") ;
@@ -499,7 +550,11 @@
500551 ),
501552 $conditions,
502553 $fname );
503 -
 554+
 555+ $title = $this->get_title_from_task ( $taskid , $task ) ;
 556+ $act = wfMsg ( 'tasks_assigned_myself_log' , $this->get_type_text ( $this->task_types[$task->task_type] ) ) ;
 557+ $log = new LogPage( 'tasks' );
 558+ $log->addEntry( 'tasks', $title , $act );
504559 } else if ( $mode == 'close' || $mode == 'wontfix' || $mode == 'reopen' ) {
505560 if ( $mode == 'reopen' ) $mode = "open" ;
506561 if ( $mode == 'close' ) $mode = "closed" ;
@@ -548,7 +603,7 @@
549604
550605 # Logging
551606 $title = $this->get_title_from_task ( $taskid , $task ) ;
552 - $act = wfMsg ( 'tasks_action_' . $this->status_types[$new_status] , $this->task_types[$task->task_type] ) ;
 607+ $act = wfMsg ( 'tasks_action_' . $this->status_types[$new_status] , $this->get_type_text ( $this->task_types[$task->task_type] ) ) ;
553608 $log = new LogPage( 'tasks' );
554609 $log->addEntry( 'tasks', $title , $act );
555610 }
@@ -561,8 +616,9 @@
562617 $ret = array () ;
563618 foreach ( $tasks AS $task ) {
564619 if ( $this->is_open ( $task->task_status ) )
565 - $ret[] = $task ;
 620+ $ret[$this->get_type_text($this->task_types[$task->task_type])] = $task ;
566621 }
 622+ ksort ( $ret ) ;
567623 return $ret ;
568624 }
569625
@@ -570,6 +626,19 @@
571627 * Returns the title object for a task, and the task data through reference
572628 */
573629 function get_title_from_task ( $task_id , &$task ) {
 630+ $task = $this->get_task_from_id ( $task_id ) ;
 631+ if ( $task->task_page_id == 0 ) { # Non-existing page
 632+ $title = Title::newFromDBkey ( $task->task_page_title ) ;
 633+ } else { # Existing page
 634+ $title = Title::newFromID ( $task->task_page_id ) ;
 635+ }
 636+ return $title ;
 637+ }
 638+
 639+ /**
 640+ * Returns a single task by its ID
 641+ */
 642+ function get_task_from_id ( $task_id ) {
574643 $dbr =& wfGetDB( DB_SLAVE );
575644 $res = $dbr->select(
576645 /* FROM */ 'tasks',
@@ -578,12 +647,7 @@
579648 );
580649 $task = $dbr->fetchObject( $res ) ;
581650 $dbr->freeResult($res);
582 - if ( $task->task_page_id == 0 ) { # Non-existing page
583 - $title = Title::newFromDBkey ( $task->task_page_title ) ;
584 - } else { # Existing page
585 - $title = Title::newFromID ( $task->task_page_id ) ;
586 - }
587 - return $title ;
 651+ return $task ;
588652 }
589653
590654 /**
@@ -631,7 +695,7 @@
632696 global $wgOut , $action ;
633697 $out = "" ;
634698 $tasks = array() ;
635 - $wgOut->setPageTitle ( wfMsg('tasks_title',$title->getPrefixedText()) ) ; # Doesn't work for some reason...
 699+ $wgOut->setSubtitle ( wfMsg('tasks_title',$title->getPrefixedText()) ) ;
636700
637701 # Create from form
638702 $out .= $this->create_from_form ( $title ) ;

Status & tagging log