Adding breadcrumb for the new question pool page

skala
Julio Montoya 12 years ago
parent 8c6c803d1e
commit ced8a75226
  1. 17
      main/inc/services.php
  2. 30
      main/template/default/layout/bread.tpl
  3. 8
      main/template/default/layout/main_header.tpl
  4. 2
      main/template/default/layout/page_body.tpl
  5. 77
      src/ChamiloLMS/Controller/CommonController.php
  6. 67
      src/ChamiloLMS/Controller/ExerciseController.php

@ -271,9 +271,12 @@ if (is_writable($app['sys_temp_path'])) {
if ($app['debug']) {
// Adding symfony2 web profiler (memory, time, logs, etc)
if (api_get_setting('allow_web_profiler') == 'true') {
$app->register($p = new Silex\Provider\WebProfilerServiceProvider(), array(
'profiler.cache_dir' => $app['profiler.cache_dir'],
));
$app->register(
$p = new Silex\Provider\WebProfilerServiceProvider(),
array(
'profiler.cache_dir' => $app['profiler.cache_dir'],
)
);
$app->mount('/_profiler', $p);
}
//$app->register(new Whoops\Provider\Silex\WhoopsServiceProvider);
@ -281,8 +284,6 @@ if (is_writable($app['sys_temp_path'])) {
}
}
// Registering Menu service provider (too gently creating menus with the URLgenerator provider)
$app->register(new \Knp\Menu\Silex\KnpMenuServiceProvider());
// Pagerfanta settings (Pagination using Doctrine2, arrays, etc)
use FranMoreno\Silex\Provider\PagerfantaServiceProvider;
@ -302,13 +303,15 @@ $app['pagerfanta.view.options'] = array(
'default_view' => 'twitter_bootstrap' // the pagination style
);
// Registering Menu service provider (too gently creating menus with the URLgenerator provider)
$app->register(new \Knp\Menu\Silex\KnpMenuServiceProvider());
// @todo use a app['image_processor'] setting
define('IMAGE_PROCESSOR', 'gd'); // imagick or gd strings
// Setting the Imagine service provider to deal with image transformations used in social group.
$app->register(new Grom\Silex\ImagineServiceProvider(), array(
'imagine.factory' => 'Gd',
//'imagine.base_path' => __DIR__.'/vendor/imagine',
'imagine.factory' => 'Gd'
));
// Prompts Doctrine SQL queries using monolog

@ -0,0 +1,30 @@
{% block compressed_root %}
{% spaceless %}
{{ block('root') }}
{% endspaceless %}
{% endblock %}
{% block root %}
{{ block('breadcrumb') }}
{% endblock %}
{% block breadcrumb %}
{% if item %}
<ul class="breadcrumb">
{{ block('item') }}
</ul>
{% endif %}
{% endblock %}
{% block item %}
{% for item in item.children %}
{% if matcher.isCurrent(item) %}
<li class="active">{{ block('label') }}</li>
{% else %}
<li><a href="{{ item.uri }}">{{ block('label') }}</a> <span class="divider">/</span></li>
{% endif %}
{% endfor %}
{% endblock %}
{% block label %}
{{ item.label }}
{% endblock %}

@ -98,10 +98,12 @@
{% include app.template_style ~ "/layout/menu.tpl" %}
{# breadcrumb #}
{{ breadcrumb }}
{% if app.breadcrumbs %}
{{ app.breadcrumbs }}
{% else %}
{{ breadcrumb }}
{% endif %}
</header>
{% if app.full_width == 1 %}
<div id="top_main_content" class="row-fluid">
{% else %}

@ -28,4 +28,4 @@
<section id="welcome_to_course">
{% include app.template_style ~ "/layout/welcome_to_course.tpl" %}
</section>
{% endif %}
{% endif %}

@ -3,6 +3,9 @@
namespace ChamiloLMS\Controller;
use \ChamiloSession as Session;
use Silex\Application;
use Knp\Menu\Matcher\Matcher;
/**
* @package ChamiloLMS.CommonController
@ -21,32 +24,58 @@ class CommonController
}
/**
*
* @param Application $app
* @param $breadcrumbs
*/
public function cidReset()
public function setBreadcrumb(Application $app, $breadcrumbs)
{
Session::erase('_cid');
Session::erase('_real_cid');
Session::erase('_course');
if (!empty($_SESSION)) {
foreach ($_SESSION as $key => $item) {
if (strpos($key,'lp_autolunch_') === false) {
continue;
} else {
if (isset($_SESSION[$key])) {
Session::erase($key);
}
}
}
}
//Deleting session info
if (api_get_session_id()) {
Session::erase('id_session');
Session::erase('session_name');
}
if (api_get_group_id()) {
Session::erase('_gid');
$courseInfo = api_get_course_info();
// Adding course breadcrumb.
if (!empty($courseInfo)) {
$courseBreadcrumb = array(
'name' => \Display::return_icon('home.png').' '.$courseInfo['title'],
'url' => array(
'route' => 'course',
'routeParameters' => array(
'cidReq' => api_get_course_id(),
'id_session' => api_get_session_id()
)
)
);
array_unshift($breadcrumbs, $courseBreadcrumb);
}
$app['main_breadcrumb'] = function ($app) use ($breadcrumbs) {
/** @var \Knp\Menu\Silex\RouterAwareFactory $menu */
$menu = $app['knp_menu.factory']->createItem(
'root',
array(
'childrenAttributes' => array(
'class' => 'breadcrumb',
'currentClass' => 'active'
)
)
);
foreach ($breadcrumbs as $item) {
$menu->addChild($item['name'], $item['url']);
}
return $menu;
};
$matcher = new Matcher();
$voter = new \Knp\Menu\Silex\Voter\RouteVoter();
$voter->setRequest($app['request']);
$matcher->addVoter($voter);
$renderer = new \Knp\Menu\Renderer\TwigRenderer($app['twig'], 'bread.tpl', $matcher);
$bread = $renderer->render(
$app['main_breadcrumb'],
array(
'template' => 'default/layout/bread.tpl'
)
);
$app['breadcrumbs'] = $bread;
}
}

@ -9,11 +9,12 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use \ChamiloSession as Session;
/**
* @package ChamiloLMS.Controller
* @author Julio Montoya <gugli100@gmail.com>
*/
class ExerciseController
class ExerciseController extends CommonController
{
public function dashboardAction(Application $app, $exerciseId)
@ -101,6 +102,52 @@ class ExerciseController
$extraJS[] = api_get_jqgrid_js();
$app['extraJS'] = $extraJS;
// @todo this should be auto
if (empty($exerciseId)) {
$breadcrumbs = array(
array(
'name' => get_lang('Exercise'),
'url' => array(
'uri' => api_get_path(WEB_CODE_PATH).'exercice/exercice.php?'.api_get_cidreq()
)
),
array(
'name' => get_lang('QuestionPool'),
'url' => array(
'route' => 'exercise_question_pool_global',
'routeParameters' => array(
'cidReq' => api_get_course_id(),
'id_session' => api_get_session_id(),
//'exerciseId' => $exerciseId,
)
)
)
);
} else {
$breadcrumbs = array(
array(
'name' => get_lang('Exercise'),
'url' => array(
'uri' => api_get_path(WEB_CODE_PATH).'exercice/admin.php?'.api_get_cidreq().'&exerciseId'.$exerciseId
)
),
array(
'name' => get_lang('QuestionPool'),
'url' => array(
'route' => 'exercise_question_pool',
'routeParameters' => array(
'cidReq' => api_get_course_id(),
'id_session' => api_get_session_id(),
'exerciseId' => $exerciseId,
)
)
)
);
}
$this->setBreadcrumb($app, $breadcrumbs);
$questionColumns = \Question::getQuestionColumns($cidReq);
//$questionColumns = \Question::getQuestionColumns($cidReq, null, null, true);
@ -212,7 +259,14 @@ class ExerciseController
$question->setDefaultValues = true;
// Generating edit URL.
$url = $app['url_generator']->generate('exercise_question_edit', array('cidReq' => api_get_course_id(), 'id_session' => api_get_session_id(), 'id' => $id));
$url = $app['url_generator']->generate(
'exercise_question_edit',
array(
'cidReq' => api_get_course_id(),
'id_session' => api_get_session_id(),
'id' => $id
)
);
// Creating a new form
$form = new \FormValidator('edit_question', 'post', $url);
@ -229,7 +283,14 @@ class ExerciseController
// Save answers.
$question->processAnswersCreation($form);
$url = $app['url_generator']->generate('exercise_question_show', array('cidReq' => api_get_course_id(), 'id_session' => api_get_session_id(), 'id' => $id));
$url = $app['url_generator']->generate(
'exercise_question_show',
array(
'cidReq' => api_get_course_id(),
'id_session' => api_get_session_id(),
'id' => $id
)
);
return $app->redirect($url);
}

Loading…
Cancel
Save