Display all sequences from session requirements - refs BT#9893 #TMI

1.10.x
Angel Fernando Quiroz Campos 11 years ago
parent 540ea6a8d4
commit 555addfe85
  1. 2
      app/Resources/public/css/base.css
  2. 103
      main/inc/ajax/sequence.ajax.php
  3. 44
      main/template/default/sequence_resource/session_requirements.tpl
  4. 23
      src/Chamilo/CoreBundle/Entity/Repository/SequenceRepository.php

@ -5848,7 +5848,7 @@ div#chat-remote-video video {
}
#parents .parent {
display: inline-block;
width: 15%;
width: 125px;
padding: 5px;
/* background: url("../../main/img/icons/48/sequence-arrow.png") no-repeat center bottom; */
}

@ -294,70 +294,89 @@ switch ($action) {
'ChamiloCoreBundle:GradebookCategory'
);
$sessionRequirements = $repository->getRequirements(
$sequences = $repository->getRequirements(
$session['id'],
$type
);
$requiredGradebooks = [];
if (count($sequences) === 0) {
break;
}
foreach ($sessionRequirements as $sessionRequired) {
$sessionsCourses = $sessionRequired->getCourses();
$data = [];
foreach ($sessionsCourses as $sessionCourse) {
$course = $sessionCourse->getCourse();
foreach ($sequences as $sequenceId => $sequence) {
$item = [
'name' => $sequence['name'],
'sessions' => []
];
$gradebooks = $gradebookCategoryRepo->findBy([
'courseCode' => $course->getCode(),
'sessionId' => $sessionRequired->getId(),
'isRequirement' => true
]);
foreach ($sequence['requirements'] as $sessionRequired) {
$itemSession = [
'name' => $sessionRequired->getName(),
'status' => true
];
$sessionsCourses = $sessionRequired->getCourses();
foreach ($sessionsCourses as $sessionCourse) {
$course = $sessionCourse->getCourse();
$gradebooks = $gradebookCategoryRepo->findBy([
'courseCode' => $course->getCode(),
'sessionId' => $sessionRequired->getId(),
'isRequirement' => true
]);
foreach ($gradebooks as $gradebook) {
$category = Category::createCategoryObjectFromEntity(
$gradebook
);
$itemSession['status'] = $itemSession['status'] && Category::userFinishedCourse(
$userId,
$category
);
}
}
$requiredGradebooks = array_merge(
$requiredGradebooks,
$gradebooks
);
$item['sessions'][$sessionRequired->getId()] = $itemSession;
}
}
if (count($requiredGradebooks) === 0) {
break;
$data[$sequenceId] = $item;
}
$data = [];
$allowSubscription = false;
foreach ($requiredGradebooks as $gradebook) {
$category = Category::createCategoryObjectFromEntity(
$gradebook
);
foreach ($data as $secuence) {
$status = true;
if (array_key_exists($gradebook->getSessionId(), $data)) {
continue;
foreach ($secuence['sessions'] as $item) {
$status = $status && $item['status'];
}
$data[$gradebook->getSessionId()] = [
'session' => api_get_session_info(
$gradebook->getSessionId()
),
'status' => Category::userFinishedCourse(
$userId,
$category
)
];
if ($status) {
$allowSubscription = true;
break;
}
}
$courseController = new CoursesController();
$view = new Template(null, false, false, false, false, false);
$view->assign(
'subscribe_button',
$courseController->getRegisteredInSessionButton(
$session['id'],
$session['name'],
false
)
);
$view->assign('data', $data);
$view->assign('allow_subscription', $allowSubscription);
if ($allowSubscription) {
$view->assign(
'subscribe_button',
$courseController->getRegisteredInSessionButton(
$session['id'],
$session['name'],
false
)
);
}
$template = $view->get_template(
'sequence_resource/session_requirements.tpl'

@ -1,32 +1,34 @@
<h2 class="page-header">{{ 'SessionRequirements'|get_lang }}</h2>
{% set finishedSessions = 0 %}
{% for item in data %}
{% if item.status %}
{% set finishedSessions = finishedSessions + 1 %}
<h4>{{ item.name }}</h4>
<p class="bg-success">
<span class="pull-right">
<i class="fa fa-check"></i>
</span>
{{ item.session.name }}
</p>
{% else %}
<p class="bg-danger">
<span class="pull-right">
<i class="fa fa-exclamation-triangle"></i>
</span>
{{ item.session.name }}
</p>
{% endif %}
<div id="parents">
{% for session in item.sessions %}
<div class="parent">
<div class="big-icon">
<img src="{{ 'item-sequence.png'|icon(48) }}">
<p class="sequence-course">{{ session.name }}</p>
<span class="label {{ session.status ? 'label-success' : 'label-danger' }}">
{% if session.status %}
<i class="fa fa-check"></i> {{ 'Complete'|get_lang }}
{% else %}
<i class="fa fa-exclamation-triangle"></i> {{ 'Incomplete'|get_lang }}
{% endif %}
</span>
</div>
</div>
{% if loop.index != item.sessions|length %}
<i class="fa fa-plus fa-3x sequence-plus-icon"></i>
{% endif %}
{% endfor %}
</div>
{% endfor %}
<hr>
<p>
{% if finishedSessions == data|length %}
{% if allow_subscription %}
{{ subscribe_button }}
{% else %}
{{ 'YouNeedCompleteAllSessions'|get_lang }}
{% endif %}
</p>

@ -111,15 +111,28 @@ class SequenceRepository extends EntityRepository
*/
public function getRequirements($resourceId, $type)
{
$sequence = $this->findRequirementForResource($resourceId, $type);
$sequencesResource = $this->findBy([
'resourceId' => $resourceId,
'type' => $type
]);
$result = [];
if ($sequence && $sequence->hasGraph()) {
$graph = $sequence->getSequence()->getUnSerializeGraph();
foreach ($sequencesResource as $sequenceResource) {
if (!$sequenceResource->hasGraph()) {
continue;
}
$sequence = $sequenceResource->getSequence();
$graph = $sequence->getUnSerializeGraph();
$vertex = $graph->getVertex($resourceId);
$from = $vertex->getVerticesEdgeFrom();
$sequenceInfo = [
'name' => $sequence->getName(),
'requirements' => []
];
foreach ($from as $subVertex) {
$vertexId = $subVertex->getId();
@ -134,10 +147,12 @@ class SequenceRepository extends EntityRepository
break;
}
$result[] = $session;
$sequenceInfo['requirements'][$vertexId] = $session;
break;
}
}
$result[$sequence->getId()] = $sequenceInfo;
}
return $result;

Loading…
Cancel
Save