Index: trunk/extensions/DiscussionThreading/DiscussionThreading.php |
— | — | @@ -5,6 +5,7 @@ |
6 | 6 | * @author Jack D. Pond <jack.pond@psitex.com> |
7 | 7 | * @addtogroup Extensions |
8 | 8 | * @copyright 2007 Jack D. pond |
| 9 | + * @url http://www.mediawiki.org/wiki/Manual:Extensions |
9 | 10 | * @licence GNU General Public Licence 2.0 or later |
10 | 11 | */ |
11 | 12 | |
— | — | @@ -16,8 +17,8 @@ |
17 | 18 | $wgExtensionFunctions[] = 'efDiscussionThreadSetup'; |
18 | 19 | $wgExtensionCredits['other'][] = array( |
19 | 20 | 'name' => 'DiscussionThreading', |
20 | | - 'author' => 'Jack D. Pond', |
21 | | - 'version' => '1.2', |
| 21 | + 'author' => 'Jack D. Pond, Daniel Brice', |
| 22 | + 'version' => '1.3', |
22 | 23 | 'url' => 'http://www.mediawiki.org/wiki/Extension:DiscussionThreading', |
23 | 24 | 'description' => 'Add Threading to discussion (talk) pages', |
24 | 25 | 'descriptionmsg' => 'discussionthreading-desc', |
— | — | @@ -39,10 +40,16 @@ |
40 | 41 | $wgHooks['AlternateEdit'][] = 'efDiscussionThreadEdit'; |
41 | 42 | |
42 | 43 | /** |
43 | | - * Initial setup, add .i18n. messages from $IP/extensions/DiscussionThreading.i18n.php |
| 44 | + * Initial setup, add .i18n. messages from $IP/extensions/DiscussionThreading/DiscussionThreading.i18n.php |
44 | 45 | */ |
45 | 46 | function efDiscussionThreadSetup() { |
46 | | - wfLoadExtensionMessages( 'DiscussionThreading' ); |
| 47 | + global $wgVersion; |
| 48 | + $xversion = explode(".",$wgVersion); |
| 49 | + if ($xversion[0] <= "1" && $xversion[1] <= "11") { |
| 50 | + global $wgMessageCache, $messages; |
| 51 | + foreach( $messages as $lang => $LangMsg ) |
| 52 | + $wgMessageCache->addMessages( $LangMsg, $lang ); |
| 53 | + } else wfLoadExtensionMessages( 'DiscussionThreading' ); |
47 | 54 | } |
48 | 55 | |
49 | 56 | /** |
— | — | @@ -140,6 +147,29 @@ |
141 | 148 | } else { |
142 | 149 | $text = $text." -- ~~~~<br>\n\n"; |
143 | 150 | } |
| 151 | + // Add an appropriate number of colons (:) to indent the body. |
| 152 | + // Include replace me text, so the user knows where to reply |
| 153 | + $replaceMeText = " Replace this text with your reply"; |
| 154 | + $text .= "\n\n".str_repeat(":",strlen($matches[1])-1).$replaceMeText; |
| 155 | + // Insert javascript hook that will select the replace me text |
| 156 | + global $wgOut; |
| 157 | + $wgOut->addScript("<script type=\"text/javascript\"> |
| 158 | + function efDiscussionThread(){ |
| 159 | + var ctrl = document.editform.wpTextbox1; |
| 160 | + if (ctrl.setSelectionRange) { |
| 161 | + ctrl.focus(); |
| 162 | + var end = ctrl.value.length; |
| 163 | + ctrl.setSelectionRange(end-".strlen($replaceMeText).",end-1); |
| 164 | + ctrl.scrollTop = ctrl.scrollHeight; |
| 165 | + } else if (ctrl.createTextRange) { |
| 166 | + var range = ctrl.createTextRange(); |
| 167 | + range.collapse(false); |
| 168 | + range.moveStart('character', -".strlen($replaceMeText)."); |
| 169 | + range.select(); |
| 170 | + } |
| 171 | + } |
| 172 | + addOnloadHook(efDiscussionThread); |
| 173 | + </script>"); |
144 | 174 | $efform->replyadded = true; |
145 | 175 | $efform->textbox1 = $text; |
146 | 176 | } |
Index: trunk/extensions/DiscussionThreading/README |
— | — | @@ -1,355 +1,76 @@ |
2 | | -'''Title: ''' Modify Discussion Functionality to be more threadlike |
| 2 | +'[[Extension:DiscussionThreading|See formal extension description]] |
| 3 | +== Release Notes == |
| 4 | +* 1.3 - Added Dan Brice's code that will automatically insert indentation (so comment body is appropriately indented) and patches for compatibility with MW Versions Prior to 1.11 |
| 5 | +* 1.2 - [[User:siebrand|siebrand]] updated to use current extension standards (THANKS!) |
| 6 | +* 1.1 - Updated to be forward compatible with release 1.11, bug fix |
| 7 | +** Rob Church made mods that simplifies, beautifies, etc. the hook which is included in the next release, needed to change extension to make consistent |
| 8 | +** Fixed bug where I forgot to declare $wgSectionThreadingOn as a global in one subroutine - caused a php error to display |
| 9 | +** Need to download both the patches and the extension - they must be updated as a set. |
| 10 | +* 1.0 |
| 11 | +** greatly reduces patching - completely dependent on hooks, although needs 2 hooks in linker.php to execute |
| 12 | +** Added [new] link in section header that starts a new thread at the bottom |
| 13 | +** Defaults to add new comment when discussion page first entered |
| 14 | +** If previous patches applied, EditPage.php can be reverted to appropriate release version - patches no longer required |
| 15 | +* Between Version 0.0 and 0.1, changed to use the name 'DiscussionThreading' instead of the 'AddCommentSection'. The comment was vestigial and not fully descriptive. |
3 | 16 | |
4 | | -'''Description:''' |
| 17 | +== What can this extension do? == |
5 | 18 | |
6 | | -[[Extension:DiscussionThreading|See formal extension description]] |
| 19 | +MediaWiki supports a discussion model called talk pages. These are regular wiki pages whose only distinction is that they are associated with a content page. That is, these two types of pages are always linked to each other, a content page and a talk page. Since talk pages are regular wiki pages, they suffer many usability shortcomings. This extension addresses some of these shortcomings by customizing talk pages including: |
7 | 20 | |
8 | | -The thread-like nature of discussions is highly valuable. This extension is a quasi threading adaption for the discussion feature that does the following: |
| 21 | +* '''Minimal threading''' - Subject headings are used to identify what discussion a particular comment belongs to. These headings are not dated and cannot be sorted. |
| 22 | +* '''Users explicitly sign their comments''' - signatures are automatically added to the discussions. |
| 23 | +* '''Transparent response mechanism''' - users can reply to existing comments or create new ones using the [new][edit][reply] |
| 24 | +* '''Conversation tracking''' - the [reply] allows users to specify existing objects (sections) in the system, and effectively track comments one has left, responses received (regardless of the location), and so on. |
9 | 25 | |
10 | | -# Adds a <nowiki>[new]</nowiki> link onto the header that creates a new comment on the page when used. |
11 | | -# Adds a <nowiki>[reply]</nowiki> link onto the header that creates a reply to that section. |
12 | | -# Automatically adds a signature in at the top of the section - preferably in the header bar to show up in TOC |
13 | | -# Enters the discussion page in the add comment mode (and automatic signature) when new discussion page made |
| 26 | +For a more complete analysis, check Erik M�ller's [http://www.wikieducator.org/WikiEducator_roadmap/Improve_discussion_functionality article], from which the above was liberally plagiarized. |
14 | 27 | |
15 | | -This requires adding 2 new hooks to Linker.php - which requires manual patching. The extension itself includes multiple hooks and the initial setup. |
| 28 | +When a new post is created, the extension automatically tags with user information and posting date. Much like a threaded discussion listserv, it allows response to individual posts and organizes. Still allows user standard user editing. Tags do not appear on article or other pages, limited to discussion and 're:' is automatically added to replies. |
16 | 29 | |
17 | | -== Installation Instructions == |
18 | | - |
19 | | -Will absolutely not work below 1.6.0, requires features added with that release. |
20 | | - |
21 | | -The "reply" feature requires a new parameter passed to the EditPage. This parameter is "replyto=yes" when the user is replying to a previous post. |
22 | | - |
23 | | -You can apply this extension either by downloading and copying the files into your wiki, or by manual processes below. The referenced packages have the files necessary to implement without editing patches, but only for the following versions. : |
24 | | - |
25 | | -* REL1_10 |
26 | | -* REL1_9_3 |
27 | | - |
28 | | -If you do not have one of these versions, you must [[Extension:DiscussionThread_Article#Manual_Patching_and_Installation | manually patch]]. |
29 | | - |
30 | | -=== Download and Install Instructions === |
31 | | - |
32 | | -You can download the extension and already patched files from: |
33 | | - |
34 | | -* [http://wiki.montcopa.org/PublicDownloads/DiscussionThreading.zip Windows Zip Package] |
35 | | -* [http://wiki.montcopa.org/PublicDownloads/DiscussionThreading.tar TAR Package] |
36 | | - |
37 | | -# Create a new directory extensions/DiscussionThreading |
38 | | -# Copy the files DiscussionThreading.php and DiscussionThreading.i18n.php into extensions/DiscussionThreading |
39 | | -# Select the appropriate Release Directory ('''NOTE: DO NOT USE THESE UNLESS YOU HAVE THE EXACT RELEASE''') and perform ONLY ONE of the following two steps: |
40 | | -## Apply the patch file to your existing includes/linker.php file |
41 | | -## Copy the included linker.php file into your includes directory, overwriting the existing version (Note: If you have applied other patches to this file they will be overwritten). |
42 | | -# Patch localsettings.php by adding the following near other require_once or at the end before the close statement: |
43 | | -<pre>require_once("$IP/extensions/DiscussionThreading/DiscussionThreading.php");</pre> |
44 | | - |
45 | | -If you have executed this properly, you will have the following: |
46 | | - |
47 | | -* DiscussionThreading.php and DiscussionThreading.i18n.php moved into $IP/extensions/DiscussionThreading/DiscussionThreading.php |
48 | | -* Either patched Linker.php or the loaded Linker.php from the EXACT distribution downloaded release in $IP/includes/ |
49 | | -* extensions/DiscussionThreading/DiscussionThreading.php executed from localsettings.php |
50 | | - |
51 | | -=== Manual Patching and Installation === |
52 | | -Details are below, but these are required steps: |
53 | | - |
54 | | -# Create a new directory extensions/DiscussionThreading |
55 | | -# Create a new file extensions/DiscussionThreading/DiscussionThreading.php and copy and paste the below code |
56 | | -# Create a new file extensions/DiscussionThreading/DiscussionThreading.i18n.php and copy and paste the below code |
57 | | -# Patch Linker.php according to below instructions |
58 | | -# Patch localsettings.php by adding the following near other require_once or at the end before the close statement: |
59 | | -<pre>require_once("$IP/extensions/DiscussionThreading/DiscussionThreading.php");</pre> |
60 | | - |
61 | | -There is something very funky about flushing the PHP compiled cache. I was only able to get the changes made in the Linker.php file to take effect by going to a discussion page while I was logged on as an administrator on the patched server and using a browser local to that machine (press the + tab). Somehow, this caused the .php files to recompile and activate for everyone. |
62 | | - |
63 | | -== Patches Required == |
64 | | - |
65 | | -To do this, have to patch the following (instructions are for 1.10.0, future or past releases will, of course vary with line numbers and locations): |
66 | | - |
67 | | -===Patches to Linker.php=== |
68 | | - |
69 | | -====Modified linker.php editSectionLinkForOther (line 985 in REL1_10) ==== |
| 30 | +Once installed it can be enabled or disabled using the global variable below the inclusion (Enabled by default with the inclusion): |
70 | 31 | <pre> |
71 | | - public function editSectionLinkForOther( $title, $section ) { |
72 | | - global $wgContLang; |
73 | | - |
74 | | - $title = Title::newFromText( $title ); |
75 | | - $editurl = '§ion='.$section; |
76 | | - $url = $this->makeKnownLinkObj( $title, wfMsg('editsection'), 'action=edit'.$editurl ); |
77 | | -### Modifications Here |
78 | | -### return "<span class=\"editsection\">[".$url."]</span>"; |
79 | | - $result = null; |
80 | | - wfRunHooks( 'editSectionLinkForOther', array( &$this, $title, $section , $url, &$result) ); |
81 | | - if ( $result == null ) { |
82 | | - return "<span class=\"editsection\">[".$url."]</span>"; |
83 | | - } else { |
84 | | - return ($result); |
85 | | - } |
86 | | -### |
87 | | - } |
| 32 | +$wgSectionThreadingOn = True; /* Enabled */ |
88 | 33 | </pre> |
89 | | -====Modified linker.php editSectionLink (line 1004 in REL1_10) ==== |
90 | | -<pre> |
91 | | - public function editSectionLink( $nt, $section, $hint='' ) { |
92 | | - global $wgContLang; |
93 | 34 | |
94 | | - $editurl = '§ion='.$section; |
95 | | - $hint = ( $hint=='' ) ? '' : ' title="' . wfMsgHtml( 'editsectionhint', htmlspecialchars( $hint ) ) . '"'; |
96 | | - $url = $this->makeKnownLinkObj( $nt, wfMsg('editsection'), 'action=edit'.$editurl, '', '', '', $hint ); |
97 | | -### Modifications Here |
98 | | -### return "<span class=\"editsection\">[".$url."]</span>"; |
99 | | - $result = null; |
100 | | - wfRunHooks( 'editSectionLink', array( &$this, $nt, $section, $hint='', $url , &$result) ); |
101 | | - if ( $result == null ) { |
102 | | - return "<span class=\"editsection\">[".$url."]</span>"; |
103 | | - } else { |
104 | | - return ($result); |
105 | | - } |
106 | | -### |
107 | | - } |
108 | | -</pre> |
| 35 | +== Announcements == |
| 36 | +* Will be incorporating [[User:Danbrice|Danbrice's]] [[Extension_talk:DiscussionThreading#Re:_CSS_tip_to_make_reply_body_match_title.3F_--Danbrice_05:02.2C_29_July_2008_.28UTC.29|automatic indent revisions]] in as soon as I upgrade a server to 1.13 and can test it. |
| 37 | +* Finally got around to putting into SVN and updated instructions |
| 38 | +* '''GREAT NEWS!''' The enhancement request [http://bugzilla.wikimedia.org/show_bug.cgi?id=10139 Allow Developers to add links to edit sections via hooks] has been made. This means no patches are required to install this extension if you are using REL1_11 or greater. |
109 | 39 | |
110 | | -== DiscussionThreading Extension == |
| 40 | +== Usage == |
111 | 41 | |
112 | | -extensions/DiscussionThreading.php |
| 42 | +Using Wikis for project management and collaboration. Many of the older users were much more comfortable with the listserv approach. This is a transitional path for them. |
113 | 43 | |
114 | | -This extension implements a discussion threading process. This threading will only be seen on the talk pages, unless explicity invoked in the command line. |
| 44 | +== Installation == |
115 | 45 | |
116 | | -It adds a <nowiki>[reply]</nowiki> link on the header line. Each time a new posting is entered or a posting is replied to, the comment will automatically be tagged (and appear in the TOC too). Of course direct editing can occur, but this really makes it a lot easier to organize discussions in a threading view that most are familiar with. |
| 46 | +Installation is straightforward for REL1_11 and greater because hooks were added in Linker.php that eliminated the need for patching. However, if you are using a version below REL1_11, you will have to patch as described in the [[Extension:DiscussionThreading/doc#Installation_Instructions|installation instructions]]. |
117 | 47 | |
118 | | -To do: |
119 | | -# get someone who knows regex to clean up the parsing of the subject line |
120 | | -# Assess to see if there's an easier way to do this |
| 48 | +See [http://www.mediawiki.org/wiki/Extension:DiscussionThreading/doc#DiscussionThreading_Extension_Download_and_Installation Installation Instructions] |
121 | 49 | |
122 | | -<pre> |
123 | | -<?php |
| 50 | +== Parameters == |
124 | 51 | |
125 | | -/** |
126 | | - * Extension to provide discussion threading similar to a listserv archive |
127 | | - * |
128 | | - * @author Jack D. Pond <jack.pond@psitex.com> |
129 | | - * @addtogroup Extensions |
130 | | - * @copyright � 2007 Jack D. pond |
131 | | - * @licence GNU General Public Licence 2.0 or later |
132 | | - */ |
| 52 | +== Changes to LocalSettings.php == |
133 | 53 | |
134 | | -if( defined( 'MEDIAWIKI' ) ) { |
| 54 | +<source lang="php">require_once("$IP/extensions/DiscussionThreading/DiscussionThreading.php");</source> |
135 | 55 | |
| 56 | +=== Code === |
136 | 57 | |
137 | | -# Internationalisation file |
138 | | - require_once( "$IP/extensions/DiscussionThreading/DiscussionThreading.i18n.php" ); |
| 58 | +Has been fairly comprehensively tested. |
| 59 | +Has the following hooks: |
139 | 60 | |
140 | | - $wgExtensionFunctions[] = 'efDiscussionThreadSetup'; |
141 | | - $wgExtensionCredits['other'][] = array( |
142 | | - 'name' => 'DiscussionThreading', |
143 | | - 'author' => 'Jack D. Pond', |
144 | | - 'url' => 'http://www.mediawiki.org/wiki/Extension:DiscussionThreading', |
145 | | - 'description' => 'Add Threading to discussion (talk) pages' ); |
| 61 | +<pre> |
146 | 62 | |
147 | | - /** |
148 | | - * Set up hooks for discussion threading |
149 | | - * |
150 | | - * @param $wgSectionThreadingOn global logical variable to activate threading |
151 | | - */ |
152 | | - |
153 | | - |
154 | | - global $wgSectionThreadingOn; |
155 | | - $wgSectionThreadingOn = True; |
156 | | - |
157 | 63 | $wgHooks['EditPage::showEditForm:initial'][] = 'efDiscussionThread'; |
158 | 64 | $wgHooks['EditPage::attemptSave'][] = 'efStampReply'; |
159 | 65 | $wgHooks['EditPage::showEditForm:initial'][] = 'efDiscussionThreadEdit'; |
| 66 | +### custom created hooks in linker.php - no longer custom in release >1.11 |
160 | 67 | $wgHooks['editSectionLinkForOther'][] = 'efDiscussionLink4other'; |
161 | 68 | $wgHooks['editSectionLink'][] = 'efDiscussionLink'; |
| 69 | +### |
162 | 70 | $wgHooks['AlternateEdit'][] = 'efDiscussionThreadEdit'; |
163 | | - |
164 | | - |
165 | | - |
166 | | - |
167 | | - /** |
168 | | - * Initial setup, add .i18n. messages from $IP/extensions/DiscussionThreading.i18n.php |
169 | | - */ |
170 | | - function efDiscussionThreadSetup() { |
171 | | - global $wgMessageCache, $wgDiscussionThreadMessages; |
172 | | - |
173 | | - foreach( $wgDiscussionThreadMessages as $lang => $messages ) |
174 | | - $wgMessageCache->addMessages( $messages, $lang ); |
175 | | - } |
176 | | - /** |
177 | | - * This function creates a linkobject for the editSectionLinkForOther function in linker |
178 | | - * |
179 | | - * @param $callobj Article object. |
180 | | - * @param $title Title object. |
181 | | - * @param $section Integer: section number. |
182 | | - * @param $hint Link String: title, or default if omitted or empty |
183 | | - * @param $url Link String: for edit url |
184 | | - * @param $result String: Returns the section [new][edit][reply] html if in a talk page - otherwise whatever came in with |
185 | | - * @return true |
186 | | - */ |
187 | | - |
188 | | - function efDiscussionLink4other ($callobj, $title, $section , $url , &$result) |
189 | | - { |
190 | | - if($wgSectionThreadingOn && $title->isTalkPage() ) { |
191 | | - $commenturl = '§ion='.$section.'&replyto=yes'; |
192 | | - $curl = $callobj->makeKnownLinkObj( $title, wfMsg('replysection'), 'action=edit'.$commenturl ); |
193 | | - $newthreadurl = '§ion=new'; |
194 | | - $nurl = $callobj->makeKnownLinkObj( $nt, wfMsg('threadnewsection'), 'action=edit'.$newthreadurl ); |
195 | | - $result = "<span class=\"editsection\">[".$nurl."][".$url."][".$curl."]</span>"; |
196 | | - } |
197 | | - return (true); |
198 | | - } |
199 | | - |
200 | | - /** |
201 | | - * This function creates a linkobject for the editSectionLink function in linker |
202 | | - * |
203 | | - * @param $callobj Article object. |
204 | | - * @param $nt Title object. |
205 | | - * @param $section Integer: section number. |
206 | | - * @param $hint Link String: title, or default if omitted or empty |
207 | | - * @param $url Link String: for edit url |
208 | | - * @param $result String: Returns the section [new][edit][reply] html if in a talk page - otherwise whatever came in with |
209 | | - * @return true |
210 | | - */ |
211 | | - |
212 | | - function efDiscussionLink ($callobj, $nt, $section, $hint='', $url , &$result) |
213 | | - { |
214 | | - global $wgSectionThreadingOn; |
215 | | - if($wgSectionThreadingOn && $nt->isTalkPage() ) { |
216 | | - $commenturl = '§ion='.$section.'&replyto=yes'; |
217 | | - $hint = ( $hint=='' ) ? '' : ' title="' . wfMsgHtml( 'replysectionhint', htmlspecialchars( $hint ) ) . '"'; |
218 | | - $curl = $callobj->makeKnownLinkObj( $nt, wfMsg('replysection'), 'action=edit'.$commenturl, '', '', '', $hint ); |
219 | | - $newthreadurl = '§ion=new'; |
220 | | - $hint = ( $hint=='' ) ? '' : ' title="' . wfMsgHtml( 'threadnewsectionhint', htmlspecialchars( $hint ) ) . '"'; |
221 | | - $nurl = $callobj->makeKnownLinkObj( $nt, wfMsg('threadnewsection'), 'action=edit'.$newthreadurl, '', '', '', $hint ); |
222 | | - $result = "<span class=\"editsection\">[".$nurl."][".$url."][".$curl."]</span>"; |
223 | | - } |
224 | | - return (true); |
225 | | - } |
226 | | - |
227 | | - /** |
228 | | - * This function is a hook used to test to see if empty, if so, start a comment |
229 | | - * |
230 | | - * @param $efform form object. |
231 | | - * @return true |
232 | | - */ |
233 | | - |
234 | | - |
235 | | - function efDiscussionThreadEdit ($efform) { |
236 | | - global $wgRequest; |
237 | | - $efform->replytosection = ''; |
238 | | - $efform->replyadded = false; |
239 | | - $efform->replytosection = $wgRequest->getVal( 'replyto' ); |
240 | | - if( !$efform->mTitle->exists() ) { |
241 | | - if($wgSectionThreadingOn && $efform->mTitle->isTalkPage() ) { |
242 | | - $efform->section = 'new'; |
243 | | - } |
244 | | - } |
245 | | - return (true); |
246 | | - } |
247 | | - |
248 | | - /** |
249 | | - * Create a new header, one level below the 'replyto' header, add re: to front and tag it with user information |
250 | | - * |
251 | | - * @param $efform Form Object before display |
252 | | - * @return true |
253 | | - */ |
254 | | - |
255 | | - function efDiscussionThread($efform){ |
256 | | - global $wgSectionThreadingOn; |
257 | | - $wgSectionThreadingOn = isset($wgSectionThreadingOn) ? $wgSectionThreadingOn : false; |
258 | | - if ( $efform->replytosection != '' && $wgSectionThreadingOn && !$efform->replyadded) { |
259 | | - if ($efform->replytosection != '') { |
260 | | - $text = $efform->textbox1; |
261 | | - $matches = array(); |
262 | | - preg_match( "/^(=+)(.+)\\1/mi", |
263 | | - $efform->textbox1, |
264 | | - $matches ); |
265 | | - if( !empty( $matches[2] ) ) { |
266 | | - preg_match( "/.*(-+)\\1/mi",$matches[2],$matchsign); |
267 | | - if (!empty($matchsign[0]) ){ |
268 | | - $text = $text."\n\n".$matches[1]."=Re: ".trim($matchsign[0])." ~~~~".$matches[1]."="; |
269 | | - } else { |
270 | | - $text = $text."\n\n".$matches[1]."=Re: ".trim($matches[2])." -- ~~~~".$matches[1]."="; |
271 | | - } |
272 | | - } else { |
273 | | - $text = $text." -- ~~~~<br>\n\n"; |
274 | | - } |
275 | | - $efform->replyadded = true; |
276 | | - $efform->textbox1 = $text; |
277 | | - } |
278 | | - return (true); |
279 | | - } |
280 | | - return (true); |
281 | | - } |
282 | | - /** |
283 | | - * When the new header is created from summary in new (+) add comment, just stamp the header as created |
284 | | - * |
285 | | - * @param $efform Form Object before display |
286 | | - * @return true |
287 | | - */ |
288 | | - |
289 | | - function efStampReply($efform){ |
290 | | - global $wgSectionThreadingOn; |
291 | | - $wgSectionThreadingOn = isset($wgSectionThreadingOn) ? $wgSectionThreadingOn : false; |
292 | | - if ( $efform->section == "new" && $wgSectionThreadingOn && !$efform->replyadded) { |
293 | | - $efform->summary = $efform->summary." -- ~~~~"; |
294 | | - } |
295 | | - return(true); |
296 | | - } |
297 | | -} |
298 | | -?> |
299 | 71 | </pre> |
300 | 72 | |
301 | | -== Internationalisation file DiscussionThreading.i18n.php == |
| 73 | +Patches required to Linker.php in all versions up to 1.11 - after that version, no patching required |
302 | 74 | |
303 | | -I was only completely comfortable with the english translations - looking to others to help me put the correct language translations in. |
304 | | - |
305 | | -I would deeply appreciate your help here. |
306 | | - |
307 | | -Load into file (in extension DiscussionThreading.i18n.php) |
308 | | - |
309 | | -<pre> |
310 | | - |
311 | | -<?php |
312 | | -/** |
313 | | - * Internationalisation file for DiscussionThreading extension. |
314 | | - * |
315 | | - * @addtogroup Extensions |
316 | | -*/ |
317 | | - |
318 | | -$wgDiscussionThreadMessages = array(); |
319 | | - |
320 | | -$wgDiscussionThreadMessages['en'] = array( |
321 | | - 'replysection' => 'reply', |
322 | | - 'replysectionhint' => "Reply to this Posting", |
323 | | - 'threadnewsection' => 'new', |
324 | | - 'threadnewsectionhint' => "Start a new thread" |
325 | | -); |
326 | | - |
327 | | -/* Need to add |
328 | | - af,br,bs,ca,cs,cy,de,et,eu,fi,fr,ga,gl,he,hr,hsb,id,is,it,ja,kk-kz,kk-tr,kk-cn,kk,lv,nl, |
329 | | - no,nn,oc,pt,pt-br,ro,ru,sk,sl,sq,uk,wa,zh-cn,zh-tw,zh-yue,zh-hk,zh-sg |
330 | | - |
331 | | - Would do this by adding a new $wgDiscussionThreadMessages array example: |
332 | | - |
333 | | -$wgDiscussionThreadMessages['lang1'] = array( |
334 | | - 'replysection' => 'lang1 - tag', |
335 | | - 'replysectionhint' => "lang1 - hint", |
336 | | - 'threadnewsection' => 'lang1 - new', |
337 | | - 'threadnewsectionhint' => "'lang1 - Start a new thread" |
338 | | -); |
339 | | -*/ |
340 | | -?> |
341 | | -</pre> |
342 | | - |
343 | | -Would add new languages with a new array per, using this array schema for each language: |
344 | | - |
345 | | -<pre> |
346 | | -$wgDiscussionThreadMessages['lang1'] = array( |
347 | | - 'replysection' => 'lang1 - tag', |
348 | | - 'replysectionhint' => "lang1 - hint", |
349 | | - 'threadnewsection' => 'lang1 - new', |
350 | | - 'threadnewsectionhint' => "'lang1 - Start a new thread" |
351 | | -); |
352 | | -</pre> |
353 | | - |
354 | 75 | == Indenting Headers == |
355 | 76 | |
356 | 77 | If you are really serious about threading, you can indent headers by modifying the corresponding CSS file (eg. skins/monobook/main.css). To modify all headers (talk or regular article), you can add a 'padding-left: <small>''x''</small>em;' into each of the headers 3-6. Eg.: |
— | — | @@ -362,7 +83,3 @@ |
363 | 84 | h5 .editsection { font-weight: normal; }<br> |
364 | 85 | h6 { font-size: 80%; padding-left: <span style="color: red">4em</span>; }<br> |
365 | 86 | h6 .editsection { font-size: 125%; font-weight: normal; }<br> |
366 | | - |
367 | | - |
368 | | -<noinclude>[[Category:Extensions]]</noinclude> |
369 | | -[[category:Uncategorized extension]] |