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 = "
\n";
+ foreach($categories as $cat){
+ $SELECT .= "id\">$cat->name ";
+ }
+ $SELECT.=" ";
+
+ $content .= "
";
+ $content .= " Selecione as categorias: ";//$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 .= '
+
+ ';
+
+ }
+// $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";
+ }
+ $html_profs = '';
+ $lastKey =count($cats->proflist);
+ foreach($cats->proflist as $key =>$prof){
+ //echo $key." == ".$lastKey." ";
+ if($key != $lastKey-1){
+ $html_profs.=$prof->firstname.' '.$prof->lastname.' / ';
+ }else{
+ $html_profs.=$prof->firstname.' '.$prof->lastname;
+ }
+ }
+// $content .= "
+//
+// ";
+
+ $content .= '
+
+ ';
+
+ //close div - caso seja o último do array, ele precisa fechar o anterior e auto fechar o último. - Correção de bug realizada
+ /*if(count($filtered_course_list) == $key+1){//
+ echo " \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 .= "
$completed atividades completas de $count ";
+// $content .= "
";
+// $content .= "
$percentage%
";
+// $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 }}}