1 # This file is used by CSA library routines to rewrite request URIs and 2 # make them more RESTful, if necessary. The syntax is: 3 # 4 # verb-pattern uri-pattern [uri-rewrite] 5 # 6 # where patterns are AWK regular expressions and "uri-rewrite" is the 7 # substitution string. If the latter is not specified, then no rewriting 8 # occurs. The three parts are separated by any number of blanks and/or 9 # tabs, therefore neither such characters may appare literally in any 10 # of the three strings (i.e. TABs and spaces, if needed, must be coded 11 # as \t and \040 respectively). 12 # 13 # Leading blanks/tabs before "verb-pattern" are ignored. If 14 # "verb-pattern" is equal to "+", then the rule is considered to be the 15 # continuation of the previous one. 16 # 17 # If the "uri-rewrite" part contains the AWK special character '&', 18 # and if the latter is to be interpreted leterally by AWK, it must be 19 # escaped with a backslash '\&'. Otherwise it will cause AWK to insert 20 # the matched pattern in the replacement part, at the point where the 21 # '&' occurs. 22 # 23 # Each rewrite rule must appare on a line of its own. Empty lines and 24 # comments are. Inline comments are not allowed. Only the first matching 25 # rule is applied, plus its continuations if any, and the process is 26 # non-recursive. This suggests that rules be carefully ordered, to 27 # prevent earlier ones from hiding later ones. 28 # 29 # The acceptable verbs will generally have to be coordinated with the 30 # ones that are actually accepted by the target program. 31 32 # Add/modify entries as needed. 33 34 # Allow compact URLs to pages, at least for displaying them. Note that 35 # *at least* 2 digits are needed to trigger this check, not to confuse 36 # a numeric object specification with a CSA XML-RPC personality in the 37 # form of http://www.example.com/cgi-bin/CSA//2 . Note that this 38 # very pattern is NOT bound to any local language. 39 40 GET ^/[1-9][0-9]+$ /showPage?1=& 41 42 # ----------------------------------------------- 43 # The following URLs are for the 'it' language. 44 # ----------------------------------------------- 45 46 # Handle special (i.e. group-less) URLs first. 47 #GET ^/it/ok/*$ /showPage;csaOk;x-csa-lang=it 48 GET ^/it/(tw-)prg/*$ /prg;x-csa-lang=it 49 50 # Admin listing of page groups in the current language. 51 GET ^/it/tw-groups(/.*)? 52 + ^/it/ listGroups?x-csa-lang=it/ 53 + /tw-groups/* ?1= 54 + /*$ ?99= 55 + ^ / 56 57 # Post edits to page group table. 58 POST ^/it/tw-group(/.*)? 59 + ^/it/ updateGroup?x-csa-lang=it/ 60 + /tw-group/* ?1= 61 + /*$ ?99= 62 + ^ / 63 64 # Page Group editing dialog. 65 GET ^/it/tw-group(/+[a-zA-Z%][-a-zA-Z0-9%]+)? 66 + ^/it/ editGroup?x-csa-lang=it/ 67 + /tw-group/* ?1= 68 + /*$ ?99= 69 + ^ / 70 71 # When we log-in we are logically appending a new session to the 72 # "tw-session/" resource tree. Alternatively, we could PUT a new session 73 # into the tree, but that cannot be easily done with common HTML browsers. 74 # We would need a way to dinamically append the user-id to the action URL, 75 # but that cannot be done with plain HTML. 76 77 # New implementations MUST use "tw-session" as opposed to "session". 78 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 79 + ^/it/ logIn?x-csa-lang=it?1= 80 + /.* ?99= 81 + ^ / 82 83 # New implementations MUST use "tw-openid" as opposed to "openid". 84 # Start a session through OpenID. 85 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?openid/*$ 86 + ^/it/ openidSetup?x-csa-lang=it?1= 87 + /.* ?99= 88 + ^ / 89 90 # Start a session through an RPX authentication proxy. 91 ^(GET|POST)$ ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-rpx/*$ 92 + ^/it/ rpxLogIn?x-csa-lang=it?1= 93 + /.* ?99= 94 + ^ / 95 96 # I need to remove the "/tw-session/" part here, because in some 97 # circumstances the group name may be missing and the program would then 98 # erroneously assume it to be "tw-session". This is probably harmless 99 # and would simply trigger error 0041 in 'logOut', but I prefer to 100 # avoid it anyway, because if a group named "tw-session" actually exists, 101 # the user will be redirected to the default page of that group upon 102 # log-out, as opposed to the default page of the group he has just 103 # logged-out from. 104 105 # New implementations MUST use "tw-session" as opposed to "session". 106 DELETE ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 107 + /(tw-)?session/*$ / 108 + ^/it/ logOut?x-csa-lang=it?1= 109 + /.* ?99= 110 + ^ / 111 112 # Begin of special group-level requests, with either numeric 113 # or special TW page names "tw-..." . 114 115 # Show contents of the shopping cart. 116 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 117 + ^/it/ cartView?x-csa-lang=it?1= 118 + /.* ?99= 119 + ^ / 120 121 # Post an item to the shopping cart. The mandatory item code and 122 # optional quantity can only be passed as non-RESTful arguments, 123 # as they would not make sense as RESTful ones here. 124 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 125 + ^/it/ cartLoad?x-csa-lang=it?1= 126 + /.* ?99= 127 + ^ / 128 129 # Check-out the shopping-cart by posting a purchase order. 130 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-purchase/*$ 131 + ^/it/ cartCheckout?x-csa-lang=it?1= 132 + /.* ?99= 133 + ^ / 134 135 # Shipping/billing data entry form. 136 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-shop-form/*$ 137 + ^/it/ showStatic?x-csa-lang=it?1= 138 + / ?2=tw-shop-form/ 139 + /.* ?99= 140 + ^ / 141 142 # Admin listing of user accounts, possibly matching a string. 143 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-users(/.*)? 144 + ^/it/ listUsers?x-csa-lang=it?1= 145 + /tw-users/* ?2= 146 + /*$ ?99= 147 + ^ / 148 149 # Detailed listing of a specified user account. 150 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 151 + ^/it/ editUser?x-csa-lang=it?1= 152 + /tw-user/+ ?2= 153 + /*$ ?99= 154 + ^ / 155 156 # Post edits to a user account. 157 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 158 + ^/it/ updateUser?x-csa-lang=it?1= 159 + /tw-user/+ ?2= 160 + /*$ ?99= 161 + ^ / 162 163 # TW listing of group attachments. 164 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile(/.*)? 165 + ^/it/ listAttachments?x-csa-lang=it?1= 166 + /tw-webfile ?3=web 167 + /+ ?5= 168 + /*$ ?99= 169 + ^ / 170 171 # Add a new public attachment. 172 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/*$ 173 + ^/it/ putAttachment?x-csa-lang=it?1= 174 + /tw-webfile/+ ?3= 175 + /.* ?99= 176 + ^ / 177 178 # Remove a public attachment. 179 DELETE ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/[^/]+/*$ 180 + ^/it/ deleteAttachment?x-csa-lang=it?1= 181 + /tw-webfile/+ ?3= 182 + /.* ?99= 183 + ^ / 184 185 # TW group recent changes display request. 186 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/1/*$ 187 + ^/it/ showStatic?x-csa-lang=it?1= 188 + / ?2=tw-recent-changes/ 189 + /.* ?99= 190 + ^ / 191 192 # TW listing of selected public file types in a group. 193 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/2/[a-z]+/*$ 194 + ^/it/ groupFileList?x-csa-lang=it?1= 195 + /2/ ?2= 196 + /*$ ?3=web?99= 197 + ^ / 198 199 # TW listing of selected private file types in a group. 200 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/3/[a-z]+/*$ 201 + ^/it/ groupFileList?x-csa-lang=it?1= 202 + /3/ ?2= 203 + /*$ ?3=wiki?99= 204 + ^ / 205 206 # TW listing of all pages of a specified year, with optional metacat. 207 # Note that arg n.3 is already used for paginf here, and it can only 208 # be passed non-RESTfully, i.e. as "&3=..." . 209 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/4/[1-9][0-9]+(/.*)? 210 + ^/it/ groupYearList?x-csa-lang=it?1= 211 + /4/ ?2= 212 + /+ ?4= 213 + /*$ ?99= 214 + ^ / 215 216 # Sitemap-like listing of all pages of a specified group. 217 # For large sites, an optional meta-category can be specified, 218 # and possibly also the initial page block within the meta-category, 219 # for paged results. Note how, given the following rewriting rules, 220 # it will not be possible to express in RESTful terms a certain 221 # page block without specifying also a meta-category name, but 222 # we will still able to overcome such limitation with a partly 223 # non-RESTful call like http://.../5?3=. And, of course, 224 # we will always be able to use completely non-RESTful calls 225 # such as http://...?0=groupPageMap&1=...&2=...&3=... . 226 # Optional parameter n. 4 contains the search mode. Currently the 227 # only value it can take is either null or "f" (full-text search mode), 228 # but in the future other modes may be added. This parameter will 229 # only be handled in non-REST mode, i.e. with either "?4=f" or "&4=f". 230 # 231 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/5(/.*)? 232 + ^/it/ groupPageMap?x-csa-lang=it?1= 233 + /5/* ?2= 234 + /+ ?3= 235 + /*$ ?99= 236 + ^ / 237 238 # Listing of available authorization groups. 239 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/6/*$ 240 + ^/it/ groupAuthList?x-csa-lang=it?1= 241 + /6/ ?2=groups 242 + /*$ ?99= 243 + ^ / 244 245 # Listing of available authorization users. 246 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/7/*$ 247 + ^/it/ groupAuthList?x-csa-lang=it?1= 248 + /7/ ?2=users 249 + /*$ ?99= 250 + ^ / 251 252 # TW group tag cloud display request. 253 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/8/*$ 254 + ^/it/ showStatic?x-csa-lang=it?1= 255 + / ?2=tw-group-cloud/ 256 + /.* ?99= 257 + ^ / 258 259 # TW group meta-category cloud display request. 260 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/14/*$ 261 + ^/it/ showStatic?x-csa-lang=it?1= 262 + / ?2=tw-cat-cloud/ 263 + /.* ?99= 264 + ^ / 265 266 # TW listing of pages associated with a specified tag. 267 #GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/9/[^\/]+/*$ 268 #+ ^/it/ groupTagSearch?x-csa-lang=it?1= 269 #+ /9/ ?2= 270 #+ /*$ ?99= 271 #+ ^ / 272 273 # TW listing of pages associated with a specified tag. 274 # For large sites, an optional meta-category can be specified, 275 # and possibly also the initial page block within the meta-category, 276 # for paged results. Note how, given the following rewriting rules, 277 # it will not be possible to express in RESTful terms a certain 278 # page block without specifying also a meta-category name, but 279 # we will still able to overcome such limitation with a partly 280 # non-RESTful call like http://.../5?4=. And, of course, 281 # we will always be able to use completely non-RESTful calls 282 # such as http://...?0=groupTagSearch&1=...&2=...&3=... . 283 # Optional parameter n. 5 contains the search mode. Currently the 284 # only value it can take is either null or "f" (full-text search mode), 285 # but in the future other modes may be added. This parameter will 286 # only be handled in non-REST mode, i.e. with either "?5=f" or "&5=f". 287 # 288 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/9/[^\/]+(/.*)? 289 + ^/it/ groupTagSearch?x-csa-lang=it?1= 290 + /9/* ?2= 291 + /+ ?3= 292 + /+ ?4= 293 + /*$ ?99= 294 + ^ / 295 296 # Userid/password retrieval service. 297 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/10/[^\/]+/*$ 298 + ^/it/ sendAuthInfo?x-csa-lang=it?1= 299 + /10/ ?2= 300 + /*$ ?99= 301 + ^ / 302 303 # TW group recent comments display request. 304 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/11/*$ 305 + ^/it/ showStatic?x-csa-lang=it?1= 306 + / ?2=tw-recent-comments/ 307 + /.* ?99= 308 + ^ / 309 310 # Show listing of TW program source files. 311 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/12/*$ 312 + ^/it/ sourceList?x-csa-lang=it?1= 313 + /.* ?99= 314 + ^ / 315 316 # Show a specified TW program source file. 317 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/13/[^\/]+/*$ 318 + ^/it/ viewSource?x-csa-lang=it?1= 319 + /13/ ?2= 320 + /*$ ?99= 321 + ^ / 322 323 # Sitemap requests, see http://sitemaps.org/ . 324 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/15/*$ 325 + ^/it/ groupPageMap?x-csa-lang=it?1= 326 + /15/* ?7=s 327 + /*$ ?99= 328 + ^ / 329 330 ### End of special group requests with numeric attributes. 331 332 # Send a self-registration request. 333 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?subscription/*$ 334 + ^/it/ registerUser?x-csa-lang=it?1= 335 + /.* ?99= 336 + ^ / 337 338 # Access the TW administrator menu. 339 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-editor-menu/*$ 340 + ^/it/ showStatic?x-csa-lang=it?1= 341 + / ?2= 342 + /.*$ ?99= 343 + ^ / 344 345 # Default login/logout form. 346 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-session-form/*$ 347 + ^/it/ showStatic?x-csa-lang=it?1= 348 + / ?2= 349 + /.*$ ?99= 350 + ^ / 351 352 # Page or thread subscription request. 353 ^(GET|POST)$ ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-watch(/[1-9][0-9]+)?/*$ 354 + ^/it/ watch?x-csa-lang=it?1= 355 + /tw-watch/ ?2= 356 + /.*$ ?99= 357 + ^ / 358 359 # Misc. RSS 1.0 views about the specified group. These could be made to 360 # rely on showStatic but it may require tweaking of the latter, so I'll 361 # leave them to a more specialized program for the moment. See the 362 # source code of 'rssFeed' for supported tw-* listing types. 363 364 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/style/rss/*$ 365 + ^/it/ rssFeed?x-csa-lang=it?1= 366 + / ?2= 367 + /style/rss/? / 368 + / ?3= 369 + /.* ?99= 370 + ^ / 371 372 # Misc. static views about the specified group. 373 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?(/style/print)?/*$ 374 + ^/it/ showStatic?x-csa-lang=it?1= 375 + / ?2= 376 + /style/print/? ?3=print 377 + / ?4= 378 + /.* ?99= 379 + ^ / 380 381 # TW page trackback listings. 382 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping(/style/print)?/*$ 383 + ^/it/ showStatic?x-csa-lang=it?1= 384 + / ?4= 385 + /ping/? ?2=tw-page-trackbacks/ 386 + /style/print/? ?3=print 387 + /.* ?99= 388 + ^ / 389 390 # TW listing of private page attachments. 391 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 392 + ^/it/ listAttachments?x-csa-lang=it?1= 393 + /+ ?2= 394 + /wikifile ?3=wiki 395 + /.* ?99= 396 + ^ / 397 398 # TW private page attachment downloader (public attachments are directly 399 # accessible through the web server). 400 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 401 + ^/it/ getAttachment?x-csa-lang=it?1= 402 + /+ ?2= 403 + /wikifile/+ ?3= 404 + /.* ?99= 405 + ^ / 406 407 # Add a new private page attachment. 408 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 409 + ^/it/ putAttachment?x-csa-lang=it?1= 410 + /+ ?2= 411 + /wikifile ?6=wiki 412 + /.* ?99= 413 + ^ / 414 415 # Remove a private page attachment. 416 DELETE ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 417 + ^/it/ deleteAttachment?x-csa-lang=it?1= 418 + /+ ?2= 419 + /wikifile ?4=wiki 420 + /+ ?3= 421 + /.* ?99= 422 + ^ / 423 424 # TW page editing request. 425 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/edit(/[1-9][-a-zA-Z0-9:%]+)?/*$ 426 + ^/it/ editPage?x-csa-lang=it?1= 427 + /+ ?2= 428 + /form/edit/* ?3= 429 + /.* ?99= 430 + ^ / 431 432 # TW page manual trackback form. 433 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/ping/*$ 434 + ^/it/ showStatic?x-csa-lang=it?1= 435 + / ?2=tw-trackback-form/ 436 + / ?4= 437 + /form/ping/.*$ ?99= 438 + ^ / 439 440 # TW page print request. 441 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/print/*$ 442 + ^/it/ showPage?x-csa-lang=it?1= 443 + /+ ?2= 444 + /.* ?4=print?99= 445 + ^ / 446 447 # TW page TOC request. 448 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/toc/*$ 449 + ^/it/ showPage?x-csa-lang=it?1= 450 + /+ ?2= 451 + /.* ?4=toc?99= 452 + ^ / 453 454 # TW group/page display request. The HEAD method can be useful in some 455 # cases, like when a site such as www.websiteoptimization.com is used 456 # to run speed and optimization tests against TW pages. Note however 457 # that while HEAD works with the Apache web server it will not work with 458 # stock thttpd and possibly other servers if the request is done against 459 # a CGI program as opposed than a static page. 460 461 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/*$ 462 + ^/it/ showPage?x-csa-lang=it?1= 463 + /+ ?2= 464 + /*$ ?4=show?99= 465 + ^ / 466 467 # TW group/page update request. 468 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/*$ 469 + ^/it/ updatePage?x-csa-lang=it?1= 470 + /+ ?2= 471 + /*$ ?99= 472 + ^ / 473 474 # TW trackback pinger. 475 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 476 + ^/it/ trackbackPing?x-csa-lang=it?1= 477 + /+ ?2= 478 + /ping/*$ ?99= 479 + ^ / 480 481 # TW XML-RPC pingback server. XML-RPC is inherently non-RESTful, so 482 # the fact that we use the PUT non-idempotent method to perform an 483 # idempotent request won't get things any worse. CSA, on the contrary, 484 # tries and be as RESTful as possible and it accepts non-POST MIME types 485 # only with PUT. 486 # 487 # Warning: the "/ping" path token is hard-coded into the updatePage.awk 488 # RPC I/O function, so if it is changed here it would need to be changed 489 # there too, which must not be done of course. 490 # 491 #PUT ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 492 #+ ^/it/ pingbackServer?x-csa-lang=it?1= 493 #+ /+ ?2= 494 #+ /.* ?99= 495 #+ ^ / 496 497 # TW listing of page comments. 498 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/*$ 499 + ^/it/ cmtList?x-csa-lang=it?1= 500 + /+ ?2= 501 + /.* ?99= 502 + ^ / 503 504 # TW page comment visualizer. 505 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+(/style/print)?/*$ 506 + ^/it/ cmtView?x-csa-lang=it?1= 507 + /+ ?2= 508 + /comment/ ?3= 509 + /style/print/? ?4=print 510 + /.* ?99= 511 + ^ / 512 513 # Post a new page comment. 514 POST ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment(/[1-9][-.a-zA-Z0-9%]+)?/*$ 515 + ^/it/ cmtPost?x-csa-lang=it?1= 516 + /+ ?2= 517 + /comment/ ?3= 518 + /.* ?99= 519 + ^ / 520 521 # Restore a previously banned TW page comment. Note how from a REST 522 # perspective we are logically deleting the 'banned' property from 523 # the target object. 524 525 DELETE ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/banned/*$ 526 + ^/it/ cmtBan?x-csa-lang=it?1= 527 + /+ ?2= 528 + /comment/ ?3= 529 + /banned/* ?4=restore 530 + /.* ?99= 531 + ^ / 532 533 # Ban a specified TW page comment. 534 DELETE ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/*$ 535 + ^/it/ cmtBan?x-csa-lang=it?1= 536 + /+ ?2= 537 + /comment/ ?3= 538 + /.* ?99= 539 + ^ / 540 541 # TW listing of page revisions. 542 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/*$ 543 + ^/it/ pageHistory?x-csa-lang=it?1= 544 + /+ ?2= 545 + /.* ?99= 546 + ^ / 547 548 # Display a specified TW page revision. 549 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/[1-9][-a-zA-Z0-9:%]+/*$ 550 + ^/it/ showPage?x-csa-lang=it?1= 551 + /+ ?2= 552 + /history/ ?4=show?x-csa-lang=it?5= 553 + /.* ?99= 554 + ^ / 555 556 # Show the diffs between two specified TW page revisions. 557 GET ^/it/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/diff/*$ 558 + ^/it/ pageHistory?x-csa-lang=it?1= 559 + /+ ?2= 560 + /.* ?99= 561 + ^ / 562 563 # Catch-all (must come last in each language section). 564 .* ^/it/.* /INVALID;x-csa-lang=it 565 566 # ----------------------------------------------- 567 # The following URLs are for the en_US language. 568 # ----------------------------------------------- 569 570 # Handle special (i.e. group-less) URLs first. 571 GET ^/en_[uU][sS]/(tw-)?prg/*$ /prg?x-csa-lang=en_US 572 573 # Admin listing of page groups in the current language. 574 GET ^/en_[uU][sS]/tw-groups(/.*)? 575 + ^/en_[uU][sS]/ listGroups?x-csa-lang=en_US/ 576 + /tw-groups/* ?1= 577 + /*$ ?99= 578 + ^ / 579 580 # Post edits to page group table. 581 POST ^/en_[uU][sS]/tw-group(/.*)? 582 + ^/en_[uU][sS]/ updateGroup?x-csa-lang=en_US/ 583 + /tw-group/* ?1= 584 + /*$ ?99= 585 + ^ / 586 587 # Page Group editing dialog. 588 GET ^/en_[uU][sS]/tw-group(/+[a-zA-Z%][-a-zA-Z0-9%]+)? 589 + ^/en_[uU][sS]/ editGroup?x-csa-lang=en_US/ 590 + /tw-group/* ?1= 591 + /*$ ?99= 592 + ^ / 593 594 # We we log-in we are logically appending a new session to the "tw-session/" 595 # resource tree. Alternatively, we could PUT a new session into the tree, 596 # but that cannot be easily done with common HTML browsers. We would need 597 # a way to dinamically append the user-id to the action URL, but that 598 # cannot be done with plain HTML. 599 600 # New implementations MUST use "tw-session" as opposed to "session". 601 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 602 + ^/en_[uU][sS]/ logIn?x-csa-lang=en_US?1= 603 + /.* ?99= 604 + ^ / 605 606 # New implementations MUST use "tw-openid" as opposed to "openid". 607 # Start a session through OpenID. 608 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?openid/*$ 609 + ^/en_[uU][sS]/ openidSetup?x-csa-lang=en_US?1= 610 + /.* ?99= 611 + ^ / 612 613 # Start a session through an RPX authentication proxy. 614 ^(GET|POST)$ ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-rpx/*$ 615 + ^/en_[uU][sS]/ rpxLogIn?x-csa-lang=en_US?1= 616 + /.* ?99= 617 + ^ / 618 619 # I need to remove the "/tw-session/" part here, because in some 620 # circumstances the group name may be missing and the program would then 621 # erroneously assume it to be "tw-session". This is probably harmless 622 # and would simply trigger error 0041 in 'logOut', but I prefer to avoid 623 # it anyway, because if a group named "tw-session" actually exists, 624 # the user will be redirected to the default page of that group upon 625 # log-out, as opposed to the default page of the group he has just 626 # logged-out from. 627 628 # New implementations MUST use "tw-session" as opposed to "session". 629 DELETE ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 630 + /(tw-)?session/*$ / 631 + ^/en_[uU][sS]/ logOut?x-csa-lang=en_US?1= 632 + /.* ?99= 633 + ^ / 634 635 # Begin of special group-level requests, with either numeric 636 # or special TW page names "tw-..." . 637 638 # Show contents of the shopping cart. 639 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 640 + ^/en_[uU][sS]/ cartView?x-csa-lang=en_US?1= 641 + /.* ?99= 642 + ^ / 643 644 # Post an item to the shopping cart. The mandatory item code and 645 # optional quantity can only be passed as non-RESTful arguments, 646 # as they would not make sense as RESTful ones here. 647 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 648 + ^/en_[uU][sS]/ cartLoad?x-csa-lang=en_US?1= 649 + /.* ?99= 650 + ^ / 651 652 # Check-out the shopping-cart by posting a purchase order. 653 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-purchase/*$ 654 + ^/en_[uU][sS]/ cartCheckout?x-csa-lang=en_US?1= 655 + /.* ?99= 656 + ^ / 657 658 # Shipping/billing data entry form. 659 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-shop-form/*$ 660 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 661 + / ?2=tw-shop-form/ 662 + /.* ?99= 663 + ^ / 664 665 # Admin listing of user accounts, possibly matching a string. 666 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-users(/.*)? 667 + ^/en_[uU][sS]/ listUsers?x-csa-lang=en_US?1= 668 + /tw-users/* ?2= 669 + /*$ ?99= 670 + ^ / 671 672 # Detailed listing of a specified user account. 673 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 674 + ^/en_[uU][sS]/ editUser?x-csa-lang=en_US?1= 675 + /tw-user/+ ?2= 676 + /*$ ?99= 677 + ^ / 678 679 # Post edits to a user account. 680 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 681 + ^/en_[uU][sS]/ updateUser?x-csa-lang=en_US?1= 682 + /tw-user/+ ?2= 683 + /*$ ?99= 684 + ^ / 685 686 # TW listing of group attachments. 687 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile(/.*)? 688 + ^/en_[uU][sS]/ listAttachments?x-csa-lang=en_US?1= 689 + /tw-webfile ?3=web 690 + /+ ?5= 691 + /*$ ?99= 692 + ^ / 693 694 # Add a new public attachment. 695 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/*$ 696 + ^/en_[uU][sS]/ putAttachment?x-csa-lang=en_US?1= 697 + /tw-webfile/+ ?3= 698 + /.* ?99= 699 + ^ / 700 701 # Remove a public attachment. 702 DELETE ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/[^/]+/*$ 703 + ^/en_[uU][sS]/ deleteAttachment?x-csa-lang=en_US?1= 704 + /tw-webfile/+ ?3= 705 + /.* ?99= 706 + ^ / 707 708 # TW group recent changes display request. 709 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/1/*$ 710 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 711 + / ?2=tw-recent-changes/ 712 + /.* ?99= 713 + ^ / 714 715 # TW listing of selected public file types in a group. 716 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/2/[a-z]+/*$ 717 + ^/en_[uU][sS]/ groupFileList?x-csa-lang=en_US?1= 718 + /2/ ?2= 719 + /*$ ?3=web?99= 720 + ^ / 721 722 # TW listing of selected private file types in a group. 723 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/3/[a-z]+/*$ 724 + ^/en_[uU][sS]/ groupFileList?x-csa-lang=en_US?1= 725 + /3/ ?2= 726 + /*$ ?3=wiki?99= 727 + ^ / 728 729 # TW listing of all pages of a specified year, with optional metacat. 730 # Note that arg n.3 is already used for paginf here, and it can only 731 # be passed non-RESTfully, i.e. as "&3=..." . 732 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/4/[1-9][0-9]+(/.*)? 733 + ^/en_[uU][sS]/ groupYearList?x-csa-lang=en_US?1= 734 + /4/ ?2= 735 + /+ ?4= 736 + /*$ ?99= 737 + ^ / 738 739 # Sitemap-like listing of all pages of a specified group. 740 #GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/5/*$ 741 #+ ^/en_[uU][sS]/ groupPageMap?x-csa-lang=en_US?1= 742 #+ /5/*$ ?99= 743 #+ ^ / 744 745 # Sitemap-like listing of all pages of a specified group. 746 # For large sites, an optional meta-category can be specified, 747 # and possibly also the initial page block within the meta-category, 748 # for paged results. 749 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/5(/.*)? 750 + ^/en_[uU][sS]/ groupPageMap?x-csa-lang=en_US?1= 751 + /5/* ?2= 752 + /+ ?3= 753 + /*$ ?99= 754 + ^ / 755 756 # Basic listing of available authorization groups. 757 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/6/*$ 758 + ^/en_[uU][sS]/ groupAuthList?x-csa-lang=en_US?1= 759 + /6/ ?2=groups 760 + /*$ ?99= 761 + ^ / 762 763 # Basic listing of available authorization users. 764 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/7/*$ 765 + ^/en_[uU][sS]/ groupAuthList?x-csa-lang=en_US?1= 766 + /7/ ?2=users 767 + /*$ ?99= 768 + ^ / 769 770 # TW group tag cloud display request. 771 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/8/*$ 772 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 773 + / ?2=tw-group-cloud/ 774 + /.* ?99= 775 + ^ / 776 777 # TW group meta-category cloud display request. 778 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/14/*$ 779 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 780 + / ?2=tw-cat-cloud/ 781 + /.* ?99= 782 + ^ / 783 784 # TW listing of pages associated with a specified tag. 785 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/9/[^\/]+(/.*)? 786 + ^/en_[uU][sS]/ groupTagSearch?x-csa-lang=en_US?1= 787 + /9/ ?2= 788 + /+ ?3= 789 + /+ ?4= 790 + /*$ ?99= 791 + ^ / 792 793 # Userid/password retrieval service. 794 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/10/[^\/]+/*$ 795 + ^/en_[uU][sS]/ sendAuthInfo?x-csa-lang=en_US?1= 796 + /10/ ?2= 797 + /*$ ?99= 798 + ^ / 799 800 # TW group recent comments display request. 801 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/11/*$ 802 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 803 + / ?2=tw-recent-comments/ 804 + /.* ?99= 805 + ^ / 806 807 # Show listing of TW program source files. 808 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/12/*$ 809 + ^/en_[uU][sS]/ sourceList?x-csa-lang=en_US?1= 810 + /.* ?99= 811 + ^ / 812 813 # Show a specified TW program source file. 814 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/13/[^\/]+/*$ 815 + ^/en_[uU][sS]/ viewSource?x-csa-lang=en_US?1= 816 + /13/ ?2= 817 + /*$ ?99= 818 + ^ / 819 820 # Sitemap requests, see http://sitemaps.org/ . 821 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/15/*$ 822 + ^/en_[uU][sS]/ groupPageMap?x-csa-lang=en_US?1= 823 + /15/* ?7=s 824 + /*$ ?99= 825 + ^ / 826 827 ### End of special group requests with numeric attributes. 828 829 # Send a self-registration request. 830 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?subscription/*$ 831 + ^/en_[uU][sS]/ registerUser?x-csa-lang=en_US?1= 832 + /.* ?99= 833 + ^ / 834 835 # Access the TW administrator menu. 836 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-editor-menu/*$ 837 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 838 + / ?2= 839 + /.*$ ?99= 840 + ^ / 841 842 # Default login/logout form. 843 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-session-form/*$ 844 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 845 + / ?2= 846 + /.*$ ?99= 847 + ^ / 848 849 # Page or thread subscription request. 850 ^(GET|POST)$ ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-watch(/[1-9][0-9]+)?/*$ 851 + ^/en_[uU][sS]/ watch?x-csa-lang=en_US?1= 852 + /tw-watch/ ?2= 853 + /.*$ ?99= 854 + ^ / 855 856 # Misc. RSS 1.0 views about the specified group. These could be made to 857 # rely on showStatic but it may require tweaking of the latter, so I'll 858 # leave them to a more specialized program for the moment. See the 859 # source code of 'rssFeed' for supported tw-* listing types. 860 861 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/style/rss/*$ 862 + ^/en_[uU][sS]/ rssFeed?x-csa-lang=en_US?1= 863 + / ?2= 864 + /style/rss/? / 865 + / ?3= 866 + /.* ?99= 867 + ^ / 868 869 # Misc. static views about the specified group. 870 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?(/style/print)?/*$ 871 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 872 + / ?2= 873 + /style/print/? ?3=print 874 + / ?4= 875 + /.* ?99= 876 + ^ / 877 878 # TW page trackback listings. 879 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping(/style/print)?/*$ 880 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 881 + / ?4= 882 + /ping/? ?2=tw-page-trackbacks/ 883 + /style/print/? ?3=print 884 + /.* ?99= 885 + ^ / 886 887 # TW listing of private page attachments. 888 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 889 + ^/en_[uU][sS]/ listAttachments?x-csa-lang=en_US?1= 890 + /+ ?2= 891 + /wikifile ?3=wiki 892 + /.* ?99= 893 + ^ / 894 895 # TW private page attachment downloader (public attachments are directly 896 # accessible through the web server). 897 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 898 + ^/en_[uU][sS]/ getAttachment?x-csa-lang=en_US?1= 899 + /+ ?2= 900 + /wikifile/+ ?3= 901 + /.* ?99= 902 + ^ / 903 904 # Add a new private page attachment. 905 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 906 + ^/en_[uU][sS]/ putAttachment?x-csa-lang=en_US?1= 907 + /+ ?2= 908 + /wikifile ?6=wiki 909 + /.* ?99= 910 + ^ / 911 912 # Remove a private page attachment. 913 DELETE ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 914 + ^/en_[uU][sS]/ deleteAttachment?x-csa-lang=en_US?1= 915 + /+ ?2= 916 + /wikifile ?4=wiki 917 + /+ ?3= 918 + /.* ?99= 919 + ^ / 920 921 # TW page editing request. 922 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/edit(/[1-9][-a-zA-Z0-9:%]+)?/*$ 923 + ^/en_[uU][sS]/ editPage?x-csa-lang=en_US?1= 924 + /+ ?2= 925 + /form/edit/* ?3= 926 + /.* ?99= 927 + ^ / 928 929 # TW page manual trackback form. 930 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/ping/*$ 931 + ^/en_[uU][sS]/ showStatic?x-csa-lang=en_US?1= 932 + / ?2=tw-trackback-form/ 933 + / ?4= 934 + /form/ping/.*$ ?99= 935 + ^ / 936 937 # TW page print request. 938 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/print/*$ 939 + ^/en_[uU][sS]/ showPage?x-csa-lang=en_US?1= 940 + /+ ?2= 941 + /.* ?4=print?99= 942 + ^ / 943 944 # TW page TOC request. 945 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/toc/*$ 946 + ^/en_[uU][sS]/ showPage?x-csa-lang=en_US?1= 947 + /+ ?2= 948 + /.* ?4=toc?99= 949 + ^ / 950 951 # TW group/page display request. The HEAD method can be useful in some 952 # cases, like when a site such as www.websiteoptimization.com is used 953 # to run speed and optimization tests against TW pages. Note however 954 # that while HEAD works with the Apache web server it will not work with 955 # thttpd and possibly other servers if the request is done against a CGI 956 # program as opposed than a static page. 957 958 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/*$ 959 + ^/en_[uU][sS]/ showPage?x-csa-lang=en_US?1= 960 + /+ ?2= 961 + /*$ ?4=show?99= 962 + ^ / 963 964 # TW group/page update request. 965 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/*$ 966 + ^/en_[uU][sS]/ updatePage?x-csa-lang=en_US?1= 967 + /+ ?2= 968 + /*$ ?99= 969 + ^ / 970 971 # TW trackback pinger. 972 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 973 + ^/en_[uU][sS]/ trackbackPing?x-csa-lang=en_US?1= 974 + /+ ?2= 975 + /ping/*$ ?99= 976 + ^ / 977 978 # TW XML-RPC pingback server. XML-RPC is inherently non-RESTful, so 979 # the fact that we use the PUT non-idempotent method to perform an 980 # idempotent request won't get things any worse. CSA, on the contrary, 981 # tries and be as RESTful as possible and it accepts non-POST MIME types 982 # only with PUT. 983 # 984 # Warning: the "/ping" path token is hard-coded into the updatePage.awk 985 # RPC I/O function, so if it is changed here it would need to be changed 986 # there too, which must not be done of course. 987 # 988 #PUT ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 989 #+ ^/en_[uU][sS]/ pingbackServer?x-csa-lang=en_US?1= 990 #+ /+ ?2= 991 #+ /.* ?99= 992 #+ ^ / 993 994 # TW listing of all page comments. 995 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/*$ 996 + ^/en_[uU][sS]/ cmtList?x-csa-lang=en_US?1= 997 + /+ ?2= 998 + /.* ?99= 999 + ^ / 1000 1001 # TW page comment visualizer. 1002 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+(/style/print)?/*$ 1003 + ^/en_[uU][sS]/ cmtView?x-csa-lang=en_US?1= 1004 + /+ ?2= 1005 + /comment/ ?3= 1006 + /style/print/? ?4=print 1007 + /.* ?99= 1008 + ^ / 1009 1010 # Post a new page comment. 1011 POST ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment(/[1-9][-.a-zA-Z0-9%]+)?/*$ 1012 + ^/en_[uU][sS]/ cmtPost?x-csa-lang=en_US?1= 1013 + /+ ?2= 1014 + /comment/ ?3= 1015 + /.* ?99= 1016 + ^ / 1017 1018 # Restore a previously banned TW page comment. Note how from a REST 1019 # perspective we are logically deleting the 'banned' property from 1020 # the target object. 1021 1022 DELETE ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/banned/*$ 1023 + ^/en_[uU][sS]/ cmtBan?x-csa-lang=en_US?1= 1024 + /+ ?2= 1025 + /comment/ ?3= 1026 + /banned/ ?4=restore 1027 + /.* ?99= 1028 + ^ / 1029 1030 # Ban a specified TW page comment. 1031 DELETE ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/*$ 1032 + ^/en_[uU][sS]/ cmtBan?x-csa-lang=en_US?1= 1033 + /+ ?2= 1034 + /comment/ ?3= 1035 + /.* ?99= 1036 + ^ / 1037 1038 # TW listing of page revisions. 1039 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/*$ 1040 + ^/en_[uU][sS]/ pageHistory?x-csa-lang=en_US?1= 1041 + /+ ?2= 1042 + /.* ?99= 1043 + ^ / 1044 1045 # Display a specified TW page revision. 1046 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/[1-9][-a-zA-Z0-9:%]+/*$ 1047 + ^/en_[uU][sS]/ showPage?x-csa-lang=en_US?1= 1048 + /+ ?2= 1049 + /history/ ?4=show?5= 1050 + /.* ?99= 1051 + ^ / 1052 1053 # Show the diffs between two specified TW page revisions. 1054 GET ^/en_[uU][sS]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/diff/*$ 1055 + ^/en_[uU][sS]/ pageHistory?x-csa-lang=en_US?1= 1056 + /+ ?2= 1057 + /.* ?99= 1058 + ^ / 1059 1060 # Catch-all (must come last in each language section). 1061 .* ^/en_[uU][sS]/.* /INVALID;x-csa-lang=en_US 1062 1063 # ----------------------------------------------- 1064 # The following URLs are for the 'de_DE' language. 1065 # ----------------------------------------------- 1066 1067 # Handle special (i.e. group-less) URLs first. 1068 GET ^/de_[dD][eE]/(tw-)?prg/*$ /prg?x-csa-lang=de_DE 1069 1070 # Admin listing of page groups in the current language. 1071 GET ^/de_[dD][eE]/tw-groups(/.*)? 1072 + ^/de_[dD][eE]/ listGroups?x-csa-lang=de_DE/ 1073 + /tw-groups/* ?1= 1074 + /*$ ?99= 1075 + ^ / 1076 1077 # Post edits to page group table. 1078 POST ^/de_[dD][eE]/tw-group(/.*)? 1079 + ^/de_[dD][eE]/ updateGroup?x-csa-lang=de_DE/ 1080 + /tw-group/* ?1= 1081 + /*$ ?99= 1082 + ^ / 1083 1084 # Page Group editing dialog. 1085 GET ^/de_[dD][eE]/tw-group(/+[a-zA-Z%][-a-zA-Z0-9%]+)? 1086 + ^/de_[dD][eE]/ editGroup?x-csa-lang=de_DE/ 1087 + /tw-group/* ?1= 1088 + /*$ ?99= 1089 + ^ / 1090 1091 # We we log-in we are logically appending a new session to the "tw-session/" 1092 # resource tree. Alternatively, we could PUT a new session into the tree, 1093 # but that cannot be easily done with common HTML browsers. We would need 1094 # a way to dinamically append the user-id to the action URL, but that 1095 # cannot be done with plain HTML. 1096 1097 # New implementations MUST use "tw-session" as opposed to "session". 1098 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 1099 + ^/de_[dD][eE]/ logIn?x-csa-lang=de_DE?1= 1100 + /.* ?99= 1101 + ^ / 1102 1103 # New implementations MUST use "tw-openid" as opposed to "openid". 1104 # Start a session through OpenID. 1105 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?openid/*$ 1106 + ^/de_[dD][eE]/ openidSetup?x-csa-lang=de_DE?1= 1107 + /.* ?99= 1108 + ^ / 1109 1110 # Start a session through an RPX authentication proxy. 1111 ^(GET|POST)$ ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-rpx/*$ 1112 + ^/de_[dD][eE]/ rpxLogIn?x-csa-lang=de_DE?1= 1113 + /.* ?99= 1114 + ^ / 1115 1116 # I need to remove the "/tw-session/" part here, because in some 1117 # circumstances the group name may be missing and the program would then 1118 # erroneously assume it to be "tw-session". This is probably harmless 1119 # and would simply trigger error 0041 in 'logOut', but I prefer to avoid 1120 # it anyway, because if a group named "tw-session" actually exists, 1121 # the user will be redirected to the default page of that group upon 1122 # log-out, as opposed to the default page of the group he has just 1123 # logged-out from. 1124 1125 # New implementations MUST use "tw-session" as opposed to "session". 1126 DELETE ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 1127 + /(tw-)?session/*$ / 1128 + ^/de_[dD][eE]/ logOut?x-csa-lang=de_DE?1= 1129 + /.* ?99= 1130 + ^ / 1131 1132 # Begin of special group-level requests, with either numeric 1133 # or special TW page names "tw-..." . 1134 1135 # Show contents of the shopping cart. 1136 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 1137 + ^/de_[dD][eE]/ cartView?x-csa-lang=de_DE?1= 1138 + /.* ?99= 1139 + ^ / 1140 1141 # Post an item to the shopping cart. The mandatory item code and 1142 # optional quantity can only be passed as non-RESTful arguments, 1143 # as they would not make sense as RESTful ones here. 1144 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 1145 + ^/de_[dD][eE]/ cartLoad?x-csa-lang=de_DE?1= 1146 + /.* ?99= 1147 + ^ / 1148 1149 # Check-out the shopping-cart by posting a purchase order. 1150 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-purchase/*$ 1151 + ^/de_[dD][eE]/ cartCheckout?x-csa-lang=de_DE?1= 1152 + /.* ?99= 1153 + ^ / 1154 1155 # Shipping/billing data entry form. 1156 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-shop-form/*$ 1157 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1158 + / ?2=tw-shop-form/ 1159 + /.* ?99= 1160 + ^ / 1161 1162 # Admin listing of user accounts, possibly matching a string. 1163 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-users(/.*)? 1164 + ^/de_[dD][eE]/ listUsers?x-csa-lang=de_DE?1= 1165 + /tw-users/* ?2= 1166 + /*$ ?99= 1167 + ^ / 1168 1169 # Detailed listing of a specified user account. 1170 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 1171 + ^/de_[dD][eE]/ editUser?x-csa-lang=de_DE?1= 1172 + /tw-user/+ ?2= 1173 + /*$ ?99= 1174 + ^ / 1175 1176 # Post edits to a user account. 1177 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 1178 + ^/de_[dD][eE]/ updateUser?x-csa-lang=de_DE?1= 1179 + /tw-user/+ ?2= 1180 + /*$ ?99= 1181 + ^ / 1182 1183 # TW listing of group attachments. 1184 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile(/.*)? 1185 + ^/de_[dD][eE]/ listAttachments?x-csa-lang=de_DE?1= 1186 + /tw-webfile ?3=web 1187 + /+ ?5= 1188 + /*$ ?99= 1189 + ^ / 1190 1191 # Add a new public attachment. 1192 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/*$ 1193 + ^/de_[dD][eE]/ putAttachment?x-csa-lang=de_DE?1= 1194 + /tw-webfile/+ ?3= 1195 + /.* ?99= 1196 + ^ / 1197 1198 # Remove a public attachment. 1199 DELETE ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/[^/]+/*$ 1200 + ^/de_[dD][eE]/ deleteAttachment?x-csa-lang=de_DE?1= 1201 + /tw-webfile/+ ?3= 1202 + /.* ?99= 1203 + ^ / 1204 1205 # TW group recent changes display request. 1206 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/1/*$ 1207 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1208 + / ?2=tw-recent-changes/ 1209 + /.* ?99= 1210 + ^ / 1211 1212 # TW listing of selected public file types in a group. 1213 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/2/[a-z]+/*$ 1214 + ^/de_[dD][eE]/ groupFileList?x-csa-lang=de_DE?1= 1215 + /2/ ?2= 1216 + /*$ ?3=web?99= 1217 + ^ / 1218 1219 # TW listing of selected private file types in a group. 1220 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/3/[a-z]+/*$ 1221 + ^/de_[dD][eE]/ groupFileList?x-csa-lang=de_DE?1= 1222 + /3/ ?2= 1223 + /*$ ?3=wiki?99= 1224 + ^ / 1225 1226 # TW listing of all pages of a specified year, with optional metacat. 1227 # Note that arg n.3 is already used for paginf here, and it can only 1228 # be passed non-RESTfully, i.e. as "&3=..." . 1229 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/4/[1-9][0-9]+(/.*)? 1230 + ^/de_[dD][eE]/ groupYearList?x-csa-lang=de_DE?1= 1231 + /4/ ?2= 1232 + /+ ?4= 1233 + /*$ ?99= 1234 + ^ / 1235 1236 # Sitemap-like listing of all pages of a specified group. 1237 #GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/5/*$ 1238 #+ ^/de_[dD][eE]/ groupPageMap?x-csa-lang=de_DE?1= 1239 #+ /5/*$ ?99= 1240 #+ ^ / 1241 1242 # Sitemap-like listing of all pages of a specified group. 1243 # For large sites, an optional meta-category can be specified, 1244 # and possibly also the initial page block within the meta-category, 1245 # for paged results. 1246 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/5(/.*)? 1247 + ^/de_[dD][eE]/ groupPageMap?x-csa-lang=de_DE?1= 1248 + /5/* ?2= 1249 + /+ ?3= 1250 + /*$ ?99= 1251 + ^ / 1252 1253 # Basic listing of available authorization groups. 1254 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/6/*$ 1255 + ^/de_[dD][eE]/ groupAuthList?x-csa-lang=de_DE?1= 1256 + /6/ ?2=groups 1257 + /*$ ?99= 1258 + ^ / 1259 1260 # Basic listing of available authorization users. 1261 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/7/*$ 1262 + ^/de_[dD][eE]/ groupAuthList?x-csa-lang=de_DE?1= 1263 + /7/ ?2=users 1264 + /*$ ?99= 1265 + ^ / 1266 1267 # TW group tag cloud display request. 1268 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/8/*$ 1269 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1270 + / ?2=tw-group-cloud/ 1271 + /.* ?99= 1272 + ^ / 1273 1274 # TW group meta-category cloud display request. 1275 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/14/*$ 1276 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1277 + / ?2=tw-cat-cloud/ 1278 + /.* ?99= 1279 + ^ / 1280 1281 # TW listing of pages associated with a specified tag. 1282 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/9/[^\/]+(/.*)? 1283 + ^/de_[dD][eE]/ groupTagSearch?x-csa-lang=de_DE?1= 1284 + /9/ ?2= 1285 + /+ ?3= 1286 + /+ ?4= 1287 + /*$ ?99= 1288 + ^ / 1289 1290 # Userid/password retrieval service. 1291 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/10/[^\/]+/*$ 1292 + ^/de_[dD][eE]/ sendAuthInfo?x-csa-lang=de_DE?1= 1293 + /10/ ?2= 1294 + /*$ ?99= 1295 + ^ / 1296 1297 # TW group recent comments display request. 1298 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/11/*$ 1299 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1300 + / ?2=tw-recent-comments/ 1301 + /.* ?99= 1302 + ^ / 1303 1304 # Show listing of TW program source files. 1305 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/12/*$ 1306 + ^/de_[dD][eE]/ sourceList?x-csa-lang=de_DE?1= 1307 + /.* ?99= 1308 + ^ / 1309 1310 # Show a specified TW program source file. 1311 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/13/[^\/]+/*$ 1312 + ^/de_[dD][eE]/ viewSource?x-csa-lang=de_DE?1= 1313 + /13/ ?2= 1314 + /*$ ?99= 1315 + ^ / 1316 1317 # Sitemap requests, see http://sitemaps.org/ . 1318 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/15/*$ 1319 + ^/de_[dD][eE]/ groupPageMap?x-csa-lang=de_DE?1= 1320 + /15/* ?7=s 1321 + /*$ ?99= 1322 + ^ / 1323 1324 ### End of special group requests with numeric attributes. 1325 1326 # Send a self-registration request. 1327 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?subscription/*$ 1328 + ^/de_[dD][eE]/ registerUser?x-csa-lang=de_DE?1= 1329 + /.* ?99= 1330 + ^ / 1331 1332 # Access the TW administrator menu. 1333 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-editor-menu/*$ 1334 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1335 + / ?2= 1336 + /.*$ ?99= 1337 + ^ / 1338 1339 # Default login/logout form. 1340 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-session-form/*$ 1341 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1342 + / ?2= 1343 + /.*$ ?99= 1344 + ^ / 1345 1346 # Page or thread subscription request. 1347 ^(GET|POST)$ ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-watch(/[1-9][0-9]+)?/*$ 1348 + ^/de_[dD][eE]/ watch?x-csa-lang=de_DE?1= 1349 + /tw-watch/ ?2= 1350 + /.*$ ?99= 1351 + ^ / 1352 1353 # Misc. RSS 1.0 views about the specified group. These could be made to 1354 # rely on showStatic but it may require tweaking of the latter, so I'll 1355 # leave them to a more specialized program for the moment. See the 1356 # source code of 'rssFeed' for supported tw-* listing types. 1357 1358 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/style/rss/*$ 1359 + ^/de_[dD][eE]/ rssFeed?x-csa-lang=de_DE?1= 1360 + / ?2= 1361 + /style/rss/? / 1362 + / ?3= 1363 + /.* ?99= 1364 + ^ / 1365 1366 # Misc. static views about the specified group. 1367 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?(/style/print)?/*$ 1368 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1369 + / ?2= 1370 + /style/print/? ?3=print 1371 + / ?4= 1372 + /.* ?99= 1373 + ^ / 1374 1375 # TW page trackback listings. 1376 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping(/style/print)?/*$ 1377 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1378 + / ?4= 1379 + /ping/? ?2=tw-page-trackbacks/ 1380 + /style/print/? ?3=print 1381 + /.* ?99= 1382 + ^ / 1383 1384 # TW listing of private page attachments. 1385 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 1386 + ^/de_[dD][eE]/ listAttachments?x-csa-lang=de_DE?1= 1387 + /+ ?2= 1388 + /wikifile ?3=wiki 1389 + /.* ?99= 1390 + ^ / 1391 1392 # TW private page attachment downloader (public attachments are directly 1393 # accessible through the web server). 1394 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 1395 + ^/de_[dD][eE]/ getAttachment?x-csa-lang=de_DE?1= 1396 + /+ ?2= 1397 + /wikifile/+ ?3= 1398 + /.* ?99= 1399 + ^ / 1400 1401 # Add a new private page attachment. 1402 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 1403 + ^/de_[dD][eE]/ putAttachment?x-csa-lang=de_DE?1= 1404 + /+ ?2= 1405 + /wikifile ?6=wiki 1406 + /.* ?99= 1407 + ^ / 1408 1409 # Remove a private page attachment. 1410 DELETE ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 1411 + ^/de_[dD][eE]/ deleteAttachment?x-csa-lang=de_DE?1= 1412 + /+ ?2= 1413 + /wikifile ?4=wiki 1414 + /+ ?3= 1415 + /.* ?99= 1416 + ^ / 1417 1418 # TW page editing request. 1419 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/edit(/[1-9][-a-zA-Z0-9:%]+)?/*$ 1420 + ^/de_[dD][eE]/ editPage?x-csa-lang=de_DE?1= 1421 + /+ ?2= 1422 + /form/edit/* ?3= 1423 + /.* ?99= 1424 + ^ / 1425 1426 # TW page manual trackback form. 1427 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/ping/*$ 1428 + ^/de_[dD][eE]/ showStatic?x-csa-lang=de_DE?1= 1429 + / ?2=tw-trackback-form/ 1430 + / ?4= 1431 + /form/ping/.*$ ?99= 1432 + ^ / 1433 1434 # TW page print request. 1435 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/print/*$ 1436 + ^/de_[dD][eE]/ showPage?x-csa-lang=de_DE?1= 1437 + /+ ?2= 1438 + /.* ?4=print?99= 1439 + ^ / 1440 1441 # TW page TOC request. 1442 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/toc/*$ 1443 + ^/de_[dD][eE]/ showPage?x-csa-lang=de_DE?1= 1444 + /+ ?2= 1445 + /.* ?4=toc?99= 1446 + ^ / 1447 1448 # TW group/page display request. The HEAD method can be useful in some 1449 # cases, like when a site such as www.websiteoptimization.com is used 1450 # to run speed and optimization tests against TW pages. Note however 1451 # that while HEAD works with the Apache web server it will not work with 1452 # thttpd and possibly other servers if the request is done against a CGI 1453 # program as opposed than a static page. 1454 1455 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/*$ 1456 + ^/de_[dD][eE]/ showPage?x-csa-lang=de_DE?1= 1457 + /+ ?2= 1458 + /*$ ?4=show?99= 1459 + ^ / 1460 1461 # TW group/page update request. 1462 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/*$ 1463 + ^/de_[dD][eE]/ updatePage?x-csa-lang=de_DE?1= 1464 + /+ ?2= 1465 + /*$ ?99= 1466 + ^ / 1467 1468 # TW trackback pinger. 1469 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 1470 + ^/de_[dD][eE]/ trackbackPing?x-csa-lang=de_DE?1= 1471 + /+ ?2= 1472 + /ping/*$ ?99= 1473 + ^ / 1474 1475 # TW XML-RPC pingback server. XML-RPC is inherently non-RESTful, so 1476 # the fact that we use the PUT non-idempotent method to perform an 1477 # idempotent request won't get things any worse. CSA, on the contrary, 1478 # tries and be as RESTful as possible and it accepts non-POST MIME types 1479 # only with PUT. 1480 # 1481 # Warning: the "/ping" path token is hard-coded into the updatePage.awk 1482 # RPC I/O function, so if it is changed here it would need to be changed 1483 # there too, which must not be done of course. 1484 # 1485 #PUT ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 1486 #+ ^/de_[dD][eE]/ pingbackServer?x-csa-lang=de_DE?1= 1487 #+ /+ ?2= 1488 #+ /.* ?99= 1489 #+ ^ / 1490 1491 # TW listing of all page comments. 1492 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/*$ 1493 + ^/de_[dD][eE]/ cmtList?x-csa-lang=de_DE?1= 1494 + /+ ?2= 1495 + /.* ?99= 1496 + ^ / 1497 1498 # TW page comment visualizer. 1499 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+(/style/print)?/*$ 1500 + ^/de_[dD][eE]/ cmtView?x-csa-lang=de_DE?1= 1501 + /+ ?2= 1502 + /comment/ ?3= 1503 + /style/print/? ?4=print 1504 + /.* ?99= 1505 + ^ / 1506 1507 # Post a new page comment. 1508 POST ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment(/[1-9][-.a-zA-Z0-9%]+)?/*$ 1509 + ^/de_[dD][eE]/ cmtPost?x-csa-lang=de_DE?1= 1510 + /+ ?2= 1511 + /comment/ ?3= 1512 + /.* ?99= 1513 + ^ / 1514 1515 # Restore a previously banned TW page comment. Note how from a REST 1516 # perspective we are logically deleting the 'banned' property from 1517 # the target object. 1518 1519 DELETE ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/banned/*$ 1520 + ^/de_[dD][eE]/ cmtBan?x-csa-lang=de_DE?1= 1521 + /+ ?2= 1522 + /comment/ ?3= 1523 + /banned/ ?4=restore 1524 + /.* ?99= 1525 + ^ / 1526 1527 # Ban a specified TW page comment. 1528 DELETE ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/*$ 1529 + ^/de_[dD][eE]/ cmtBan?x-csa-lang=de_DE?1= 1530 + /+ ?2= 1531 + /comment/ ?3= 1532 + /.* ?99= 1533 + ^ / 1534 1535 # TW listing of page revisions. 1536 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/*$ 1537 + ^/de_[dD][eE]/ pageHistory?x-csa-lang=de_DE?1= 1538 + /+ ?2= 1539 + /.* ?99= 1540 + ^ / 1541 1542 # Display a specified TW page revision. 1543 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/[1-9][-a-zA-Z0-9:%]+/*$ 1544 + ^/de_[dD][eE]/ showPage?x-csa-lang=de_DE?1= 1545 + /+ ?2= 1546 + /history/ ?4=show?5= 1547 + /.* ?99= 1548 + ^ / 1549 1550 # Show the diffs between two specified TW page revisions. 1551 GET ^/de_[dD][eE]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/diff/*$ 1552 + ^/de_[dD][eE]/ pageHistory?x-csa-lang=de_DE?1= 1553 + /+ ?2= 1554 + /.* ?99= 1555 + ^ / 1556 1557 # Catch-all (must come last in each language section). 1558 .* ^/de_[dD][eE]/.* /INVALID;x-csa-lang=de_DE 1559 1560 # ----------------------------------------------- 1561 # The following URLs are for the 'ru_RU' language. 1562 # ----------------------------------------------- 1563 1564 # Handle special (i.e. group-less) URLs first. 1565 GET ^/ru_[rR][uU]/(tw-)?prg/*$ /prg?x-csa-lang=ru_RU 1566 1567 # Admin listing of page groups in the current language. 1568 GET ^/ru_[rR][uU]/tw-groups(/.*)? 1569 + ^/ru_[rR][uU]/ listGroups?x-csa-lang=ru_RU/ 1570 + /tw-groups/* ?1= 1571 + /*$ ?99= 1572 + ^ / 1573 1574 # Post edits to page group table. 1575 POST ^/ru_[rR][uU]/tw-group(/.*)? 1576 + ^/ru_[rR][uU]/ updateGroup?x-csa-lang=ru_RU/ 1577 + /tw-group/* ?1= 1578 + /*$ ?99= 1579 + ^ / 1580 1581 # Page Group editing dialog. 1582 #GET ^/ru_[rR][uU]/tw-group(/+[a-zA-Z%][-a-zA-Z0-9%]+)? 1583 GET ^/ru_[rR][uU]/tw-group(/+[^\/]+)? 1584 + ^/ru_[rR][uU]/ editGroup?x-csa-lang=ru_RU/ 1585 + /tw-group/* ?1= 1586 + /*$ ?99= 1587 + ^ / 1588 1589 # We we log-in we are logically appending a new session to the "tw-session/" 1590 # resource tree. Alternatively, we could PUT a new session into the tree, 1591 # but that cannot be easily done with common HTML browsers. We would need 1592 # a way to dinamically append the user-id to the action URL, but that 1593 # cannot be done with plain HTML. 1594 1595 # New implementations MUST use "tw-session" as opposed to "session". 1596 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 1597 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/(tw-)?session/*$ 1598 + ^/ru_[rR][uU]/ logIn?x-csa-lang=ru_RU?1= 1599 + /.* ?99= 1600 + ^ / 1601 1602 # New implementations MUST use "tw-openid" as opposed to "openid". 1603 # Start a session through OpenID. 1604 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?openid/*$ 1605 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/(tw-)?openid/*$ 1606 + ^/ru_[rR][uU]/ openidSetup?x-csa-lang=ru_RU?1= 1607 + /.* ?99= 1608 + ^ / 1609 1610 # Start a session through an RPX authentication proxy. 1611 #^(GET|POST)$ ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-rpx/*$ 1612 ^(GET|POST)$ ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-rpx/*$ 1613 + ^/ru_[rR][uU]/ rpxLogIn?x-csa-lang=ru_RU?1= 1614 + /.* ?99= 1615 + ^ / 1616 1617 # I need to remove the "/tw-session/" part here, because in some 1618 # circumstances the group name may be missing and the program would then 1619 # erroneously assume it to be "tw-session". This is probably harmless 1620 # and would simply trigger error 0041 in 'logOut', but I prefer to avoid 1621 # it anyway, because if a group named "tw-session" actually exists, 1622 # the user will be redirected to the default page of that group upon 1623 # log-out, as opposed to the default page of the group he has just 1624 # logged-out from. 1625 1626 # New implementations MUST use "tw-session" as opposed to "session". 1627 #DELETE ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 1628 DELETE ^/ru_[rR][uU]/[^-\/]+[^\/]+/(tw-)?session/*$ 1629 + /(tw-)?session/*$ / 1630 + ^/ru_[rR][uU]/ logOut?x-csa-lang=ru_RU?1= 1631 + /.* ?99= 1632 + ^ / 1633 1634 # Begin of special group-level requests, with either numeric 1635 # or special TW page names "tw-..." . 1636 1637 # Show contents of the shopping cart. 1638 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 1639 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-cart/*$ 1640 + ^/ru_[rR][uU]/ cartView?x-csa-lang=ru_RU?1= 1641 + /.* ?99= 1642 + ^ / 1643 1644 # Post an item to the shopping cart. The mandatory item code and 1645 # optional quantity can only be passed as non-RESTful arguments, 1646 # as they would not make sense as RESTful ones here. 1647 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 1648 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-cart/*$ 1649 + ^/ru_[rR][uU]/ cartLoad?x-csa-lang=ru_RU?1= 1650 + /.* ?99= 1651 + ^ / 1652 1653 # Check-out the shopping-cart by posting a purchase order. 1654 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-purchase/*$ 1655 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-purchase/*$ 1656 + ^/ru_[rR][uU]/ cartCheckout?x-csa-lang=ru_RU?1= 1657 + /.* ?99= 1658 + ^ / 1659 1660 # Shipping/billing data entry form. 1661 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-shop-form/*$ 1662 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-shop-form/*$ 1663 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1664 + / ?2=tw-shop-form/ 1665 + /.* ?99= 1666 + ^ / 1667 1668 # Admin listing of user accounts, possibly matching a string. 1669 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-users(/.*)? 1670 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-users(/.*)? 1671 + ^/ru_[rR][uU]/ listUsers?x-csa-lang=ru_RU?1= 1672 + /tw-users/* ?2= 1673 + /*$ ?99= 1674 + ^ / 1675 1676 # Detailed listing of a specified user account. 1677 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 1678 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-user(/.*)? 1679 + ^/ru_[rR][uU]/ editUser?x-csa-lang=ru_RU?1= 1680 + /tw-user/+ ?2= 1681 + /*$ ?99= 1682 + ^ / 1683 1684 # Post edits to a user account. 1685 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 1686 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-user(/.*)? 1687 + ^/ru_[rR][uU]/ updateUser?x-csa-lang=ru_RU?1= 1688 + /tw-user/+ ?2= 1689 + /*$ ?99= 1690 + ^ / 1691 1692 # TW listing of group attachments. 1693 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile(/.*)? 1694 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-webfile(/.*)? 1695 + ^/ru_[rR][uU]/ listAttachments?x-csa-lang=ru_RU?1= 1696 + /tw-webfile ?3=web 1697 + /+ ?5= 1698 + /*$ ?99= 1699 + ^ / 1700 1701 # Add a new public attachment. 1702 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/*$ 1703 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-webfile/*$ 1704 + ^/ru_[rR][uU]/ putAttachment?x-csa-lang=ru_RU?1= 1705 + /tw-webfile/+ ?3= 1706 + /.* ?99= 1707 + ^ / 1708 1709 # Remove a public attachment. 1710 #DELETE ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/[^/]+/*$ 1711 DELETE ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-webfile/[^/]+/*$ 1712 + ^/ru_[rR][uU]/ deleteAttachment?x-csa-lang=ru_RU?1= 1713 + /tw-webfile/+ ?3= 1714 + /.* ?99= 1715 + ^ / 1716 1717 # TW group recent changes display request. 1718 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/1/*$ 1719 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/1/*$ 1720 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1721 + / ?2=tw-recent-changes/ 1722 + /.* ?99= 1723 + ^ / 1724 1725 # TW listing of selected public file types in a group. 1726 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/2/[a-z]+/*$ 1727 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/2/[a-z]+/*$ 1728 + ^/ru_[rR][uU]/ groupFileList?x-csa-lang=ru_RU?1= 1729 + /2/ ?2= 1730 + /*$ ?3=web?99= 1731 + ^ / 1732 1733 # TW listing of selected private file types in a group. 1734 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/3/[a-z]+/*$ 1735 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/3/[a-z]+/*$ 1736 + ^/ru_[rR][uU]/ groupFileList?x-csa-lang=ru_RU?1= 1737 + /3/ ?2= 1738 + /*$ ?3=wiki?99= 1739 + ^ / 1740 1741 # TW listing of all pages of a specified year, with optional metacat. 1742 # Note that arg n.3 is already used for paginf here, and it can only 1743 # be passed non-RESTfully, i.e. as "&3=..." . 1744 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/4/[1-9][0-9]+(/.*)? 1745 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/4/[1-9][0-9]+(/.*)? 1746 + ^/ru_[rR][uU]/ groupYearList?x-csa-lang=ru_RU?1= 1747 + /4/ ?2= 1748 + /+ ?4= 1749 + /*$ ?99= 1750 + ^ / 1751 1752 # Sitemap-like listing of all pages of a specified group. 1753 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/5/*$ 1754 #+ ^/ru_[rR][uU]/ groupPageMap?x-csa-lang=ru_RU?1= 1755 #+ /5/*$ ?99= 1756 #+ ^ / 1757 1758 # Sitemap-like listing of all pages of a specified group. 1759 # For large sites, an optional meta-category can be specified, 1760 # and possibly also the initial page block within the meta-category, 1761 # for paged results. 1762 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/5(/.*)? 1763 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/5(/.*)? 1764 + ^/ru_[rR][uU]/ groupPageMap?x-csa-lang=ru_RU?1= 1765 + /5/* ?2= 1766 + /+ ?3= 1767 + /*$ ?99= 1768 + ^ / 1769 1770 # Basic listing of available authorization groups. 1771 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/6/*$ 1772 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/6/*$ 1773 + ^/ru_[rR][uU]/ groupAuthList?x-csa-lang=ru_RU?1= 1774 + /6/ ?2=groups 1775 + /*$ ?99= 1776 + ^ / 1777 1778 # Basic listing of available authorization users. 1779 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/7/*$ 1780 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/7/*$ 1781 + ^/ru_[rR][uU]/ groupAuthList?x-csa-lang=ru_RU?1= 1782 + /7/ ?2=users 1783 + /*$ ?99= 1784 + ^ / 1785 1786 # TW group tag cloud display request. 1787 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/8/*$ 1788 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/8/*$ 1789 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1790 + / ?2=tw-group-cloud/ 1791 + /.* ?99= 1792 + ^ / 1793 1794 # TW group meta-category cloud display request. 1795 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/14/*$ 1796 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/14/*$ 1797 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1798 + / ?2=tw-cat-cloud/ 1799 + /.* ?99= 1800 + ^ / 1801 1802 # TW listing of pages associated with a specified tag. 1803 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/9/[^-\/]+[^\/]+(/.*)? 1804 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/9/[^-\/]+[^\/]+(/.*)? 1805 + ^/ru_[rR][uU]/ groupTagSearch?x-csa-lang=ru_RU?1= 1806 + /9/ ?2= 1807 + /+ ?3= 1808 + /+ ?4= 1809 + /*$ ?99= 1810 + ^ / 1811 1812 # Userid/password retrieval service. 1813 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/10/[^-\/]+[^\/]+/*$ 1814 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/10/[^-\/]+[^\/]+/*$ 1815 + ^/ru_[rR][uU]/ sendAuthInfo?x-csa-lang=ru_RU?1= 1816 + /10/ ?2= 1817 + /*$ ?99= 1818 + ^ / 1819 1820 # TW group recent comments display request. 1821 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/11/*$ 1822 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/11/*$ 1823 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1824 + / ?2=tw-recent-comments/ 1825 + /.* ?99= 1826 + ^ / 1827 1828 # Show listing of TW program source files. 1829 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/12/*$ 1830 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/12/*$ 1831 + ^/ru_[rR][uU]/ sourceList?x-csa-lang=ru_RU?1= 1832 + /.* ?99= 1833 + ^ / 1834 1835 # Show a specified TW program source file. 1836 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/13/[^-\/]+[^\/]+/*$ 1837 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/13/[^-\/]+[^\/]+/*$ 1838 + ^/ru_[rR][uU]/ viewSource?x-csa-lang=ru_RU?1= 1839 + /13/ ?2= 1840 + /*$ ?99= 1841 + ^ / 1842 1843 # Sitemap requests, see http://sitemaps.org/ . 1844 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/15/*$ 1845 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/15/*$ 1846 + ^/ru_[rR][uU]/ groupPageMap?x-csa-lang=ru_RU?1= 1847 + /15/* ?7=s 1848 + /*$ ?99= 1849 + ^ / 1850 1851 ### End of special group requests with numeric attributes. 1852 1853 # Send a self-registration request. 1854 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?subscription/*$ 1855 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/(tw-)?subscription/*$ 1856 + ^/ru_[rR][uU]/ registerUser?x-csa-lang=ru_RU?1= 1857 + /.* ?99= 1858 + ^ / 1859 1860 # Access the TW administrator menu. 1861 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-editor-menu/*$ 1862 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-editor-menu/*$ 1863 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1864 + / ?2= 1865 + /.*$ ?99= 1866 + ^ / 1867 1868 # Default login/logout form. 1869 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-session-form/*$ 1870 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-session-form/*$ 1871 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1872 + / ?2= 1873 + /.*$ ?99= 1874 + ^ / 1875 1876 # Page or thread subscription request. 1877 #^(GET|POST)$ ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-watch(/[1-9][0-9]+)?/*$ 1878 ^(GET|POST)$ ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-watch(/[1-9][0-9]+)?/*$ 1879 + ^/ru_[rR][uU]/ watch?x-csa-lang=ru_RU?1= 1880 + /tw-watch/ ?2= 1881 + /.*$ ?99= 1882 + ^ / 1883 1884 # Misc. RSS 1.0 views about the specified group. These could be made to 1885 # rely on showStatic but it may require tweaking of the latter, so I'll 1886 # leave them to a more specialized program for the moment. See the 1887 # source code of 'rssFeed' for supported tw-* listing types. 1888 1889 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/style/rss/*$ 1890 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-[-a-z0-9]+(/[^-\/]+[^\/]+)?/style/rss/*$ 1891 + ^/ru_[rR][uU]/ rssFeed?x-csa-lang=ru_RU?1= 1892 + / ?2= 1893 + /style/rss/? / 1894 + / ?3= 1895 + /.* ?99= 1896 + ^ / 1897 1898 # Misc. static views about the specified group. 1899 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?(/style/print)?/*$ 1900 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/tw-[-a-z0-9]+(/[^-\/]+[^\/]+)?(/style/print)?/*$ 1901 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1902 + / ?2= 1903 + /style/print/? ?3=print 1904 + / ?4= 1905 + /.* ?99= 1906 + ^ / 1907 1908 # TW page trackback listings. 1909 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping(/style/print)?/*$ 1910 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/ping(/style/print)?/*$ 1911 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1912 + / ?4= 1913 + /ping/? ?2=tw-page-trackbacks/ 1914 + /style/print/? ?3=print 1915 + /.* ?99= 1916 + ^ / 1917 1918 # TW listing of private page attachments. 1919 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 1920 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/*$ 1921 + ^/ru_[rR][uU]/ listAttachments?x-csa-lang=ru_RU?1= 1922 + /+ ?2= 1923 + /wikifile ?3=wiki 1924 + /.* ?99= 1925 + ^ / 1926 1927 # TW private page attachment downloader (public attachments are directly 1928 # accessible through the web server). 1929 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 1930 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/[^/]+/*$ 1931 + ^/ru_[rR][uU]/ getAttachment?x-csa-lang=ru_RU?1= 1932 + /+ ?2= 1933 + /wikifile/+ ?3= 1934 + /.* ?99= 1935 + ^ / 1936 1937 # Add a new private page attachment. 1938 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 1939 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/*$ 1940 + ^/ru_[rR][uU]/ putAttachment?x-csa-lang=ru_RU?1= 1941 + /+ ?2= 1942 + /wikifile ?6=wiki 1943 + /.* ?99= 1944 + ^ / 1945 1946 # Remove a private page attachment. 1947 #DELETE ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 1948 DELETE ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/[^/]+/*$ 1949 + ^/ru_[rR][uU]/ deleteAttachment?x-csa-lang=ru_RU?1= 1950 + /+ ?2= 1951 + /wikifile ?4=wiki 1952 + /+ ?3= 1953 + /.* ?99= 1954 + ^ / 1955 1956 # TW page editing request. 1957 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/edit(/[1-9][-a-zA-Z0-9:%]+)?/*$ 1958 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/form/edit(/[1-9][^\/]+)?/*$ 1959 + ^/ru_[rR][uU]/ editPage?x-csa-lang=ru_RU?1= 1960 + /+ ?2= 1961 + /form/edit/* ?3= 1962 + /.* ?99= 1963 + ^ / 1964 1965 # TW page manual trackback form. 1966 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/ping/*$ 1967 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/form/ping/*$ 1968 + ^/ru_[rR][uU]/ showStatic?x-csa-lang=ru_RU?1= 1969 + / ?2=tw-trackback-form/ 1970 + / ?4= 1971 + /form/ping/.*$ ?99= 1972 + ^ / 1973 1974 # TW page print request. 1975 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/print/*$ 1976 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/style/print/*$ 1977 + ^/ru_[rR][uU]/ showPage?x-csa-lang=ru_RU?1= 1978 + /+ ?2= 1979 + /.* ?4=print?99= 1980 + ^ / 1981 1982 # TW page TOC request. 1983 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/toc/*$ 1984 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/style/toc/*$ 1985 + ^/ru_[rR][uU]/ showPage?x-csa-lang=ru_RU?1= 1986 + /+ ?2= 1987 + /.* ?4=toc?99= 1988 + ^ / 1989 1990 # TW group/page display request. The HEAD method can be useful in some 1991 # cases, like when a site such as www.websiteoptimization.com is used 1992 # to run speed and optimization tests against TW pages. Note however 1993 # that while HEAD works with the Apache web server it will not work with 1994 # thttpd and possibly other servers if the request is done against a CGI 1995 # program as opposed than a static page. 1996 1997 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/*$ 1998 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+(/[^-\/]+[^\/]+)?/*$ 1999 + ^/ru_[rR][uU]/ showPage?x-csa-lang=ru_RU?1= 2000 + /+ ?2= 2001 + /*$ ?4=show?99= 2002 + ^ / 2003 2004 # TW group/page update request. 2005 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/*$ 2006 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/*$ 2007 + ^/ru_[rR][uU]/ updatePage?x-csa-lang=ru_RU?1= 2008 + /+ ?2= 2009 + /*$ ?99= 2010 + ^ / 2011 2012 # TW trackback pinger. 2013 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 2014 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/ping/*$ 2015 + ^/ru_[rR][uU]/ trackbackPing?x-csa-lang=ru_RU?1= 2016 + /+ ?2= 2017 + /ping/*$ ?99= 2018 + ^ / 2019 2020 # TW XML-RPC pingback server. XML-RPC is inherently non-RESTful, so 2021 # the fact that we use the PUT non-idempotent method to perform an 2022 # idempotent request won't get things any worse. CSA, on the contrary, 2023 # tries and be as RESTful as possible and it accepts non-POST MIME types 2024 # only with PUT. 2025 # 2026 # Warning: the "/ping" path token is hard-coded into the updatePage.awk 2027 # RPC I/O function, so if it is changed here it would need to be changed 2028 # there too, which must not be done of course. 2029 # 2030 #PUT ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 2031 #+ ^/ru_[rR][uU]/ pingbackServer?x-csa-lang=ru_RU?1= 2032 #+ /+ ?2= 2033 #+ /.* ?99= 2034 #+ ^ / 2035 2036 # TW listing of all page comments. 2037 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/*$ 2038 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/*$ 2039 + ^/ru_[rR][uU]/ cmtList?x-csa-lang=ru_RU?1= 2040 + /+ ?2= 2041 + /.* ?99= 2042 + ^ / 2043 2044 # TW page comment visualizer. 2045 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+(/style/print)?/*$ 2046 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+(/style/print)?/*$ 2047 + ^/ru_[rR][uU]/ cmtView?x-csa-lang=ru_RU?1= 2048 + /+ ?2= 2049 + /comment/ ?3= 2050 + /style/print/? ?4=print 2051 + /.* ?99= 2052 + ^ / 2053 2054 # Post a new page comment. 2055 #POST ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment(/[1-9][-.a-zA-Z0-9%]+)?/*$ 2056 POST ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment(/[1-9][^\/]+)?/*$ 2057 + ^/ru_[rR][uU]/ cmtPost?x-csa-lang=ru_RU?1= 2058 + /+ ?2= 2059 + /comment/ ?3= 2060 + /.* ?99= 2061 + ^ / 2062 2063 # Restore a previously banned TW page comment. Note how from a REST 2064 # perspective we are logically deleting the 'banned' property from 2065 # the target object. 2066 2067 #DELETE ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/banned/*$ 2068 DELETE ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+/banned/*$ 2069 + ^/ru_[rR][uU]/ cmtBan?x-csa-lang=ru_RU?1= 2070 + /+ ?2= 2071 + /comment/ ?3= 2072 + /banned/ ?4=restore 2073 + /.* ?99= 2074 + ^ / 2075 2076 # Ban a specified TW page comment. 2077 #DELETE ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/*$ 2078 DELETE ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+/*$ 2079 + ^/ru_[rR][uU]/ cmtBan?x-csa-lang=ru_RU?1= 2080 + /+ ?2= 2081 + /comment/ ?3= 2082 + /.* ?99= 2083 + ^ / 2084 2085 # TW listing of page revisions. 2086 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/*$ 2087 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/history/*$ 2088 + ^/ru_[rR][uU]/ pageHistory?x-csa-lang=ru_RU?1= 2089 + /+ ?2= 2090 + /.* ?99= 2091 + ^ / 2092 2093 # Display a specified TW page revision. 2094 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/[1-9][-a-zA-Z0-9:%]+/*$ 2095 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/history/[1-9][^\/]+/*$ 2096 + ^/ru_[rR][uU]/ showPage?x-csa-lang=ru_RU?1= 2097 + /+ ?2= 2098 + /history/ ?4=show?5= 2099 + /.* ?99= 2100 + ^ / 2101 2102 # Show the diffs between two specified TW page revisions. 2103 #GET ^/ru_[rR][uU]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/diff/*$ 2104 GET ^/ru_[rR][uU]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/diff/*$ 2105 + ^/ru_[rR][uU]/ pageHistory?x-csa-lang=ru_RU?1= 2106 + /+ ?2= 2107 + /.* ?99= 2108 + ^ / 2109 2110 # Catch-all (must come last in each language section). 2111 .* ^/ru_[rR][uU]/.* /INVALID;x-csa-lang=ru_RU 2112 2113 # ----------------------------------------------- 2114 # The following URLs are for the 'zh_CN' language. 2115 # ----------------------------------------------- 2116 2117 # Handle special (i.e. group-less) URLs first. 2118 GET ^/zh_[cC][nN]/(tw-)?prg/*$ /prg?x-csa-lang=zh_CN 2119 2120 # Admin listing of page groups in the current language. 2121 GET ^/zh_[cC][nN]/tw-groups(/.*)? 2122 + ^/zh_[cC][nN]/ listGroups?x-csa-lang=zh_CN/ 2123 + /tw-groups/* ?1= 2124 + /*$ ?99= 2125 + ^ / 2126 2127 # Post edits to page group table. 2128 POST ^/zh_[cC][nN]/tw-group(/.*)? 2129 + ^/zh_[cC][nN]/ updateGroup?x-csa-lang=zh_CN/ 2130 + /tw-group/* ?1= 2131 + /*$ ?99= 2132 + ^ / 2133 2134 # Page Group editing dialog. 2135 #GET ^/zh_[cC][nN]/tw-group(/+[a-zA-Z%][-a-zA-Z0-9%]+)? 2136 GET ^/zh_[cC][nN]/tw-group(/+[^\/]+)? 2137 + ^/zh_[cC][nN]/ editGroup?x-csa-lang=zh_CN/ 2138 + /tw-group/* ?1= 2139 + /*$ ?99= 2140 + ^ / 2141 2142 # We we log-in we are logically appending a new session to the "tw-session/" 2143 # resource tree. Alternatively, we could PUT a new session into the tree, 2144 # but that cannot be easily done with common HTML browsers. We would need 2145 # a way to dinamically append the user-id to the action URL, but that 2146 # cannot be done with plain HTML. 2147 2148 # New implementations MUST use "tw-session" as opposed to "session". 2149 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 2150 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/(tw-)?session/*$ 2151 + ^/zh_[cC][nN]/ logIn?x-csa-lang=zh_CN?1= 2152 + /.* ?99= 2153 + ^ / 2154 2155 # New implementations MUST use "tw-openid" as opposed to "openid". 2156 # Start a session through OpenID. 2157 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?openid/*$ 2158 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/(tw-)?openid/*$ 2159 + ^/zh_[cC][nN]/ openidSetup?x-csa-lang=zh_CN?1= 2160 + /.* ?99= 2161 + ^ / 2162 2163 # Start a session through an RPX authentication proxy. 2164 #^(GET|POST)$ ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-rpx/*$ 2165 ^(GET|POST)$ ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-rpx/*$ 2166 + ^/zh_[cC][nN]/ rpxLogIn?x-csa-lang=zh_CN?1= 2167 + /.* ?99= 2168 + ^ / 2169 2170 # I need to remove the "/tw-session/" part here, because in some 2171 # circumstances the group name may be missing and the program would then 2172 # erroneously assume it to be "tw-session". This is probably harmless 2173 # and would simply trigger error 0041 in 'logOut', but I prefer to avoid 2174 # it anyway, because if a group named "tw-session" actually exists, 2175 # the user will be redirected to the default page of that group upon 2176 # log-out, as opposed to the default page of the group he has just 2177 # logged-out from. 2178 2179 # New implementations MUST use "tw-session" as opposed to "session". 2180 #DELETE ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 2181 DELETE ^/zh_[cC][nN]/[^-\/]+[^\/]+/(tw-)?session/*$ 2182 + /(tw-)?session/*$ / 2183 + ^/zh_[cC][nN]/ logOut?x-csa-lang=zh_CN?1= 2184 + /.* ?99= 2185 + ^ / 2186 2187 # Begin of special group-level requests, with either numeric 2188 # or special TW page names "tw-..." . 2189 2190 # Show contents of the shopping cart. 2191 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 2192 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-cart/*$ 2193 + ^/zh_[cC][nN]/ cartView?x-csa-lang=zh_CN?1= 2194 + /.* ?99= 2195 + ^ / 2196 2197 # Post an item to the shopping cart. The mandatory item code and 2198 # optional quantity can only be passed as non-RESTful arguments, 2199 # as they would not make sense as RESTful ones here. 2200 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 2201 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-cart/*$ 2202 + ^/zh_[cC][nN]/ cartLoad?x-csa-lang=zh_CN?1= 2203 + /.* ?99= 2204 + ^ / 2205 2206 # Check-out the shopping-cart by posting a purchase order. 2207 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-purchase/*$ 2208 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-purchase/*$ 2209 + ^/zh_[cC][nN]/ cartCheckout?x-csa-lang=zh_CN?1= 2210 + /.* ?99= 2211 + ^ / 2212 2213 # Shipping/billing data entry form. 2214 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-shop-form/*$ 2215 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-shop-form/*$ 2216 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2217 + / ?2=tw-shop-form/ 2218 + /.* ?99= 2219 + ^ / 2220 2221 # Admin listing of user accounts, possibly matching a string. 2222 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-users(/.*)? 2223 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-users(/.*)? 2224 + ^/zh_[cC][nN]/ listUsers?x-csa-lang=zh_CN?1= 2225 + /tw-users/* ?2= 2226 + /*$ ?99= 2227 + ^ / 2228 2229 # Detailed listing of a specified user account. 2230 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 2231 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-user(/.*)? 2232 + ^/zh_[cC][nN]/ editUser?x-csa-lang=zh_CN?1= 2233 + /tw-user/+ ?2= 2234 + /*$ ?99= 2235 + ^ / 2236 2237 # Post edits to a user account. 2238 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 2239 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-user(/.*)? 2240 + ^/zh_[cC][nN]/ updateUser?x-csa-lang=zh_CN?1= 2241 + /tw-user/+ ?2= 2242 + /*$ ?99= 2243 + ^ / 2244 2245 # TW listing of group attachments. 2246 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile(/.*)? 2247 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-webfile(/.*)? 2248 + ^/zh_[cC][nN]/ listAttachments?x-csa-lang=zh_CN?1= 2249 + /tw-webfile ?3=web 2250 + /+ ?5= 2251 + /*$ ?99= 2252 + ^ / 2253 2254 # Add a new public attachment. 2255 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/*$ 2256 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-webfile/*$ 2257 + ^/zh_[cC][nN]/ putAttachment?x-csa-lang=zh_CN?1= 2258 + /tw-webfile/+ ?3= 2259 + /.* ?99= 2260 + ^ / 2261 2262 # Remove a public attachment. 2263 #DELETE ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/[^/]+/*$ 2264 DELETE ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-webfile/[^/]+/*$ 2265 + ^/zh_[cC][nN]/ deleteAttachment?x-csa-lang=zh_CN?1= 2266 + /tw-webfile/+ ?3= 2267 + /.* ?99= 2268 + ^ / 2269 2270 # TW group recent changes display request. 2271 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/1/*$ 2272 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/1/*$ 2273 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2274 + / ?2=tw-recent-changes/ 2275 + /.* ?99= 2276 + ^ / 2277 2278 # TW listing of selected public file types in a group. 2279 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/2/[a-z]+/*$ 2280 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/2/[a-z]+/*$ 2281 + ^/zh_[cC][nN]/ groupFileList?x-csa-lang=zh_CN?1= 2282 + /2/ ?2= 2283 + /*$ ?3=web?99= 2284 + ^ / 2285 2286 # TW listing of selected private file types in a group. 2287 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/3/[a-z]+/*$ 2288 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/3/[a-z]+/*$ 2289 + ^/zh_[cC][nN]/ groupFileList?x-csa-lang=zh_CN?1= 2290 + /3/ ?2= 2291 + /*$ ?3=wiki?99= 2292 + ^ / 2293 2294 # TW listing of all pages of a specified year, with optional metacat. 2295 # Note that arg n.3 is already used for paginf here, and it can only 2296 # be passed non-RESTfully, i.e. as "&3=..." . 2297 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/4/[1-9][0-9]+(/.*)? 2298 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/4/[1-9][0-9]+(/.*)? 2299 + ^/zh_[cC][nN]/ groupYearList?x-csa-lang=zh_CN?1= 2300 + /4/ ?2= 2301 + /+ ?4= 2302 + /*$ ?99= 2303 + ^ / 2304 2305 # Sitemap-like listing of all pages of a specified group. 2306 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/5/*$ 2307 #+ ^/zh_[cC][nN]/ groupPageMap?x-csa-lang=zh_CN?1= 2308 #+ /5/*$ ?99= 2309 #+ ^ / 2310 2311 # Sitemap-like listing of all pages of a specified group. 2312 # For large sites, an optional meta-category can be specified, 2313 # and possibly also the initial page block within the meta-category, 2314 # for paged results. 2315 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/5(/.*)? 2316 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/5(/.*)? 2317 + ^/zh_[cC][nN]/ groupPageMap?x-csa-lang=zh_CN?1= 2318 + /5/* ?2= 2319 + /+ ?3= 2320 + /*$ ?99= 2321 + ^ / 2322 2323 # Basic listing of available authorization groups. 2324 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/6/*$ 2325 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/6/*$ 2326 + ^/zh_[cC][nN]/ groupAuthList?x-csa-lang=zh_CN?1= 2327 + /6/ ?2=groups 2328 + /*$ ?99= 2329 + ^ / 2330 2331 # Basic listing of available authorization users. 2332 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/7/*$ 2333 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/7/*$ 2334 + ^/zh_[cC][nN]/ groupAuthList?x-csa-lang=zh_CN?1= 2335 + /7/ ?2=users 2336 + /*$ ?99= 2337 + ^ / 2338 2339 # TW group tag cloud display request. 2340 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/8/*$ 2341 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/8/*$ 2342 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2343 + / ?2=tw-group-cloud/ 2344 + /.* ?99= 2345 + ^ / 2346 2347 # TW group meta-category cloud display request. 2348 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/14/*$ 2349 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/14/*$ 2350 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2351 + / ?2=tw-cat-cloud/ 2352 + /.* ?99= 2353 + ^ / 2354 2355 # TW listing of pages associated with a specified tag. 2356 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/9/[^-\/]+[^\/]+(/.*)? 2357 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/9/[^-\/]+[^\/]+(/.*)? 2358 + ^/zh_[cC][nN]/ groupTagSearch?x-csa-lang=zh_CN?1= 2359 + /9/ ?2= 2360 + /+ ?3= 2361 + /+ ?4= 2362 + /*$ ?99= 2363 + ^ / 2364 2365 # Userid/password retrieval service. 2366 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/10/[^-\/]+[^\/]+/*$ 2367 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/10/[^-\/]+[^\/]+/*$ 2368 + ^/zh_[cC][nN]/ sendAuthInfo?x-csa-lang=zh_CN?1= 2369 + /10/ ?2= 2370 + /*$ ?99= 2371 + ^ / 2372 2373 # TW group recent comments display request. 2374 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/11/*$ 2375 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/11/*$ 2376 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2377 + / ?2=tw-recent-comments/ 2378 + /.* ?99= 2379 + ^ / 2380 2381 # Show listing of TW program source files. 2382 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/12/*$ 2383 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/12/*$ 2384 + ^/zh_[cC][nN]/ sourceList?x-csa-lang=zh_CN?1= 2385 + /.* ?99= 2386 + ^ / 2387 2388 # Show a specified TW program source file. 2389 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/13/[^-\/]+[^\/]+/*$ 2390 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/13/[^-\/]+[^\/]+/*$ 2391 + ^/zh_[cC][nN]/ viewSource?x-csa-lang=zh_CN?1= 2392 + /13/ ?2= 2393 + /*$ ?99= 2394 + ^ / 2395 2396 # Sitemap requests, see http://sitemaps.org/ . 2397 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/15/*$ 2398 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/15/*$ 2399 + ^/zh_[cC][nN]/ groupPageMap?x-csa-lang=zh_CN?1= 2400 + /15/* ?7=s 2401 + /*$ ?99= 2402 + ^ / 2403 2404 ### End of special group requests with numeric attributes. 2405 2406 # Send a self-registration request. 2407 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?subscription/*$ 2408 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/(tw-)?subscription/*$ 2409 + ^/zh_[cC][nN]/ registerUser?x-csa-lang=zh_CN?1= 2410 + /.* ?99= 2411 + ^ / 2412 2413 # Access the TW administrator menu. 2414 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-editor-menu/*$ 2415 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-editor-menu/*$ 2416 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2417 + / ?2= 2418 + /.*$ ?99= 2419 + ^ / 2420 2421 # Default login/logout form. 2422 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-session-form/*$ 2423 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-session-form/*$ 2424 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2425 + / ?2= 2426 + /.*$ ?99= 2427 + ^ / 2428 2429 # Page or thread subscription request. 2430 #^(GET|POST)$ ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-watch(/[1-9][0-9]+)?/*$ 2431 ^(GET|POST)$ ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-watch(/[1-9][0-9]+)?/*$ 2432 + ^/zh_[cC][nN]/ watch?x-csa-lang=zh_CN?1= 2433 + /tw-watch/ ?2= 2434 + /.*$ ?99= 2435 + ^ / 2436 2437 # Misc. RSS 1.0 views about the specified group. These could be made to 2438 # rely on showStatic but it may require tweaking of the latter, so I'll 2439 # leave them to a more specialized program for the moment. See the 2440 # source code of 'rssFeed' for supported tw-* listing types. 2441 2442 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/style/rss/*$ 2443 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-[-a-z0-9]+(/[^-\/]+[^\/]+)?/style/rss/*$ 2444 + ^/zh_[cC][nN]/ rssFeed?x-csa-lang=zh_CN?1= 2445 + / ?2= 2446 + /style/rss/? / 2447 + / ?3= 2448 + /.* ?99= 2449 + ^ / 2450 2451 # Misc. static views about the specified group. 2452 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?(/style/print)?/*$ 2453 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/tw-[-a-z0-9]+(/[^-\/]+[^\/]+)?(/style/print)?/*$ 2454 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2455 + / ?2= 2456 + /style/print/? ?3=print 2457 + / ?4= 2458 + /.* ?99= 2459 + ^ / 2460 2461 # TW page trackback listings. 2462 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping(/style/print)?/*$ 2463 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/ping(/style/print)?/*$ 2464 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2465 + / ?4= 2466 + /ping/? ?2=tw-page-trackbacks/ 2467 + /style/print/? ?3=print 2468 + /.* ?99= 2469 + ^ / 2470 2471 # TW listing of private page attachments. 2472 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 2473 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/*$ 2474 + ^/zh_[cC][nN]/ listAttachments?x-csa-lang=zh_CN?1= 2475 + /+ ?2= 2476 + /wikifile ?3=wiki 2477 + /.* ?99= 2478 + ^ / 2479 2480 # TW private page attachment downloader (public attachments are directly 2481 # accessible through the web server). 2482 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 2483 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/[^/]+/*$ 2484 + ^/zh_[cC][nN]/ getAttachment?x-csa-lang=zh_CN?1= 2485 + /+ ?2= 2486 + /wikifile/+ ?3= 2487 + /.* ?99= 2488 + ^ / 2489 2490 # Add a new private page attachment. 2491 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 2492 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/*$ 2493 + ^/zh_[cC][nN]/ putAttachment?x-csa-lang=zh_CN?1= 2494 + /+ ?2= 2495 + /wikifile ?6=wiki 2496 + /.* ?99= 2497 + ^ / 2498 2499 # Remove a private page attachment. 2500 #DELETE ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 2501 DELETE ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/[^/]+/*$ 2502 + ^/zh_[cC][nN]/ deleteAttachment?x-csa-lang=zh_CN?1= 2503 + /+ ?2= 2504 + /wikifile ?4=wiki 2505 + /+ ?3= 2506 + /.* ?99= 2507 + ^ / 2508 2509 # TW page editing request. 2510 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/edit(/[1-9][-a-zA-Z0-9:%]+)?/*$ 2511 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/form/edit(/[1-9][^\/]+)?/*$ 2512 + ^/zh_[cC][nN]/ editPage?x-csa-lang=zh_CN?1= 2513 + /+ ?2= 2514 + /form/edit/* ?3= 2515 + /.* ?99= 2516 + ^ / 2517 2518 # TW page manual trackback form. 2519 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/ping/*$ 2520 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/form/ping/*$ 2521 + ^/zh_[cC][nN]/ showStatic?x-csa-lang=zh_CN?1= 2522 + / ?2=tw-trackback-form/ 2523 + / ?4= 2524 + /form/ping/.*$ ?99= 2525 + ^ / 2526 2527 # TW page print request. 2528 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/print/*$ 2529 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/style/print/*$ 2530 + ^/zh_[cC][nN]/ showPage?x-csa-lang=zh_CN?1= 2531 + /+ ?2= 2532 + /.* ?4=print?99= 2533 + ^ / 2534 2535 # TW page TOC request. 2536 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/toc/*$ 2537 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/style/toc/*$ 2538 + ^/zh_[cC][nN]/ showPage?x-csa-lang=zh_CN?1= 2539 + /+ ?2= 2540 + /.* ?4=toc?99= 2541 + ^ / 2542 2543 # TW group/page display request. The HEAD method can be useful in some 2544 # cases, like when a site such as www.websiteoptimization.com is used 2545 # to run speed and optimization tests against TW pages. Note however 2546 # that while HEAD works with the Apache web server it will not work with 2547 # thttpd and possibly other servers if the request is done against a CGI 2548 # program as opposed than a static page. 2549 2550 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/*$ 2551 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+(/[^-\/]+[^\/]+)?/*$ 2552 + ^/zh_[cC][nN]/ showPage?x-csa-lang=zh_CN?1= 2553 + /+ ?2= 2554 + /*$ ?4=show?99= 2555 + ^ / 2556 2557 # TW group/page update request. 2558 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/*$ 2559 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/*$ 2560 + ^/zh_[cC][nN]/ updatePage?x-csa-lang=zh_CN?1= 2561 + /+ ?2= 2562 + /*$ ?99= 2563 + ^ / 2564 2565 # TW trackback pinger. 2566 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 2567 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/ping/*$ 2568 + ^/zh_[cC][nN]/ trackbackPing?x-csa-lang=zh_CN?1= 2569 + /+ ?2= 2570 + /ping/*$ ?99= 2571 + ^ / 2572 2573 # TW XML-RPC pingback server. XML-RPC is inherently non-RESTful, so 2574 # the fact that we use the PUT non-idempotent method to perform an 2575 # idempotent request won't get things any worse. CSA, on the contrary, 2576 # tries and be as RESTful as possible and it accepts non-POST MIME types 2577 # only with PUT. 2578 # 2579 # Warning: the "/ping" path token is hard-coded into the updatePage.awk 2580 # RPC I/O function, so if it is changed here it would need to be changed 2581 # there too, which must not be done of course. 2582 # 2583 #PUT ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 2584 #+ ^/zh_[cC][nN]/ pingbackServer?x-csa-lang=zh_CN?1= 2585 #+ /+ ?2= 2586 #+ /.* ?99= 2587 #+ ^ / 2588 2589 # TW listing of all page comments. 2590 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/*$ 2591 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/*$ 2592 + ^/zh_[cC][nN]/ cmtList?x-csa-lang=zh_CN?1= 2593 + /+ ?2= 2594 + /.* ?99= 2595 + ^ / 2596 2597 # TW page comment visualizer. 2598 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+(/style/print)?/*$ 2599 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+(/style/print)?/*$ 2600 + ^/zh_[cC][nN]/ cmtView?x-csa-lang=zh_CN?1= 2601 + /+ ?2= 2602 + /comment/ ?3= 2603 + /style/print/? ?4=print 2604 + /.* ?99= 2605 + ^ / 2606 2607 # Post a new page comment. 2608 #POST ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment(/[1-9][-.a-zA-Z0-9%]+)?/*$ 2609 POST ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment(/[1-9][^\/]+)?/*$ 2610 + ^/zh_[cC][nN]/ cmtPost?x-csa-lang=zh_CN?1= 2611 + /+ ?2= 2612 + /comment/ ?3= 2613 + /.* ?99= 2614 + ^ / 2615 2616 # Restore a previously banned TW page comment. Note how from a REST 2617 # perspective we are logically deleting the 'banned' property from 2618 # the target object. 2619 2620 #DELETE ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/banned/*$ 2621 DELETE ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+/banned/*$ 2622 + ^/zh_[cC][nN]/ cmtBan?x-csa-lang=zh_CN?1= 2623 + /+ ?2= 2624 + /comment/ ?3= 2625 + /banned/ ?4=restore 2626 + /.* ?99= 2627 + ^ / 2628 2629 # Ban a specified TW page comment. 2630 #DELETE ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/*$ 2631 DELETE ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+/*$ 2632 + ^/zh_[cC][nN]/ cmtBan?x-csa-lang=zh_CN?1= 2633 + /+ ?2= 2634 + /comment/ ?3= 2635 + /.* ?99= 2636 + ^ / 2637 2638 # TW listing of page revisions. 2639 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/*$ 2640 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/history/*$ 2641 + ^/zh_[cC][nN]/ pageHistory?x-csa-lang=zh_CN?1= 2642 + /+ ?2= 2643 + /.* ?99= 2644 + ^ / 2645 2646 # Display a specified TW page revision. 2647 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/[1-9][-a-zA-Z0-9:%]+/*$ 2648 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/history/[1-9][^\/]+/*$ 2649 + ^/zh_[cC][nN]/ showPage?x-csa-lang=zh_CN?1= 2650 + /+ ?2= 2651 + /history/ ?4=show?5= 2652 + /.* ?99= 2653 + ^ / 2654 2655 # Show the diffs between two specified TW page revisions. 2656 #GET ^/zh_[cC][nN]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/diff/*$ 2657 GET ^/zh_[cC][nN]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/diff/*$ 2658 + ^/zh_[cC][nN]/ pageHistory?x-csa-lang=zh_CN?1= 2659 + /+ ?2= 2660 + /.* ?99= 2661 + ^ / 2662 2663 # Catch-all (must come last in each language section). 2664 .* ^/zh_[cC][nN]/.* /INVALID;x-csa-lang=zh_CN 2665 2666 2667 # ----------------------------------------------- 2668 # The following URLs are for the 'fr_FR' language. 2669 # ----------------------------------------------- 2670 2671 # Handle special (i.e. group-less) URLs first. 2672 GET ^/fr_[fF][rR]/(tw-)?prg/*$ /prg?x-csa-lang=fr_FR 2673 2674 # Admin listing of page groups in the current language. 2675 GET ^/fr_[fF][rR]/tw-groups(/.*)? 2676 + ^/fr_[fF][rR]/ listGroups?x-csa-lang=fr_FR/ 2677 + /tw-groups/* ?1= 2678 + /*$ ?99= 2679 + ^ / 2680 2681 # Post edits to page group table. 2682 POST ^/fr_[fF][rR]/tw-group(/.*)? 2683 + ^/fr_[fF][rR]/ updateGroup?x-csa-lang=fr_FR/ 2684 + /tw-group/* ?1= 2685 + /*$ ?99= 2686 + ^ / 2687 2688 # Page Group editing dialog. 2689 #GET ^/fr_[fF][rR]/tw-group(/+[a-zA-Z%][-a-zA-Z0-9%]+)? 2690 GET ^/fr_[fF][rR]/tw-group(/+[^\/]+)? 2691 + ^/fr_[fF][rR]/ editGroup?x-csa-lang=fr_FR/ 2692 + /tw-group/* ?1= 2693 + /*$ ?99= 2694 + ^ / 2695 2696 # We we log-in we are logically appending a new session to the "tw-session/" 2697 # resource tree. Alternatively, we could PUT a new session into the tree, 2698 # but that cannot be easily done with common HTML browsers. We would need 2699 # a way to dinamically append the user-id to the action URL, but that 2700 # cannot be done with plain HTML. 2701 2702 # New implementations MUST use "tw-session" as opposed to "session". 2703 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 2704 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/(tw-)?session/*$ 2705 + ^/fr_[fF][rR]/ logIn?x-csa-lang=fr_FR?1= 2706 + /.* ?99= 2707 + ^ / 2708 2709 # New implementations MUST use "tw-openid" as opposed to "openid". 2710 # Start a session through OpenID. 2711 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?openid/*$ 2712 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/(tw-)?openid/*$ 2713 + ^/fr_[fF][rR]/ openidSetup?x-csa-lang=fr_FR?1= 2714 + /.* ?99= 2715 + ^ / 2716 2717 # Start a session through an RPX authentication proxy. 2718 #^(GET|POST)$ ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-rpx/*$ 2719 ^(GET|POST)$ ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-rpx/*$ 2720 + ^/fr_[fF][rR]/ rpxLogIn?x-csa-lang=fr_FR?1= 2721 + /.* ?99= 2722 + ^ / 2723 2724 # I need to remove the "/tw-session/" part here, because in some 2725 # circumstances the group name may be missing and the program would then 2726 # erroneously assume it to be "tw-session". This is probably harmless 2727 # and would simply trigger error 0041 in 'logOut', but I prefer to avoid 2728 # it anyway, because if a group named "tw-session" actually exists, 2729 # the user will be redirected to the default page of that group upon 2730 # log-out, as opposed to the default page of the group he has just 2731 # logged-out from. 2732 2733 # New implementations MUST use "tw-session" as opposed to "session". 2734 #DELETE ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?session/*$ 2735 DELETE ^/fr_[fF][rR]/[^-\/]+[^\/]+/(tw-)?session/*$ 2736 + /(tw-)?session/*$ / 2737 + ^/fr_[fF][rR]/ logOut?x-csa-lang=fr_FR?1= 2738 + /.* ?99= 2739 + ^ / 2740 2741 # Begin of special group-level requests, with either numeric 2742 # or special TW page names "tw-..." . 2743 2744 # Show contents of the shopping cart. 2745 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 2746 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-cart/*$ 2747 + ^/fr_[fF][rR]/ cartView?x-csa-lang=fr_FR?1= 2748 + /.* ?99= 2749 + ^ / 2750 2751 # Post an item to the shopping cart. The mandatory item code and 2752 # optional quantity can only be passed as non-RESTful arguments, 2753 # as they would not make sense as RESTful ones here. 2754 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-cart/*$ 2755 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-cart/*$ 2756 + ^/fr_[fF][rR]/ cartLoad?x-csa-lang=fr_FR?1= 2757 + /.* ?99= 2758 + ^ / 2759 2760 # Check-out the shopping-cart by posting a purchase order. 2761 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-purchase/*$ 2762 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-purchase/*$ 2763 + ^/fr_[fF][rR]/ cartCheckout?x-csa-lang=fr_FR?1= 2764 + /.* ?99= 2765 + ^ / 2766 2767 # Shipping/billing data entry form. 2768 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-shop-form/*$ 2769 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-shop-form/*$ 2770 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 2771 + / ?2=tw-shop-form/ 2772 + /.* ?99= 2773 + ^ / 2774 2775 # Admin listing of user accounts, possibly matching a string. 2776 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-users(/.*)? 2777 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-users(/.*)? 2778 + ^/fr_[fF][rR]/ listUsers?x-csa-lang=fr_FR?1= 2779 + /tw-users/* ?2= 2780 + /*$ ?99= 2781 + ^ / 2782 2783 # Detailed listing of a specified user account. 2784 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 2785 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-user(/.*)? 2786 + ^/fr_[fF][rR]/ editUser?x-csa-lang=fr_FR?1= 2787 + /tw-user/+ ?2= 2788 + /*$ ?99= 2789 + ^ / 2790 2791 # Post edits to a user account. 2792 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-user(/.*)? 2793 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-user(/.*)? 2794 + ^/fr_[fF][rR]/ updateUser?x-csa-lang=fr_FR?1= 2795 + /tw-user/+ ?2= 2796 + /*$ ?99= 2797 + ^ / 2798 2799 # TW listing of group attachments. 2800 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile(/.*)? 2801 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-webfile(/.*)? 2802 + ^/fr_[fF][rR]/ listAttachments?x-csa-lang=fr_FR?1= 2803 + /tw-webfile ?3=web 2804 + /+ ?5= 2805 + /*$ ?99= 2806 + ^ / 2807 2808 # Add a new public attachment. 2809 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/*$ 2810 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-webfile/*$ 2811 + ^/fr_[fF][rR]/ putAttachment?x-csa-lang=fr_FR?1= 2812 + /tw-webfile/+ ?3= 2813 + /.* ?99= 2814 + ^ / 2815 2816 # Remove a public attachment. 2817 #DELETE ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-webfile/[^/]+/*$ 2818 DELETE ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-webfile/[^/]+/*$ 2819 + ^/fr_[fF][rR]/ deleteAttachment?x-csa-lang=fr_FR?1= 2820 + /tw-webfile/+ ?3= 2821 + /.* ?99= 2822 + ^ / 2823 2824 # TW group recent changes display request. 2825 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/1/*$ 2826 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/1/*$ 2827 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 2828 + / ?2=tw-recent-changes/ 2829 + /.* ?99= 2830 + ^ / 2831 2832 # TW listing of selected public file types in a group. 2833 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/2/[a-z]+/*$ 2834 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/2/[a-z]+/*$ 2835 + ^/fr_[fF][rR]/ groupFileList?x-csa-lang=fr_FR?1= 2836 + /2/ ?2= 2837 + /*$ ?3=web?99= 2838 + ^ / 2839 2840 # TW listing of selected private file types in a group. 2841 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/3/[a-z]+/*$ 2842 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/3/[a-z]+/*$ 2843 + ^/fr_[fF][rR]/ groupFileList?x-csa-lang=fr_FR?1= 2844 + /3/ ?2= 2845 + /*$ ?3=wiki?99= 2846 + ^ / 2847 2848 # TW listing of all pages of a specified year, with optional metacat. 2849 # Note that arg n.3 is already used for paginf here, and it can only 2850 # be passed non-RESTfully, i.e. as "&3=..." . 2851 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/4/[1-9][0-9]+(/.*)? 2852 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/4/[1-9][0-9]+(/.*)? 2853 + ^/fr_[fF][rR]/ groupYearList?x-csa-lang=fr_FR?1= 2854 + /4/ ?2= 2855 + /+ ?4= 2856 + /*$ ?99= 2857 + ^ / 2858 2859 # Sitemap-like listing of all pages of a specified group. 2860 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/5/*$ 2861 #+ ^/fr_[fF][rR]/ groupPageMap?x-csa-lang=fr_FR?1= 2862 #+ /5/*$ ?99= 2863 #+ ^ / 2864 2865 # Sitemap-like listing of all pages of a specified group. 2866 # For large sites, an optional meta-category can be specified, 2867 # and possibly also the initial page block within the meta-category, 2868 # for paged results. 2869 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/5(/.*)? 2870 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/5(/.*)? 2871 + ^/fr_[fF][rR]/ groupPageMap?x-csa-lang=fr_FR?1= 2872 + /5/* ?2= 2873 + /+ ?3= 2874 + /*$ ?99= 2875 + ^ / 2876 2877 # Basic listing of available authorization groups. 2878 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/6/*$ 2879 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/6/*$ 2880 + ^/fr_[fF][rR]/ groupAuthList?x-csa-lang=fr_FR?1= 2881 + /6/ ?2=groups 2882 + /*$ ?99= 2883 + ^ / 2884 2885 # Basic listing of available authorization users. 2886 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/7/*$ 2887 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/7/*$ 2888 + ^/fr_[fF][rR]/ groupAuthList?x-csa-lang=fr_FR?1= 2889 + /7/ ?2=users 2890 + /*$ ?99= 2891 + ^ / 2892 2893 # TW group tag cloud display request. 2894 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/8/*$ 2895 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/8/*$ 2896 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 2897 + / ?2=tw-group-cloud/ 2898 + /.* ?99= 2899 + ^ / 2900 2901 # TW group meta-category cloud display request. 2902 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/14/*$ 2903 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/14/*$ 2904 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 2905 + / ?2=tw-cat-cloud/ 2906 + /.* ?99= 2907 + ^ / 2908 2909 # TW listing of pages associated with a specified tag. 2910 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/9/[^-\/]+[^\/]+(/.*)? 2911 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/9/[^-\/]+[^\/]+(/.*)? 2912 + ^/fr_[fF][rR]/ groupTagSearch?x-csa-lang=fr_FR?1= 2913 + /9/ ?2= 2914 + /+ ?3= 2915 + /+ ?4= 2916 + /*$ ?99= 2917 + ^ / 2918 2919 # Userid/password retrieval service. 2920 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/10/[^-\/]+[^\/]+/*$ 2921 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/10/[^-\/]+[^\/]+/*$ 2922 + ^/fr_[fF][rR]/ sendAuthInfo?x-csa-lang=fr_FR?1= 2923 + /10/ ?2= 2924 + /*$ ?99= 2925 + ^ / 2926 2927 # TW group recent comments display request. 2928 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/11/*$ 2929 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/11/*$ 2930 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 2931 + / ?2=tw-recent-comments/ 2932 + /.* ?99= 2933 + ^ / 2934 2935 # Show listing of TW program source files. 2936 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/12/*$ 2937 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/12/*$ 2938 + ^/fr_[fF][rR]/ sourceList?x-csa-lang=fr_FR?1= 2939 + /.* ?99= 2940 + ^ / 2941 2942 # Show a specified TW program source file. 2943 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/13/[^-\/]+[^\/]+/*$ 2944 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/13/[^-\/]+[^\/]+/*$ 2945 + ^/fr_[fF][rR]/ viewSource?x-csa-lang=fr_FR?1= 2946 + /13/ ?2= 2947 + /*$ ?99= 2948 + ^ / 2949 2950 # Sitemap requests, see http://sitemaps.org/ . 2951 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/15/*$ 2952 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/15/*$ 2953 + ^/fr_[fF][rR]/ groupPageMap?x-csa-lang=fr_FR?1= 2954 + /15/* ?7=s 2955 + /*$ ?99= 2956 + ^ / 2957 2958 ### End of special group requests with numeric attributes. 2959 2960 # Send a self-registration request. 2961 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/(tw-)?subscription/*$ 2962 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/(tw-)?subscription/*$ 2963 + ^/fr_[fF][rR]/ registerUser?x-csa-lang=fr_FR?1= 2964 + /.* ?99= 2965 + ^ / 2966 2967 # Access the TW administrator menu. 2968 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-editor-menu/*$ 2969 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-editor-menu/*$ 2970 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 2971 + / ?2= 2972 + /.*$ ?99= 2973 + ^ / 2974 2975 # Default login/logout form. 2976 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-session-form/*$ 2977 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-session-form/*$ 2978 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 2979 + / ?2= 2980 + /.*$ ?99= 2981 + ^ / 2982 2983 # Page or thread subscription request. 2984 #^(GET|POST)$ ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-watch(/[1-9][0-9]+)?/*$ 2985 ^(GET|POST)$ ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-watch(/[1-9][0-9]+)?/*$ 2986 + ^/fr_[fF][rR]/ watch?x-csa-lang=fr_FR?1= 2987 + /tw-watch/ ?2= 2988 + /.*$ ?99= 2989 + ^ / 2990 2991 # Misc. RSS 1.0 views about the specified group. These could be made to 2992 # rely on showStatic but it may require tweaking of the latter, so I'll 2993 # leave them to a more specialized program for the moment. See the 2994 # source code of 'rssFeed' for supported tw-* listing types. 2995 2996 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/style/rss/*$ 2997 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-[-a-z0-9]+(/[^-\/]+[^\/]+)?/style/rss/*$ 2998 + ^/fr_[fF][rR]/ rssFeed?x-csa-lang=fr_FR?1= 2999 + / ?2= 3000 + /style/rss/? / 3001 + / ?3= 3002 + /.* ?99= 3003 + ^ / 3004 3005 # Misc. static views about the specified group. 3006 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/tw-[-a-z0-9]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?(/style/print)?/*$ 3007 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/tw-[-a-z0-9]+(/[^-\/]+[^\/]+)?(/style/print)?/*$ 3008 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 3009 + / ?2= 3010 + /style/print/? ?3=print 3011 + / ?4= 3012 + /.* ?99= 3013 + ^ / 3014 3015 # TW page trackback listings. 3016 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping(/style/print)?/*$ 3017 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/ping(/style/print)?/*$ 3018 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 3019 + / ?4= 3020 + /ping/? ?2=tw-page-trackbacks/ 3021 + /style/print/? ?3=print 3022 + /.* ?99= 3023 + ^ / 3024 3025 # TW listing of private page attachments. 3026 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 3027 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/*$ 3028 + ^/fr_[fF][rR]/ listAttachments?x-csa-lang=fr_FR?1= 3029 + /+ ?2= 3030 + /wikifile ?3=wiki 3031 + /.* ?99= 3032 + ^ / 3033 3034 # TW private page attachment downloader (public attachments are directly 3035 # accessible through the web server). 3036 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 3037 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/[^/]+/*$ 3038 + ^/fr_[fF][rR]/ getAttachment?x-csa-lang=fr_FR?1= 3039 + /+ ?2= 3040 + /wikifile/+ ?3= 3041 + /.* ?99= 3042 + ^ / 3043 3044 # Add a new private page attachment. 3045 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/*$ 3046 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/*$ 3047 + ^/fr_[fF][rR]/ putAttachment?x-csa-lang=fr_FR?1= 3048 + /+ ?2= 3049 + /wikifile ?6=wiki 3050 + /.* ?99= 3051 + ^ / 3052 3053 # Remove a private page attachment. 3054 #DELETE ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/wikifile/[^/]+/*$ 3055 DELETE ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/wikifile/[^/]+/*$ 3056 + ^/fr_[fF][rR]/ deleteAttachment?x-csa-lang=fr_FR?1= 3057 + /+ ?2= 3058 + /wikifile ?4=wiki 3059 + /+ ?3= 3060 + /.* ?99= 3061 + ^ / 3062 3063 # TW page editing request. 3064 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/edit(/[1-9][-a-zA-Z0-9:%]+)?/*$ 3065 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/form/edit(/[1-9][^\/]+)?/*$ 3066 + ^/fr_[fF][rR]/ editPage?x-csa-lang=fr_FR?1= 3067 + /+ ?2= 3068 + /form/edit/* ?3= 3069 + /.* ?99= 3070 + ^ / 3071 3072 # TW page manual trackback form. 3073 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/form/ping/*$ 3074 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/form/ping/*$ 3075 + ^/fr_[fF][rR]/ showStatic?x-csa-lang=fr_FR?1= 3076 + / ?2=tw-trackback-form/ 3077 + / ?4= 3078 + /form/ping/.*$ ?99= 3079 + ^ / 3080 3081 # TW page print request. 3082 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/print/*$ 3083 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/style/print/*$ 3084 + ^/fr_[fF][rR]/ showPage?x-csa-lang=fr_FR?1= 3085 + /+ ?2= 3086 + /.* ?4=print?99= 3087 + ^ / 3088 3089 # TW page TOC request. 3090 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/style/toc/*$ 3091 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/style/toc/*$ 3092 + ^/fr_[fF][rR]/ showPage?x-csa-lang=fr_FR?1= 3093 + /+ ?2= 3094 + /.* ?4=toc?99= 3095 + ^ / 3096 3097 # TW group/page display request. The HEAD method can be useful in some 3098 # cases, like when a site such as www.websiteoptimization.com is used 3099 # to run speed and optimization tests against TW pages. Note however 3100 # that while HEAD works with the Apache web server it will not work with 3101 # thttpd and possibly other servers if the request is done against a CGI 3102 # program as opposed than a static page. 3103 3104 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+(/[a-zA-Z%][-_a-zA-Z0-9%.]+)?/*$ 3105 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+(/[^-\/]+[^\/]+)?/*$ 3106 + ^/fr_[fF][rR]/ showPage?x-csa-lang=fr_FR?1= 3107 + /+ ?2= 3108 + /*$ ?4=show?99= 3109 + ^ / 3110 3111 # TW group/page update request. 3112 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/*$ 3113 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/*$ 3114 + ^/fr_[fF][rR]/ updatePage?x-csa-lang=fr_FR?1= 3115 + /+ ?2= 3116 + /*$ ?99= 3117 + ^ / 3118 3119 # TW trackback pinger. 3120 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 3121 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/ping/*$ 3122 + ^/fr_[fF][rR]/ trackbackPing?x-csa-lang=fr_FR?1= 3123 + /+ ?2= 3124 + /ping/*$ ?99= 3125 + ^ / 3126 3127 # TW XML-RPC pingback server. XML-RPC is inherently non-RESTful, so 3128 # the fact that we use the PUT non-idempotent method to perform an 3129 # idempotent request won't get things any worse. CSA, on the contrary, 3130 # tries and be as RESTful as possible and it accepts non-POST MIME types 3131 # only with PUT. 3132 # 3133 # Warning: the "/ping" path token is hard-coded into the updatePage.awk 3134 # RPC I/O function, so if it is changed here it would need to be changed 3135 # there too, which must not be done of course. 3136 # 3137 #PUT ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/ping/*$ 3138 #+ ^/fr_[fF][rR]/ pingbackServer?x-csa-lang=fr_FR?1= 3139 #+ /+ ?2= 3140 #+ /.* ?99= 3141 #+ ^ / 3142 3143 # TW listing of all page comments. 3144 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/*$ 3145 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/*$ 3146 + ^/fr_[fF][rR]/ cmtList?x-csa-lang=fr_FR?1= 3147 + /+ ?2= 3148 + /.* ?99= 3149 + ^ / 3150 3151 # TW page comment visualizer. 3152 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+(/style/print)?/*$ 3153 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+(/style/print)?/*$ 3154 + ^/fr_[fF][rR]/ cmtView?x-csa-lang=fr_FR?1= 3155 + /+ ?2= 3156 + /comment/ ?3= 3157 + /style/print/? ?4=print 3158 + /.* ?99= 3159 + ^ / 3160 3161 # Post a new page comment. 3162 #POST ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment(/[1-9][-.a-zA-Z0-9%]+)?/*$ 3163 POST ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment(/[1-9][^\/]+)?/*$ 3164 + ^/fr_[fF][rR]/ cmtPost?x-csa-lang=fr_FR?1= 3165 + /+ ?2= 3166 + /comment/ ?3= 3167 + /.* ?99= 3168 + ^ / 3169 3170 # Restore a previously banned TW page comment. Note how from a REST 3171 # perspective we are logically deleting the 'banned' property from 3172 # the target object. 3173 3174 #DELETE ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/banned/*$ 3175 DELETE ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+/banned/*$ 3176 + ^/fr_[fF][rR]/ cmtBan?x-csa-lang=fr_FR?1= 3177 + /+ ?2= 3178 + /comment/ ?3= 3179 + /banned/ ?4=restore 3180 + /.* ?99= 3181 + ^ / 3182 3183 # Ban a specified TW page comment. 3184 #DELETE ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/comment/[1-9][-.a-zA-Z0-9%]+/*$ 3185 DELETE ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/comment/[1-9][^\/]+/*$ 3186 + ^/fr_[fF][rR]/ cmtBan?x-csa-lang=fr_FR?1= 3187 + /+ ?2= 3188 + /comment/ ?3= 3189 + /.* ?99= 3190 + ^ / 3191 3192 # TW listing of page revisions. 3193 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/*$ 3194 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/history/*$ 3195 + ^/fr_[fF][rR]/ pageHistory?x-csa-lang=fr_FR?1= 3196 + /+ ?2= 3197 + /.* ?99= 3198 + ^ / 3199 3200 # Display a specified TW page revision. 3201 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/history/[1-9][-a-zA-Z0-9:%]+/*$ 3202 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/history/[1-9][^\/]+/*$ 3203 + ^/fr_[fF][rR]/ showPage?x-csa-lang=fr_FR?1= 3204 + /+ ?2= 3205 + /history/ ?4=show?5= 3206 + /.* ?99= 3207 + ^ / 3208 3209 # Show the diffs between two specified TW page revisions. 3210 #GET ^/fr_[fF][rR]/[a-zA-Z%][-a-zA-Z0-9%]+/[a-zA-Z%][-_a-zA-Z0-9%.]+/diff/*$ 3211 GET ^/fr_[fF][rR]/[^-\/]+[^\/]+/[^-\/]+[^\/]+/diff/*$ 3212 + ^/fr_[fF][rR]/ pageHistory?x-csa-lang=fr_FR?1= 3213 + /+ ?2= 3214 + /.* ?99= 3215 + ^ / 3216 3217 # Catch-all (must come last in each language section). 3218 .* ^/fr_[fF][rR]/.* /INVALID;x-csa-lang=fr_FR 3219 3220 # EOF