Index: branches/liquidthreads/maintenance/database.sql |
— | — | @@ -1,7 +0,0 @@ |
2 | | - |
3 | | -DROP DATABASE IF EXISTS `{$wgDBname}`; |
4 | | -CREATE DATABASE `{$wgDBname}`; |
Index: branches/liquidthreads/maintenance/build-intl-wiki.sql |
— | — | @@ -1,31 +0,0 @@ |
2 | | - |
3 | | -CREATE DATABASE intl; |
4 | | - |
5 | | -GRANT DELETE,INSERT,SELECT,UPDATE ON intl.* |
6 | | -TO wikiuser@'%' IDENTIFIED BY 'userpass'; |
7 | | -GRANT DELETE,INSERT,SELECT,UPDATE ON intl.* |
8 | | -TO wikiuser@localhost IDENTIFIED BY 'userpass'; |
9 | | -GRANT DELETE,INSERT,SELECT,UPDATE ON intl.* |
10 | | -TO wikiuser@localhost.localdomain IDENTIFIED BY 'userpass'; |
11 | | - |
12 | | -USE intl; |
13 | | - |
14 | | -CREATE TABLE ilinks ( |
15 | | - lang_from varchar(5) default NULL, |
16 | | - lang_to varchar(5) default NULL, |
17 | | - title_from tinyblob, |
18 | | - title_to tinyblob, |
19 | | - target_exists tinyint(1) default NULL |
20 | | -) TYPE=MyISAM; |
21 | | - |
22 | | -CREATE TABLE recentchanges ( |
23 | | - user_name tinyblob, |
24 | | - user_lang varchar(5) default NULL, |
25 | | - date timestamp(14) NOT NULL, |
26 | | - message tinyblob |
27 | | -) TYPE=MyISAM; |
28 | | - |
29 | | - |
Index: branches/liquidthreads/maintenance/ora/tables.sql |
— | — | @@ -244,9 +244,15 @@ |
245 | 245 | oi_description CLOB, |
246 | 246 | oi_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL, |
247 | 247 | oi_user_text CLOB NOT NULL, |
248 | | - oi_timestamp TIMESTAMP WITH TIME ZONE NOT NULL |
| 248 | + oi_timestamp TIMESTAMP WITH TIME ZONE NOT NULL, |
| 249 | + oi_metadata CLOB, |
| 250 | + oi_media_type VARCHAR(10) DEFAULT NULL, |
| 251 | + oi_major_mime VARCHAR(11) DEFAULT 'unknown', |
| 252 | + oi_minor_mime VARCHAR(32) DEFAULT 'unknown', |
| 253 | + oi_deleted INTEGER DEFAULT 0 NOT NULL |
249 | 254 | ); |
250 | | -CREATE INDEX oi_name ON oldimage (oi_name); |
| 255 | +CREATE INDEX oi_name_timestamp ON oldimage (oi_name,oi_timestamp); |
| 256 | +CREATE INDEX oi_name_archive_name ON oldimage (oi_name,oi_archive_name); |
251 | 257 | |
252 | 258 | CREATE SEQUENCE filearchive_fa_id_seq; |
253 | 259 | CREATE TABLE filearchive ( |
Index: branches/liquidthreads/maintenance/archives/patch-oi_metadata.sql |
— | — | @@ -0,0 +1,16 @@ |
| 2 | +--
|
| 3 | +-- patch-indexes.sql
|
| 4 | +--
|
| 5 | +-- Add data to allow for direct reference to old images
|
| 6 | +-- They can be included into pages
|
| 7 | +--
|
| 8 | +
|
| 9 | +ALTER TABLE /*$wgDBprefix*/oldimage
|
| 10 | + DROP INDEX oi_name,
|
| 11 | + ADD INDEX oi_name_timestamp (oi_name,oi_timestamp),
|
| 12 | + ADD INDEX oi_name_archive_name (oi_name,oi_archive_name),
|
| 13 | + ADD oi_metadata mediumblob NOT NULL,
|
| 14 | + ADD oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
|
| 15 | + ADD oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
|
| 16 | + ADD oi_minor_mime varchar(32) NOT NULL default "unknown",
|
| 17 | + ADD oi_deleted tinyint(1) unsigned NOT NULL default '0';
|
Index: branches/liquidthreads/maintenance/postgres/tables.sql |
— | — | @@ -262,9 +262,15 @@ |
263 | 263 | oi_description TEXT, |
264 | 264 | oi_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL, |
265 | 265 | oi_user_text TEXT NOT NULL, |
266 | | - oi_timestamp TIMESTAMPTZ NOT NULL |
| 266 | + oi_timestamp TIMESTAMPTZ NOT NULL, |
| 267 | + oi_metadata BYTEA NOT NULL, |
| 268 | + oi_media_type TEXT NULL, |
| 269 | + oi_major_mime TEXT NOT NULL DEFAULT 'unknown', |
| 270 | + oi_minor_mime TEXT NOT NULL DEFAULT 'unknown', |
| 271 | + oi_deleted CHAR NOT NULL DEFAULT '0' |
267 | 272 | ); |
268 | | -CREATE INDEX oi_name ON oldimage (oi_name); |
| 273 | +CREATE INDEX oi_name_timestamp ON oldimage (oi_name,oi_timestamp); |
| 274 | +CREATE INDEX oi_name_archive_name ON oldimage (oi_name,oi_archive_name); |
269 | 275 | |
270 | 276 | |
271 | 277 | CREATE TABLE filearchive ( |
Index: branches/liquidthreads/maintenance/README |
— | — | @@ -82,4 +82,4 @@ |
83 | 83 | Immediately complete all jobs in the job queue |
84 | 84 | |
85 | 85 | update.php |
86 | | - Check and upgrade the database schema to the current version |
\ No newline at end of file |
| 86 | + Check and upgrade the database schema to the current version |
Index: branches/liquidthreads/maintenance/tables.sql |
— | — | @@ -716,7 +716,14 @@ |
717 | 717 | oi_user_text varchar(255) binary NOT NULL, |
718 | 718 | oi_timestamp char(14) binary NOT NULL default '', |
719 | 719 | |
720 | | - INDEX oi_name (oi_name(10)) |
| 720 | + oi_metadata mediumblob NOT NULL, |
| 721 | + oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL, |
| 722 | + oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown", |
| 723 | + oi_minor_mime varchar(32) NOT NULL default "unknown", |
| 724 | + oi_deleted tinyint(1) unsigned NOT NULL default '0', |
| 725 | + |
| 726 | + INDEX oi_name_timestamp (oi_name,oi_timestamp), |
| 727 | + INDEX oi_name_archive_name (oi_name,oi_archive_name) |
721 | 728 | |
722 | 729 | ) /*$wgDBTableOptions*/; |
723 | 730 | |
Index: branches/liquidthreads/docs/user.txt |
— | — | @@ -1,63 +0,0 @@ |
2 | | - |
3 | | -user.txt |
4 | | - |
5 | | -Documenting the MediaWiki User object. |
6 | | - |
7 | | -(DISCLAIMER: The documentation is not guaranteed to be in sync with |
8 | | -the code at all times. If in doubt, check the table definitions |
9 | | -and User.php.) |
10 | | - |
11 | | -Database fields: |
12 | | - |
13 | | - user_id |
14 | | - Unique integer identifier; primary key. Sent to user in |
15 | | - cookie "{$wgDBname}UserID". |
16 | | - |
17 | | - user_name |
18 | | - Text of full user name; title of "user:" page. Displayed |
19 | | - on change lists, etc. Sent to user as cookie "{$wgDBname}UserName". |
20 | | - Note that user names can contain spaces, while these are |
21 | | - converted to underscores in page titles. |
22 | | - |
23 | | - user_rights |
24 | | - Comma-separated list of rights. Right now, only "sysop", |
25 | | - "developer", "bureaucrat", and "bot" have meaning. |
26 | | - |
27 | | - user_password |
28 | | - Salted md5 hash of md5-hashed user login password. If user option to |
29 | | - remember password is set, an md5 password hash is stored in cookie |
30 | | - "{$wgDBname}UserPassword". The original password and the hashed password |
31 | | - can be compared to the salted-hashed-hashed password. |
32 | | - |
33 | | - user_newpassword |
34 | | - Hash for randomly generated password sent on 'send me a new password'. |
35 | | - If a match is made on login, the new password will replace the old one. |
36 | | - |
37 | | - user_email |
38 | | - User's e-mail address. (Optional, used for user-to-user |
39 | | - e-mail and password recovery.) |
40 | | - |
41 | | - user_options |
42 | | - A urlencoded string of name=value pairs to set various |
43 | | - user options. |
44 | | - |
45 | | - user_touched |
46 | | - Timestamp updated when the user logs in, changes preferences, alters |
47 | | - watchlist, or when someone edits their user talk page or they clear |
48 | | - the new-talk field by viewing it. Used to invalidate old cached pages |
49 | | - from the user's browser cache. |
50 | | - |
51 | | - user_real_name |
52 | | - "Real name" optionally used in some metadata lists. |
53 | | - |
54 | | -The user object encapsulates all of the settings, and clients |
55 | | -classes use the getXXX() functions to access them. These functions |
56 | | -do all the work of determining whether the user is logged in, |
57 | | -whether the requested option can be satisfied from cookies or |
58 | | -whether a database query is needed. Most of the settings needed |
59 | | -for rendering normal pages are set in the cookie to minimize use |
60 | | -of the database. |
61 | | - |
62 | | -Options |
63 | | - The user_options field is a list of name-value pairs. The |
64 | | - following option names are used at various points in the system: |
Index: branches/liquidthreads/docs/schema.txt |
— | — | @@ -4,3 +4,6 @@ |
5 | 5 | |
6 | 6 | That file has been commented with details of the usage for |
7 | 7 | each table and field. |
| 8 | + |
| 9 | +Historical information and some other notes are available at |
| 10 | +http://www.mediawiki.org/wiki/Manual:Database_layout |
Index: branches/liquidthreads/docs/README |
— | — | @@ -1,9 +1,9 @@ |
2 | | -[July 5th 2005] |
| 2 | +[May 31st 2007] |
3 | 3 | |
4 | 4 | The 'docs' directory contain various text files that should help you |
5 | 5 | understand the most importants classes in MediaWiki. |
6 | 6 | |
7 | | -API documentation is sometime generated and uploaded at: |
| 7 | +API documentation is automatically generated and updated daily at: |
8 | 8 | http://svn.wikimedia.org/doc/ |
9 | 9 | |
10 | 10 | You can get a fresh version using 'make doc' or mwdocgen.php |
— | — | @@ -13,5 +13,5 @@ |
14 | 14 | |
15 | 15 | For end user / administrators, most of the documentation |
16 | 16 | is located online at: |
17 | | - http://meta.wikimedia.org/wiki/Help:Help |
| 17 | + http://www.mediawiki.org/wiki/Project:Help |
18 | 18 | |
Index: branches/liquidthreads/languages/messages/MessagesKa.php |
— | — | @@ -193,7 +193,7 @@ |
194 | 194 | |
195 | 195 | # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations). |
196 | 196 | 'aboutsite' => '{{SITENAME}}-ის შესახებ', |
197 | | -'aboutpage' => 'პროექტი:შესახებ', |
| 197 | +'aboutpage' => '{{ns:project}}:შესახებ', |
198 | 198 | 'bugreports' => 'ანგარიში შეცდომის შესახებ', |
199 | 199 | 'bugreportspage' => '{{ns:project}}:ანგარიში შეცდომის შესახებ', |
200 | 200 | 'currentevents' => 'ახალი ამბები', |
— | — | @@ -215,6 +215,9 @@ |
216 | 216 | |
217 | 217 | 'badaccess' => 'აკრძალული მოქმედება', |
218 | 218 | |
| 219 | +'versionrequired' => 'საჭიროა მედიავიკის ვერსია $1', |
| 220 | +'versionrequiredtext' => 'ამ გვერდის გამოსაყენებლად საჭიროა მედიავიკის ვერსია $1. იხილეთ [[{{ns:special}}:Version|ვერსიის გვერდი]].', |
| 221 | + |
219 | 222 | 'youhavenewmessages' => 'თქვენ გაქვთ $1 ($2).', |
220 | 223 | 'newmessageslink' => 'ახალი შეტყობინებები', |
221 | 224 | 'newmessagesdifflink' => 'განსხვავება უკანასკნელ მდგომარეობას შორის', |
— | — | @@ -241,16 +244,39 @@ |
242 | 245 | 'nstab-category' => 'კატეგორია', |
243 | 246 | |
244 | 247 | # Login and logout pages |
245 | | -'login' => 'შესვლა', |
246 | | -'userlogin' => 'შესვლა / ანგარიშის გახსნა', |
247 | | -'logout' => 'გასვლა', |
248 | | -'userlogout' => 'გასვლა', |
| 248 | +'yourname' => 'მომხმარებელი:', |
| 249 | +'yourpassword' => 'პაროლი:', |
| 250 | +'yourpasswordagain' => 'ხელმეორედ შეიყვანეთ პაროლი:', |
| 251 | +'remembermypassword' => 'ჩემი მონაცემების დამახსოვრება', |
| 252 | +'yourdomainname' => 'თქვენი დომეინი:', |
| 253 | +'login' => 'შესვლა', |
| 254 | +'userlogin' => 'შესვლა / ანგარიშის გახსნა', |
| 255 | +'logout' => 'გასვლა', |
| 256 | +'userlogout' => 'გასვლა', |
| 257 | +'youremail' => 'ელექტრონული ფოსტა:', |
| 258 | +'username' => 'მომხმარებლის სახელი:', |
| 259 | +'uid' => 'მომხმარებლის იდენტიფიკატორი:', |
| 260 | +'yourrealname' => 'ნამდვილი სახელი:', |
| 261 | +'yourlanguage' => 'ენა:', |
| 262 | +'yourvariant' => 'ვარიანტი', |
| 263 | +'yournick' => 'მეტსახელი:', |
| 264 | +'noname' => 'თქვენს მიერ მითითებული მომხმარებლის სახელი ქმედითი არ არის.', |
| 265 | +'loginsuccesstitle' => 'შესვლა წარმატებით განხორციელდა', |
| 266 | +'loginsuccess' => "'''თქვენ ახლა შესული ხართ {{SITENAME}}ში როგორც \"\$1\".'''", |
| 267 | +'mailmypassword' => 'ახალი პაროლის გამოგზავნა', |
| 268 | +'accountcreated' => 'ანგარიში შეიქმნა', |
| 269 | +'accountcreatedtext' => '$1 მომხმარებლის ანგარიში შექმნილია.', |
249 | 270 | |
| 271 | +# Password reset dialog |
| 272 | +'resetpass_text' => '<!-- დამატებითი ტექსტი აქ -->', |
| 273 | +'resetpass_header' => 'გაიმეორეთ პაროლი', |
| 274 | + |
250 | 275 | # Diffs |
251 | 276 | 'difference' => '(სხვაობა ვერსიებს შორის)', |
252 | 277 | 'lineno' => 'ხაზი $1:', |
253 | 278 | 'editcurrent' => 'ამ გვერდის ამჟამინდელი ვერსიის რედაქტირება', |
254 | 279 | 'compareselectedversions' => 'არჩეული ვერსიების შედარება', |
| 280 | +'editundo' => 'გაუქმება', |
255 | 281 | |
256 | 282 | # Search results |
257 | 283 | 'blanknamespace' => '(მთავარი)', |
— | — | @@ -260,6 +286,7 @@ |
261 | 287 | 'mypreferences' => 'ჩემი კონფიგურაცია', |
262 | 288 | 'qbsettings' => 'სწრაფი ზოლი', |
263 | 289 | 'changepassword' => 'პაროლის შეცვლა', |
| 290 | +'math' => 'მათ', |
264 | 291 | 'dateformat' => 'თარიღის ფორმატი', |
265 | 292 | 'datetime' => 'თარიღი და დრო', |
266 | 293 | 'prefs-personal' => 'მომხმარებლის მონაცემები', |
— | — | @@ -276,7 +303,11 @@ |
277 | 304 | 'contextlines' => 'სტრიქონები შედეგის მიხედვით:', |
278 | 305 | 'contextchars' => 'კონტექსტი სტრიქონების მიხედვით:', |
279 | 306 | 'savedprefs' => 'თქვენს მიერ შერჩეული პარამეტრები დამახსოვრებულია.', |
| 307 | +'timezonelegend' => 'დროის ზონა', |
| 308 | +'timezonetext' => 'საათების რაოდენობა, რომლითაც თქვენი ადგილობრივი დრო განსხვავდება სერვერის დროისაგან (UTC).', |
280 | 309 | 'localtime' => 'ლოკალური დრო', |
| 310 | +'timezoneoffset' => 'ოფსეტი¹', |
| 311 | +'servertime' => 'სერვერის დრო', |
281 | 312 | 'guesstimezone' => 'ბრაუზერიდან შევსება', |
282 | 313 | 'allowemail' => 'შესაძლებელია ელ. წერილების მიღება სხვა მომხმარებლებისაგან', |
283 | 314 | 'defaultns' => 'სტანდარტული ძიება ამ სახელთა სივრცეებში:', |
— | — | @@ -321,8 +352,20 @@ |
322 | 353 | 'recentchangeslinked' => 'დაკავშირებული ცვლილებები', |
323 | 354 | |
324 | 355 | # Upload |
325 | | -'upload' => 'ფაილის დამატება', |
326 | | -'uploadbtn' => 'ფაილის დამატება', |
| 356 | +'upload' => 'ფაილის დამატება', |
| 357 | +'uploadbtn' => 'ფაილის დამატება', |
| 358 | +'filename' => 'ფაილის სახელი', |
| 359 | +'filedesc' => 'მოკლე აღწერილობა', |
| 360 | +'fileuploadsummary' => 'მოკლე აღწერა:', |
| 361 | +'filestatus' => 'საავტორო უფლებების სტატუსი', |
| 362 | +'filesource' => 'წყარო', |
| 363 | +'fileuploaded' => 'ფაილი $1 წარმატებულად ჩაიტვირთა. |
| 364 | +თუ შეიძლება, გახსენით აღწერილობის გვერდი ამ ბმულის მეშვეობით: $2 და შეავსეთ |
| 365 | +იგი შემდეგი ხასიათის ინფორმაციით ფაილის შესახებ: წყარო, შექმნის თარიღი და ავტორი, და |
| 366 | +ნებისმიერი სხვა მონაცემით, რომელიც ფაილთან დაკავშირებით გაქვთ. |
| 367 | +თუ ფაილი სურათია, მაშინ შეგიძლიათ ჩატვირთოთ იგი შემდეგნაირად: <tt><nowiki>[[</nowiki>{{ns:image}}<nowiki>:$1|thumb|აღწერილობა]]</nowiki></tt>', |
| 368 | +'uploadwarning' => 'გადატვირთვის შეხსენება', |
| 369 | +'uploadvirus' => 'ფაილი ვირუსს შეიცავს! დეტალები: $1', |
327 | 370 | |
328 | 371 | # Image list |
329 | 372 | 'imagelist' => 'ფაილების სია', |
— | — | @@ -413,8 +456,12 @@ |
414 | 457 | 'mywatchlist' => 'ჩემი კონტროლის სია', |
415 | 458 | 'watch' => 'კონტროლი', |
416 | 459 | |
| 460 | +# Delete/protect/revert |
| 461 | +'restriction-type' => 'უფლება:', |
| 462 | + |
417 | 463 | # Restrictions (nouns) |
418 | 464 | 'restriction-edit' => 'რედაქტირება', |
| 465 | +'restriction-move' => 'გადატანა', |
419 | 466 | |
420 | 467 | # Undelete |
421 | 468 | 'undelete' => 'აჩვენე წაშლილი გვერდები', |
— | — | @@ -444,7 +491,8 @@ |
445 | 492 | 'cannotundelete' => 'აღდგენა ვერ შედგა; შესაძლოა უკვე ვიღაცამ აღადგინა ეს გვერდი.', |
446 | 493 | 'undeletedpage' => "<big>'''$1 აღდგენილია'''</big> |
447 | 494 | |
448 | | -უკანასკნელი წაშლილთა და აღდგენის სია შეგიძლიათ ნახოთ [[Special:Log/delete|წაშლილთა სიაში]].", |
| 495 | +უკანასკნელი წაშლილთა და აღდგენის სია შეგიძლიათ ნახოთ [[{{ns:special}}:Log/delete|წაშლილთა სიაში]].", |
| 496 | +'undelete-search-box' => 'წაშლილი გვერდების ძიება', |
449 | 497 | 'undelete-search-submit' => 'ძიება', |
450 | 498 | |
451 | 499 | # Namespace form on various pages |
— | — | @@ -462,6 +510,12 @@ |
463 | 511 | ამ ფუნქციის შესასრულებლად.', |
464 | 512 | 'nolinkshere' => "'''[[:$1]]'''-ზე ბმული არ არის.", |
465 | 513 | |
| 514 | +# Block/unblock |
| 515 | +'blocklink' => 'ბლოკირება', |
| 516 | +'unblocklink' => 'ბლოკი მოხსენი', |
| 517 | +'contribslink' => 'წვლილი', |
| 518 | +'autoblocker' => 'თქვენ ავტომატურად ბლოკირებული ხართ, ვინაიდან თქვენი IP მისამართი ახლახან იქნა გამოყენებული "[[{{ns:user}}:$1|$1]]"–ის მიერ. $1-ის ბლოკირების მიზეზი: "$2"', |
| 519 | + |
466 | 520 | # Move page |
467 | 521 | 'movepage' => 'გვერდის გადატანა', |
468 | 522 | 'movearticle' => 'გვერდის გადატანა', |
— | — | @@ -479,6 +533,7 @@ |
480 | 534 | '1movedto2_redir' => '[[$1]] გადატანილია [[$2]]-ზე გადამისამართებულ გვერდში', |
481 | 535 | 'movelogpage' => 'გადატანის ჟურნალი', |
482 | 536 | 'movereason' => 'მიზეზი', |
| 537 | +'revertmove' => 'გაუქმება', |
483 | 538 | 'delete_and_move' => 'წაშლა და გადატანა', |
484 | 539 | 'delete_and_move_text' => '==საჭიროა წაშლა== |
485 | 540 | |
— | — | @@ -509,8 +564,19 @@ |
510 | 565 | 'others' => 'სხვები', |
511 | 566 | 'siteusers' => '{{SITENAME}} მომხმარებლები $1', |
512 | 567 | |
| 568 | +# Media information |
| 569 | +'file-info' => '(ფაილის ზომა: $1, MIME ტიპი: $2)', |
| 570 | +'file-info-size' => '($1 × $2 პიქსელი, ფაილის ზომა: $3, MIME ტიპი: $4)', |
| 571 | + |
513 | 572 | 'passwordtooshort' => 'თქვენი პაროლი ძალიან მოკლეა. მასში უნდა შედიოდეს არანაკლებ $1 ასო-ნიშანი.', |
514 | 573 | |
| 574 | +# Metadata |
| 575 | +'metadata' => 'მეტამონაცემები', |
| 576 | + |
| 577 | +# EXIF tags |
| 578 | +'exif-compression' => 'შეკუმშვის მეთოდი', |
| 579 | +'exif-usercomment' => 'მომხმარებლის შენიშვნები', |
| 580 | + |
515 | 581 | # 'all' in various places, this might be different for inflected languages |
516 | 582 | 'recentchangesall' => 'ყველა', |
517 | 583 | 'imagelistall' => 'ყველა', |
— | — | @@ -524,7 +590,7 @@ |
525 | 591 | 'createarticle' => 'სტატიის შექმნა', |
526 | 592 | |
527 | 593 | # Delete conflict |
528 | | -'deletedwhileediting' => "[[მომხმარებელი:$1|$1]] მომხმარებელმა ([[მომხმარებელი განხილვა:$1|განხილვა]]) წაშალა თქვენი რედაქტირების შემდეგ. მიზეზი: |
| 594 | +'deletedwhileediting' => "[[{{ns:user}}:$1|$1]] მომხმარებელმა ([[{{ns:user_talk}}:$1|განხილვა]]) წაშალა თქვენი რედაქტირების შემდეგ. მიზეზი: |
529 | 595 | : ''$2'' |
530 | 596 | გთხოვთ დაადასტუროთ რომ ნამდვილად გსურთ ამ გვერდის თავიდან შექმნა.", |
531 | 597 | |
Index: branches/liquidthreads/languages/messages/MessagesHe.php |
— | — | @@ -1465,7 +1465,7 @@ |
1466 | 1466 | 'undeletecomment' => 'תקציר:', |
1467 | 1467 | 'undeletedarticle' => 'שחזר את "[[$1]]"', |
1468 | 1468 | 'undeletedrevisions' => 'שחזר {{plural:$1|גרסה אחת|$1 גרסאות}}', |
1469 | | -'undeletedrevisions-files' => 'שחזר {{plural:$1|גרסה אחת|$1 גרסאות}} ו{{plural:$2|קובץ אחד|־$2 קבצים}}$2 קבצים', |
| 1469 | +'undeletedrevisions-files' => 'שחזר {{plural:$1|גרסה אחת|$1 גרסאות}} ו{{plural:$2|קובץ אחד|־$2 קבצים}}', |
1470 | 1470 | 'undeletedfiles' => 'שחזר {{plural:$1|קובץ אחד|$1 קבצים}}', |
1471 | 1471 | 'cannotundelete' => 'השחזור נכשל; ייתכן שמישהו אחר כבר שחזר את הדף.', |
1472 | 1472 | 'undeletedpage' => "'''הדף $1 שוחזר בהצלחה.''' |
Index: branches/liquidthreads/includes/LinksUpdate.php |
— | — | @@ -76,6 +76,7 @@ |
77 | 77 | } else { |
78 | 78 | $this->doIncrementalUpdate(); |
79 | 79 | } |
| 80 | + wfRunHooks( 'TitleLinkUpdatesAfterCompletion', array( &$this->mTitle ) ); |
80 | 81 | } |
81 | 82 | |
82 | 83 | function doIncrementalUpdate() { |
Index: branches/liquidthreads/includes/ImageGallery.php |
— | — | @@ -17,6 +17,7 @@ |
18 | 18 | var $mImages, $mShowBytes, $mShowFilename; |
19 | 19 | var $mCaption = false; |
20 | 20 | var $mSkin = false; |
| 21 | + var $mRevisionId = 0; |
21 | 22 | |
22 | 23 | /** |
23 | 24 | * Is the gallery on a wiki page (i.e. not a special page) |
— | — | @@ -201,8 +202,12 @@ |
202 | 203 | foreach ( $this->mImages as $pair ) { |
203 | 204 | $nt = $pair[0]; |
204 | 205 | $text = $pair[1]; |
| 206 | + |
| 207 | + # Give extensions a chance to select the file revision for us |
| 208 | + $time = false; |
| 209 | + wfRunHooks( 'BeforeGalleryFindFile', array( &$this, &$nt, &$time ) ); |
205 | 210 | |
206 | | - $img = wfFindFile( $nt ); |
| 211 | + $img = wfFindFile( $nt, $time ); |
207 | 212 | |
208 | 213 | if( $nt->getNamespace() != NS_IMAGE || !$img ) { |
209 | 214 | # We're dealing with a non-image, spit out the name and be done with it. |
Index: branches/liquidthreads/includes/Article.php |
— | — | @@ -608,7 +608,7 @@ |
609 | 609 | function view() { |
610 | 610 | global $wgUser, $wgOut, $wgRequest, $wgContLang; |
611 | 611 | global $wgEnableParserCache, $wgStylePath, $wgUseRCPatrol, $wgParser; |
612 | | - global $wgUseTrackbacks, $wgNamespaceRobotPolicies; |
| 612 | + global $wgUseTrackbacks, $wgNamespaceRobotPolicies, $wgArticleRobotPolicies; |
613 | 613 | $sk = $wgUser->getSkin(); |
614 | 614 | |
615 | 615 | wfProfileIn( __METHOD__ ); |
— | — | @@ -636,6 +636,8 @@ |
637 | 637 | # Discourage indexing of printable versions, but encourage following |
638 | 638 | if( $wgOut->isPrintable() ) { |
639 | 639 | $policy = 'noindex,follow'; |
| 640 | + } elseif ( isset( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] ) ) { |
| 641 | + $policy = $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()]; |
640 | 642 | } elseif( isset( $wgNamespaceRobotPolicies[$ns] ) ) { |
641 | 643 | # Honour customised robot policies for this namespace |
642 | 644 | $policy = $wgNamespaceRobotPolicies[$ns]; |
Index: branches/liquidthreads/includes/ParserOutput.php |
— | — | @@ -14,7 +14,9 @@ |
15 | 15 | $mTitleText, # title text of the chosen language variant |
16 | 16 | $mLinks, # 2-D map of NS/DBK to ID for the links in the document. ID=zero for broken. |
17 | 17 | $mTemplates, # 2-D map of NS/DBK to ID for the template references. ID=zero for broken. |
| 18 | + $mTemplateIds, # 2-D map of NS/DBK to rev ID for the template references. ID=zero for broken. |
18 | 19 | $mImages, # DB keys of the images used, in the array key only |
| 20 | + $mImageTimestamps, # Map of DBK to rev ID for the template references. ID=zero for broken. |
19 | 21 | $mExternalLinks, # External link URLs, in the key only |
20 | 22 | $mHTMLtitle, # Display HTML title |
21 | 23 | $mSubtitle, # Additional subtitle |
— | — | @@ -41,10 +43,12 @@ |
42 | 44 | $this->mNewSection = false; |
43 | 45 | $this->mNoGallery = false; |
44 | 46 | $this->mHeadItems = array(); |
| 47 | + $this->mTemplateIds = array(); |
| 48 | + $this->mImageTimestamps = array(); |
45 | 49 | } |
46 | 50 | |
47 | 51 | function getText() { return $this->mText; } |
48 | | - function &getLanguageLinks() { return $this->mLanguageLinks; } |
| 52 | + function &getLanguageLinks() { return $this->mLanguageLinks; } |
49 | 53 | function getCategoryLinks() { return array_keys( $this->mCategories ); } |
50 | 54 | function &getCategories() { return $this->mCategories; } |
51 | 55 | function getCacheTime() { return $this->mCacheTime; } |
— | — | @@ -66,7 +70,6 @@ |
67 | 71 | function setSubtitle( $st ) { return wfSetVar( $this->mSubtitle, $st ); } |
68 | 72 | |
69 | 73 | function addCategory( $c, $sort ) { $this->mCategories[$c] = $sort; } |
70 | | - function addImage( $name ) { $this->mImages[$name] = 1; } |
71 | 74 | function addLanguageLink( $t ) { $this->mLanguageLinks[] = $t; } |
72 | 75 | function addExternalLink( $url ) { $this->mExternalLinks[$url] = 1; } |
73 | 76 | |
— | — | @@ -88,14 +91,33 @@ |
89 | 92 | } |
90 | 93 | $this->mLinks[$ns][$dbk] = $id; |
91 | 94 | } |
| 95 | + |
| 96 | + function addImage( $name, $timestamp=NULL ) { |
| 97 | + if( isset($this->mImages[$name]) ) |
| 98 | + return; // No repeated pointless DB calls! |
| 99 | + $this->mImages[$name] = 1; |
| 100 | + if( is_null($timestamp) ) { |
| 101 | + wfProfileIn( __METHOD__ ); |
| 102 | + $dbr = wfGetDB(DB_SLAVE); |
| 103 | + $timestamp = $dbr->selectField('image', 'img_timestamp', |
| 104 | + array('img_name' => $name), |
| 105 | + __METHOD__ ); |
| 106 | + } |
| 107 | + $timestamp = $timestamp ? $timestamp : null; |
| 108 | + $this->mImageTimestamps[$name] = $timestamp; // For versioning |
| 109 | + } |
92 | 110 | |
93 | | - function addTemplate( $title, $id ) { |
| 111 | + function addTemplate( $title, $page_id, $rev_id ) { |
94 | 112 | $ns = $title->getNamespace(); |
95 | 113 | $dbk = $title->getDBkey(); |
96 | 114 | if ( !isset( $this->mTemplates[$ns] ) ) { |
97 | 115 | $this->mTemplates[$ns] = array(); |
98 | 116 | } |
99 | | - $this->mTemplates[$ns][$dbk] = $id; |
| 117 | + $this->mTemplates[$ns][$dbk] = $page_id; |
| 118 | + if ( !isset( $this->mTemplateIds[$ns] ) ) { |
| 119 | + $this->mTemplateIds[$ns] = array(); |
| 120 | + } |
| 121 | + $this->mTemplateIds[$ns][$dbk] = $rev_id; // For versioning |
100 | 122 | } |
101 | 123 | |
102 | 124 | /** |
Index: branches/liquidthreads/includes/OutputPage.php |
— | — | @@ -54,6 +54,8 @@ |
55 | 55 | $this->mETag = false; |
56 | 56 | $this->mRevisionId = null; |
57 | 57 | $this->mNewSectionLink = false; |
| 58 | + $this->mTemplateIds = array(); |
| 59 | + $this->mImageTimestamps = array(); |
58 | 60 | } |
59 | 61 | |
60 | 62 | public function redirect( $url, $responsecode = '302' ) { |
— | — | @@ -387,6 +389,10 @@ |
388 | 390 | } |
389 | 391 | $this->mNoGallery = $parserOutput->getNoGallery(); |
390 | 392 | $this->mHeadItems = array_merge( $this->mHeadItems, (array)$parserOutput->mHeadItems ); |
| 393 | + // Versioning... |
| 394 | + $this->mTemplateIds += (array)$parserOutput->mTemplateIds; |
| 395 | + $this->mImageTimestamps += (array)$parserOutput->mImageTimestamps; |
| 396 | + |
391 | 397 | wfRunHooks( 'OutputPageParserOutput', array( &$this, $parserOutput ) ); |
392 | 398 | } |
393 | 399 | |
Index: branches/liquidthreads/includes/filerepo/OldLocalFile.php |
— | — | @@ -156,10 +156,10 @@ |
157 | 157 | wfProfileIn( __METHOD__ );
|
158 | 158 | $dbr = $this->repo->getSlaveDB();
|
159 | 159 | $conds = array( 'oi_name' => $this->getName() );
|
160 | | - if ( is_null( $this->requestedTimestamp ) ) {
|
| 160 | + if ( is_null( $this->requestedTime ) ) {
|
161 | 161 | $conds['oi_archive_name'] = $this->archive_name;
|
162 | 162 | } else {
|
163 | | - $conds[] = 'oi_timestamp <= ' . $dbr->addQuotes( $this->requestedTimestamp );
|
| 163 | + $conds[] = 'oi_timestamp <= ' . $dbr->addQuotes( $this->requestedTime );
|
164 | 164 | }
|
165 | 165 | $row = $dbr->selectRow( 'oldimage', $this->getCacheFields( 'oi_' ),
|
166 | 166 | $conds, __METHOD__, array( 'ORDER BY' => 'oi_timestamp DESC' ) );
|
Index: branches/liquidthreads/includes/filerepo/LocalFile.php |
— | — | @@ -1211,7 +1211,6 @@ |
1212 | 1212 | wfTimestamp( TS_MW, $row->fa_deleted_timestamp ) . |
1213 | 1213 | '!' . $row->fa_name; |
1214 | 1214 | } |
1215 | | - $restoredImage = new self( $row->fa_name, $this->repo ); |
1216 | 1215 | $destDir = $restoredImage->getArchivePath(); |
1217 | 1216 | if ( !is_dir( $destDir ) ) { |
1218 | 1217 | wfMkdirParents( $destDir ); |
Index: branches/liquidthreads/includes/Parser.php |
— | — | @@ -400,12 +400,15 @@ |
401 | 401 | * Expand templates and variables in the text, producing valid, static wikitext. |
402 | 402 | * Also removes comments. |
403 | 403 | */ |
404 | | - function preprocess( $text, $title, $options ) { |
| 404 | + function preprocess( $text, $title, $options, $revid = null ) { |
405 | 405 | wfProfileIn( __METHOD__ ); |
406 | 406 | $this->clearState(); |
407 | 407 | $this->setOutputType( OT_PREPROCESS ); |
408 | 408 | $this->mOptions = $options; |
409 | 409 | $this->mTitle = $title; |
| 410 | + if( $revid !== null ) { |
| 411 | + $this->mRevisionId = $revid; |
| 412 | + } |
410 | 413 | wfRunHooks( 'ParserBeforeStrip', array( &$this, &$text, &$this->mStripState ) ); |
411 | 414 | $text = $this->strip( $text, $this->mStripState ); |
412 | 415 | wfRunHooks( 'ParserAfterStrip', array( &$this, &$text, &$this->mStripState ) ); |
— | — | @@ -3264,13 +3267,25 @@ |
3265 | 3268 | * Fetch the unparsed text of a template and register a reference to it. |
3266 | 3269 | */ |
3267 | 3270 | function fetchTemplateAndtitle( $title ) { |
3268 | | - $text = false; |
| 3271 | + $text = $skip = false; |
3269 | 3272 | $finalTitle = $title; |
3270 | 3273 | // Loop to fetch the article, with up to 1 redirect |
3271 | 3274 | for ( $i = 0; $i < 2 && is_object( $title ); $i++ ) { |
3272 | | - $rev = Revision::newFromTitle( $title ); |
3273 | | - $this->mOutput->addTemplate( $title, $title->getArticleID() ); |
3274 | | - if ( $rev ) { |
| 3275 | + # Give extensions a chance to select the revision instead |
| 3276 | + $id = false; // Assume current |
| 3277 | + wfRunHooks( 'BeforeParserFetchTemplateAndtitle', array( &$this, &$title, &$skip, &$id ) ); |
| 3278 | + |
| 3279 | + if( $skip ) { |
| 3280 | + $text = false; |
| 3281 | + $this->mOutput->addTemplate( $title, $title->getArticleID(), null ); |
| 3282 | + break; |
| 3283 | + } |
| 3284 | + $rev = $id ? Revision::newFromId( $id ) : Revision::newFromTitle( $title ); |
| 3285 | + $rev_id = $rev ? $rev->getId() : 0; |
| 3286 | + |
| 3287 | + $this->mOutput->addTemplate( $title, $title->getArticleID(), $rev_id ); |
| 3288 | + |
| 3289 | + if( $rev ) { |
3275 | 3290 | $text = $rev->getText(); |
3276 | 3291 | } elseif( $title->getNamespace() == NS_MEDIAWIKI ) { |
3277 | 3292 | global $wgLang; |
— | — | @@ -4124,7 +4139,7 @@ |
4125 | 4140 | } |
4126 | 4141 | |
4127 | 4142 | // process categories, check if a category exists in some variant |
4128 | | - foreach( $categories as $category){ |
| 4143 | + foreach( $categories as $category ){ |
4129 | 4144 | $variants = $wgContLang->convertLinkToAllVariants($category); |
4130 | 4145 | foreach($variants as $variant){ |
4131 | 4146 | if($variant != $category){ |
— | — | @@ -4346,6 +4361,7 @@ |
4347 | 4362 | $ig->setShowFilename( false ); |
4348 | 4363 | $ig->setParsing(); |
4349 | 4364 | $ig->useSkin( $this->mOptions->getSkin() ); |
| 4365 | + $ig->mRevisionId = $this->mRevisionId; |
4350 | 4366 | |
4351 | 4367 | if( isset( $params['caption'] ) ) { |
4352 | 4368 | $caption = $params['caption']; |
— | — | @@ -4362,6 +4378,8 @@ |
4363 | 4379 | if( isset( $params['heights'] ) ) { |
4364 | 4380 | $ig->setHeights( $params['heights'] ); |
4365 | 4381 | } |
| 4382 | + |
| 4383 | + wfRunHooks( 'BeforeParserrenderImageGallery', array( &$this, &$ig ) ); |
4366 | 4384 | |
4367 | 4385 | $lines = explode( "\n", $text ); |
4368 | 4386 | foreach ( $lines as $line ) { |
— | — | @@ -4510,8 +4528,18 @@ |
4511 | 4529 | $alt = $this->mStripState->unstripBoth( $alt ); |
4512 | 4530 | $alt = Sanitizer::stripAllTags( $alt ); |
4513 | 4531 | |
| 4532 | + # Give extensions a chance to select the file revision for us |
| 4533 | + $skip = $time = false; |
| 4534 | + wfRunHooks( 'BeforeParserMakeImageLinkObj', array( &$this, &$nt, &$skip, &$time ) ); |
| 4535 | + |
4514 | 4536 | # Linker does the rest |
4515 | | - return $sk->makeImageLinkObj( $nt, $caption, $alt, $align, $params, $framed, $thumb, $manual_thumb, $valign ); |
| 4537 | + if( $skip ) { |
| 4538 | + $link = $sk->makeLinkObj( $nt ); |
| 4539 | + } else { |
| 4540 | + $link = $sk->makeImageLinkObj( $nt, $caption, $alt, $align, $params, $framed, $thumb, $manual_thumb, $valign, $time ); |
| 4541 | + } |
| 4542 | + |
| 4543 | + return $link; |
4516 | 4544 | } |
4517 | 4545 | |
4518 | 4546 | /** |
Index: branches/liquidthreads/includes/DefaultSettings.php |
— | — | @@ -2268,6 +2268,16 @@ |
2269 | 2269 | $wgNamespaceRobotPolicies = array(); |
2270 | 2270 | |
2271 | 2271 | /** |
| 2272 | + * Robot policies per article. |
| 2273 | + * These override the per-namespace robot policies. |
| 2274 | + * Must be in the form of an array where the key part is a properly |
| 2275 | + * canonicalised text form title and the value is a robot policy. |
| 2276 | + * Example: |
| 2277 | + * $wgArticleRobotPolicies = array( 'Main Page' => 'noindex' ); |
| 2278 | + */ |
| 2279 | +$wgArticleRobotPolicies = array(); |
| 2280 | + |
| 2281 | +/** |
2272 | 2282 | * Specifies the minimal length of a user password. If set to |
2273 | 2283 | * 0, empty passwords are allowed. |
2274 | 2284 | */ |
Index: branches/liquidthreads/RELEASE-NOTES |
— | — | @@ -48,6 +48,7 @@ |
49 | 49 | * Added a Content-Disposition header to thumb.php output |
50 | 50 | * Improved thumb.php error handling |
51 | 51 | * Display file history on local image description pages of shared images |
| 52 | +* Added $wgArticleRobotPolicies |
52 | 53 | |
53 | 54 | |
54 | 55 | == Bugfixes since 1.10 == |
Property changes on: branches/liquidthreads |
___________________________________________________________________ |
Modified: svnmerge-integrated |
55 | 56 | - /trunk/phase3:1-22586 |
56 | 57 | + /trunk/phase3:1-22618 |