MDL-29029 move lang pack import to admin tools
authorPetr Skoda <commits@skodak.org>
Sat, 17 Sep 2011 18:58:26 +0000 (20:58 +0200)
committerPetr Skoda <commits@skodak.org>
Sat, 17 Sep 2011 18:58:26 +0000 (20:58 +0200)
Includes lang related language pack cleanup.

AMOS BEGIN
 MOV [langpacks,core_admin],[pluginname,tool_langimport]
 MOV [install,core_admin],[install,tool_langimport]
 MOV [installedlangs,core_admin],[installedlangs,tool_langimport]
 MOV [langimport,core_admin],[langimport,tool_langimport]
 MOV [langimportdisabled,core_admin],[langimportdisabled,tool_langimport]
 MOV [langpackinstalled,core_admin],[langpackinstalled,tool_langimport]
 MOV [langpackremoved,core_admin],[langpackremoved,tool_langimport]
 MOV [langpackupdateskipped,core_admin],[langpackupdateskipped,tool_langimport]
 MOV [langpackuptodate,core_admin],[langpackuptodate,tool_langimport]
 MOV [langupdatecomplete,core_admin],[langupdatecomplete,tool_langimport]
 MOV [missinglangparent,core_admin],[missinglangparent,tool_langimport]
 MOV [nolangupdateneeded,core_admin],[nolangupdateneeded,tool_langimport]
 MOV [remotelangnotavailable,core_admin],[remotelangnotavailable,tool_langimport]
 MOV [uninstall,core_admin],[uninstall,tool_langimport]
 MOV [uninstallconfirm,core_admin],[uninstallconfirm,tool_langimport]
 MOV [updatelangs,core_admin],[updatelangs,tool_langimport]
AMOS END

13 files changed:
admin/index.php
admin/settings/language.php
admin/tool/langimport/index.php [moved from admin/langimport.php with 83% similarity]
admin/tool/langimport/lang/en/tool_langimport.php [new file with mode: 0644]
admin/tool/langimport/lib.php [new file with mode: 0644]
admin/tool/langimport/settings.php [new file with mode: 0644]
admin/tool/langimport/styles.css [new file with mode: 0644]
admin/tool/langimport/version.php [new file with mode: 0644]
lang/en/admin.php
lib/pluginlib.php
lib/upgradelib.php
theme/base/style/admin.css
theme/standard/style/admin.css

index 9a54e70..d13aa3b 100644 (file)
@@ -249,7 +249,7 @@ if ($version > $CFG->version) {  // upgrade
             print_upgrade_reload('index.php?confirmupgrade=1');
         } else {
             echo $OUTPUT->notification(get_string('environmentok', 'admin'), 'notifysuccess');
-            if (empty($CFG->skiplangupgrade)) {
+            if (empty($CFG->skiplangupgrade) and current_language() !== 'en') {
                 echo $OUTPUT->box_start('generalbox', 'notice');
                 print_string('langpackwillbeupdated', 'admin');
                 echo $OUTPUT->box_end();
index 3633bfb..1a9b936 100644 (file)
@@ -17,8 +17,6 @@ if ($hassiteconfig) {
 
     $ADMIN->add('language', $temp);
 
-    $ADMIN->add('language', new admin_externalpage('langimport', get_string('langpacks', 'admin'), "$CFG->wwwroot/$CFG->admin/langimport.php"));
-
     // Hidden multilang upgrade page.
     $ADMIN->add('language', new admin_externalpage('multilangupgrade', get_string('multilangupgrade', 'admin'), $CFG->wwwroot.'/'.$CFG->admin.'/multilangupgrade.php', 'moodle/site:config', !empty($CFG->filter_multilang_converted)));
 
similarity index 83%
rename from admin/langimport.php
rename to admin/tool/langimport/index.php
index 476dbaf..964c64c 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
  * and meta info.
  * Locally, language packs are saved into $CFG->dataroot/lang/
  *
- * @package   core
- * @copyright 2005 Yu Zhang
- * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package    tool
+ * @subpackage langimport
+ * @copyright  2005 Yu Zhang
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
-require_once(dirname(dirname(__FILE__)).'/config.php');
+require(dirname(dirname(dirname(dirname(__FILE__)))) . '/config.php');
 require_once($CFG->libdir.'/adminlib.php');
 require_once($CFG->libdir.'/filelib.php');
 require_once($CFG->libdir.'/componentlib.class.php');
 
-admin_externalpage_setup('langimport');
+admin_externalpage_setup('toollangimport');
 
 if (!empty($CFG->skiplangupgrade)) {
     echo $OUTPUT->header();
-    echo $OUTPUT->box(get_string('langimportdisabled', 'admin'));
+    echo $OUTPUT->box(get_string('langimportdisabled', 'tool_langimport'));
     echo $OUTPUT->footer();
     die;
 }
@@ -69,13 +69,13 @@ if (($mode == INSTALLATION_OF_SELECTED_LANG) and confirm_sesskey() and !empty($p
             $a       = new stdClass();
             $a->url  = $installer->lang_pack_url($langcode);
             $a->dest = $CFG->dataroot.'/lang';
-            print_error('remotedownloaderror', 'error', 'langimport.php', $a);
+            print_error('remotedownloaderror', 'error', 'index.php', $a);
             break;
         case lang_installer::RESULT_INSTALLED:
-            $notice_ok[] = get_string('langpackinstalled', 'admin', $langcode);
+            $notice_ok[] = get_string('langpackinstalled', 'tool_langimport', $langcode);
             break;
         case lang_installer::RESULT_UPTODATE:
-            $notice_ok[] = get_string('langpackuptodate', 'admin', $langcode);
+            $notice_ok[] = get_string('langpackuptodate', 'tool_langimport', $langcode);
             break;
         }
     }
@@ -87,9 +87,9 @@ if ($mode == DELETION_OF_SELECTED_LANG and !empty($uninstalllang)) {
 
     } else if (!$confirm and confirm_sesskey()) {
         echo $OUTPUT->header();
-        echo $OUTPUT->confirm(get_string('uninstallconfirm', 'admin', $uninstalllang),
-                     'langimport.php?mode='.DELETION_OF_SELECTED_LANG.'&uninstalllang='.$uninstalllang.'&confirm=1',
-                     'langimport.php');
+        echo $OUTPUT->confirm(get_string('uninstallconfirm', 'tool_langimport', $uninstalllang),
+                     'index.php?mode='.DELETION_OF_SELECTED_LANG.'&uninstalllang='.$uninstalllang.'&confirm=1',
+                     'index.php');
         echo $OUTPUT->footer();
         die;
 
@@ -105,7 +105,7 @@ if ($mode == DELETION_OF_SELECTED_LANG and !empty($uninstalllang)) {
             $rm2 = remove_dir($dest2);
         }
         if ($rm1 or $rm2) {
-            $notice_ok[] = get_string('langpackremoved','admin');
+            $notice_ok[] = get_string('langpackremoved', 'tool_langimport');
         } else {    //nothing deleted, possibly due to permission error
             $notice_error[] = 'An error has occurred, language pack is not completely uninstalled, please check file permissions';
         }
@@ -130,7 +130,7 @@ if ($mode == UPDATE_ALL_LANG) {
     $updateablelangs = array();
     foreach ($currentlangs as $clang) {
         if (!array_key_exists($clang, $md5array)) {
-            $notice_ok[] = get_string('langpackupdateskipped', 'admin', $clang);
+            $notice_ok[] = get_string('langpackupdateskipped', 'tool_langimport', $clang);
             continue;
         }
         $dest1 = $CFG->dataroot.'/lang/'.$clang;
@@ -189,22 +189,22 @@ if ($mode == UPDATE_ALL_LANG) {
             $a       = new stdClass();
             $a->url  = $installer->lang_pack_url($langcode);
             $a->dest = $CFG->dataroot.'/lang';
-            print_error('remotedownloaderror', 'error', 'langimport.php', $a);
+            print_error('remotedownloaderror', 'error', 'index.php', $a);
             break;
         case lang_installer::RESULT_INSTALLED:
             $updated = true;
-            $notice_ok[] = get_string('langpackinstalled', 'admin', $langcode);
+            $notice_ok[] = get_string('langpackinstalled', 'tool_langimport', $langcode);
             break;
         case lang_installer::RESULT_UPTODATE:
-            $notice_ok[] = get_string('langpackuptodate', 'admin', $langcode);
+            $notice_ok[] = get_string('langpackuptodate', 'tool_langimport', $langcode);
             break;
         }
     }
 
     if ($updated) {
-        $notice_ok[] = get_string('langupdatecomplete','admin');
+        $notice_ok[] = get_string('langupdatecomplete', 'tool_langimport');
     } else {
-        $notice_ok[] = get_string('nolangupdateneeded','admin');
+        $notice_ok[] = get_string('nolangupdateneeded', 'tool_langimport');
     }
 
     unset($installer);
@@ -212,7 +212,7 @@ if ($mode == UPDATE_ALL_LANG) {
 get_string_manager()->reset_caches();
 
 echo $OUTPUT->header();
-echo $OUTPUT->heading(get_string('langimport', 'admin'));
+echo $OUTPUT->heading(get_string('langimport', 'tool_langimport'));
 
 $installedlangs = get_string_manager()->get_list_of_translations(true);
 
@@ -235,7 +235,7 @@ if ($availablelangs = $installer->get_remote_list_of_languages()) {
     $remote = false;
     $availablelangs = array();
     echo $OUTPUT->box_start();
-    print_string('remotelangnotavailable', 'admin', $CFG->dataroot.'/lang/');
+    print_string('remotelangnotavailable', 'tool_langimport', $CFG->dataroot.'/lang/');
     echo $OUTPUT->box_end();
 }
 
@@ -260,7 +260,7 @@ if ($missingparents) {
                 $a->parent = $alang[2].' ('.$shortlang.')';
             }
         }
-        $info = get_string('missinglangparent', 'admin', $a);
+        $info = get_string('missinglangparent', 'tool_langimport', $a);
         echo $OUTPUT->notification($info, 'notifyproblem');
     }
 }
@@ -271,22 +271,22 @@ echo html_writer::start_tag('table');
 echo html_writer::start_tag('tr');
 
 // list of installed languages
-$url = new moodle_url('/admin/langimport.php', array('mode' => DELETION_OF_SELECTED_LANG));
+$url = new moodle_url('/admin/tool/langimport/index.php', array('mode' => DELETION_OF_SELECTED_LANG));
 echo html_writer::start_tag('td', array('valign' => 'top'));
 echo html_writer::start_tag('form', array('id' => 'uninstallform', 'action' => $url->out(), 'method' => 'post'));
 echo html_writer::start_tag('fieldset');
-echo html_writer::label(get_string('installedlangs','admin'), 'uninstalllang');
+echo html_writer::label(get_string('installedlangs', 'tool_langimport'), 'uninstalllang');
 echo html_writer::empty_tag('br');
 echo html_writer::select($installedlangs, 'uninstalllang', '', false, array('size' => 15));
 echo html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'sesskey', 'value' => sesskey()));
 echo html_writer::empty_tag('br');
-echo html_writer::empty_tag('input', array('type' => 'submit', 'value' => get_string('uninstall','admin')));
+echo html_writer::empty_tag('input', array('type' => 'submit', 'value' => get_string('uninstall', 'tool_langimport')));
 echo html_writer::end_tag('fieldset');
 echo html_writer::end_tag('form');
 if ($remote) {
-    $url = new moodle_url('/admin/langimport.php', array('mode' => UPDATE_ALL_LANG));
+    $url = new moodle_url('/admin/tool/langimport/index.php', array('mode' => UPDATE_ALL_LANG));
     echo html_writer::start_tag('form', array('id' => 'updateform', 'action' => $url->out(), 'method' => 'post'));
-    echo html_writer::tag('fieldset', html_writer::empty_tag('input', array('type' => 'submit', 'value' => get_string('updatelangs','admin'))));
+    echo html_writer::tag('fieldset', html_writer::empty_tag('input', array('type' => 'submit', 'value' => get_string('updatelangs','tool_langimport'))));
     echo html_writer::end_tag('form');
 }
 echo html_writer::end_tag('td');
@@ -300,7 +300,7 @@ foreach ($availablelangs as $alang) {
 }
 if (!empty($options)) {
     echo html_writer::start_tag('td', array('valign' => 'top'));
-    $url = new moodle_url('/admin/langimport.php', array('mode' => INSTALLATION_OF_SELECTED_LANG));
+    $url = new moodle_url('/admin/tool/langimport/index.php', array('mode' => INSTALLATION_OF_SELECTED_LANG));
     echo html_writer::start_tag('form', array('id' => 'installform', 'action' => $url->out(), 'method' => 'post'));
     echo html_writer::start_tag('fieldset');
     echo html_writer::label(get_string('availablelangs','install'), 'pack');
@@ -308,7 +308,7 @@ if (!empty($options)) {
     echo html_writer::select($options, 'pack[]', '', false, array('size' => 15, 'multiple' => 'multiple'));
     echo html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'sesskey', 'value' => sesskey()));
     echo html_writer::empty_tag('br');
-    echo html_writer::empty_tag('input', array('type' => 'submit', 'value' => get_string('install','admin')));
+    echo html_writer::empty_tag('input', array('type' => 'submit', 'value' => get_string('install','tool_langimport')));
     echo html_writer::end_tag('fieldset');
     echo html_writer::end_tag('form');
     echo html_writer::end_tag('td');
diff --git a/admin/tool/langimport/lang/en/tool_langimport.php b/admin/tool/langimport/lang/en/tool_langimport.php
new file mode 100644 (file)
index 0000000..e2fbf51
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Strings for component 'tool_langimport', language 'en', branch 'MOODLE_22_STABLE'
+ *
+ * @package    tool
+ * @subpackage langimport
+ * @copyright  1999 onwards Martin Dougiamas  {@link http://moodle.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$string['install'] = 'Install selected language pack';
+$string['installedlangs'] = 'Installed language packs';
+$string['langimport'] = 'Language import utility';
+$string['langimportdisabled'] = 'Language import feature has been disabled. You have to update your language packs manually at the file-system level.';
+$string['langpackinstalled'] = 'Language pack {$a} was successfully installed';
+$string['langpackremoved'] = 'Language pack was uninstalled';
+$string['langpackupdateskipped'] = 'Update of {$a} language pack skipped';
+$string['langpackuptodate'] = 'Language pack {$a} is up-to-date';
+$string['langupdatecomplete'] = 'Language pack update completed';
+$string['missinglangparent'] = 'Missing parent language <em>{$a->parent}</em> of <em>{$a->lang}</em>.';
+$string['nolangupdateneeded'] = 'All your language packs are up to date, no update is needed';
+$string['pluginname'] = 'Language packs';
+$string['remotelangnotavailable'] = 'Because Moodle can not connect to download.moodle.org, we are unable to do language pack installation automatically. Please download the appropriate zip file(s) from http://download.moodle.org, copy them to your {$a} directory and unzip them manually.';
+$string['uninstall'] = 'Uninstall selected language pack';
+$string['uninstallconfirm'] = 'You are about to completely uninstall language pack {$a}, are you sure?';
+$string['updatelangs'] = 'Update all installed language packs';
+
diff --git a/admin/tool/langimport/lib.php b/admin/tool/langimport/lib.php
new file mode 100644 (file)
index 0000000..199568b
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Utility lang import functions.
+ *
+ * @package    tool
+ * @subpackage langimport
+ * @copyright  2011 Petr Skoda
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+/**
+ * Called during upgrade, we need up-to-date lang pack
+ * because it may be used during upgrade...
+ *
+ * @param string $lang
+ * @return void
+ */
+function tool_langimport_preupgrade_update($lang) {
+    global $CFG, $OUTPUT;
+    require_once($CFG->libdir.'/componentlib.class.php');
+
+    echo $OUTPUT->heading(get_string('langimport', 'tool_langimport').': '.$lang);
+
+    @mkdir ($CFG->tempdir.'/');    //make it in case it's a fresh install, it might not be there
+    @mkdir ($CFG->dataroot.'/lang/');
+
+    $installer = new lang_installer($lang);
+    $results = $installer->run();
+    foreach ($results as $langcode => $langstatus) {
+        switch ($langstatus) {
+        case lang_installer::RESULT_DOWNLOADERROR:
+            echo $OUTPUT->notification($langcode . '.zip');
+            break;
+        case lang_installer::RESULT_INSTALLED:
+            echo $OUTPUT->notification(get_string('langpackinstalled', 'tool_langimport', $langcode), 'notifysuccess');
+            break;
+        case lang_installer::RESULT_UPTODATE:
+            echo $OUTPUT->notification(get_string('langpackuptodate', 'tool_langimport', $langcode), 'notifysuccess');
+            break;
+        }
+    }
+}
diff --git a/admin/tool/langimport/settings.php b/admin/tool/langimport/settings.php
new file mode 100644 (file)
index 0000000..a4d7cfa
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Lang import
+ *
+ * @package    tool
+ * @subpackage langimport
+ * @copyright  2011 Petr Skoda
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+if ($hassiteconfig) {
+    $ADMIN->add('language', new admin_externalpage('toollangimport', get_string('pluginname', 'tool_langimport'), "$CFG->wwwroot/$CFG->admin/tool/langimport/index.php"));
+}
+
diff --git a/admin/tool/langimport/styles.css b/admin/tool/langimport/styles.css
new file mode 100644 (file)
index 0000000..a499c0d
--- /dev/null
@@ -0,0 +1,5 @@
+
+#page-admin-tool-langimport-index .generalbox table {margin:auto;width:100%;}
+
+#page-admin-tool-langimport-index .generalbox,
+#page-admin-tool-langimport-index .generalbox table {text-align: center;}
diff --git a/admin/tool/langimport/version.php b/admin/tool/langimport/version.php
new file mode 100644 (file)
index 0000000..8d39361
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Version details.
+ *
+ * @package    tool
+ * @subpackage langimport
+ * @copyright  2011 Petr Skoda
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+$plugin->version   = 2011091700; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2011091600; // Requires this Moodle version
+$plugin->component = 'tool_langimport'; // Full name of the plugin (used for diagnostics)
index 264be02..3568cce 100644 (file)
@@ -234,7 +234,6 @@ $string['configiplookup'] = 'When you click on an IP address (such as 34.12.222.
 $string['configkeeptagnamecase'] = 'Check this if you want tag names to keep the original casing as entered by users who created them';
 $string['configlang'] = 'Choose a default language for the whole site. Users can override this setting using the language menu or the setting in their personal profile.';
 $string['configlangstringcache'] = 'Caches all the language strings into compiled files in the data directory.  If you are translating Moodle or changing strings in the Moodle source code then you may want to switch this off.  Otherwise leave it on to see performance benefits.';
-$string['configlangdir'] = 'Most languages are printed left-to-right, but some, like Arabic and Hebrew, are printed right-to-left.';
 $string['configlanglist'] = 'Leave this blank to allow users to choose from any language you have in this installation of Moodle.  However, you can shorten the language menu by entering a comma-separated list of language codes that you want.  For example:  en,es_es,fr,it';
 $string['configlangmenu'] = 'Choose whether or not you want to display the general-purpose language menu on the home page, login page etc.  This does not affect the user\'s ability to set the preferred language in their own profile.';
 $string['configlatinexcelexport'] = 'Choose the encoding for Excel exports.';
@@ -350,7 +349,6 @@ $string['configzip'] = 'Indicate the location of your zip program (Unix only, op
 $string['confirmation'] = 'Confirmation';
 $string['confirmdeletecomments'] = 'You are about to delete comments, are you sure?';
 $string['confirmed'] = 'Confirmed';
-$string['confirminstall'] = 'You are about to install language pack ({$a}), are you sure?';
 $string['convertformat'] = '<i>convert</i> output format';
 $string['cookiehttponly'] = 'Only http cookies';
 $string['cookiesecure'] = 'Secure cookies only';
@@ -441,7 +439,6 @@ $string['displayloginfailures'] = 'Display login failures to';
 $string['docroot'] = 'Moodle Docs document root';
 $string['doctonewwindow'] = 'Open in new window';
 $string['download'] = 'Download';
-$string['editennotallowed'] = 'Language en_utf8 cannot be edited with this page - switch to local';
 $string['edithelpdocs'] = 'Edit help documents';
 $string['editingnoncorelangfile'] = 'You are trying to modify translation of an add-on module/plugin. You can save translation of 3rd party modules in your _local folder only. You may want to move the file with translation into the module\'s lang directory and/or send it to the maintainer of the add-on module.';
 $string['editlang'] = '<b>Edit</b>';
@@ -576,26 +573,21 @@ $string['htmlsettings'] = 'HTML settings';
 $string['http'] = 'HTTP';
 $string['httpsecurity'] = 'HTTP security';
 $string['change'] = 'change';
-$string['changesitelang'] = 'Change site language';
 $string['checkboxno'] = 'No';
 $string['checkboxyes'] = 'Yes';
 $string['choosefiletoedit'] = 'Choose file to edit';
 $string['iconvrecommended'] = 'Installing the optional ICONV library is highly recommended in order to improve site performance, particularly if your site is supporting non-Latin languages.';
 $string['iconvrequired'] = 'Installing ICONV extension is required.';
 $string['ignore'] = 'Ignore';
-$string['importlangreminder'] = 'The database migration process is commencing. You will need to <b>log in again</b> for the upgrade to take effect. Please install unicode language packs as soon as possible from Admin->Lang->Lang Import Utility <b>after</b> the database migration process is completed.';
 $string['importtimezones'] = 'Update complete list of timezones';
 $string['importtimezonescount'] = '{$a->count} entries imported from {$a->source}';
 $string['importtimezonesfailed'] = 'No sources found! (Bad news)';
 $string['includemoduleuserdata'] = 'Include module user data';
 $string['incompatibleblocks'] = 'Incompatible blocks';
-$string['install'] = 'Install selected language pack';
-$string['installedlangs'] = 'Installed language packs';
 $string['installhijacked'] = 'Installation must be finished from the original IP address, sorry.';
 $string['installsessionerror'] = 'Can not initialise PHP session, please verify that your browser accepts cookies.';
 $string['intcachemax'] = 'Int. cache max';
 $string['intlrecommended'] = 'Intl extension is used to improve internationalization support, such as locale aware sorting.';
-$string['invalidlangpack'] = 'to edit this language pack, you need to put it in language folder.';
 $string['invalidsection'] = 'Invalid section.';
 $string['invaliduserchangeme'] = 'Username "changeme" is reserved -- you cannot create an account with it.';
 $string['ipblocked'] = 'This site is not available currently.';
@@ -611,29 +603,11 @@ $string['keeptagnamecase'] = 'Keep tag name casing';
 $string['lang'] = 'Default language';
 $string['langcache'] = 'Cache language menu';
 $string['langcache_desc'] = 'Cache the language menu. If enabled, the list of available translations is cached. The cache is automatically refreshed when you install or delete a language pack via the in-built language packs management tool. If you install a new language pack manually, you have to use Purge all caches feature to refresh the cached list.';
-$string['langedit'] = 'Language editing';
-$string['langimport'] = 'Language import utility';
-$string['langimportdisabled'] = 'Language import feature has been disabled. You have to update your language packs manually at the file-system level.';
-$string['langimportsuccess'] = 'Language pack successfully upgraded';
 $string['langlist'] = 'Languages on language menu';
-$string['langlocalpackage'] = 'Local modifications';
-$string['langmasterenglish'] = 'Master English pack';
-$string['langmasterpackage'] = 'Master language pack';
 $string['langmenu'] = 'Display language menu';
-$string['langnoeditenglish'] = 'Can\'t overwrite the base English language pack. Please switch lang directory to make local changes';
-$string['langpackinstalled'] = 'Language pack {$a} was successfully installed';
-$string['langpackmaintaining'] = 'Language pack maintaining';
-$string['langpackremoved'] = 'Language pack was uninstalled';
-$string['langpacks'] = 'Language packs';
-$string['langpackupdated'] = 'Language pack {$a} was successfully updated';
-$string['langpackupdateskipped'] = 'Update of {$a} language pack skipped';
-$string['langpackuptodate'] = 'Language pack {$a} is up-to-date';
 $string['langpackwillbeupdated'] = 'NOTE: Moodle will try to download updates for your language packs during the upgrade.';
-$string['langrmyourself'] = 'To prevent data loss, lang.php is not able to overwrite existing file with empty content. Please, remove the file manually in order to get rid of it.';
 $string['langstringcache'] = 'Cache all language strings';
 $string['languagesettings'] = 'Language settings';
-$string['langupdatecomplete'] = 'Language pack update completed';
-$string['lang16notify'] = 'Moodle 1.6 and above allows you to install and update language packs directly from download.moodle.org by following the link below';
 $string['latexpreamble'] = 'LaTeX preamble';
 $string['latexsettings'] = 'LaTeX renderer Settings';
 $string['latinexcelexport'] = 'Excel encoding';
@@ -700,7 +674,6 @@ $string['minpasswordlower'] = 'Lowercase letters';
 $string['minpasswordnonalphanum'] = 'Non-alphanumeric characters';
 $string['minpasswordupper'] = 'Uppercase letters';
 $string['misc'] = 'Miscellaneous';
-$string['missinglangparent'] = 'Missing parent language <em>{$a->parent}</em> of <em>{$a->lang}</em>.';
 $string['mnetrestore_extusers'] = '<strong>Note:</strong> This backup file contains remote Moodle Network user accounts which will be restored as part of the process.';
 $string['mnetrestore_extusers_admin'] = '<strong>Note:</strong> This backup file seems to come from a different Moodle installation and contains remote Moodle Network user accounts. The restore process will try to match the Moodle Network hosts for all created users. Those not matching will be automatically switched to internal authentication (instead of mnet one). The restore log will inform you about that.';
 $string['mnetrestore_extusers_mismatch'] = '<strong>Note:</strong> This backup file apparently originates from a different Moodle installation and contains remote Moodle Network user accounts that may fail to restore. This operation is unsupported. If you are certain that it was created on this Moodle installation, or you can ensure that all the needed Moodle Network Hosts are configured, you may want to still try the restore.';
@@ -734,7 +707,6 @@ $string['nobookmarksforuser'] = 'You do not have any bookmarks.';
 $string['nodatabase'] = 'No database';
 $string['nochanges'] = 'No changes';
 $string['nohttpsformobilewarning'] = 'It is recommended to enable HTTPS with a valid certificate. The Moodle app will always try to use a secured connection first.';
-$string['nolangupdateneeded'] = 'All your language packs are up to date, no update is needed';
 $string['nomissingstrings'] = 'No missing strings';
 $string['nonewsettings'] = 'No new settings were added during this upgrade.';
 $string['nonexistentbookmark'] = 'The bookmark you requested does not exist.';
@@ -873,7 +845,6 @@ $string['recaptchaprivatekey'] = 'ReCAPTCHA private key';
 $string['recaptchapublickey'] = 'ReCAPTCHA public key';
 $string['registration'] = 'Registration';
 $string['releasenoteslink'] = 'For information about this version of Moodle, please see the online <a target="_blank" href="{$a}">Release Notes</a>';
-$string['remotelangnotavailable'] = 'Because Moodle can not connect to download.moodle.org, we are unable to do language pack installation automatically. Please download the appropriate zip file(s) from http://download.moodle.org, copy them to your {$a} directory and unzip them manually.';
 $string['rememberusername'] = 'Remember username';
 $string['rememberusername_desc'] = 'Enable if you want to store permanent cookies with usernames during user login. Permanent cookies may be considered a privacy issue if used without consent.';
 $string['renameerrors'] = 'Rename errors';
@@ -927,7 +898,6 @@ $string['settingsafemode'] = 'Moodle is not fully compatible with safe mode, ple
 $string['showcommentscount'] = 'Show comments count';
 $string['showdetails'] = 'Show details';
 $string['simplexmlrequired'] = 'The SimpleXML PHP extension is now required by Moodle.';
-$string['sitelangchanged'] = 'Site language setting changed successfully';
 $string['sitemaintenance'] = 'The site is undergoing maintenance and is currently not available';
 $string['sitemaintenancemode'] = 'Maintenance mode';
 $string['sitemaintenanceoff'] = 'Maintenance mode has been disabled and the site is running normally again';
@@ -985,14 +955,10 @@ $string['unattendedoperation'] = 'Unattended operation';
 $string['unbookmarkthispage'] = 'Unbookmark this page';
 $string['unicoderecommended'] = 'Storing all your data in Unicode (UTF-8) is recommended. New installations should be performed into databases that have their default character set as Unicode.  If you are upgrading, you should perform the UTF-8 migration process (see the Admin page).';
 $string['unicoderequired'] = 'It is required that you store all your data in Unicode format (UTF-8). New installations must be performed into databases that have their default character set as Unicode.  If you are upgrading, you should perform the UTF-8 migration process (see the Admin page).';
-$string['unicodeupgradenotice'] = 'In Moodle 1.6 we have migrated all languages to Unicode.  To complete the upgrade for this site, you need to convert all the data in your database to Unicode (UTF-8) using our migration script.  <a href="utfdbmigrate.php">Click here to run the migration script now</a>!';
-$string['uninstall'] = 'Uninstall selected language pack';
-$string['uninstallconfirm'] = 'You are about to completely uninstall language pack {$a}, are you sure?';
 $string['uninstallplugin'] = 'Uninstall';
 $string['unsupported'] = 'Unsupported';
 $string['updateaccounts'] = 'Update existing accounts';
 $string['updatecomponent'] = 'Update component';
-$string['updatelangs'] = 'Update all installed language packs';
 $string['updatetimezones'] = 'Update timezones';
 $string['upgradestart'] = 'Upgrade';
 $string['upgradeerror'] = 'Unknown error upgrading {$a->plugin} to version {$a->version}, can not continue.';
index 0c75472..7e07e69 100644 (file)
@@ -368,7 +368,7 @@ class plugin_manager {
 
             'tool' => array(
                 'bloglevelupgrade', 'capability', 'generator', 'health',
-                'profiling', 'unittest', 'unsuproles'
+                'langimport', 'profiling', 'unittest', 'unsuproles'
             ),
 
             'webservice' => array(
index 1d99efa..06693c4 100644 (file)
@@ -1303,43 +1303,37 @@ function upgrade_init_javascript() {
  *
  * @param string $lang the code of the language to update, defaults to the current language
  */
-function upgrade_language_pack($lang='') {
-    global $CFG, $OUTPUT;
+function upgrade_language_pack($lang = null) {
+    global $CFG;
 
-    get_string_manager()->reset_caches();
+    if (!empty($CFG->skiplangupgrade)) {
+        return;
+    }
 
-    if (empty($lang)) {
+    if (!file_exists("$CFG->dirroot/$CFG->admin/tool/langimport/lib.php")) {
+        // weird, somebody uninstalled the import utility
+        return;
+    }
+
+    if (!$lang) {
         $lang = current_language();
     }
 
-    if ($lang == 'en') {
-        return true;  // Nothing to do
+    if (!get_string_manager()->translation_exists($lang)) {
+        return;
     }
 
-    upgrade_started(false);
-    echo $OUTPUT->heading(get_string('langimport', 'admin').': '.$lang);
-
-    @mkdir ($CFG->tempdir.'/');    //make it in case it's a fresh install, it might not be there
-    @mkdir ($CFG->dataroot.'/lang/');
-
-    require_once($CFG->libdir.'/componentlib.class.php');
-
-    $installer = new lang_installer($lang);
-    $results = $installer->run();
-    foreach ($results as $langcode => $langstatus) {
-        switch ($langstatus) {
-        case lang_installer::RESULT_DOWNLOADERROR:
-            echo $OUTPUT->notification($langcode . '.zip');
-            break;
-        case lang_installer::RESULT_INSTALLED:
-            echo $OUTPUT->notification(get_string('langpackinstalled', 'admin', $langcode), 'notifysuccess');
-            break;
-        case lang_installer::RESULT_UPTODATE:
-            echo $OUTPUT->notification(get_string('langpackuptodate', 'admin', $langcode), 'notifysuccess');
-            break;
-        }
+    get_string_manager()->reset_caches();
+
+    if ($lang === 'en') {
+        return;  // Nothing to do
     }
 
+    upgrade_started(false);
+
+    require_once("$CFG->dirroot/$CFG->admin/tool/langimport/lib.php");
+    tool_langimport_preupgrade_update($lang);
+
     get_string_manager()->reset_caches();
 
     print_upgrade_separator();
@@ -1401,11 +1395,7 @@ function upgrade_core($version, $verbose) {
         purge_all_caches();
 
         // Upgrade current language pack if we can
-        if (empty($CFG->skiplangupgrade)) {
-            if (get_string_manager()->translation_exists(current_language())) {
-                upgrade_language_pack(false);
-            }
-        }
+        upgrade_language_pack();
 
         print_upgrade_part_start('moodle', false, $verbose);
 
index 5604a02..2d64eb2 100644 (file)
@@ -84,8 +84,6 @@
 #page-admin-roles-override .overridenotice,
 #page-admin-roles-define .definenotice {margin: 1em 10% 2em 10%;text-align: left;}
 
-#page-admin-langimport .generalbox table {margin:auto;width:100%;}
-
 #page-admin-index .adminerror .singlebutton,
 #page-admin-index .adminwarning .singlebutton,
 #page-admin-index #layout-table .singlebutton {margin:20px;}
index 331183c..ef2afd1 100644 (file)
@@ -3,8 +3,6 @@
 #page-admin-course-category .rolelink {text-align:right;padding:10px;}
 
 #page-admin-lang .generalbox,
-#page-admin-langimport .generalbox,
-#page-admin-langimport .generalbox table,
 #page-admin-course-index .singlebutton,
 #page-admin-course-index .addcategory,
 #page-admin-course-category .addcategory,