MigrationMoodle: Improve admin page - refs BT#15992

pull/3127/head
Angel Fernando Quiroz Campos 6 years ago
parent 0258921af5
commit 3475e66da1
  1. 303
      plugin/migrationmoodle/admin.php
  2. 22
      plugin/migrationmoodle/lang/english.php

@ -2,26 +2,6 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use Chamilo\PluginBundle\MigrationMoodle\Task\BaseTask; use Chamilo\PluginBundle\MigrationMoodle\Task\BaseTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseCategoriesTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseModulesQuizTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CoursesTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\RoleAssignmentsTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CQuizTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\FilesForLessonAnswersTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseSectionsTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersEssayTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersMatchingTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersMultipleAnswerTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersMultipleChoiceTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersShortAnswerTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonAnswersTrueFalseTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\CourseModulesLessonTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\FilesForLessonPagesTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonPagesDocumentTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonPagesTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonQuestionPagesQuestionTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\LessonQuestionPagesQuizTask;
use Chamilo\PluginBundle\MigrationMoodle\Task\UsersTask;
require_once __DIR__.'/../../main/inc/global.inc.php'; require_once __DIR__.'/../../main/inc/global.inc.php';
@ -36,200 +16,108 @@ if ('true' != $plugin->get('active')) {
} }
$menu = [ $menu = [
[ 1 => [
'users', 'action' => 'users',
'Users', 'parent' => 0,
[],
], ],
[ 2 => [
'course_categories', 'action' => 'course_categories',
'Course categories', 'parent' => 0,
[],
], ],
[ 3 => [
'courses', 'action' => 'courses',
'Courses', 'parent' => 0,
[
[
'learning_paths',
'Learning paths',
[
[
'learning_path_chapters',
'Sections',
[
[
'learning_path_items',
'Items',
[
[
'learning_path_documents',
'Documents',
[
[
'learning_path_documents_files',
'Document files',
[],
],
],
],
[
'learning_path_quizzes',
'Quizzes',
[
[
'learnin_path_quiz_questions',
'Questions',
[
[
'learnin_path_quiz_answers_true_false',
'Answers for True-False questions',
[]
],
[
'learnin_path_quiz_answers_multiple_choice',
'Answers for Multiple Choice questions',
[]
],
[
'learnin_path_quiz_answers_multiple_answer',
'Answers for Multiple Answers questions',
[]
], ],
[ 4 => [
'learnin_path_quiz_answers_matching', 'action' => 'course_sections',
'Answers for Matching questions', 'parent' => 3,
[]
], ],
[ 5 => [
'learnin_path_quiz_answers_essay', 'action' => 'course_modules_lesson',
'Answers for Essay questions', 'parent' => 4,
[]
], ],
[ 6 => [
'learnin_path_quiz_answers_short_answer', 'action' => 'course_modules_quiz',
'Answers for Short-Answer and Numerical questions', 'parent' => 4,
[]
]
], ],
7 => [
'action' => 'lesson_pages',
'parent' => 5,
], ],
[ 8 => [
'files_for_lesson_answers', 'action' => 'lesson_pages_document',
'Files for answers', 'parent' => 7,
[],
], ],
9 => [
'action' => 'files_for_lesson_pages',
'parent' => 8,
], ],
10 => [
'action' => 'lesson_question_pages_quiz',
'parent' => 7,
], ],
11 => [
'action' => 'lesson_question_pages_question',
'parent' => 10,
], ],
12 => [
'action' => 'lesson_answers_true_false',
'parent' => 11,
], ],
13 => [
'action' => 'lesson_answers_multiple_choice',
'parent' => 11,
], ],
14 => [
'action' => 'lesson_answers_multiple_answer',
'parent' => 11,
], ],
[ 15 => [
'course_modules_quiz', 'action' => 'lesson_answers_matching',
'Items quizzes', 'parent' => 11,
[]
]
], ],
16 => [
'action' => 'lesson_answers_essay',
'parent' => 11,
], ],
[ 17 => [
'quizzes', 'action' => 'lesson_answers_short_answer',
'Quizzes', 'parent' => 11,
[],
], ],
18 => [
'action' => 'files_for_lesson_answers',
'parent' => 10,
], ],
19 => [
'action' => 'c_quiz',
'parent' => 4,
], ],
[ 20 => [
'course_users', 'action' => 'role_assignments',
'Subcribe users to courses', 'parent' => 0,
[],
], ],
]; ];
Display::display_header($plugin->get_title()); Display::display_header($plugin->get_title());
echo '<div class="row">'; echo '<div class="row">';
echo '<div class="col-sm-4">'; echo '<div class="col-sm-6">';
echo displayMenu($menu); echo displayMenu($menu);
echo '</div>'; echo '</div>';
echo '<div class="col-sm-8">'; echo '<div class="col-sm-6">';
if (!empty($action) && isAllowedAction($action, $menu)) {
$taskName = api_underscore_to_camel_case($action).'Task';
if (!empty($action)) {
echo Display::page_subheader( echo Display::page_subheader(
getActionTitle($menu, $action) $plugin->get_lang($taskName)
); );
/** @var BaseTask|null $task */ $taskName = 'Chamilo\\PluginBundle\\MigrationMoodle\\Task\\'.$taskName;
$task = null;
switch ($action) {
case 'users':
$task = new UsersTask();
break;
case 'course_categories':
$task = new CourseCategoriesTask();
break;
case 'courses':
$task = new CoursesTask();
break;
case 'course_users':
$task = new RoleAssignmentsTask();
break;
case 'quizzes':
$task = new CQuizTask();
break;
case 'learning_paths':
$task = new CourseSectionsTask();
break;
case 'learning_path_chapters':
$task = new CourseModulesLessonTask();
break;
case 'learning_path_items':
$task = new LessonPagesTask();
break;
case 'learning_path_documents':
$task = new LessonPagesDocumentTask();
break;
case 'learning_path_documents_files':
$task = new FilesForLessonPagesTask();
break;
case 'learning_path_quizzes':
$task = new LessonQuestionPagesQuizTask();
break;
case 'learnin_path_quiz_questions':
$task = new LessonQuestionPagesQuestionTask();
break;
case 'learnin_path_quiz_answers_true_false':
$task = new LessonAnswersTrueFalseTask();
break;
case 'learnin_path_quiz_answers_multiple_choice':
$task = new LessonAnswersMultipleChoiceTask();
break;
case 'learnin_path_quiz_answers_multiple_answer':
$task = new LessonAnswersMultipleAnswerTask();
break;
case 'learnin_path_quiz_answers_matching':
$task = new LessonAnswersMatchingTask();
break;
case 'learnin_path_quiz_answers_essay':
$task = new LessonAnswersEssayTask();
break;
case 'learnin_path_quiz_answers_short_answer':
$task = new LessonAnswersShortAnswerTask();
break;
case 'files_for_lesson_answers':
$task = new FilesForLessonAnswersTask();
break;
case 'course_modules_quiz':
$task = new CourseModulesQuizTask();
break;
}
if ($task) { /** @var BaseTask $task */
$task = new $taskName();
$task->execute(); $task->execute();
}
} }
echo '</div>'; echo '</div>';
@ -239,27 +127,35 @@ Display::display_footer();
/** /**
* @param array $menu * @param array $menu
* @param int $parent
* *
* @return string * @return string
*/ */
function displayMenu(array $menu) function displayMenu(array $menu, $parent = 0) {
{ /** @var MigrationMoodlePlugin $plugin */
$plugin = $GLOBALS['plugin'];
$items = array_filter(
$menu,
function ($item) use ($parent) {
return $item['parent'] == $parent;
}
);
$baseUrl = api_get_self()."?action="; $baseUrl = api_get_self()."?action=";
$html = '<ol>'; $html = '<ol>';
foreach ($menu as $item) { foreach ($items as $key => $item) {
list($action, $title, $subMenu) = $item; $title = api_underscore_to_camel_case($item['action']);
$html .= '<li>'; $html .= '<li>';
$html .= Display::url( $html .= Display::url(
$title, $plugin->get_lang($title.'Task'),
$baseUrl.$action $baseUrl.$item['action']
); );
if ($subMenu) { $html .= displayMenu($menu, $key);
$html .= displayMenu($subMenu);
}
$html .= '</li>'; $html .= '</li>';
} }
@ -270,30 +166,17 @@ function displayMenu(array $menu)
} }
/** /**
* @param array $menu
* @param string $action * @param string $action
* @param array $menu
* *
* @return string * @return bool
*/ */
function getActionTitle(array $menu, $action) function isAllowedAction($action, array $menu) {
{ foreach ($menu as $item) {
$flag = false; if ($item['action'] == $action) {
$title = ''; return true;
array_walk_recursive(
$menu,
function ($value, $key) use ($action, &$flag, &$title) {
if ($flag) {
$title = $value;
}
$flag = false;
if (0 == $key && $value == $action) {
$flag = true;
} }
} }
);
return $title; return false;
} }

@ -6,3 +6,25 @@ $strings['plugin_comment'] = 'Execute a migration process from Moodle data to Ch
$strings['MoodlePassword'] = 'Moodle password'; $strings['MoodlePassword'] = 'Moodle password';
$strings['UninstallError'] = 'An error ocurred while the plugin was uninstalled.'; $strings['UninstallError'] = 'An error ocurred while the plugin was uninstalled.';
// Tasks
$strings['UsersTask'] = 'Users';
$strings['CourseCategoriesTask'] = 'Course categories';
$strings['CoursesTask'] = 'Courses';
$strings['CourseSectionsTask'] = 'Course sections';
$strings['CourseModulesLessonTask'] = 'Course modules: Lessons';
$strings['LessonPagesTask'] = 'Lesson pages';
$strings['LessonPagesDocumentTask'] = 'Lesson pages: Documents';
$strings['FilesForLessonPagesTask'] = 'Files for lesson pages';
$strings['LessonQuestionPagesQuizTask'] = 'Lesson pages: Questions';
$strings['LessonQuestionPagesQuestionTask'] = 'Questions for question pages';
$strings['LessonAnswersTrueFalseTask'] = 'Answers for True/False questions';
$strings['LessonAnswersMultipleChoiceTask'] = 'Answers for Multiple Choice questions';
$strings['LessonAnswersMultipleAnswerTask'] = 'Answers for Multiple Answer questions';
$strings['LessonAnswersMatchingTask'] = 'Answers for Matching questions';
$strings['LessonAnswersEssayTask'] = 'Answers for Essay questions';
$strings['LessonAnswersShortAnswerTask'] = 'Answers for Short Answer questions';
$strings['FilesForLessonAnswersTask'] = 'Files for lesson answers';
$strings['CourseModulesQuizTask'] = 'Course modules: Quizzes';
$strings['CQuizTask'] = 'C Quiz';
$strings['RoleAssignmentsTask'] = 'Role assignments';

Loading…
Cancel
Save