Smuggli has submitted this change and it was merged.

Change subject: Implemented changes for translatewiki
......................................................................


Implemented changes for translatewiki

Moved php i18n file to languages folder
Moved to Json i18n files
Added two missing messages in german
Fixed typo
Removed debugger statement
Fixed typo
Improved some messages
Added quotes in german
Removed de-formal json file because no message had polite form
Added key for suffix
Fixed Typo
Suffix msg is completely referenced now

Change-Id: Ia3d4fa898721eac7b9d8752019884fdf30748aa7
---
M NamespaceManager/NamespaceManager.class.php
M NamespaceManager/NamespaceManager.setup.php
A NamespaceManager/i18n/de.json
A NamespaceManager/i18n/en.json
A NamespaceManager/i18n/qqq.json
A NamespaceManager/includes/NamespaceNuker.php
A NamespaceManager/languages/NamespaceManager.i18n.php
M NamespaceManager/resources/BS.NamespaceManager/NamespaceDialog.js
M NamespaceManager/resources/BS.NamespaceManager/NamespaceRemoveDialog.js
M NamespaceManager/resources/BS.NamespaceManager/Panel.js
10 files changed, 405 insertions(+), 53 deletions(-)

Approvals:
  Smuggli: Verified; Looks good to me, approved
  Siebrand: Looks good to me, but someone else must approve



diff --git a/NamespaceManager/NamespaceManager.class.php 
b/NamespaceManager/NamespaceManager.class.php
index c2261c8..d20a0ab 100644
--- a/NamespaceManager/NamespaceManager.class.php
+++ b/NamespaceManager/NamespaceManager.class.php
@@ -401,13 +401,13 @@
                        if ( strlen( $sNamespace ) < 2 ) {
                                return FormatJson::encode( array(
                                        'success' => false,
-                                       'message' => wfMessage( 
'bs-namespacemanager-namespace_name_length' )->plain()
+                                       'message' => wfMessage( 
'bs-namespacemanager-ns-length' )->plain()
                                        ) );
                        // TODO MRG (06.11.13 11:17): Unicodefähigkeit?
                        } else if ( !preg_match( 
'%^[a-zA-Z_\\x80-\\xFF][a-zA-Z0-9_\\x80-\\xFF]{1,99}$%i', $sNamespace ) ) {
                                return FormatJson::encode( array(
                                        'success' => false,
-                                       'message' => wfMessage( 
'bs-namespacemanager-wrong_namespace_name_format' )->plain()
+                                       'message' => wfMessage( 
'bs-namespacemanager-wrong-name' )->plain()
                                        ) );
                        } else {
                                $aUserNamespaces[$iNS] = array( 'name' => 
$sNamespace );
@@ -432,7 +432,7 @@
                        // Zweig hier weglassen.
                        return FormatJson::encode( array(
                                        'success' => false,
-                                       'message' => wfMessage( 
'bs-namespacemanager-namespace_already_exists' )->plain()
+                                       'message' => wfMessage( 
'bs-namespacemanager-ns-exists' )->plain()
                                ) );
                }
        }
@@ -460,19 +460,19 @@
                if ( $iNS !== NS_MAIN && !$iNS ) {
                        return FormatJson::encode( array(
                                'success' => false,
-                               'message' => wfMessage( 
'bs-namespacemanager-no_valid_namespace_id' )->plain()
+                               'message' => wfMessage( 
'bs-namespacemanager-invalid-id' )->plain()
                        ) );
                }
                if ( strlen( $sNamespace ) < 2 ) {
                        return FormatJson::encode( array(
                                'success' => false,
-                               'message' => wfMessage( 
'bs-namespacemanager-namespace_name_length' )->plain()
+                               'message' => wfMessage( 
'bs-namespacemanager-ns-length' )->plain()
                        ) );
                }
                if ( $iNS !== NS_MAIN && $iNS !== NS_PROJECT && $iNS !== 
NS_PROJECT_TALK && !preg_match( 
'%^[a-zA-Z_\\x80-\\xFF][a-zA-Z0-9_\\x80-\\xFF]{1,99}$%', $sNamespace ) ) {
                        return FormatJson::encode( array(
                                'success' => false,
-                               'message' => wfMessage( 
'bs-namespacemanager-wrong_namespace_name_format' )->plain()
+                               'message' => wfMessage( 
'bs-namespacemanager-wrong-name' )->plain()
                        ) );
                }
 
@@ -518,7 +518,7 @@
                if ( !$iNS ) {
                        return FormatJson::encode( array(
                                'success' => false,
-                               'message' => wfMessage( 
'bs-namespacemanager-no_valid_namespace_id' )->plain()
+                               'message' => wfMessage( 
'bs-namespacemanager-invalid-id' )->plain()
                                ) );
                }
 
diff --git a/NamespaceManager/NamespaceManager.setup.php 
b/NamespaceManager/NamespaceManager.setup.php
index 15a394f..46712e2 100644
--- a/NamespaceManager/NamespaceManager.setup.php
+++ b/NamespaceManager/NamespaceManager.setup.php
@@ -1,55 +1,34 @@
 <?php
 
-BsExtensionManager::registerExtension('NamespaceManager',                
BsRUNLEVEL::FULL|BsRUNLEVEL::REMOTE, BsACTION::LOAD_SPECIALPAGE);
+BsExtensionManager::registerExtension('NamespaceManager', 
BsRUNLEVEL::FULL|BsRUNLEVEL::REMOTE, BsACTION::LOAD_SPECIALPAGE);
+
+$wgMessagesDirs['NamespaceManager'] = __DIR__ . '/i18n';
+
+$wgExtensionMessagesFiles['NamespaceManager'] = __DIR__ . 
'/languages/NamespaceManager.i18n.php';
 
 $wgResourceModules['ext.bluespice.namespaceManager'] = array(
        'scripts' => 
'extensions/BlueSpiceExtensions/NamespaceManager/resources/bluespice.namespaceManager.js',
        'styles' => 
'extensions/BlueSpiceExtensions/NamespaceManager/resources/bluespice.namespaceManager.namespaceManagerTreeview.css',
        'dependencies' => 'ext.bluespice.extjs',
        'messages' => array(
-               'bs-namespacemanager-headerNamespaceId',
-               'bs-namespacemanager-headerNamespaceName',
-               'bs-namespacemanager-headerIsUserNamespace',
-               'bs-namespacemanager-headerIsContentNamespace',
-               'bs-namespacemanager-headerIsSearchableNamespace',
-               'bs-namespacemanager-headerIsSubpagesNamespace',
-               'bs-namespacemanager-headerActions',
-               'bs-namespacemanager-yes',
-               'bs-namespacemanager-no',
-               'bs-namespacemanager-btnAddNamespace',
-               'bs-namespacemanager-tipEdit',
-               'bs-namespacemanager-tipRemove',
-               'bs-namespacemanager-msgNotEditable',
-               'bs-namespacemanager-msgNotEditableDelete',
-               'bs-namespacemanager-titleNewNamespace',
-               'bs-namespacemanager-labelNamespaceName',
-               'bs-namespacemanager-emptyMsgNamespaceName',
-               'bs-namespacemanager-labelContentNamespace',
-               'bs-namespacemanager-labelSearchedNamespace',
-               'bs-namespacemanager-labelSubpagesNamespace',
-               'bs-namespacemanager-btnSave',
-               'bs-namespacemanager-btnCancel',
-               'bs-namespacemanager-titleError',
-               'bs-namespacemanager-willDelete',
-               'bs-namespacemanager-willMove',
-               'bs-namespacemanager-willMoveSuffix',
+               'bs-namespacemanager-tipadd',
+               'bs-namespacemanager-tipedit',
+               'bs-namespacemanager-tipremove',
+               'bs-namespacemanager-msgnoteditabledelete',
+               'bs-namespacemanager-labelnsname',
+               'bs-namespacemanager-willdelete',
+               'bs-namespacemanager-willmove',
+               'bs-namespacemanager-willmovesuffix',
                'bs-namespacemanager-deletewarning',
-               'bs-namespacemanager-moveConflict',
-               'bs-namespacemanager-articlesPresent',
-               'bs-namespacemanager-btnDelete',
-               'bs-namespacemanager-deleteNamespace',
-               'bs-namespacemanager-showEntries',
-               'bs-namespacemanager-pageSize',
+               'bs-namespacemanager-pagepresent',
                'bs-namespacemanager-label-editable'
        ),
        'localBasePath' => $IP,
        'remoteBasePath' => &$GLOBALS['wgScriptPath']
 );
 
-$wgExtensionMessagesFiles['NamespaceManager'] = __DIR__ . 
'/NamespaceManager.i18n.php';
-
 $GLOBALS['wgAutoloadClasses']['NamespaceManager'] = __DIR__ . 
'/NamespaceManager.class.php';
-$wgAutoloadClasses['NamespaceNuker'] = __DIR__ . '/NamespaceNuker.php';
+$wgAutoloadClasses['NamespaceNuker'] = __DIR__ . 
'/includes/NamespaceNuker.php';
 
 $wgAjaxExportList[] = 'NamespaceManager::getForm';
 $wgAjaxExportList[] = 'NamespaceManager::getData';
diff --git a/NamespaceManager/i18n/de.json b/NamespaceManager/i18n/de.json
new file mode 100644
index 0000000..9e887f6
--- /dev/null
+++ b/NamespaceManager/i18n/de.json
@@ -0,0 +1,32 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Stephan Muggli <[email protected]>"
+               ]
+       },
+       "bs-namespacemanager-desc": "Administrationsoberfläche zum Erstellen 
und Bearbeiten von Rechten",
+       "bs-namespacemanager-label": "Namensraumverwaltung",
+       "bs-namespacemanager-wrong-name": "Der Namesraum enthält unzulässige 
Zeichen.",
+       "bs-namespacemanager-ns-exists": "Der Namesraum existiert bereits.",
+       "bs-namespacemanager-ns-length": "Der Namesraum muss minderstens zwei 
Zeichen lang sein.",
+       "bs-namespacemanager-invalid-id": "Keine zulässige Namesraum ID 
übertragen.",
+       "bs-namespacemanager-label-id": "ID",
+       "bs-namespacemanager-label-namespaces": "Namesraum",
+       "bs-namespacemanager-label-editable": "Umbenennbar",
+       "bs-namespacemanager-label-content": "In Statistik",
+       "bs-namespacemanager-label-searchable": "Standardmäßig durchsuchen",
+       "bs-namespacemanager-label-subpages": "Unterseiten",
+       "bs-namespacemanager-nsadded": "Der Namensraum wurde erstellt.",
+       "bs-namespacemanager-nsedited": "Der Namensraum wurde bearbeitet.",
+       "bs-namespacemanager-nsremoved": "Der Namensraum wurde gelöscht.",
+       "bs-namespacemanager-tipadd": "Namensraum hinzufügen",
+       "bs-namespacemanager-tipedit": "Namensraum bearbeiten",
+       "bs-namespacemanager-tipremove": "Namensraum entfernen",
+       "bs-namespacemanager-msgnoteditabledelete": "Dieser Namensraum ist ein 
System-Namensraum und kann deshalb nicht gelöscht werden.",
+       "bs-namespacemanager-labelnsname": "Namensraum-Name",
+       "bs-namespacemanager-willdelete": "Werden gelöscht",
+       "bs-namespacemanager-willmove": "Werden in \"{{int:bs-ns_main}}\" 
verschoben*",
+       "bs-namespacemanager-willmovesuffix": "Werden mit dem Suffix 
\"{{int:bs-from-something}}\" in \"{{int:bs-ns_main}}\" verschoben",
+       "bs-namespacemanager-deletewarning": "Bist du dir sicher, dass du den 
Namensraum löschen willst? Das Löschen eines Namensraums kann nicht rückgängig 
gemacht werden.",
+       "bs-namespacemanager-pagepresent": "Seiten in diesem Namensraum:"
+}
diff --git a/NamespaceManager/i18n/en.json b/NamespaceManager/i18n/en.json
new file mode 100644
index 0000000..6427556
--- /dev/null
+++ b/NamespaceManager/i18n/en.json
@@ -0,0 +1,32 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Stephan Muggli <[email protected]>"
+               ]
+       },
+       "bs-namespacemanager-desc": "Administration interface for managing 
namespaces",
+       "bs-namespacemanager-label": "Namespace manager",
+       "bs-namespacemanager-wrong-name": "The namespace contains invalid 
characters.",
+       "bs-namespacemanager-ns-exists": "The namespace already exists.",
+       "bs-namespacemanager-ns-length": "The namespace must have a minimum 
length of two characters.",
+       "bs-namespacemanager-invalid-id": "No valid namespace ID",
+       "bs-namespacemanager-label-id": "ID",
+       "bs-namespacemanager-label-namespaces": "Namespace",
+       "bs-namespacemanager-label-editable": "Renameable",
+       "bs-namespacemanager-label-content": "In statistics",
+       "bs-namespacemanager-label-searchable": "Search by default",
+       "bs-namespacemanager-label-subpages": "Subpages",
+       "bs-namespacemanager-nsadded": "The namespace has been added.",
+       "bs-namespacemanager-nsremoved": "The namespace has been removed.",
+       "bs-namespacemanager-nsedited": "The namespace has been edited.",
+       "bs-namespacemanager-tipadd": "Add namespace",
+       "bs-namespacemanager-tipedit": "Edit namespace",
+       "bs-namespacemanager-tipremove": "Remove namespace",
+       "bs-namespacemanager-msgnoteditabledelete": "This namespace is a system 
namespace and cannot be deleted.",
+       "bs-namespacemanager-labelnsname": "Namespace name",
+       "bs-namespacemanager-willdelete": "Will be deleted",
+       "bs-namespacemanager-willmove": "Will be moved into 
\"{{int:bs-ns_main}}\"",
+       "bs-namespacemanager-willmovesuffix": "Will be moved into 
\"{{int:bs-ns_main}}\" with the suffix \"{{int:bs-from-something}}\"",
+       "bs-namespacemanager-deletewarning": "Are you sure that you want to 
delete this namespace? Deleting a namespace cannot be undone.",
+       "bs-namespacemanager-pagepresent": "Pages in this namespace:"
+}
diff --git a/NamespaceManager/i18n/qqq.json b/NamespaceManager/i18n/qqq.json
new file mode 100644
index 0000000..cec453b
--- /dev/null
+++ b/NamespaceManager/i18n/qqq.json
@@ -0,0 +1,32 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Stephan Muggli <[email protected]>"
+               ]
+       },
+       "bs-namespacemanager-desc": "Used in 
[[Special:Wiki_Admin&mode=ExtensionInfo]], description of namespace manager 
extension",
+       "bs-namespacemanager-label": "Used in Sidebar, Anchor text for 
namespace manager",
+       "bs-namespacemanager-wrong-name": "Error message for the namespace 
contains invalid characters.",
+       "bs-namespacemanager-ns-exists": "Error message for the namespace 
already exists.",
+       "bs-namespacemanager-ns-length": "Error message for the namespace must 
have a minumum length of two characters.",
+       "bs-namespacemanager-invalid-id": "Error message for no valid namespace 
ID",
+       "bs-namespacemanager-label-id": "Column headline for 
id\n{{Identical|ID}}",
+       "bs-namespacemanager-label-namespaces": "Column headline for 
namespace\n{{Identical|Namespace}}",
+       "bs-namespacemanager-label-editable": "Column headline for renameable",
+       "bs-namespacemanager-label-content": "Column headline for in 
statistics",
+       "bs-namespacemanager-label-searchable": "Column headline for search by 
default",
+       "bs-namespacemanager-label-subpages": "Column headline for subpages",
+       "bs-namespacemanager-nsadded": "Success message for the namespace has 
been added.",
+       "bs-namespacemanager-nsremoved": "Success message for the namespace has 
been removed.",
+       "bs-namespacemanager-nsedited": "Success message for the namespace has 
been edited.",
+       "bs-namespacemanager-tipadd": "Window title for add namespace",
+       "bs-namespacemanager-tipedit": "Window title for edit namespace",
+       "bs-namespacemanager-tipremove": "Window title for remove namespace",
+       "bs-namespacemanager-msgnoteditabledelete": "Error message for this 
namespace is a system namespace and cannot be deleted.",
+       "bs-namespacemanager-labelnsname": "Label for name",
+       "bs-namespacemanager-willdelete": "Checkbox label for will be deleted",
+       "bs-namespacemanager-willmove": "Checkbox label for will be moved into 
\"{{int:bs-ns_main}}\"",
+       "bs-namespacemanager-willmovesuffix": "Checkbox label for will be moved 
into \"{{int:bs-ns_main}}\" with the suffix \"{{int:bs-from-something}}\"\n$1 
is the name of the namespace which will be deleted",
+       "bs-namespacemanager-deletewarning": "Text for are you sure that you 
want to delete this namespace? Deleting a namespace cannot be undone.",
+       "bs-namespacemanager-pagepresent": "Headline for pages in this 
namespace:\nHeadline for checkbox section"
+}
diff --git a/NamespaceManager/includes/NamespaceNuker.php 
b/NamespaceManager/includes/NamespaceNuker.php
new file mode 100644
index 0000000..4fb21cd
--- /dev/null
+++ b/NamespaceManager/includes/NamespaceNuker.php
@@ -0,0 +1,236 @@
+<?php
+
+/**
+ * NamespacerNuker
+ * @author Sebastian Ulbricht
+ */
+// Last review MRG (01.07.11 01:47)
+class NamespaceNuker {
+
+       protected static function PurgeRedundantText() {
+               global $wgDBtype;
+               $dbw = wfGetDB(DB_MASTER);
+               $dbw->begin();
+
+               $tbl_arc = $dbw->tableName('archive');
+               $tbl_rev = $dbw->tableName('revision');
+               $tbl_txt = $dbw->tableName('text');
+
+               # Get "active" text records from the revisions table
+               $res = $dbw->query("SELECT DISTINCT rev_text_id FROM $tbl_rev");
+               while ($row = $dbw->fetchObject($res)) {
+                       $cur[] = $row->rev_text_id;
+               }
+
+               # Get "active" text records from the archive table
+               $res = $dbw->query("SELECT DISTINCT ar_text_id FROM $tbl_arc");
+               while ($row = $dbw->fetchObject($res)) {
+                       $cur[] = $row->ar_text_id;
+               }
+
+               # Get the IDs of all text records not in these sets
+               $set = implode(', ', $cur);
+               $res = $dbw->query("SELECT old_id FROM $tbl_txt WHERE old_id 
NOT IN ( $set )");
+               $old = array();
+               while ($row = $dbw->fetchObject($res)) {
+                       $old[] = $row->old_id;
+               }
+               if (count($old)) {
+                       $set = implode(', ', $old);
+
+                       $tbl_txt_bck = $wgDBtype == 'oracle' ? 
$dbw->tableName('bs_ns_bak_text') : 
$dbw->tableName('bs_namespacemanager_backup_text');
+                       $dbw->query("INSERT INTO $tbl_txt_bck SELECT * FROM 
$tbl_txt WHERE old_id IN ($set)");
+                       $dbw->query("DELETE FROM $tbl_txt WHERE old_id IN ( 
$set )");
+               }
+
+               $dbw->commit();
+       }
+
+       protected static function DeleteRevisions($revs) {
+               global $wgDBtype;
+               $dbw = wfGetDB(DB_MASTER);
+               $dbw->begin();
+               $tbl_rev = $dbw->tableName('revision');
+               if (count($revs)) {
+                       $set = implode(', ', $revs);
+                       $tbl_rev_bck = $wgDBtype == 'oracle' ? 
$dbw->tableName('bs_ns_bak_revision') : 
$dbw->tableName('bs_namespacemanager_backup_revision');
+                       $dbw->query("INSERT INTO $tbl_rev_bck SELECT * FROM 
$tbl_rev WHERE rev_id IN ( $set )");
+                       $dbw->query("DELETE FROM $tbl_rev WHERE rev_id IN ( 
$set )");
+               }
+               $dbw->commit();
+       }
+
+       public static function removeAllPages($idNS, $nameNS, $toNS = 0) {
+               global $wgDBtype;
+               if (!$idNS)
+                       return false;
+               $bnUser = RequestContext::getMain()->getUser();
+               $idUser = $bnUser->getId();
+               $nameUser = $bnUser->getName();
+
+               $dbw = wfgetDB(DB_MASTER);
+               $dbw->begin();
+               $tbl_pag = $dbw->tableName('page');
+               $tbl_rec_chg = $dbw->tableName('recentchanges');
+               $idNS = $dbw->addQuotes($idNS);
+               $pages = array();
+               $info = array();
+               $renamed = 0;
+
+               $res = $dbw->query("SELECT page_id, page_title, page_len, 
page_latest " .
+                                               "FROM $tbl_pag " .
+                                               "WHERE page_namespace = $idNS");
+               while ($row = $dbw->fetchObject($res)) {
+                       $pages[] = $row->page_title;
+                       $info[$row->page_title] = array('page_title' => 
$row->page_title,
+                               'page_id' => $row->page_id,
+                               'last_id' => $row->page_latest,
+                               'page_len' => $row->page_len);
+               }
+               if (count($pages)) {
+                       $set = implode('\', \'', $pages);
+                       $res = $dbw->query("SELECT page_title " .
+                                                       "FROM $tbl_pag " .
+                                                       "WHERE page_namespace = 
0 " .
+                                                       "  AND page_title IN 
('$set')");
+                       $pages = array();
+                       while ($row = $dbw->fetchObject($res)) {
+                               $pages[] = $row->page_title;
+                               $info[$row->page_title]['page_title'] = 
$row->page_title . "_(from_$nameNS)";
+                       }
+                       if (count($pages)) {
+                               $set = implode('\', \'', $pages);
+                               $dbw->query("UPDATE $tbl_pag " .
+                                               "SET page_title = 
CONCAT(page_title, '_(from_$nameNS)') " .
+                                               "WHERE page_namespace = $idNS " 
.
+                                               "  AND page_title IN ('$set')");
+                               $renamed = $set;
+                       }
+                       if ($wgDBtype == 'postgres') {
+                               $time = wfTimestamp(TS_POSTGRES, time());
+                       } else {
+                               $time = date("YmdHis", time());
+                       }
+                       foreach ($info as $page) {
+                               $dbw->query("INSERT INTO $tbl_rec_chg " .
+                                               "(rc_timestamp, rc_cur_time, 
rc_user, rc_user_text, rc_namespace, rc_title, rc_comment, rc_minor ,rc_bot, 
rc_new, rc_cur_id, rc_this_oldid, " .
+                                               "rc_last_oldid, rc_type, 
rc_moved_to_ns, rc_patrolled, rc_ip, rc_old_len, rc_new_len, rc_deleted, 
rc_logid, rc_log_type) VALUES " .
+                                               "('$time', '$time', '$idUser', 
'$nameUser', $idNS, '" . $page['page_title'] . "', " .
+                                               // TODO SU (04.07.11 12:05): 
i18n
+                                               "'Diese Seite wurde vom 
Namespace \"$nameNS\" in den Mainspace verschoben, da der Namespace \"$nameNS\" 
gelöscht wurde.', " .
+                                               "0, 0, 0, " . $page['page_id'] 
. ", " . $page['last_id'] . ", 0, 3, 0, 0, '" . $_SERVER['REMOTE_ADDR'] . "', " 
. $page['page_len'] . ", " .
+                                               $page['page_len'] . ", 0, 0, 
'move')");
+                       }
+               }
+               $dbw->query("UPDATE $tbl_pag " .
+                               "SET page_namespace = $toNS " .
+                               "WHERE page_namespace = $idNS");
+               $dbw->query("UPDATE $tbl_rec_chg " .
+                               "SET rc_namespace = $toNS " .
+                               "WHERE rc_namespace = $idNS");
+               $dbw->commit();
+
+               if ($renamed != 0) {
+                       return $renamed;
+               }
+               return true;
+       }
+
+       public static function removeAllPagesWithSuffix($idNS, $nameNS, $toNS = 
0) {
+               if (!$idNS) {
+                       return false;
+               }
+
+               $dbw = wfgetDB(DB_MASTER);
+               $dbw->begin();
+               $tbl_pag = $dbw->tableName('page');
+               $tbl_rec_chg = $dbw->tableName('recentchanges');
+
+               $res = $dbw->query("SELECT page_id, page_title, page_len, 
page_latest " .
+                                               "FROM $tbl_pag " .
+                                               "WHERE page_namespace = $idNS");
+               $info = array();
+               while ($row = $dbw->fetchObject($res)) {
+                       $info[$row_ > page_title] = array('page_title' => 
$row->page_title . "_(from_$nameNS)",
+                               'page_id' => $row->page_id,
+                               'last_id' => $row->page_latest,
+                               'page_len' => $row->page_len);
+               }
+               if ($wgDBtype == 'postgres') {
+                       $time = wfTimestamp(TS_POSTGRES, time());
+               } else {
+                       $time = date("YmdHis", time());
+               }
+               foreach ($info as $page) {
+                       $dbw->query("INSERT INTO $tbl_rec_chg " .
+                                       "(rc_timestamp, rc_cur_time, rc_user, 
rc_user_text, rc_namespace, rc_title, rc_comment, rc_minor ,rc_bot, rc_new, 
rc_cur_id, rc_this_oldid, " .
+                                       "rc_last_oldid, rc_type, 
rc_moved_to_ns, rc_patrolled, rc_ip, rc_old_len, rc_new_len, rc_deleted, 
rc_logid, rc_log_type) VALUES " .
+                                       "('$time', '$time', '$idUser', 
'$nameUser', $idNS, '" . $page['page_title'] . "', " .
+                                       // TODO SU (04.07.11 12:05): i18n
+                                       "'Diese Seite wurde vom Namespace 
\"$nameNS\" in den Mainspace verschoben, da der Namespace \"$nameNS\" gelöscht 
wurde.', " .
+                                       "0, 0, 0, " . $page['page_id'] . ", " . 
$page['last_id'] . ", 0, 3, 0, 0, '" . $_SERVER['REMOTE_ADDR'] . "', " . 
$page['page_len'] . ", " .
+                                       $page['page_len'] . ", 0, 0, 'move')");
+               }
+
+               $dbw->query("UPDATE $tbl_pag " .
+                               "SET page_title = CONCAT(page_title, 
'_(from_$nameNS)'), " .
+                               "    page_namespace = $toNS " .
+                               "WHERE page_namespace = $idNS");
+               $dbw->query("UPDATE $tbl_rec_chg " .
+                               "SET rc_namespace = $toNS " .
+                               "WHERE rc_namespace = $idNS");
+
+               $dbw->commit();
+               return true;
+       }
+
+       public static function nukeNamespaceWithAllPages($idNS) {
+               global $wgDBtype;
+               if (!$idNS) {
+                       return false;
+               }
+               $dbw = wfgetDB(DB_MASTER);
+               $dbw->begin();
+
+               $tbl_pag = $dbw->tableName('page');
+               $tbl_rev = $dbw->tableName('revision');
+               $tbl_pag_bck = $wgDBtype == 'oracle' ? 
$dbw->tableName('bs_ns_bak_page') : 
$dbw->tableName('bs_namespacemanager_backup_page');
+               $tbl_rec_chg = $dbw->tableName('recentchanges');
+               $tbl_src_idx = $dbw->tableName('searchindex');
+               $res = $dbw->query("SELECT page_title FROM $tbl_pag WHERE 
page_namespace = $idNS");
+               $i_deleted = 0;
+
+               while ($row = $dbw->fetchObject($res)) {
+                       $title = Title::newFromText($row->page_title, $idNS);
+                       $id = $title->getArticleID();
+
+                       // Get corresponding revisions
+                       $res2 = $dbw->query("SELECT rev_id FROM $tbl_rev WHERE 
rev_page = $id");
+                       $revs = array();
+                       while ($row2 = $dbw->fetchObject($res2)) {
+                               $revs[] = $row2->rev_id;
+                       }
+                       $dbw->query("INSERT INTO $tbl_pag_bck SELECT * FROM 
$tbl_pag WHERE page_id = $id");
+                       // Delete revisions as appropriate
+                       self::DeleteRevisions($revs);
+                       $dbw->query("DELETE FROM $tbl_pag WHERE page_id = $id");
+                       $dbw->query("DELETE FROM $tbl_src_idx WHERE si_page = 
$id");
+
+                       $i_deleted++;
+               }
+               self::PurgeRedundantText(true);
+               $dbw->query("DELETE FROM $tbl_rec_chg WHERE rc_namespace = 
$idNS");
+               $dbw->commit();
+               if ($i_deleted > 0) {
+                       $res = $dbw->query("SELECT COUNT(*) AS pages FROM 
$tbl_pag");
+                       $row = $dbw->fetchObject($res);
+                       $pages = $row->pages;
+                       $dbw->update(
+                                       'site_stats', array('ss_total_pages' => 
$pages), array('ss_row_id' => 1), __METHOD__
+                       );
+               }
+               
+               return true;
+       }
+
+}
\ No newline at end of file
diff --git a/NamespaceManager/languages/NamespaceManager.i18n.php 
b/NamespaceManager/languages/NamespaceManager.i18n.php
new file mode 100644
index 0000000..55c1e6f
--- /dev/null
+++ b/NamespaceManager/languages/NamespaceManager.i18n.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * This is a backwards-compatibility shim, generated by:
+ * 
https://git.wikimedia.org/blob/mediawiki%2Fcore.git/HEAD/maintenance%2FgenerateJsonI18n.php
+ *
+ * Beginning with MediaWiki 1.23, translation strings are stored in json files,
+ * and the EXTENSION.i18n.php file only exists to provide compatibility with
+ * older releases of MediaWiki. For more information about this migration, see:
+ * https://www.mediawiki.org/wiki/Requests_for_comment/Localisation_format
+ *
+ * This shim maintains compatibility back to MediaWiki 1.17.
+ */
+$messages = array();
+if ( !function_exists( 'wfJsonI18nShim0e5183bb4c366611' ) ) {
+       function wfJsonI18nShim0e5183bb4c366611( $cache, $code, &$cachedData ) {
+               $codeSequence = array_merge( array( $code ), 
$cachedData['fallbackSequence'] );
+               foreach ( $codeSequence as $csCode ) {
+                       $fileName = dirname( __FILE__ ) . 
"/../i18n//$csCode.json";
+                       if ( is_readable( $fileName ) ) {
+                               $data = FormatJson::decode( file_get_contents( 
$fileName ), true );
+                               foreach ( array_keys( $data ) as $key ) {
+                                       if ( $key === '' || $key[0] === '@' ) {
+                                               unset( $data[$key] );
+                                       }
+                               }
+                               $cachedData['messages'] = array_merge( $data, 
$cachedData['messages'] );
+                       }
+
+                       $cachedData['deps'][] = new FileDependency( $fileName );
+               }
+               return true;
+       }
+
+       $GLOBALS['wgHooks']['LocalisationCacheRecache'][] = 
'wfJsonI18nShim0e5183bb4c366611';
+}
diff --git a/NamespaceManager/resources/BS.NamespaceManager/NamespaceDialog.js 
b/NamespaceManager/resources/BS.NamespaceManager/NamespaceDialog.js
index d7c88b6..8cf4167 100644
--- a/NamespaceManager/resources/BS.NamespaceManager/NamespaceDialog.js
+++ b/NamespaceManager/resources/BS.NamespaceManager/NamespaceDialog.js
@@ -18,7 +18,7 @@
        selectedData: {},
        afterInitComponent: function() {
                this.tfNamespaceName = Ext.create( 'Ext.form.TextField', {
-                       fieldLabel: mw.message( 
'bs-namespacemanager-labelNamespaceName' ).plain(),
+                       fieldLabel: mw.message( 
'bs-namespacemanager-labelnsname' ).plain(),
                        labelWidth: 130,
                        labelAlign: 'right',
                        name: 'namespacename',
diff --git 
a/NamespaceManager/resources/BS.NamespaceManager/NamespaceRemoveDialog.js 
b/NamespaceManager/resources/BS.NamespaceManager/NamespaceRemoveDialog.js
index 6e4f4c6..5daf670 100644
--- a/NamespaceManager/resources/BS.NamespaceManager/NamespaceRemoveDialog.js
+++ b/NamespaceManager/resources/BS.NamespaceManager/NamespaceRemoveDialog.js
@@ -23,16 +23,16 @@
                        columns: 1,
                        vertical: true,
                        items: [
-                               { boxLabel: 
mw.message('bs-namespacemanager-willDelete').plain(), name: 'rb', inputValue: 
'0' },
-                               { boxLabel: 
mw.message('bs-namespacemanager-willMove').plain(), name: 'rb', inputValue: '1' 
},
-                               { boxLabel: 
mw.message('bs-namespacemanager-willMoveSuffix').plain(), name: 'rb', 
inputValue: '2' }
+                               { boxLabel: 
mw.message('bs-namespacemanager-willdelete').text(), name: 'rb', inputValue: 
'0' },
+                               { boxLabel: 
mw.message('bs-namespacemanager-willmove').parse(), name: 'rb', inputValue: '1' 
},
+                               { boxLabel: 
mw.message('bs-namespacemanager-willmovesuffix', this.nsName).parse(), name: 
'rb', inputValue: '2' }
                        ]
                });
 
                this.items = [{
                                html: mw.message( 
'bs-namespacemanager-deletewarning' ).plain()
                        }, {
-                               html: mw.message( 
'bs-namespacemanager-articlesPresent' ).plain()
+                               html: mw.message( 
'bs-namespacemanager-pagepresent' ).plain()
                        },
                        this.rgNamespacenuker
                ];
diff --git a/NamespaceManager/resources/BS.NamespaceManager/Panel.js 
b/NamespaceManager/resources/BS.NamespaceManager/Panel.js
index 7a332ef..28387f6 100644
--- a/NamespaceManager/resources/BS.NamespaceManager/Panel.js
+++ b/NamespaceManager/resources/BS.NamespaceManager/Panel.js
@@ -84,7 +84,7 @@
                //TODO: not nice. Decision on wether is "add" or "edit" shold 
be made 
                //by the dialog depending on the provided ID. I.e. -1 for "add"
                this.active = 'add';
-               this.dlgNamespaceAdd.setTitle( mw.message( 
'bs-namespacemanager-btnAddNamespace' ).plain() );
+               this.dlgNamespaceAdd.setTitle( mw.message( 
'bs-namespacemanager-tipadd' ).plain() );
                this.dlgNamespaceAdd.show();
                this.callParent( arguments );
        },
@@ -96,7 +96,7 @@
                }
 
                this.active = 'edit';
-               this.dlgNamespaceEdit.setTitle( mw.message( 
'bs-namespacemanager-tipEdit' ).plain() );
+               this.dlgNamespaceEdit.setTitle( mw.message( 
'bs-namespacemanager-tipedit' ).plain() );
                this.dlgNamespaceEdit.setData( selectedRow[0].getData() );
                this.dlgNamespaceEdit.show();
                this.callParent( arguments );
@@ -108,18 +108,24 @@
                        bs.util.alert( 
                                'NMfail',
                                { 
-                                       textMsg: 
'bs-namespacemanager-msgNotEditableDelete',
+                                       textMsg: 
'bs-namespacemanager-msgnoteditabledelete',
                                        titleMsg: 'bs-extjs-title-warning'
                                }
                        );
                        return;
                }
                if ( !this.dlgNamespaceRemove ) {
-                       this.dlgNamespaceRemove = Ext.create( 
'BS.NamespaceManager.NamespaceRemoveDialog', 
{id:"bs-namespacemanager-remove-dlg"} );
+                       this.dlgNamespaceRemove = Ext.create(
+                               'BS.NamespaceManager.NamespaceRemoveDialog',
+                               {
+                                       id:"bs-namespacemanager-remove-dlg",
+                                       nsName: selectedRow[0].get( 'name' )
+                               }
+                       );
                        this.dlgNamespaceRemove.on( 'ok', 
this.onDlgNamespaceRemoveOk, this );
                }
 
-               this.dlgNamespaceRemove.setTitle( mw.message( 
'bs-namespacemanager-tipRemove' ).plain() );
+               this.dlgNamespaceRemove.setTitle( mw.message( 
'bs-namespacemanager-tipremove' ).plain() );
                this.dlgNamespaceRemove.setData( selectedRow[0].getData() );
                this.dlgNamespaceRemove.show();
                this.callParent( arguments );

-- 
To view, visit https://gerrit.wikimedia.org/r/146428
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia3d4fa898721eac7b9d8752019884fdf30748aa7
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/BlueSpiceExtensions
Gerrit-Branch: master
Gerrit-Owner: Smuggli <[email protected]>
Gerrit-Reviewer: Mglaser <[email protected]>
Gerrit-Reviewer: Pigpen <[email protected]>
Gerrit-Reviewer: Robert Vogel <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Smuggli <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to