Quellcode durchsuchen

Adding new action menu in order to view the session history

Julio Montoya vor 12 Jahren
Ursprung
Commit
3519c18564

+ 6 - 3
main/inc/global.inc.php

@@ -154,8 +154,8 @@ $app['languages_file'] = array();
 $app['installed'] = $alreadyInstalled;
 
 //Loading $app settings
-require_once __DIR__.'/../../src/ChamiloLMS/Resources/config/prod.php';
-//require_once __DIR__.'/../../src/ChamiloLMS/Resources/config/dev.php';
+//require_once __DIR__.'/../../src/ChamiloLMS/Resources/config/prod.php';
+require_once __DIR__.'/../../src/ChamiloLMS/Resources/config/dev.php';
 
 //Setting HttpCacheService provider in order to use do: $app['http_cache']->run();
 /*
@@ -339,7 +339,7 @@ $app->register(
 
 //Setting Twig options
 $app['twig'] = $app->share(
-    $app->extend('twig', function ($twig, $app) {
+    $app->extend('twig', function ($twig) {
         $twig->addFilter('get_lang', new Twig_Filter_Function('get_lang'));
         $twig->addFilter('get_path', new Twig_Filter_Function('api_get_path'));
         $twig->addFilter('get_setting', new Twig_Filter_Function('api_get_setting'));
@@ -357,6 +357,9 @@ $app['twig'] = $app->share(
     })
 );
 
+// Registering Menu extension
+$app->register(new \Knp\Menu\Silex\KnpMenuServiceProvider());
+
 //Monolog only available if cache is writable
 if (is_writable($app['cache.path'])) {
 

+ 1 - 3
main/inc/lib/course.lib.php

@@ -2927,9 +2927,7 @@ class CourseManager {
         return $html;
     }
 
-
-
-    function displayCourses($user_id, $filter, $load_dirs, $getCount, $start = null, $maxPerPage = null) {
+    static function displayCourses($user_id, $filter, $load_dirs, $getCount, $start = null, $maxPerPage = null) {
 
         // Table definitions
         $TABLECOURS                     = Database :: get_main_table(TABLE_MAIN_COURSE);

+ 127 - 81
main/inc/lib/page.lib.php

@@ -248,7 +248,7 @@ class PageController
      * @param array Array of attributes to add to the HTML block
      * @return string HTML <div> block
      * @assert ('a','') != ''
-     * @todo use the template system
+     * @todo use the menu builder
      */
     public function show_right_block($title, $content, $id, $params = null) {
         $app = $this->app;
@@ -817,28 +817,30 @@ class PageController
         $nbResults = CourseManager::displaySpecialCourses($user_id, $filter, $loadDirs, true);
 
         $html = CourseManager::displaySpecialCourses($user_id, $filter, $loadDirs, false, $start, $this->maxPerPage);
+        if (!empty($html)) {
 
-        $adapter = new FixedAdapter($nbResults, array());
-        $pagerfanta = new Pagerfanta($adapter);
-        $pagerfanta->setMaxPerPage($this->maxPerPage); // 10 by default
-        $pagerfanta->setCurrentPage($page); // 1 by default
-
-        $view = new TwitterBootstrapView();
+            $adapter = new FixedAdapter($nbResults, array());
+            $pagerfanta = new Pagerfanta($adapter);
+            $pagerfanta->setMaxPerPage($this->maxPerPage); // 10 by default
+            $pagerfanta->setCurrentPage($page); // 1 by default
 
-        $app = $this->app;
-        $routeGenerator = function($page) use ($app, $filter) {
-            return $app['url_generator']->generate('userportal', array(
-                    'filter' => $filter,
-                    'type' => 'courses',
-                    'page' => $page)
-            );
-        };
+            $view = new TwitterBootstrapView();
 
-        $pagination = $view->render($pagerfanta, $routeGenerator, array(
-            'proximity' => 3,
-        ));
+            $app = $this->app;
+            $routeGenerator = function($page) use ($app, $filter) {
+                return $app['url_generator']->generate('userportal', array(
+                        'filter' => $filter,
+                        'type' => 'courses',
+                        'page' => $page)
+                );
+            };
 
-        return $html.$pagination;
+            $pagination = $view->render($pagerfanta, $routeGenerator, array(
+                'proximity' => 3,
+            ));
+            $html .= $pagination;
+        }
+        return $html;
     }
 
     /**
@@ -864,29 +866,31 @@ class PageController
         $nbResults = CourseManager::displayCourses($user_id, $filter, $loadDirs, true);
 
         $html = CourseManager::displayCourses($user_id, $filter, $loadDirs, false, $start, $this->maxPerPage);
+        if (!empty($html)) {
 
-        $adapter = new FixedAdapter($nbResults, array());
-        $pagerfanta = new Pagerfanta($adapter);
-        $pagerfanta->setMaxPerPage($this->maxPerPage); // 10 by default
-        $pagerfanta->setCurrentPage($page); // 1 by default
-
-        $view = new TwitterBootstrapView();
+            $adapter = new FixedAdapter($nbResults, array());
+            $pagerfanta = new Pagerfanta($adapter);
+            $pagerfanta->setMaxPerPage($this->maxPerPage); // 10 by default
+            $pagerfanta->setCurrentPage($page); // 1 by default
 
-        $app = $this->app;
+            $view = new TwitterBootstrapView();
 
-        $routeGenerator = function($page) use ($app, $filter) {
-            return $app['url_generator']->generate('userportal', array(
-                    'filter' => $filter,
-                    'type' => 'courses',
-                    'page' => $page)
-            );
-        };
+            $app = $this->app;
 
-        $pagination = $view->render($pagerfanta, $routeGenerator, array(
-            'proximity' => 3,
-        ));
+            $routeGenerator = function($page) use ($app, $filter) {
+                return $app['url_generator']->generate('userportal', array(
+                        'filter' => $filter,
+                        'type' => 'courses',
+                        'page' => $page)
+                );
+            };
 
-        return $html.$pagination;
+            $pagination = $view->render($pagerfanta, $routeGenerator, array(
+                'proximity' => 3,
+            ));
+            $html .= $pagination;
+        }
+        return $html;
     }
 
     public function returnSessionsCategories($user_id, $filter, $page)
@@ -912,10 +916,9 @@ class PageController
         }
 
         $load_directories_preview = api_get_setting('show_documents_preview') == 'true' ? true : false;
-
         $sessions_with_category = $html;
 
-        if (is_array($session_categories)) {
+        if (isset($session_categories) && !empty($session_categories)) {
             foreach ($session_categories as $session_category) {
                 $session_category_id = $session_category['session_category']['id'];
 
@@ -999,42 +1002,82 @@ class PageController
                     $sessions_with_category .= CourseManager::course_item_parent(CourseManager::course_item_html($params, true), $html_sessions);
                 }
             }
-        }
 
-        $adapter = new FixedAdapter($nbResults, array());
+            $adapter = new FixedAdapter($nbResults, array());
 
-        $pagerfanta = new Pagerfanta($adapter);
+            $pagerfanta = new Pagerfanta($adapter);
 
-        $pagerfanta->setMaxPerPage($this->maxPerPage); // 10 by default
-        $pagerfanta->setCurrentPage($page); // 1 by default
+            $pagerfanta->setMaxPerPage($this->maxPerPage); // 10 by default
+            $pagerfanta->setCurrentPage($page); // 1 by default
 
-        $view = new TwitterBootstrapView();
+            $view = new TwitterBootstrapView();
 
-        $app = $this->app;
-        $routeGenerator = function($page) use ($app, $filter) {
-            return $app['url_generator']->generate('userportal', array(
-                    'filter' => $filter,
-                    'type' => 'sessioncategories',
-                    'page' => $page)
-            );
-        };
+            $app = $this->app;
+            $routeGenerator = function($page) use ($app, $filter) {
+                return $app['url_generator']->generate('userportal', array(
+                        'filter' => $filter,
+                        'type' => 'sessioncategories',
+                        'page' => $page
+                    ));
+            };
 
-        $pagination = $view->render($pagerfanta, $routeGenerator, array(
-            'proximity' => 3,
-        ));
-        return $sessions_with_category.$pagination;
+            $pagination = $view->render($pagerfanta, $routeGenerator, array(
+                'proximity' => 3,
+            ));
+            $sessions_with_category .= $pagination;
+        }
+        return $sessions_with_category;
     }
 
     public function returnSessions($user_id, $filter, $page) {
         if (empty($user_id)) {
             return false;
         }
+        $app = $this->app;
 
-        $load_history = (isset($filter) && $filter == 'history') ? true : false;
+        $loadHistory = (isset($filter) && $filter == 'history') ? true : false;
+
+        $app['session_menu'] = function($app) use ($loadHistory) {
+            $menu = $app['knp_menu.factory']->createItem('root');
+
+            $menu->setUri($app['request']->getRequestUri());
+
+            $menu->setChildrenAttributes(array(
+                'class' =>  'nav nav-tabs',
+                'currentClass' => 'active'
+            ));
+
+            $current = $menu->addChild(get_lang('Current'), array(
+                    'route' => 'userportal',
+                    'routeParameters' => array(
+                        'filter' => 'current',
+                        'type' => 'sessions'
+                    )
+                )
+            );
+            $history = $menu->addChild(get_lang('HistoryTrainingSession'), array(
+                    'route' => 'userportal',
+                    'routeParameters' => array(
+                        'filter' => 'history',
+                        'type' => 'sessions'
+                    )
+                )
+            );
+            //@todo use URIVoter
+            if ($loadHistory) {
+                $history->setCurrent(true);
+            } else {
+                $current->setCurrent(true);
+            }
+            return $menu;
+        };
+
+        //@todo move this in template
+        $app['knp_menu.menus'] = array('actions_menu' => 'session_menu');
 
         $start = ($page -1) * $this->maxPerPage;
 
-        if ($load_history) {
+        if ($loadHistory) {
             //Load sessions in category in *history*
             $nbResults = (int) UserManager::get_sessions_by_category($user_id, true, true, true, null, null, 'no_category');
             $session_categories = UserManager::get_sessions_by_category($user_id, true, false, true, $start, $this->maxPerPage, 'no_category');
@@ -1046,8 +1089,9 @@ class PageController
 
         $html = null;
         //Showing history title
-        if ($load_history) {
-            $html .= Display::page_subheader(get_lang('HistoryTrainingSession'));
+
+        if ($loadHistory) {
+           // $html .= Display::page_subheader(get_lang('HistoryTrainingSession'));
             if (empty($session_categories)) {
                 $html .= get_lang('YouDoNotHaveAnySessionInItsHistory');
             }
@@ -1057,7 +1101,8 @@ class PageController
 
         $sessions_with_no_category = $html;
 
-        if (is_array($session_categories)) {
+        if (isset($session_categories) && !empty($session_categories)) {
+
             foreach ($session_categories as $session_category) {
                 $session_category_id = $session_category['session_category']['id'];
 
@@ -1123,27 +1168,28 @@ class PageController
                     }
                 }
             }
-        }
-
-        $adapter = new FixedAdapter($nbResults, array());
-        $pagerfanta = new Pagerfanta($adapter);
-        $pagerfanta->setMaxPerPage($this->maxPerPage); // 10 by default
-        $pagerfanta->setCurrentPage($page); // 1 by default
 
-        $view = new TwitterBootstrapView();
-        $app = $this->app;
-        $routeGenerator = function($page) use ($app, $filter) {
-            return $app['url_generator']->generate('userportal', array(
-                'filter' => $filter,
-                'type' => 'sessions',
-                'page' => $page)
-            );
-        };
+            $adapter = new FixedAdapter($nbResults, array());
+            $pagerfanta = new Pagerfanta($adapter);
+            $pagerfanta->setMaxPerPage($this->maxPerPage); // 10 by default
+            $pagerfanta->setCurrentPage($page); // 1 by default
+
+            $view = new TwitterBootstrapView();
+            $app = $this->app;
+            $routeGenerator = function($page) use ($app, $filter) {
+                return $app['url_generator']->generate('userportal', array(
+                        'filter' => $filter,
+                        'type' => 'sessions',
+                        'page' => $page)
+                );
+            };
 
-        $pagination = $view->render($pagerfanta, $routeGenerator, array(
-            'proximity' => 3,
-        ));
-        return $sessions_with_no_category.$pagination;
+            $pagination = $view->render($pagerfanta, $routeGenerator, array(
+                'proximity' => 3,
+            ));
+            $sessions_with_no_category .= $pagination;
+        }
+        return $sessions_with_no_category;
     }
 
     /**

+ 6 - 2
main/template/default/layout/page_body.tpl

@@ -5,15 +5,19 @@
     </div>
 {% endif %}
 
+{% if actions_menu != '' %}
+    {{ knp_menu_render('actions_menu', { 'currentClass': 'active'}) }}
+{% endif %}
+
 {#  Page header #}
-{% if header != '' %}    
+{% if header != '' %}
     <div class="page-header">
         <h1>{{ header }}</h1>
     </div>
 {% endif %}
 
 {#  Show messages #}
-{% if message != '' %}    
+{% if message != '' %}
     <section id="messages">
         {{ message}}
     </section>

+ 2 - 2
src/ChamiloLMS/Composer/Tasks.php

@@ -6,10 +6,10 @@ class Tasks
 {
     public static function postInstall()
     {
-        chmod('../../app/cache', 0777);
+        /*chmod('../../app/cache', 0777);
         chmod('../../app/config', 0777);
         chmod('../../app/courses', 0777);
-        chmod('../../app/logs', 0777);
+        chmod('../../app/logs', 0777);*/
         //chmod('console', 0500);
         //exec('php console assetic:dump');
     }

+ 9 - 0
src/ChamiloLMS/Controller/UserPortalController.php

@@ -55,6 +55,15 @@ class UserPortalController
             $app['page_controller']->return_welcome_to_course_block($app['template']);
         }
 
+        /*
+        $app['my_main_menu'] = function($app) {
+            $menu = $app['knp_menu.factory']->createItem('root');
+            $menu->addChild('Home', array('route' => api_get_path(WEB_CODE_PATH)));
+            return $menu;
+        };
+        $app['knp_menu.menus'] = array('main' => 'my_main_menu');*/
+
+
         $app['template']->assign('content', $items);
 
         $app['page_controller']->getSectionCourseBlock();