@@ -153,7 +153,7 @@ public override string BuildUrl(object boardSettings, string url)
153
153
var parser = new SimpleURLParameterParser ( url ) ;
154
154
155
155
var pageName = parser [ "g" ] ;
156
- ForumPages forumPage = ForumPages . forum ;
156
+ var forumPage = ForumPages . forum ;
157
157
var getDescription = false ;
158
158
159
159
if ( pageName . IsSet ( ) )
@@ -171,19 +171,28 @@ public override string BuildUrl(object boardSettings, string url)
171
171
172
172
if ( getDescription )
173
173
{
174
+ string useKey ;
174
175
switch ( forumPage )
175
176
{
176
177
case ForumPages . topics :
177
178
{
178
- boardNameOrPageName = UrlRewriteHelper . GetForumName ( parser [ "f" ] . ToType < int > ( ) ) ;
179
+ useKey = "f" ;
180
+
181
+ boardNameOrPageName =
182
+ UrlRewriteHelper . CleanStringForURL (
183
+ parser [ "name" ] . IsSet ( )
184
+ ? parser [ "name" ]
185
+ : UrlRewriteHelper . GetForumName ( parser [ useKey ] . ToType < int > ( ) ) ) ;
179
186
}
180
187
181
188
break ;
182
189
case ForumPages . posts :
183
190
{
184
191
if ( parser [ "t" ] . IsSet ( ) )
185
192
{
186
- var topicName = UrlRewriteHelper . GetTopicName ( parser [ "t" ] . ToType < int > ( ) ) ;
193
+ useKey = "t" ;
194
+
195
+ var topicName = UrlRewriteHelper . GetTopicName ( parser [ useKey ] . ToType < int > ( ) ) ;
187
196
188
197
if ( topicName . EndsWith ( "-" ) )
189
198
{
@@ -194,11 +203,13 @@ public override string BuildUrl(object boardSettings, string url)
194
203
}
195
204
else if ( parser [ "m" ] . IsSet ( ) )
196
205
{
206
+ useKey = "m" ;
207
+
197
208
string topicName ;
198
209
199
210
try
200
211
{
201
- topicName = UrlRewriteHelper . GetTopicNameFromMessage ( parser [ "m" ] . ToType < int > ( ) ) ;
212
+ topicName = UrlRewriteHelper . GetTopicNameFromMessage ( parser [ useKey ] . ToType < int > ( ) ) ;
202
213
203
214
if ( topicName . EndsWith ( "-" ) )
204
215
{
@@ -217,18 +228,21 @@ public override string BuildUrl(object boardSettings, string url)
217
228
break ;
218
229
case ForumPages . profile :
219
230
{
231
+ useKey = "u" ;
232
+
220
233
boardNameOrPageName =
221
234
UrlRewriteHelper . CleanStringForURL (
222
235
parser [ "name" ] . IsSet ( )
223
236
? parser [ "name" ]
224
- : UrlRewriteHelper . GetProfileName ( parser [ "u" ] . ToType < int > ( ) ) ) ;
237
+ : UrlRewriteHelper . GetProfileName ( parser [ useKey ] . ToType < int > ( ) ) ) ;
225
238
}
226
239
227
240
break ;
228
241
case ForumPages . forum :
229
242
{
230
243
if ( parser [ "c" ] . IsSet ( ) )
231
244
{
245
+ useKey = "c" ;
232
246
boardNameOrPageName = UrlRewriteHelper . GetCategoryName ( parser [ "c" ] . ToType < int > ( ) ) ;
233
247
}
234
248
}
@@ -241,7 +255,7 @@ public override string BuildUrl(object boardSettings, string url)
241
255
FriendlyUrlProvider . Instance ( )
242
256
. FriendlyUrl (
243
257
yafTab ,
244
- "{0}&{1}" . FormatWith ( Globals . ApplicationURL ( yafTab . TabID ) , url ) ,
258
+ "{0}&{1}" . FormatWith ( Globals . ApplicationURL ( yafTab . TabID ) , parser . CreateQueryString ( new [ ] { "name" } ) ) ,
245
259
boardNameOrPageName ,
246
260
portalSettings . DefaultPortalAlias ) ) ;
247
261
0 commit comments