From 2d953fdd29816d2bc05928ce15cbde0166940461 Mon Sep 17 00:00:00 2001 From: eduardogusmao <31075edu> Date: Tue, 22 Oct 2019 14:54:19 -0300 Subject: [PATCH] feat/#12 - Listagem de cursos na dashboard --- layout/my.php | 347 +++++++++++++++++++++++++++++++++++++++- scss/preset/custom.scss | 126 +++++++++++++++ templates/my.mustache | 1 + 3 files changed, 473 insertions(+), 1 deletion(-) diff --git a/layout/my.php b/layout/my.php index 4927bb7..ad78d7a 100644 --- a/layout/my.php +++ b/layout/my.php @@ -24,6 +24,8 @@ defined('MOODLE_INTERNAL') || die(); +use core_completion\progress; + user_preference_allow_ajax_update('drawer-open-nav', PARAM_ALPHA); require_once($CFG->libdir . '/behat/lib.php'); @@ -85,6 +87,7 @@ $scontactus = get_string('contact_us', 'theme_qualisaude'); $phone = get_string('phone', 'theme_qualisaude'); $email = get_string('email', 'theme_qualisaude'); $sfollowus = get_string('followus', 'theme_qualisaude'); +$myCourses = getMyCourses(); $url = ($fburl != '' || $pinurl != '' || $twurl != '' || $gpurl != '') ? 1 : 0; $block3 = ($address != '' || $phoneno != '' || $emailid != '' || $url != 0) ? 1 : 0; @@ -156,9 +159,351 @@ $templatecontext = [ "block1" => $block1, "footlogourl" => $footlogourl, "username" => $username, - "show_btn_leftblock"=>$show_btn_leftblock + "show_btn_leftblock"=>$show_btn_leftblock, + "myCourses"=>$myCourses ]; $templatecontext['flatnavigation'] = $PAGE->flatnav; echo $OUTPUT->render_from_template('theme_qualisaude/my', $templatecontext); +function getMyCourses(){ + global $DB, $OUTPUT; + + $content = ""; + + if(is_siteadmin()) { + + $content .= "
"; + $content .= "
"; + $content .= "
"; + $content .= "
"; + $content .= "
"; + $content .= "

Página acessada como administrador

"; + + //listagem completa dos cursos abre apenas para admins + $categories = array_values($DB->get_records('course_categories', null, 'id desc', 'id, name, visible')); + $SELECT = ""; + + $content .= "
"; + $content .= "
\n"; + $content .= $SELECT; + $content .= "
";//$btn_rel_coord imprime botao para acesso a relatorio de coordenadores + $content .= "
"; + $content .= "
"; + $content .= "
"; + $content .= "
"; + $content .= "
"; + $content .= "
"; + + + $request = optional_param_array('categorias', '', PARAM_INT); + if(!$request){//caso não tenha dados para requisição, carrego o primeiro da lista + $request = $categories[0]->id; + } + + $request_result = ""; + if(is_array($request)){//caso seja um array transformo em string para filtro + $request = implode(',', $request); + $request_result = $request; + }else{ + $request_result = $request; + } + + $query = "SELECT c.id, c.fullname, c.shortname,cc.id as catid, cc.name FROM {course} as c + INNER JOIN {course_categories} as cc on c.category = cc.id + WHERE cc.id in ($request_result) + ORDER BY cc.id DESC"; + $courses_list = $DB->get_records_sql($query); + + $content .= "
\n"; + $content .= "
\n"; + $content .= "
\n"; + $content .= "
\n"; +// $content .= "
    \n"; + + //print_object($courses_list); + foreach($courses_list as $course){ + $professores_list = array_values($DB->get_records_sql("SELECT U.id, U.firstname, U.lastname, RA.roleid FROM {user} AS U + INNER JOIN {role_assignments} AS RA ON U.id = RA.userid + INNER JOIN {context} AS C ON RA.contextid = C.id + WHERE C.instanceid = $course->id AND RA.roleid in (3) + ORDER BY RA.roleid ASC")); + + $html_profs = ''; + $lastKey =count($professores_list); + foreach($professores_list as $key =>$prof){ + //echo $key." == ".$lastKey."
    "; + // if($key != $lastKey-1){ + // $html_profs.=$prof->firstname.' '.$prof->lastname.' / '; + // }else{ + // $html_profs.=$prof->firstname.' '.$prof->lastname; + // } + $html_profs.= $OUTPUT->user_picture($prof, array('size'=>30, 'class'=>'userpicture foto')); + } + + $image_name = explode('_',$course->shortname)[0]; + if(file_exists($imagedir.$image_name.$mimetipe_image)) { + $image_caminho = $imagepath . $image_name . $mimetipe_image; + }else{ + $image_caminho = $imagepath .'notfound'.$mimetipe_image; + } + + $content .= ' +
    + +
    + Imagem do curso +
    +
    + + +
    +
    +
    +
    +
    + Progresso do curso: + '.getProgress($course).'% completo +
    +
    +
    + '; + + } +// $content .= "
\n"; + $content .= "
"; + $content .= "
"; + $content .= "
"; + $content .= "
\n"; + + + }else{// Carregamento para usuário que não são administrador + //------------- --------------- + //SET COURSE LIST MANDACARU + //------------- --------------- + $courses_list = enrol_get_my_courses(NULL,'sortorder DESC'); + $listcourse = array(); + $categories = $DB->get_records('course_categories', null, '', 'id, name'); + $auxcat = 0; + $filtered_course_list = array(); + foreach($courses_list as $courseobj){ + if($courseobj->category ==5 || $courseobj->category ==1){//Filtro que elimina as disciplinas de categorias que não devem ser consideradas + continue; + } + //pegando docentes + $professores_list = $DB->get_records_sql("SELECT U.id, U.firstname, U.lastname, RA.roleid FROM {user} AS U + INNER JOIN {role_assignments} AS RA ON U.id = RA.userid + INNER JOIN {context} AS C ON RA.contextid = C.id + WHERE C.instanceid = $courseobj->id AND RA.roleid in (3) + ORDER BY RA.roleid ASC"); + + if($auxcat ==0){ + $change_category = 1; + $auxcat = $courseobj->category; + }elseif($auxcat != $courseobj->category){ + $change_category = 1; + $auxcat = $courseobj->category; + }else{ + $change_category = 0; + $auxcat = $courseobj->category; + } + $courseobj->categoryname = $categories[$courseobj->category]->name; + $image_name = explode('_',$courseobj->shortname)[0]; + if(file_exists($imagedir.$image_name.$mimetipe_image)) { + $courseobj->imagepath = $imagepath . $image_name . $mimetipe_image; + $courseobj->changecategory = $change_category; + $courseobj->courselink = $course_link; + if($courseobj->category != 5){//tem que pular + $courseobj->proflist =array_values($professores_list); + } + }else{ + $courseobj->imagepath = $imagepath .'notfound'.$mimetipe_image; + $courseobj->changecategory = $change_category; + $courseobj->courselink = $course_link; + if($courseobj->category != 5){ + $courseobj->proflist =array_values($professores_list); + } + + } + + $filtered_course_list[]= $courseobj; // Aplicação do filtro eliminando as disciplinas que não devem ser consideradas + + } + // print_object($courses_list); + //------------- --------------- + //SET COURSE LIST MANDACARU + //------------- --------------- + + + $content .= '
'; + + $content .= ' '; + + + $content .= '
'; + + + $continue =0; + foreach($filtered_course_list as $key=>$cats){ + $active = ""; + if($key ==0){ + $active ='active'; + } + + //close div + if($cats->changecategory && $key!=0){ +// $content .= "\n"; + $content .= "
\n"; + }else{ + $active ='active'; + } + + + //open div + if($cats->changecategory){ + $content .= "
category\">\n"; +// $content .= "\n"; + echo "
\n"; + }*/ + + } +// $content .= "\n"; + $content .= " \n"; + /* if(count($courses_list) == $continue){ + + }else { + echo "\n"; + echo " \n"; + }*/ + + $content .= ' '; + $content .= '
'; + + + } + + return $content; +} + +function getProgress($course){ + global $USER; + + if (empty($userid)) { + $userid = $USER->id; + } + + $percentage = progress::get_course_progress_percentage($course); + if(!$percentage){ + $percentage=0; + } + +// $completion = new \completion_info($course); +// $modules = $completion->get_activities(); +// $count = count($modules); +// if (!$count) { +// $count=0; +// } + +// $completed = 0; +// foreach ($modules as $module) { +// $data = $completion->get_data($module, false, $userid); +// $completed += $data->completionstate == COMPLETION_INCOMPLETE ? 0 : 1; +// } +// +// $content = "
"; +// $content .= " "; +// $content .= "
"; +// $content .= "
"; +// $content .= "
"; +// $content .= "
"; + + return $percentage; + +} \ No newline at end of file diff --git a/scss/preset/custom.scss b/scss/preset/custom.scss index cf60a01..3552c2a 100644 --- a/scss/preset/custom.scss +++ b/scss/preset/custom.scss @@ -277,9 +277,135 @@ section#inicial{ .pagelayout-mydashboard{ #region-main{ border: 0px; + section#list-course{ + padding-left: 3px; + #myTabs{ + li{ + a{ + border-radius: 10px 10px 0 0; + border: 1px solid #efefef; + border-bottom: 0px; + padding: 1px 20px 0px 20px; + line-height: 30px; + display: block; + margin-right: 10px; + text-decoration: none; + &.active{ + background-color: #dee2e7; + } + } + } + } + .card-body{ + padding: 0px; + .card-deck{ + .card{ + box-shadow: 0px 1px 3px 0px rgba(0,0,0,.1); + margin: 10px 2px 0px 2px; + display: inline-flex; + } + } + } + } } } +.dashboard-card-deck:not(.fixed-width-cards) { + @media (min-width: 576px) { + .dashboard-card { + width: calc(50% - #{$card-gutter}); + } + } + @media (min-width: 840px) { + .dashboard-card { + width: calc(33.33% - #{$card-gutter}); + } + } + @media (min-width: 1100px) { + .dashboard-card { + width: calc(33.33% - #{$card-gutter}); + } + } + @media (min-width: 1360px) { + .dashboard-card { + width: calc(33.33% - #{$card-gutter}); + } + } +} + +#region-main.has-blocks { + .dashboard-card-deck:not(.fixed-width-cards) { + @media (min-width: 1200px) { + .dashboard-card { + width: calc(33.33% - #{$card-gutter}); + } + } + @media (min-width: 1470px) { + .dashboard-card { + width: calc(33.33% - #{$card-gutter}); + } + } + } +} + +body.drawer-open-left { + .dashboard-card-deck:not(.fixed-width-cards) { + @media (min-width: 768px) { + .dashboard-card { + width: calc(100% - #{$card-gutter}); + } + } + @media (min-width: 861px) { + .dashboard-card { + width: calc(50% - #{$card-gutter}); + } + } + @media (min-width: 1122px) { + .dashboard-card { + width: calc(33.33% - #{$card-gutter}); + } + } + @media (min-width: 1381px) { + .dashboard-card { + width: calc(33.33% - #{$card-gutter}); + } + } + } +} + +body.drawer-open-left #region-main.has-blocks { + .dashboard-card-deck:not(.fixed-width-cards) { + @media (min-width: 1200px) { + .dashboard-card { + width: calc(100% - #{$card-gutter}); + } + } + @media (min-width: 1236px) { + .dashboard-card { + width: calc(50% - #{$card-gutter}); + } + } + @media (min-width: 1497px) { + .dashboard-card { + width: calc(33.33% - #{$card-gutter}); + } + } + } +} + +@media (min-width: 1200px) { + #block-region-side-pre { + .dashboard-card-deck:not(.fixed-width-cards) { + margin-left: 0; + margin-right: 0; + .dashboard-card { + width: calc(100% - #{$card-gutter}) !important; + } + } + } +} + + /* ################################### CURSO ################################# */ .pagelayout-course{ diff --git a/templates/my.mustache b/templates/my.mustache index 10a3365..45f796c 100644 --- a/templates/my.mustache +++ b/templates/my.mustache @@ -82,6 +82,7 @@
{{/hasregionmainsettingsmenu}} {{{ output.course_content_header }}} + {{{ myCourses }}} {{{ output.main_content }}} {{{ output.activity_navigation }}} {{{ output.course_content_footer }}}