Merge branch 'MDL-46506-master' of git://github.com/damyon/moodle
authorSam Hemelryk <sam@moodle.com>
Sun, 27 Jul 2014 20:46:03 +0000 (08:46 +1200)
committerSam Hemelryk <sam@moodle.com>
Sun, 27 Jul 2014 20:46:03 +0000 (08:46 +1200)
install/lang/ru/install.php
install/lang/te/install.php
install/lang/uk/admin.php
install/lang/vi/admin.php
lib/classes/task/manager.php
lib/classes/task/scheduled_task.php
mod/assign/backup/moodle2/restore_assign_stepslib.php
mod/assign/locallib.php
mod/assign/tests/locallib_test.php
version.php

index d6a74dc..bd3678e 100644 (file)
@@ -30,7 +30,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$string['admindirname'] = 'Ð\9aаÑ\82алог Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80а';
+$string['admindirname'] = 'Ð\9aаÑ\82алог Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80иÑ\80ованиÑ\8f';
 $string['availablelangs'] = 'Доступные языковые пакеты';
 $string['chooselanguagehead'] = 'Выберите язык';
 $string['chooselanguagesub'] = 'Сейчас необходимо выбрать язык ТОЛЬКО для сообщений во время установки. Язык сайта и пользовательских интерфейсов можно будет указать далее в процессе установки.';
@@ -45,7 +45,7 @@ $string['datarootpermission'] = 'Разрешения на каталоги да
 $string['dbprefix'] = 'Префикс имен таблиц';
 $string['dirroot'] = 'Каталог Moodle';
 $string['environmenthead'] = 'Проверка среды...';
-$string['environmentsub2'] = 'У каждой версии Moodle есть минимальные требования к версии PHP и набор обязательных расширений PHP.
+$string['environmentsub2'] = 'У каждой версии Moodle есть минимальные требования к версии PHP и набору обязательных расширений PHP.
 Полная проверка среды осуществляется перед каждой установкой и обновлением.
 Пожалуйста, свяжитесь с администратором сервера, если не знаете, как установить новую версию или включить расширения PHP.';
 $string['errorsinenvironment'] = 'Проверка окружения не выполнена!';
@@ -72,13 +72,12 @@ $string['pathshead'] = 'Подтвердите пути';
 $string['pathsrodataroot'] = 'Каталог данных недоступен для записи.';
 $string['pathsroparentdataroot'] = 'Родительский каталог ({$a->parent}) не доступен для записи. Программа установки не может создать каталог данных ({$a->dataroot}).';
 $string['pathssubadmindir'] = 'На небольшом числе веб-хостингов путь /admin используется для доступа к панели управления или чему-то еще. К сожалению, это противоречит стандартному расположению страниц управления Moodle. Это можно исправить путем переименования папки admin в каталоге Moodle и указания нового имени здесь. Например: <em>moodleadmin</em>. При этом все ссылки на панель управления Moodle исправятся автоматически.';
-$string['pathssubdataroot'] = 'Необходимо указать место, где Moodle будет хранить загружаемые файлы. Этот каталог должен быть доступен для чтения и ЗАПИСИ тому пользователю, от чьего имени запускается веб-сервер (обычно \'nobody\' или \'apache\'), но при этом не должен быть доступен напрямую через Интернет. Программа установки попробует создать этот каталог, если он не существует.';
-$string['pathssubdirroot'] = 'Полный путь к каталогу установки Moodle.';
-$string['pathssubwwwroot'] = 'Полный веб-адрес, по которому будет доступен Moodle.
-Использовать для доступа к Moodle несколько публичных адресов невозможно.
-Если у вашего сайта есть еще несколько публичных адресов, вам следует настроить постоянные перенаправления с этих адресов на указанный.
-Если ваш сайт доступен как из Интернета, так и из локальной сети, укажите здесь публичный адрес и настройте DNS таким образом, чтобы этот адрес был доступен и локальным пользователям.
-Если указанный здесь адрес неверный, измените URL в строке адреса браузера, чтобы перезапустить установку с другим значением.';
+$string['pathssubdataroot'] = '<p>Каталог, в котором Moodle будет хранить все файлы, размещаемые пользователями. </p><p>Этот каталог должен быть доступен для чтения и ЗАПИСИ тому пользователю, от чьего имени запускается веб-сервер (обычно \'www-data\', \'nobody\' или \'apache\'). </p><p>Этот каталог не должен быть доступен напрямую через Интернет. </p><p>Программа установки попробует создать этот каталог, если он не существует. </p>';
+$string['pathssubdirroot'] = '<p>Полный путь к каталогу установки Moodle.</p>';
+$string['pathssubwwwroot'] = '<p>Полный веб-адрес, по которому будет доступен Moodle, т.е. адрес, который пользователи будут вводить в адресной строке своего браузера для доступа к сайту Moodle.</p>
+<p>Использовать для доступа к Moodle несколько публичных адресов невозможно. Если у Вашего сайта есть еще несколько публичных адресов, то следует настроить постоянные перенаправления с этих адресов на указанный.</p>
+</p>Если Ваш сайт доступен как из Интернета, так и из локальной сети (иногда называют Интранет), укажите здесь публичный адрес.</p>
+</p>Если указанный здесь адрес неверный, измените URL в адресной строке браузера и перезапустите установку.</p>';
 $string['pathsunsecuredataroot'] = 'Расположение каталога данных не отвечает требованиям безопасности';
 $string['pathswrongadmindir'] = 'Каталог admin не существует';
 $string['phpextension'] = 'Расширение PHP «{$a}»';
@@ -91,7 +90,7 @@ $string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
 $string['welcomep20'] = 'Вы видите эту страницу, потому что успешно установили и запустили на своем компьютере набор программ <strong>{$a->packname} {$a->packversion}</strong>. Поздравляем!';
 $string['welcomep30'] = 'Эта версия набора программ <strong>{$a->installername}</strong> включает следующие программы, необходимые для создания среды, в которой будет работать <strong>Moodle</strong>:';
 $string['welcomep40'] = 'Также в этот набор входит <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong>.';
-$string['welcomep50'] = 'Порядок использования приложений, входящих в этот набор, регламентируется соответствующими лицензиями. Набор программ <strong>{$a->installername}</strong> является полностью <a href="http://ru.wikipedia.org/wiki/Открытое_программное_обеспечение">открытым </a> и распространяется на условиях лицензии <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>.';
+$string['welcomep50'] = 'Порядок использования приложений, входящих в этот набор, регламентируется соответствующими лицензиями. Набор программ <strong>{$a->installername}</strong> является <a href="http://www.opensource.org/docs/definition_plain.html">открытым программным обеспечением</a> и распространяется на условиях лицензии <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>.';
 $string['welcomep60'] = 'На следующих страницах Вы сможете за несколько простых шагов настроить и установить <strong>Moodle</strong> на свой компьютер. Вы сможете принять настройки по умолчанию или изменить их в зависимости от своих потребностей.';
 $string['welcomep70'] = 'Нажмите кнопку «Далее» чтобы продолжить процесс установки <strong>Moodle</strong>.';
 $string['wwwroot'] = 'Веб-адрес';
index 7a467c9..0885ceb 100644 (file)
 
 defined('MOODLE_INTERNAL') || die();
 
+$string['admindirname'] = 'అడ్మిన్ డైరెక్టరీ';
 $string['availablelangs'] = 'అందుబాటులో ఉన్న భాషల జాబితా';
 $string['chooselanguagehead'] = 'భాషను ఎంచుకోండి';
 $string['databasehost'] = 'డేటాబేసు హోస్టు';
 $string['databasename'] = 'డేటాబేసు పేరు';
+$string['databasetypehead'] = 'డేటాబేస్ డ్రైవర్ ఎంచుకోండి';
 $string['dataroot'] = 'డేటా డైరెక్టరీ';
+$string['datarootpermission'] = 'డేటా డైరెక్టరీల అనుమతి';
 $string['dbprefix'] = 'టేబుళ్ళ ఆదిపదం (ప్రిఫిక్స్)';
 $string['dirroot'] = 'Moodle డైరెక్టరీ';
 $string['environmenthead'] = 'మీ ఎన్విరాన్మెంటును పరిశీలిస్తున్నాం ...';
+$string['installation'] = 'సంస్థాపన';
+$string['paths'] = 'మార్గాలు';
+$string['pathswrongadmindir'] = 'అడ్మిన్ డైరెక్టరీ అసలు లేదు';
 $string['wwwroot'] = 'వెబ్ చిరునామా';
index 28de033..0d0180b 100644 (file)
 
 defined('MOODLE_INTERNAL') || die();
 
+$string['clianswerno'] = 'ні';
+$string['cliansweryes'] = 'так';
+$string['cliincorrectvalueerror'] = 'Помилка, некоректне значення "{$a->value}" для "{$a->option}"';
+$string['cliincorrectvalueretry'] = 'Некоректне значення, повторіть правильно';
+$string['clitypevalue'] = 'тип значення';
+$string['clitypevaluedefault'] = 'тип значення, натисніть Enter для використання типового значення ({$a})';
+$string['cliunknowoption'] = 'Невизначені опції: {$a}. Будь ласка, використайте опцію --help.';
+$string['cliyesnoprompt'] = 'натисніть y (означає так) або n (означає ні)';
 $string['environmentrequireinstall'] = 'повинен бути встановлений і включений';
 $string['environmentrequireversion'] = 'рекомендується версія {$a->needed}, використовується версія {$a->current}';
index c9f3c51..d07078d 100644 (file)
@@ -34,5 +34,11 @@ $string['clianswerno'] = 'n';
 $string['cliansweryes'] = 'y';
 $string['cliincorrectvalueerror'] = 'Lỗi, giá trị không đúng "{$a->value}" for "{$a->option}"';
 $string['cliincorrectvalueretry'] = 'Giá trị không đúng, vui lòng thử lại';
+$string['clitypevalue'] = 'nhập giá trị';
+$string['clitypevaluedefault'] = 'nhập giá trị, nhấn phím Enter để dùng giá trị mặc định ({$a})';
+$string['cliunknowoption'] = 'Lựa chọn chưa được nhận diện:
+  {$a}
+Vui lòng sử dụng lựa chọn --help.';
+$string['cliyesnoprompt'] = 'nhập y (có) hay n (không)';
 $string['environmentrequireinstall'] = 'cần phải được cài hay kích hoạt.';
 $string['environmentrequireversion'] = 'Cần phiên bản {$a->needed} trong khi bạn đang dùng {$a->current}';
index e2ec497..d4e09f9 100644 (file)
@@ -456,6 +456,8 @@ class manager {
         $params = array('timestart1' => $timestart, 'timestart2' => $timestart);
         $records = $DB->get_records_select('task_scheduled', $where, $params);
 
+        $pluginmanager = \core_plugin_manager::instance();
+
         foreach ($records as $record) {
 
             if ($lock = $cronlockfactory->get_lock(($record->classname), 10)) {
@@ -463,6 +465,17 @@ class manager {
                 $task = self::scheduled_task_from_record($record);
 
                 $task->set_lock($lock);
+
+                // See if the component is disabled.
+                $plugininfo = $pluginmanager->get_plugin_info($task->get_component());
+
+                if ($plugininfo) {
+                    if (!$task->get_run_if_component_disabled() && !$plugininfo->is_enabled()) {
+                        $lock->release();
+                        continue;
+                    }
+                }
+
                 if (!$task->is_blocking()) {
                     $cronlock->release();
                 } else {
index 47e93c7..ed2fc03 100644 (file)
@@ -183,6 +183,15 @@ abstract class scheduled_task extends task_base {
         return $this->disabled;
     }
 
+    /**
+     * Override this function if you want this scheduled task to run, even if the component is disabled.
+     *
+     * @return bool
+     */
+    public function get_run_if_component_disabled() {
+        return false;
+    }
+
     /**
      * Take a cron field definition and return an array of valid numbers with the range min-max.
      *
index d18a2c7..4096629 100644 (file)
@@ -157,7 +157,9 @@ class restore_assign_activity_structure_step extends restore_activity_structure_
         $data->assignment = $this->get_new_parentid('assign');
 
         $data->userid = $this->get_mappingid('user', $data->userid);
-        $data->allocatedmarker = $this->get_mappingid('user', $data->allocatedmarker);
+        if (!empty($data->allocatedmarker)) {
+            $data->allocatedmarker = $this->get_mappingid('user', $data->allocatedmarker);
+        }
         if (!empty($data->extensionduedate)) {
             $data->extensionduedate = $this->apply_date_offset($data->extensionduedate);
         } else {
index 7323983..46404bc 100644 (file)
@@ -5417,8 +5417,12 @@ class assign {
             $user = $DB->get_record('user', array('id' => $submission->userid), '*', MUST_EXIST);
             $name = fullname($user);
         } else {
-            $group = $DB->get_record('groups', array('id' => $submission->groupid), '*', MUST_EXIST);
-            $name = $group->name;
+            $group = $this->get_submission_group($submission->userid);
+            if ($group) {
+                $name = $group->name;
+            } else {
+                $name = get_string('defaultteam', 'assign');
+            }
         }
         $status = get_string('submissionstatus_' . $submission->status, 'assign');
         $params = array('id'=>$submission->userid, 'fullname'=>$name, 'status'=>$status);
index d168afb..1a203d2 100644 (file)
@@ -606,6 +606,38 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase {
         $this->assertEquals(self::GROUP_COUNT + 1, $assign->count_teams());
     }
 
+    public function test_submit_to_default_group() {
+        global $DB;
+
+        $this->preventResetByRollback();
+        $sink = $this->redirectMessages();
+
+        $this->setUser($this->editingteachers[0]);
+        $params = array('teamsubmission' => 1,
+                        'assignsubmission_onlinetext_enabled' => 1,
+                        'submissiondrafts'=>0);
+        $assign = $this->create_instance($params);
+
+        $newstudent = $this->getDataGenerator()->create_user();
+        $studentrole = $DB->get_record('role', array('shortname'=>'student'));
+        $this->getDataGenerator()->enrol_user($newstudent->id,
+                                              $this->course->id,
+                                              $studentrole->id);
+        $this->setUser($newstudent);
+        $data = new stdClass();
+        $data->onlinetext_editor = array('itemid'=>file_get_unused_draft_itemid(),
+                                         'text'=>'Submission text',
+                                         'format'=>FORMAT_MOODLE);
+        $notices = array();
+
+        $group = $assign->get_submission_group($newstudent->id);
+        $this->assertFalse($group, 'New student is in default group');
+        $assign->save_submission($data, $notices);
+        $this->assertEmpty($notices, 'No errors on save submission');
+
+        $sink->close();
+    }
+
     public function test_count_submissions() {
         $this->create_extra_users();
         $this->setUser($this->editingteachers[0]);
index 1c50bd0..3e723cb 100644 (file)
 
 defined('MOODLE_INTERNAL') || die();
 
-$version  = 2014072200.00;              // YYYYMMDD      = weekly release date of this DEV branch.
+$version  = 2014072400.00;              // YYYYMMDD      = weekly release date of this DEV branch.
                                         //         RR    = release increments - 00 in DEV branches.
                                         //           .XX = incremental changes.
 
-$release  = '2.8dev (Build: 20140717)'; // Human-friendly version name
+$release  = '2.8dev (Build: 20140724)'; // Human-friendly version name
 
 $branch   = '28';                       // This version's branch.
 $maturity = MATURITY_ALPHA;             // This version's maturity level.