parent
76b5db7cad
commit
350c52b5ef
@ -1,184 +0,0 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
use Chamilo\CoreBundle\Entity\Course; |
||||
use Chamilo\CoreBundle\Entity\CourseRelUser; |
||||
use Chamilo\CoreBundle\Entity\ExtraField; |
||||
use Chamilo\CoreBundle\Framework\Container; |
||||
use Chamilo\CourseBundle\Entity\CCourseDescription; |
||||
|
||||
/** |
||||
* Course about page |
||||
* Show information about a course. |
||||
* |
||||
* @author Alex Aragon Calixto <alex.aragon@beeznest.com> |
||||
* |
||||
* @package chamilo.course |
||||
*/ |
||||
$cidReset = true; |
||||
|
||||
require_once __DIR__.'/../inc/global.inc.php'; |
||||
|
||||
$courseId = isset($_GET['course_id']) ? (int) $_GET['course_id'] : 0; |
||||
|
||||
if (empty($courseId)) { |
||||
api_not_allowed(true); |
||||
} |
||||
|
||||
$token = Security::get_existing_token(); |
||||
$em = Database::getManager(); |
||||
//userID |
||||
$userId = api_get_user_id(); |
||||
|
||||
/** @var Course $course */ |
||||
$course = api_get_course_entity($courseId); |
||||
|
||||
if (!$course) { |
||||
api_not_allowed(true); |
||||
} |
||||
|
||||
$userRepo = UserManager::getRepository(); |
||||
$fieldsRepo = $em->getRepository('ChamiloCoreBundle:ExtraField'); |
||||
$fieldTagsRepo = $em->getRepository('ChamiloCoreBundle:ExtraFieldRelTag'); |
||||
|
||||
/** @var CCourseDescription $courseDescription */ |
||||
$courseDescriptionTools = $em->getRepository('ChamiloCourseBundle:CCourseDescription') |
||||
->findBy( |
||||
[ |
||||
'cId' => $course->getId(), |
||||
'sessionId' => 0, |
||||
], |
||||
[ |
||||
'id' => 'DESC', |
||||
'descriptionType' => 'ASC', |
||||
] |
||||
); |
||||
|
||||
$courseValues = new ExtraFieldValue('course'); |
||||
$userValues = new ExtraFieldValue('user'); |
||||
|
||||
$urlCourse = api_get_path(WEB_PATH)."course/$courseId/about"; |
||||
$courseTeachers = $course->getTeachers(); |
||||
$teachersData = []; |
||||
|
||||
/** @var CourseRelUser $teacherSubscription */ |
||||
foreach ($courseTeachers as $teacherSubscription) { |
||||
$teacher = $teacherSubscription->getUser(); |
||||
$userData = [ |
||||
'complete_name' => UserManager::formatUserFullName($teacher), |
||||
'image' => UserManager::getUserPicture( |
||||
$teacher->getId(), |
||||
USER_IMAGE_SIZE_ORIGINAL |
||||
), |
||||
'diploma' => $teacher->getDiplomas(), |
||||
'openarea' => $teacher->getOpenarea(), |
||||
]; |
||||
|
||||
$teachersData[] = $userData; |
||||
} |
||||
|
||||
$tagField = $fieldsRepo->findOneBy([ |
||||
'extraFieldType' => ExtraField::COURSE_FIELD_TYPE, |
||||
'variable' => 'tags', |
||||
]); |
||||
|
||||
$courseTags = []; |
||||
|
||||
if (!is_null($tagField)) { |
||||
$courseTags = $fieldTagsRepo->getTags($tagField, $courseId); |
||||
} |
||||
|
||||
$courseDescription = $courseObjectives = $courseTopics = $courseMethodology = $courseMaterial = $courseResources = $courseAssessment = ''; |
||||
$courseCustom = []; |
||||
foreach ($courseDescriptionTools as $descriptionTool) { |
||||
switch ($descriptionTool->getDescriptionType()) { |
||||
case CCourseDescription::TYPE_DESCRIPTION: |
||||
$courseDescription = $descriptionTool->getContent(); |
||||
break; |
||||
case CCourseDescription::TYPE_OBJECTIVES: |
||||
$courseObjectives = $descriptionTool; |
||||
break; |
||||
case CCourseDescription::TYPE_TOPICS: |
||||
$courseTopics = $descriptionTool; |
||||
break; |
||||
case CCourseDescription::TYPE_METHODOLOGY: |
||||
$courseMethodology = $descriptionTool; |
||||
break; |
||||
case CCourseDescription::TYPE_COURSE_MATERIAL: |
||||
$courseMaterial = $descriptionTool; |
||||
break; |
||||
case CCourseDescription::TYPE_RESOURCES: |
||||
$courseResources = $descriptionTool; |
||||
break; |
||||
case CCourseDescription::TYPE_ASSESSMENT: |
||||
$courseAssessment = $descriptionTool; |
||||
break; |
||||
case CCourseDescription::TYPE_CUSTOM: |
||||
$courseCustom[] = $descriptionTool; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
$topics = [ |
||||
'objectives' => $courseObjectives, |
||||
'topics' => $courseTopics, |
||||
'methodology' => $courseMethodology, |
||||
'material' => $courseMaterial, |
||||
'resources' => $courseResources, |
||||
'assessment' => $courseAssessment, |
||||
'custom' => array_reverse($courseCustom), |
||||
]; |
||||
|
||||
$subscriptionUser = CourseManager::is_user_subscribed_in_course($userId, $course->getCode()); |
||||
|
||||
$allowSubscribe = false; |
||||
if ($course->getSubscribe() || api_is_platform_admin()) { |
||||
$allowSubscribe = true; |
||||
} |
||||
$plugin = BuyCoursesPlugin::create(); |
||||
$checker = $plugin->isEnabled(); |
||||
$courseIsPremium = null; |
||||
if ($checker) { |
||||
$courseIsPremium = $plugin->getItemByProduct( |
||||
$courseId, |
||||
BuyCoursesPlugin::PRODUCT_TYPE_COURSE |
||||
); |
||||
} |
||||
|
||||
$courseItem = [ |
||||
'code' => $course->getCode(), |
||||
'title' => $course->getTitle(), |
||||
'description' => $courseDescription, |
||||
'image' => Container::getIllustrationRepository()->getIllustrationUrl($course, 'course_picture_medium'), |
||||
'syllabus' => $topics, |
||||
'tags' => $courseTags, |
||||
'teachers' => $teachersData, |
||||
'extra_fields' => $courseValues->getAllValuesForAnItem( |
||||
$course->getId(), |
||||
null, |
||||
true |
||||
), |
||||
'subscription' => $subscriptionUser, |
||||
]; |
||||
|
||||
$metaInfo = '<meta property="og:url" content="'.$urlCourse.'" />'; |
||||
$metaInfo .= '<meta property="og:type" content="website" />'; |
||||
$metaInfo .= '<meta property="og:title" content="'.$courseItem['title'].'" />'; |
||||
$metaInfo .= '<meta property="og:description" content="'.strip_tags($courseDescription).'" />'; |
||||
$metaInfo .= '<meta property="og:image" content="'.$courseItem['image'].'" />'; |
||||
|
||||
$htmlHeadXtra[] = $metaInfo; |
||||
$htmlHeadXtra[] = api_get_asset('readmore-js/readmore.js'); |
||||
|
||||
$template = new Template($course->getTitle(), true, true, false, true, false); |
||||
$template->assign('course', $courseItem); |
||||
$essence = new Essence\Essence(); |
||||
$template->assign('essence', $essence); |
||||
$template->assign('is_premium', $courseIsPremium); |
||||
$template->assign('allow_subscribe', $allowSubscribe); |
||||
$template->assign('token', $token); |
||||
$template->assign('url', $urlCourse); |
||||
$layout = $template->get_template('course_home/about.tpl'); |
||||
$content = $template->fetch($layout); |
||||
$template->assign('content', $content); |
||||
$template->display_one_col_template(); |
@ -1,189 +0,0 @@ |
||||
{% autoescape false %} |
||||
<div id="about-course" class="about"> |
||||
<div id="course-info-top"> |
||||
<h2 class="session-title">{{ course.title }}</h2> |
||||
<div class="course-short"> |
||||
<ul> |
||||
<li class="author">{{ "Professors"|get_lang }}</li> |
||||
{% for teacher in course.teachers %} |
||||
<li>{{ teacher.complete_name }} | </li> |
||||
{% endfor %} |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
|
||||
{% set course_video = '' %} |
||||
{% for extra_field in course.extra_fields %} |
||||
{% if extra_field.value.getField().getVariable() == 'video_url' %} |
||||
{% set course_video = extra_field.value.getValue() %} |
||||
{% endif %} |
||||
{% endfor %} |
||||
|
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<div class="row"> |
||||
<div class="col-sm-5"> |
||||
{% if course_video %} |
||||
<div class="course-video"> |
||||
<div class="embed-responsive embed-responsive-16by9"> |
||||
{{ essence.replace(course_video) }} |
||||
</div> |
||||
</div> |
||||
{% else %} |
||||
<div class="course-image"> |
||||
<img src="{{ course.image }}" class="img-fluid" /> |
||||
</div> |
||||
{% endif %} |
||||
|
||||
{% if "display.hide_social_media_links" | api_get_setting == 'false' %} |
||||
<div class="share-social-media"> |
||||
<ul class="sharing-buttons"> |
||||
<li> |
||||
{{ "ShareWithYourFriends"|get_lang }} |
||||
</li> |
||||
<li> |
||||
<a href="https://www.facebook.com/sharer/sharer.php?u={{ url }}" |
||||
target="_blank" class="btn btn-facebook btn-inverse btn-sm"> |
||||
<em class="fab fa-facebook-square"></em> Facebook |
||||
</a> |
||||
</li> |
||||
<li> |
||||
<a href="https://twitter.com/home?{{ {'status': course.title ~ ' ' ~ url }|url_encode }}" |
||||
target="_blank" class="btn btn-twitter btn-inverse btn-sm"> |
||||
<em class="fab fa-twitter"></em> Twitter |
||||
</a> |
||||
</li> |
||||
<li> |
||||
<a href="https://www.linkedin.com/shareArticle?{{ {'mini': 'true', 'url': url , 'title': course.title }|url_encode }}" |
||||
target="_blank" class="btn btn-linkedin btn-inverse btn-sm"> |
||||
<em class="fab fa-linkedin-in"></em> Linkedin |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
<div class="col-sm-7"> |
||||
<div class="course-description"> |
||||
{{ course.description }} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{% if course.tags %} |
||||
<ul class="list-inline course-tags d-flex flex-row bd-highlight mb-3"> |
||||
<li class="px-2 bd-highlight">{{ 'Tags'|get_lang }} :</li> |
||||
{% for tag in course.tags %} |
||||
<li class="px-2 bd-highlight"> |
||||
<span>{{ tag.getTag }}</span> |
||||
</li> |
||||
{% endfor %} |
||||
</ul> |
||||
{% endif %} |
||||
</div> |
||||
</div> |
||||
<section id="course-info-bottom" class="course"> |
||||
<div class="row"> |
||||
<div class="col-sm-8"> |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<h3 class="sub-title">{{ "CourseInformation"|get_lang }}</h3> |
||||
<div class="course-information"> |
||||
{% for topic in course.syllabus %} |
||||
{% if topic.content != '' %} |
||||
<div class="topics"> |
||||
<h4 class="title-info"> |
||||
<em class="fa fa-book"></em> {{ topic.title }} |
||||
</h4> |
||||
<div class="content-info"> |
||||
{{ topic.content }} |
||||
</div> |
||||
</div> |
||||
{% endif %} |
||||
{% endfor %} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="col-sm-4"> |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
{% if is_premium == false %} |
||||
<h5>{{ 'CourseSubscription'|get_lang }}</h5> |
||||
<div class="session-subscribe"> |
||||
{% if _u.logged == 0 %} |
||||
{% if 'allow_registration'|api_get_setting != 'false' %} |
||||
<a href="{{ _p.web_main ~ 'auth/inscription.php' ~ redirect_to_session }}" class="btn btn-success btn-block btn-lg"> |
||||
<i class="fa fa-pencil" aria-hidden="true"></i> {{ 'SignUp'|get_lang }} |
||||
</a> |
||||
{% endif %} |
||||
{% elseif course.subscription %} |
||||
<a href="{{ _p.web }}courses/{{ course.code }}/index.php?id_session=0" class="btn btn-lg btn-success btn-block">{{ 'CourseHomepage'|get_lang }}</a> |
||||
{% else %} |
||||
<a href="{{ _p.web }}courses/{{ course.code }}/index.php?action=subscribe&sec_token={{ token }}" class="btn btn-lg btn-success btn-block">{{ 'Subscribe'|get_lang }}</a> |
||||
{% endif %} |
||||
</div> |
||||
{% else %} |
||||
<div class="session-price"> |
||||
<div class="sale-price"> |
||||
{{ 'SalePrice'|get_lang }} |
||||
</div> |
||||
<div class="price-text"> |
||||
{{ is_premium.iso_code }} {{ is_premium.price }} |
||||
</div> |
||||
<div class="buy-box"> |
||||
<a href="{{ _p.web }}plugin/buycourses/src/process.php?i={{ is_premium.product_id }}&t={{ is_premium.product_type }}" class="btn btn-lg btn-primary btn-block">{{ 'BuyNow'|get_lang }}</a> |
||||
</div> |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
</div> |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<div class="panel-teachers"> |
||||
<h5 class="sub-title">{{ "Coaches"|get_lang }}</h5> |
||||
</div> |
||||
{% for teacher in course.teachers %} |
||||
|
||||
<div class="coach-information"> |
||||
<div class="coach-header"> |
||||
<div class="coach-avatar"> |
||||
<img class="img-fluid rounded-circle" src="{{ teacher.image }}" alt="{{ teacher.complete_name }}"> |
||||
</div> |
||||
<div class="coach-title"> |
||||
<h6>{{ teacher.complete_name }}</h6> |
||||
<p> {{ teacher.diploma }}</p> |
||||
</div> |
||||
</div> |
||||
<div class="open-area {{ course.teachers | length >= 2 ? 'open-more' : ' ' }}"> |
||||
{{ teacher.openarea }} |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
|
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</section> |
||||
</div> |
||||
|
||||
<script> |
||||
$(function() { |
||||
$('.course-information').readmore({ |
||||
speed: 100, |
||||
lessLink: '<a class="hide-content" href="#">{{ 'SetInvisible' | get_lang }}</a>', |
||||
moreLink: '<a class="read-more" href="#">{{ 'ReadMore' | get_lang }}</a>', |
||||
collapsedHeight: 730, |
||||
heightMargin: 100 |
||||
}); |
||||
$('.open-more').readmore({ |
||||
speed: 100, |
||||
lessLink: '<a class="hide-content" href="#">{{ 'SetInvisible' | get_lang }}</a>', |
||||
moreLink: '<a class="read-more" href="#">{{ 'ReadMore' | get_lang }}</a>', |
||||
collapsedHeight: 90, |
||||
heightMargin: 20 |
||||
}); |
||||
}); |
||||
</script> |
||||
{% endautoescape %} |
@ -0,0 +1,192 @@ |
||||
{% extends "@ChamiloTheme/Layout/layout_one_col.html.twig" %} |
||||
|
||||
{% block content %} |
||||
{% autoescape false %} |
||||
<div id="about-course" class="about"> |
||||
<div id="course-info-top"> |
||||
<h2 class="session-title">{{ course.title }}</h2> |
||||
<div class="course-short"> |
||||
<ul> |
||||
<li class="author">{{ "Professors"|trans }}</li> |
||||
{% for teacher in teachers %} |
||||
<li>{{ teacher.complete_name }} | </li> |
||||
{% endfor %} |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
|
||||
{% set course_video = '' %} |
||||
{% for extra_field in extra_fields %} |
||||
{% if extra_field.value.getField().getVariable() == 'video_url' %} |
||||
{% set course_video = extra_field.value.getValue() %} |
||||
{% endif %} |
||||
{% endfor %} |
||||
|
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<div class="row"> |
||||
<div class="col-sm-5"> |
||||
{% if course_video %} |
||||
<div class="course-video"> |
||||
<div class="embed-responsive embed-responsive-16by9"> |
||||
{{ essence.replace(course_video) }} |
||||
</div> |
||||
</div> |
||||
{% else %} |
||||
<div class="course-image"> |
||||
<img src="{{ image }}" class="img-fluid" /> |
||||
</div> |
||||
{% endif %} |
||||
|
||||
{% if "display.hide_social_media_links" | api_get_setting == 'false' %} |
||||
<div class="share-social-media"> |
||||
<ul class="sharing-buttons"> |
||||
<li> |
||||
{{ "ShareWithYourFriends"|trans }} |
||||
</li> |
||||
<li> |
||||
<a href="https://www.facebook.com/sharer/sharer.php?u={{ url }}" |
||||
target="_blank" class="btn btn-facebook btn-inverse btn-sm"> |
||||
<em class="fab fa-facebook-square"></em> Facebook |
||||
</a> |
||||
</li> |
||||
<li> |
||||
<a href="https://twitter.com/home?{{ {'status': course.title ~ ' ' ~ url }|url_encode }}" |
||||
target="_blank" class="btn btn-twitter btn-inverse btn-sm"> |
||||
<em class="fab fa-twitter"></em> Twitter |
||||
</a> |
||||
</li> |
||||
<li> |
||||
<a href="https://www.linkedin.com/shareArticle?{{ {'mini': 'true', 'url': url , 'title': course.title }|url_encode }}" |
||||
target="_blank" class="btn btn-linkedin btn-inverse btn-sm"> |
||||
<em class="fab fa-linkedin-in"></em> Linkedin |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
<div class="col-sm-7"> |
||||
<div class="course-description"> |
||||
{{ description }} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{% if tags %} |
||||
<ul class="list-inline course-tags d-flex flex-row bd-highlight mb-3"> |
||||
<li class="px-2 bd-highlight">{{ 'Tags'|trans }} :</li> |
||||
{% for tag in tags %} |
||||
<li class="px-2 bd-highlight"> |
||||
<span>{{ tag.getTag }}</span> |
||||
</li> |
||||
{% endfor %} |
||||
</ul> |
||||
{% endif %} |
||||
</div> |
||||
</div> |
||||
<section id="course-info-bottom" class="course"> |
||||
<div class="row"> |
||||
<div class="col-sm-8"> |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<h3 class="sub-title">{{ "CourseInformation"|trans }}</h3> |
||||
<div class="course-information"> |
||||
{% for topic in syllabus %} |
||||
{% if topic.content != '' %} |
||||
<div class="topics"> |
||||
<h4 class="title-info"> |
||||
<em class="fa fa-book"></em> {{ topic.title }} |
||||
</h4> |
||||
<div class="content-info"> |
||||
{{ topic.content }} |
||||
</div> |
||||
</div> |
||||
{% endif %} |
||||
{% endfor %} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="col-sm-4"> |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
{% if is_premium == false %} |
||||
<h5>{{ 'CourseSubscription'|trans }}</h5> |
||||
<div class="session-subscribe"> |
||||
{% if _u.logged == 0 %} |
||||
{% if 'allow_registration'|api_get_setting != 'false' %} |
||||
<a href="{{ _p.web_main ~ 'auth/inscription.php' ~ redirect_to_session }}" class="btn btn-success btn-block btn-lg"> |
||||
<i class="fa fa-pencil" aria-hidden="true"></i> {{ 'SignUp'|trans }} |
||||
</a> |
||||
{% endif %} |
||||
{% elseif subscription %} |
||||
<a href="{{ _p.web }}courses/{{ course.code }}/index.php?id_session=0" class="btn btn-lg btn-success btn-block">{{ 'CourseHomepage'|trans }}</a> |
||||
{% else %} |
||||
<a href="{{ _p.web }}courses/{{ course.code }}/index.php?action=subscribe&sec_token={{ token }}" class="btn btn-lg btn-success btn-block">{{ 'Subscribe'|trans }}</a> |
||||
{% endif %} |
||||
</div> |
||||
{% else %} |
||||
<div class="session-price"> |
||||
<div class="sale-price"> |
||||
{{ 'SalePrice'|trans }} |
||||
</div> |
||||
<div class="price-text"> |
||||
{{ is_premium.iso_code }} {{ is_premium.price }} |
||||
</div> |
||||
<div class="buy-box"> |
||||
<a href="{{ _p.web }}plugin/buycourses/src/process.php?i={{ is_premium.product_id }}&t={{ is_premium.product_type }}" class="btn btn-lg btn-primary btn-block">{{ 'BuyNow'|trans }}</a> |
||||
</div> |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
</div> |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<div class="panel-teachers"> |
||||
<h5 class="sub-title">{{ "Coaches"|trans }}</h5> |
||||
</div> |
||||
{% for teacher in teachers %} |
||||
<div class="coach-information"> |
||||
<div class="coach-header"> |
||||
<div class="coach-avatar"> |
||||
<img class="img-fluid rounded-circle" src="{{ teacher.image }}" alt="{{ teacher.complete_name }}"> |
||||
</div> |
||||
<div class="coach-title"> |
||||
<h6>{{ teacher.complete_name }}</h6> |
||||
<p> {{ teacher.diploma }}</p> |
||||
</div> |
||||
</div> |
||||
<div class="open-area {{ teachers | length >= 2 ? 'open-more' : ' ' }}"> |
||||
{{ teacher.openarea }} |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
|
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</section> |
||||
</div> |
||||
|
||||
<script> |
||||
$(function() { |
||||
$('.course-information').readmore({ |
||||
speed: 100, |
||||
lessLink: '<a class="hide-content" href="#">{{ 'SetInvisible' | trans }}</a>', |
||||
moreLink: '<a class="read-more" href="#">{{ 'ReadMore' | trans }}</a>', |
||||
collapsedHeight: 730, |
||||
heightMargin: 100 |
||||
}); |
||||
$('.open-more').readmore({ |
||||
speed: 100, |
||||
lessLink: '<a class="hide-content" href="#">{{ 'SetInvisible' | trans }}</a>', |
||||
moreLink: '<a class="read-more" href="#">{{ 'ReadMore' | trans }}</a>', |
||||
collapsedHeight: 90, |
||||
heightMargin: 20 |
||||
}); |
||||
}); |
||||
</script> |
||||
{% endautoescape %} |
||||
{% endblock %} |
Loading…
Reference in new issue