Преглед на файлове

Fix filters in course/session catalog - refs #7768

Angel Fernando Quiroz Campos преди 9 години
родител
ревизия
251bcd9dc9

+ 125 - 9
plugin/buycourses/src/buy_course_plugin.class.php

@@ -429,16 +429,14 @@ class BuyCoursesPlugin extends Plugin
 
     /**
      * Lists current user session details, including each session course details
+     * @param string $name Optional. The name filter
+     * @param int $min Optional. The minimum price filter
+     * @param int $max Optional. The maximum price filter
      * @return array
      */
-    public function getCatalogSessionList()
+    public function getCatalogSessionList($name = null, $min = 0, $max = 0)
     {
-        $auth = new Auth();
-        $sessions = $auth->browseSessions();
-
-        $entityManager = Database::getManager();
-        $scRepo = $entityManager->getRepository('ChamiloCoreBundle:SessionRelCourse');
-        $scuRepo = $entityManager->getRepository('ChamiloCoreBundle:SessionRelCourseRelUser');
+        $sessions = $this->filterSessionList($name, $min, $max);
 
         $sessionCatalog = array();
         // loop through all sessions
@@ -541,9 +539,16 @@ class BuyCoursesPlugin extends Plugin
      * Lists current user course details
      * @return array
      */
-    public function getCatalogCourseList()
+    /**
+     * Lists current user course details
+     * @param string $name Optional. The name filter
+     * @param int $min Optional. The minimum price filter
+     * @param int $max Optional. The maximum price filter
+     * @return array
+     */
+    public function getCatalogCourseList($name = null, $min = 0, $max = 0)
     {
-        $courses = $this->getCourses();
+        $courses = $this->filterCourseList($name, $min, $max);
 
         if (empty($courses)) {
             return [];
@@ -951,4 +956,115 @@ class BuyCoursesPlugin extends Plugin
         ];
     }
 
+    /**
+     * Search filtered sessions by name, and range of price
+     * @param string $name Optional. The name filter
+     * @param int $min Optional. The minimun price filter
+     * @param int $max Optional. The maximum price filter
+     * @return array
+     */
+    private function filterSessionList($name = null, $min = 0, $max = 0)
+    {
+        if (empty($name) && empty($min) && empty($max)) {
+            $auth = new Auth();
+            return $auth->browseSessions();
+        }
+
+        $itemTable = Database::get_main_table(BuyCoursesUtils::TABLE_ITEM);
+        $sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
+
+        $min = floatval($min);
+        $max = floatval($max);
+
+        $innerJoin = "$itemTable i ON s.id = i.product_id";
+        $whereConditions = [
+            'i.product_type = ? ' => self::PRODUCT_TYPE_SESSION
+        ];
+
+        if (!empty($name)) {
+            $whereConditions['AND s.name LIKE %?%'] = $name;
+        }
+
+        if (!empty($min)) {
+            $whereConditions['AND i.price >= ?'] = $min;
+        }
+
+        if (!empty($max)) {
+            $whereConditions['AND i.price <= ?'] = $max;
+        }
+
+        $sessionIds = Database::select(
+            's.id',
+            "$sessionTable s INNER JOIN $innerJoin",
+            ['where' => $whereConditions]
+        );
+
+        if (!$sessionIds) {
+            return [];
+        }
+
+        $sessions = [];
+
+        foreach ($sessionIds as $sessionId) {
+            $sessions[] = Database::getManager()->find('ChamiloCoreBundle:Session', $sessionId);
+        }
+
+        return $sessions;
+    }
+
+    /**
+     * Search filtered courses by name, and range of price
+     * @param string $name Optional. The name filter
+     * @param int $min Optional. The minimun price filter
+     * @param int $max Optional. The maximum price filter
+     * @return array
+     */
+    private function filterCourseList($name = null, $min = 0, $max = 0)
+    {
+        if (empty($name) && empty($min) && empty($max)) {
+            return $this->getCourses();
+        }
+
+        $itemTable = Database::get_main_table(BuyCoursesUtils::TABLE_ITEM);
+        $courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
+
+        $min = floatval($min);
+        $max = floatval($max);
+
+        $innerJoin = "$itemTable i ON c.id = i.product_id";
+        $whereConditions = [
+            'i.product_type = ? ' => self::PRODUCT_TYPE_COURSE
+        ];
+
+        if (!empty($name)) {
+            $whereConditions['AND c.title LIKE %?%'] = $name;
+        }
+
+        if (!empty($min)) {
+            $whereConditions['AND i.price >= ?'] = $min;
+        }
+
+        if (!empty($max)) {
+            $whereConditions['AND i.price <= ?'] = $max;
+        }
+
+        $courseIds = Database::select(
+            'c.id',
+            "$courseTable c INNER JOIN $innerJoin",
+            ['where' => $whereConditions]
+        );
+
+        if (!$courseIds) {
+            return [];
+        }
+
+        $courses = [];
+
+        foreach ($courseIds as $courseId) {
+            $courses[] = Database::getManager()->find('ChamiloCoreBundle:Course', $courseId);
+        }
+
+        return $courses;
+    }
+
 }

+ 1 - 1
plugin/buycourses/src/configuration.php

@@ -21,7 +21,7 @@ $courses = $plugin->getCoursesForConfiguration();
 
 //view
 $interbreadcrumb[] = [
-    'url' => 'list.php',
+    'url' => 'course_catalog.php',
     'name' => $plugin->get_lang('CourseListOnSale')
 ];
 $interbreadcrumb[] = [

+ 72 - 0
plugin/buycourses/src/course_catalog.php

@@ -0,0 +1,72 @@
+<?php
+/**
+ * List of courses
+ * @package chamilo.plugin.buycourses
+ */
+/**
+ * Initialization
+ */
+$cidReset = true;
+
+require_once '../../../main/inc/global.inc.php';
+require_once 'buy_course.lib.php';
+
+$plugin = BuyCoursesPlugin::create();
+$includeSessions = $plugin->get('include_sessions') === 'true';
+
+$nameFilter = null;
+$minFilter = 0;
+$maxFilter = 0;
+
+$form = new FormValidator('search_filter_form', 'get', null, null, [], FormValidator::LAYOUT_INLINE);
+
+if ($form->validate()) {
+    $formValues = $form->getSubmitValues();
+    $nameFilter = isset($formValues['name']) ? $formValues['name'] : null;
+    $minFilter = isset($formValues['min']) ? $formValues['min'] : 0;
+    $maxFilter = isset($formValues['max']) ? $formValues['max'] : 0;
+}
+
+$form->addHeader($plugin->get_lang('SearchFilter'));
+$form->addText('name', get_lang('SessionName'), false);
+$form->addElement(
+    'number',
+    'min',
+    $plugin->get_lang('MinimumPrice'),
+    ['step' => '0.01', 'min' => '0']
+);
+$form->addElement(
+    'number',
+    'max',
+    $plugin->get_lang('MaximumPrice'),
+    ['step' => '0.01', 'min' => '0']
+);
+$form->addHtml('<hr>');
+$form->addButtonFilter(get_lang('Search'));
+
+$courseList = $plugin->getCatalogCourseList($nameFilter, $minFilter, $maxFilter);
+
+//View
+if (api_is_platform_admin()) {
+    $interbreadcrumb[] = [
+        'url' => 'configuration.php',
+        'name' => $plugin->get_lang('AvailableCoursesConfiguration')
+    ];
+    $interbreadcrumb[] = [
+        'url' => 'paymentsetup.php',
+        'name' => $plugin->get_lang('PaymentsConfiguration')
+    ];
+}
+
+$templateName = $plugin->get_lang('CourseListOnSale');
+$tpl = new Template($templateName);
+$tpl->assign('search_filter_form', $form->returnForm());
+$tpl->assign('showing_courses', true);
+$tpl->assign('courses', $courseList);
+$tpl->assign('sessions_are_included', $includeSessions);
+
+$content = $tpl->fetch('buycourses/view/catalog.tpl');
+
+$tpl->assign('header', $templateName);
+$tpl->assign('content', $content);
+$tpl->display_one_col_template();

+ 2 - 2
plugin/buycourses/src/error.php

@@ -1,7 +1,7 @@
 <?php
 /* For license terms, see /license.txt */
 /**
- * Errors management for the Buy Courses plugin - Redirects to list.php
+ * Errors management for the Buy Courses plugin - Redirects to course_catalog.php
  * @package chamilo.plugin.buycourses
  */
 /**
@@ -23,4 +23,4 @@ unset($_SESSION['TOKEN']);
 $_SESSION['bc_success'] = false;
 $_SESSION['bc_message'] = 'CancelOrder';
 
-header('Location:list.php');
+header('Location: course_catalog.php');

+ 1 - 1
plugin/buycourses/src/index.buycourses.php

@@ -13,7 +13,7 @@ $guess_enable = $plugin->get('unregistered_users_enable');
 if ($guess_enable == "true" || isset($_SESSION['_user'])) {
     // If the user is NOT an administrator, redirect it to course/session buy list
     if (!api_is_platform_admin()) {
-        header('Location: src/list.php');
+        header('Location: src/course_catalog.php');
         exit;
     }
 

+ 0 - 46
plugin/buycourses/src/list.php

@@ -1,46 +0,0 @@
-<?php
-/**
- * List of courses
- * @package chamilo.plugin.buycourses
- */
-/**
- * Initialization
- */
-$cidReset = true;
-
-require_once '../../../main/inc/global.inc.php';
-require_once 'buy_course.lib.php';
-
-$plugin = BuyCoursesPlugin::create();
-$includeSessions = $plugin->get('include_sessions') === 'true';
-
-if (api_is_platform_admin()) {
-    $interbreadcrumb[] = array("url" => "configuration.php", "name" => $plugin->get_lang('AvailableCoursesConfiguration'));
-    $interbreadcrumb[] = array("url" => "paymentsetup.php", "name" => $plugin->get_lang('PaymentsConfiguration'));
-}
-
-$templateName = $plugin->get_lang('CourseListOnSale');
-$tpl = new Template($templateName);
-
-$courseList = $plugin->getCatalogCourseList();
-$sessionList = [];
-$currency = $plugin->getSelectedCurrency();
-$currencyCode = null;
-
-if (isset($currency['currency_code'])) {
-    $currencyCode = $currency['currency_code'];
-}
-
-$tpl->assign('courses', $courseList);
-$tpl->assign('currency', $currencyCode);
-$tpl->assign('sessions_are_included', $includeSessions);
-
-if ($includeSessions) {
-    $sessionList = $plugin->getCatalogSessionList();
-    $tpl->assign('sessions', $sessionList);
-}
-
-$content = $tpl->fetch('buycourses/view/list.tpl');
-
-$tpl->assign('content', $content);
-$tpl->display_one_col_template();

+ 1 - 1
plugin/buycourses/src/paymentsetup.php

@@ -40,7 +40,7 @@ $transferAccounts = $plugin->getTransferAccounts();
 
 //view
 $interbreadcrumb[] = [
-    'url' => 'list.php',
+    'url' => 'course_catalog.php',
     'name' => $plugin->get_lang('CourseListOnSale')
 ];
 $interbreadcrumb[] = [

+ 1 - 1
plugin/buycourses/src/process.php

@@ -76,7 +76,7 @@ $form->addButton('submit', $plugin->get_lang('ConfirmOrder'), 'check', 'success'
 
 // View
 $templateName = $plugin->get_lang('PaymentMethods');
-$interbreadcrumb[] = array("url" => "list.php", "name" => $plugin->get_lang('CourseListOnSale'));
+$interbreadcrumb[] = array("url" => "course_catalog.php", "name" => $plugin->get_lang('CourseListOnSale'));
 
 $tpl = new Template($templateName);
 $tpl->assign('buying_course', $buyingCourse);

+ 1 - 1
plugin/buycourses/src/process_confirm.php

@@ -129,7 +129,7 @@ switch ($sale['payment_type']) {
             );
 
             unset($_SESSION['bc_sale_id']);
-            header('Location: ' . api_get_path(WEB_PLUGIN_PATH) . 'buycourses/src/list.php');
+            header('Location: ' . api_get_path(WEB_PLUGIN_PATH) . 'buycourses/src/course_catalog.php');
             exit;
         }
 

+ 76 - 0
plugin/buycourses/src/session_catalog.php

@@ -0,0 +1,76 @@
+<?php
+/**
+ * List of courses
+ * @package chamilo.plugin.buycourses
+ */
+/**
+ * Initialization
+ */
+$cidReset = true;
+
+require_once '../../../main/inc/global.inc.php';
+
+$plugin = BuyCoursesPlugin::create();
+$includeSessions = $plugin->get('include_sessions') === 'true';
+
+if (!$includeSessions) {
+    api_not_allowed(true);
+}
+
+$nameFilter = null;
+$minFilter = 0;
+$maxFilter = 0;
+
+$form = new FormValidator('search_filter_form', 'get', null, null, [], FormValidator::LAYOUT_INLINE);
+
+if ($form->validate()) {
+    $formValues = $form->getSubmitValues();
+    $nameFilter = isset($formValues['name']) ? $formValues['name'] : null;
+    $minFilter = isset($formValues['min']) ? $formValues['min'] : 0;
+    $maxFilter = isset($formValues['max']) ? $formValues['max'] : 0;
+}
+
+$form->addHeader($plugin->get_lang('SearchFilter'));
+$form->addText('name', get_lang('SessionName'), false);
+$form->addElement(
+    'number',
+    'min',
+    $plugin->get_lang('MinimumPrice'),
+    ['step' => '0.01', 'min' => '0']
+);
+$form->addElement(
+    'number',
+    'max',
+    $plugin->get_lang('MaximumPrice'),
+    ['step' => '0.01', 'min' => '0']
+);
+$form->addHtml('<hr>');
+$form->addButtonFilter(get_lang('Search'));
+
+$sessionList = $plugin->getCatalogSessionList($nameFilter, $minFilter, $maxFilter);
+
+//View
+if (api_is_platform_admin()) {
+    $interbreadcrumb[] = [
+        'url' => 'configuration.php',
+        'name' => $plugin->get_lang('AvailableCoursesConfiguration')
+    ];
+    $interbreadcrumb[] = [
+        'url' => 'paymentsetup.php',
+        'name' => $plugin->get_lang('PaymentsConfiguration')
+    ];
+}
+
+$templateName = $plugin->get_lang('CourseListOnSale');
+
+$template = new Template($templateName);
+$template->assign('search_filter_form', $form->returnForm());
+$template->assign('sessions_are_included', $includeSessions);
+$template->assign('showing_sessions', true);
+$template->assign('sessions', $sessionList);
+
+$content = $template->fetch('buycourses/view/catalog.tpl');
+
+$template->assign('header', $templateName);
+$template->assign('content', $content);
+$template->display_one_col_template();

+ 2 - 2
plugin/buycourses/src/success.php

@@ -157,7 +157,7 @@ if ($form->validate()) {
     }
 
     unset($_SESSION['bc_sale_id']);
-    header('Location: ' . api_get_path(WEB_PLUGIN_PATH) . 'buycourses/src/list.php');
+    header('Location: ' . api_get_path(WEB_PLUGIN_PATH) . 'buycourses/src/course_catalog.php');
     exit;
 }
 
@@ -179,7 +179,7 @@ if ($shippingDetails['ACK'] !== 'Success') {
     exit;
 }
 
-$interbreadcrumb[] = array("url" => "list.php", "name" => $plugin->get_lang('CourseListOnSale'));
+$interbreadcrumb[] = array("url" => "course_catalog.php", "name" => $plugin->get_lang('CourseListOnSale'));
 
 $templateName = $plugin->get_lang('PaymentMethods');
 $tpl = new Template($templateName);

+ 112 - 0
plugin/buycourses/view/catalog.tpl

@@ -0,0 +1,112 @@
+<link rel="stylesheet" type="text/css" href="../resources/css/style.css"/>
+
+<div id="buy-courses-tabs">
+    {% if sessions_are_included %}
+        <ul class="nav nav-tabs buy-courses-tabs" role="tablist">
+            <li id="buy-courses-tab" class="{{ showing_courses ? 'active' : '' }}" role="presentation">
+                <a href="course_catalog.php" aria-controls="buy-courses" role="tab">{{ 'Courses'|get_lang }}</a>
+            </li>
+            <li id="buy-sessions-tab" class="{{ showing_sessions ? 'active' : '' }}" role="presentation">
+                <a href="session_catalog.php" aria-controls="buy-sessions" role="tab">{{ 'Sessions'|get_lang }}</a>
+            </li>
+        </ul>
+    {% endif %}
+
+    <div class="tab-content">
+        <div class="tab-pane active" aria-labelledby="buy-sessions-tab" role="tabpanel">
+            <div class="row">
+                <div class="col-md-3">
+                    {{ search_filter_form }}
+                </div>
+                <div class="col-md-9">
+                    <div class="row">
+                        {% if showing_courses %}
+                            {% for course in courses %}
+                                <div class="col-md-4 col-sm-6">
+                                    <div class="thumbnail">
+                                        <img alt="{{ course.title }}" class="img-responsive" src="{{ course.course_img ? course.course_img : 'session_default.png'|icon() }}">
+                                        <div class="caption">
+                                            {% set course_description_url = _p.web_ajax ~ 'course_home.ajax.php?' ~ {'code': course.code, 'a': 'show_course_information'}|url_encode() %}
+                                            <h3>
+                                                <a class="ajax" href="{{ course_description_url }}" data-title="{{ course.title }}">{{ course.title }}</a>
+                                            </h3>
+                                            <ul class="list-unstyled">
+                                                {% for teacher in course.teachers %}
+                                                    <li><i class="fa fa-user"></i> {{ teacher }}</li>
+                                                    {% endfor %}
+                                            </ul>
+                                            <p class="lead text-right">{{ course.currency }} {{ course.price }}</p>
+                                            {% if course.enrolled == "YES" %}
+                                                <div class="alert alert-success">
+                                                    <i class="fa fa-check-square-o fa-fw"></i> {{ 'TheUserIsAlreadyRegisteredInTheCourse'|get_plugin_lang('BuyCoursesPlugin') }}
+                                                </div>
+                                            {% elseif course.enrolled == "NO" %}
+                                                <div class="text-center">
+                                                    <a class="ajax btn btn-primary" title="" href="{{ course_description_url }}" data-title="{{ course.title }}">
+                                                        <i class="fa fa-file-text"></i> {{ 'Description'|get_lang }}
+                                                    </a>
+                                                    <a class="btn btn-success" title="" href="{{ _p.web_plugin ~ 'buycourses/src/process.php?' ~ {'i': course.id, 't': 1}|url_encode() }}">
+                                                        <i class="fa fa-shopping-cart"></i> {{ 'Buy'|get_plugin_lang('BuyCoursesPlugin') }}
+                                                    </a>
+                                                </div>
+                                            {% elseif course.enrolled == "TMP" %}
+                                                <div class="alert alert-info">{{ 'WaitingToReceiveThePayment'|get_plugin_lang('BuyCoursesPlugin') }}</div>
+                                            {% endif %}
+                                        </div>
+                                    </div>
+                                </div>
+                            {% endfor %}
+                        {% endif %}
+
+                        {% if showing_sessions %}
+                            {% for session in sessions %}
+                                <div class="col-md-4 col-sm-6">
+                                    <div class="thumbnail">
+                                        <img alt="{{ session.name }}" class="img-responsive" src="{{ session.image ? session.image : 'session_default.png'|icon() }}">
+                                        <div class="caption">
+                                            <h3>
+                                                <a href="{{ _p.web ~ 'session/' ~ session.id ~ '/about/' }}">{{ session.name }}</a>
+                                            </h3>
+                                            {% if 'show_session_coach'|get_setting == 'true' %}
+                                                <p><i class="fa fa-user fa-fw"></i> {{ session.coach }}</p>
+                                            {% endif %}
+                                            <p><i class="fa fa-calendar fa-fw"></i> {{ session.dates.display }}</p>
+                                            <p class="lead text-right">{{ session.currency }} {{ session.price }}</p>
+                                            <ul class="list-unstyled">
+                                                {% for course in session.courses %}
+                                                    <li>
+                                                        <i class="fa fa-book fa-fw"></i> {{ course.title }}
+                                                        {% if course.coaches|length %}
+                                                            <ul>
+                                                                {% for coach in course.coaches %}
+                                                                    <li>{{ coach }}</li>
+                                                                    {% endfor %}
+                                                            </ul>
+                                                        {% endif %}
+                                                    </li>
+                                                {% endfor %}
+                                            </ul>
+                                            {% if session.enrolled == "YES" %}
+                                                <div class="alert alert-success">
+                                                    <i class="fa fa-check-square-o fa-fw"></i> {{ 'TheUserIsAlreadyRegisteredInTheSession'|get_plugin_lang('BuyCoursesPlugin') }}
+                                                </div>
+                                            {% elseif session.enrolled == "NO" %}
+                                                <div class="text-center">
+                                                    <a class="btn btn-success" href="{{ _p.web_plugin ~ 'buycourses/src/process.php?' ~ {'i': session.id, 't': 2}|url_encode() }}">
+                                                        <i class="fa fa-shopping-cart"></i> {{ 'Buy'|get_plugin_lang('BuyCoursesPlugin') }}
+                                                    </a>
+                                                </div>
+                                            {% elseif session.enrolled == "TMP" %}
+                                                <div class="alert alert-info">{{ 'WaitingToReceiveThePayment'|get_plugin_lang('BuyCoursesPlugin') }}</div>
+                                            {% endif %}
+                                        </div>
+                                    </div>
+                                </div>
+                            {% endfor %}
+                        {% endif %}
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 2 - 2
plugin/buycourses/view/index.tpl

@@ -34,11 +34,11 @@
         <div class="row">
             <div class="col-md-3">
                 <div class="thumbnail">
-                    <a href="src/list.php">
+                    <a href="src/course_catalog.php">
                         <img src="resources/img/128/buycourses.png">
                     </a>
                     <div class="caption">
-                        <a class="btn btn-default btn-sm" href="src/list.php">{{ 'BuyCourses'|get_plugin_lang('BuyCoursesPlugin') }}</a>
+                        <a class="btn btn-default btn-sm" href="src/course_catalog.php">{{ 'BuyCourses'|get_plugin_lang('BuyCoursesPlugin') }}</a>
                     </div>
                 </div>
             </div>

+ 0 - 170
plugin/buycourses/view/list.tpl

@@ -1,170 +0,0 @@
-<script type='text/javascript' src="../js/buycourses.js"></script>
-
-<link rel="stylesheet" type="text/css" href="../resources/css/style.css"/>
-
-<div id="buy-courses-tabs">
-    {% if sessions_are_included %}
-        <ul class="nav nav-tabs buy-courses-tabs" role="tablist">
-            <li id="buy-courses-tab" class="active" role="presentation">
-                <a href="#buy-courses" aria-controls="buy-courses" role="tab" data-toggle="tab">{{ 'Courses'|get_lang }}</a>
-            </li>
-            <li id="buy-sessions-tab" role="presentation">
-                <a href="#buy-sessions" aria-controls="buy-sessions" role="tab" data-toggle="tab">{{ 'Sessions'|get_lang }}</a>
-            </li>
-        </ul>
-    {% endif %}
-
-    <div class="tab-content">
-        <div id="buy-courses" class="tab-pane fade active in" aria-labelledby="buy-courses-tab" role="tabpanel">
-            <div class="row">
-                <div class="col-xs-12">
-                    <div class="panel panel-default">
-                        <div class="panel-heading">{{ 'SearchFilter'|get_plugin_lang('BuyCoursesPlugin') }}</div>
-                        <div class="panel-body">
-                            <div class="col-md-3">
-                                <div class="form-group">
-                                    <label>{{ 'CourseName'|get_lang }}:</label>
-                                    <input class="form-control" type="text" class="name" />
-                                </div>
-                            </div>
-                            <div class="col-md-3">
-                                <div class="form-group">
-                                    <label>{{ 'MinimumPrice'|get_plugin_lang('BuyCoursesPlugin') }}:</label>
-                                    <input type="text" class="form-control"/>
-                                </div>
-                            </div>
-                            <div class="col-md-3">
-                                <div class="form-group">
-                                    <label>{{ 'MaximumPrice'|get_plugin_lang('BuyCoursesPlugin') }}:</label>
-                                    <input type="text" class="form-control"/>
-                                </div>
-                            </div>
-                            <div class="col-md-3">
-                                <div class="top-button">
-                                    <input type="button" class="btn btn-success btn-block" value="{{ 'Search'|get_lang }}" id="courses_filter" />
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="row" id="course_results">
-                {% for course in courses %}
-                    <div class="col-md-3 col-sm-6">
-                        <div class="thumbnail">
-                            <img alt="{{ course.title }}" class="img-responsive" src="{{ course.course_img ? course.course_img : 'session_default.png'|icon() }}">
-                            <div class="caption">
-                                {% set course_description_url = _p.web_ajax ~ 'course_home.ajax.php?' ~ {'code': course.code, 'a': 'show_course_information'}|url_encode() %}
-                                <h3>
-                                    <a class="ajax" href="{{ course_description_url }}" data-title="{{ course.title }}">{{ course.title }}</a>
-                                </h3>
-                                <ul class="list-unstyled">
-                                    {% for teacher in course.teachers %}
-                                        <li><i class="fa fa-user"></i> {{ teacher }}</li>
-                                    {% endfor %}
-                                </ul>
-                                <p class="lead text-right">{{ course.currency }} {{ course.price }}</p>
-                                {% if course.enrolled == "YES" %}
-                                    <div class="alert alert-success">
-                                        <i class="fa fa-check-square-o fa-fw"></i> {{ 'TheUserIsAlreadyRegisteredInTheCourse'|get_plugin_lang('BuyCoursesPlugin') }}
-                                    </div>
-                                {% elseif course.enrolled == "NO" %}
-                                    <div class="text-center">
-                                        <a class="ajax btn btn-primary" title="" href="{{ course_description_url }}" data-title="{{ course.title }}">
-                                            <i class="fa fa-file-text"></i> {{ 'Description'|get_lang }}
-                                        </a>
-                                        <a class="btn btn-success" title="" href="{{ _p.web_plugin ~ 'buycourses/src/process.php?' ~ {'i': course.id, 't': 1}|url_encode() }}">
-                                            <i class="fa fa-shopping-cart"></i> {{ 'Buy'|get_plugin_lang('BuyCoursesPlugin') }}
-                                        </a>
-                                    </div>
-                                {% elseif course.enrolled == "TMP" %}
-                                    <div class="alert alert-info">{{ 'WaitingToReceiveThePayment'|get_plugin_lang('BuyCoursesPlugin') }}</div>
-                                {% endif %}
-                            </div>
-                        </div>
-                    </div>
-                {% endfor %}
-            </div>
-        </div>
-
-        {% if sessions_are_included %}
-            <div id="buy-sessions" class="tab-pane fade" aria-labelledby="buy-sessions-tab" role="tabpanel">
-                <div class="panel panel-default">
-                    <div class="panel-heading">
-                        {{ 'SearchFilter'|get_plugin_lang('BuyCoursesPlugin') }}
-                    </div>
-                    <div class="panel-body">
-                        <div class="col-md-3">
-                            <div class="form-group">
-                                <label>{{ 'SessionName'|get_lang }}:</label>
-                                <input type="text" class="form-control"/>
-                            </div>
-                        </div>
-                        <div class="col-md-3">
-                            <div class="form-group">
-                                <label>{{ 'MinimumPrice'|get_plugin_lang('BuyCoursesPlugin') }}:</label>
-                                <input type="text" class="form-control"/>
-                            </div>
-                        </div>
-                        <div class="col-md-3">
-                            <label>{{ 'MaximumPrice'|get_plugin_lang('BuyCoursesPlugin') }}:</label>
-                            <input type="text" class="form-control"/>
-                        </div>
-                        <div class="col-md-3">
-                            <div class="top-button">
-                                <input type="button" class="btn btn-success btn-block" value="{{ 'Search'|get_lang }}" id="sessions_filter" />
-                            </div>
-                        </div>
-                    </div>
-                </div>
-
-                <div class="row">
-                    {% for session in sessions %}
-                        <div class="col-md-3 col-sm-6">
-                            <div class="thumbnail">
-                                <img alt="{{ session.name }}" class="img-responsive" src="{{ session.image ? session.image : 'session_default.png'|icon() }}">
-                                <div class="caption">
-                                    <h3>
-                                        <a href="{{ _p.web ~ 'session/' ~ session.id ~ '/about/' }}">{{ session.name }}</a>
-                                    </h3>
-                                    {% if 'show_session_coach'|get_setting == 'true' %}
-                                        <p><i class="fa fa-user fa-fw"></i> {{ session.coach }}</p>
-                                    {% endif %}
-                                    <p><i class="fa fa-calendar fa-fw"></i> {{ session.dates.display }}</p>
-                                    <p class="lead text-right">{{ session.currency }} {{ session.price }}</p>
-                                    <ul class="list-unstyled">
-                                        {% for course in session.courses %}
-                                            <li>
-                                                <i class="fa fa-book fa-fw"></i> {{ course.title }}
-                                                {% if course.coaches|length %}
-                                                    <ul>
-                                                        {% for coach in course.coaches %}
-                                                            <li>{{ coach }}</li>
-                                                        {% endfor %}
-                                                    </ul>
-                                                {% endif %}
-                                            </li>
-                                        {% endfor %}
-                                    </ul>
-                                    {% if session.enrolled == "YES" %}
-                                        <div class="alert alert-success">
-                                            <i class="fa fa-check-square-o fa-fw"></i> {{ 'TheUserIsAlreadyRegisteredInTheSession'|get_plugin_lang('BuyCoursesPlugin') }}
-                                        </div>
-                                    {% elseif session.enrolled == "NO" %}
-                                        <div class="text-center">
-                                            <a class="btn btn-success" href="{{ _p.web_plugin ~ 'buycourses/src/process.php?' ~ {'i': session.id, 't': 2}|url_encode() }}">
-                                                <i class="fa fa-shopping-cart"></i> {{ 'Buy'|get_plugin_lang('BuyCoursesPlugin') }}
-                                            </a>
-                                        </div>
-                                    {% elseif session.enrolled == "TMP" %}
-                                        <div class="alert alert-info">{{ 'WaitingToReceiveThePayment'|get_plugin_lang('BuyCoursesPlugin') }}</div>
-                                    {% endif %}
-                                </div>
-                            </div>
-                        </div>
-                    {% endfor %}
-                </div>
-            </div>
-        {% endif %}
-    </div>
-</div>