Fixing elfinder + ckeditor + course and session loaders see #7006 + BT#7058

1.10.x
Julio Montoya 12 years ago
parent 14fb89e5b1
commit 08840adb8f
  1. 2
      main/create_course/add_course.php
  2. 2
      main/document/document_lite.php
  3. 41
      main/inc/global.inc.php
  4. 2
      main/inc/lib/display.lib.php
  5. 2
      main/inc/lib/pdf.lib.php
  6. 173
      main/inc/lib/template.lib.php
  7. 112
      main/inc/services.php
  8. 2
      main/social/friends.php
  9. 6
      src/ChamiloLMS/Component/Editor/CkEditor/CkEditor.php
  10. 4
      src/ChamiloLMS/Component/Editor/Connector.php
  11. 2
      src/ChamiloLMS/Component/Editor/Driver/DropBoxDriver.php
  12. 13
      src/ChamiloLMS/Component/Editor/Editor.php
  13. 6
      src/ChamiloLMS/Component/Editor/TinyMce/TinyMce.php
  14. 5
      src/ChamiloLMS/Controller/Admin/QuestionManager/QuestionManagerController.php
  15. 4
      src/ChamiloLMS/Controller/BaseController.php
  16. 5
      src/ChamiloLMS/Controller/ExerciseController.php
  17. 5
      src/ChamiloLMS/Controller/IndexController.php
  18. 4
      src/ChamiloLMS/Controller/LegacyController.php
  19. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/branches/add.tpl
  20. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/branches/add_from_parent.tpl
  21. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/branches/edit.tpl
  22. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/branches/list.tpl
  23. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/branches/read.tpl
  24. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/juries/add.tpl
  25. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/juries/add_members.tpl
  26. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/juries/edit.tpl
  27. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/juries/list.tpl
  28. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/juries/read.tpl
  29. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/question_score/add.tpl
  30. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/question_score/edit.tpl
  31. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/question_score/list.tpl
  32. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/question_score/read.tpl
  33. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/question_score_name/add.tpl
  34. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/question_score_name/edit.tpl
  35. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/question_score_name/list.tpl
  36. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/question_score_name/read.tpl
  37. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/role/add.tpl
  38. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/role/edit.tpl
  39. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/role/list.tpl
  40. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/role/read.tpl
  41. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/role_index.tpl
  42. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/upgrade/index.tpl
  43. 0
      src/ChamiloLMS/Resources/views/default/admin/administrator/upgrade/upgrade.tpl
  44. 0
      src/ChamiloLMS/Resources/views/default/admin/director/branches/list.tpl
  45. 0
      src/ChamiloLMS/Resources/views/default/admin/director/branches/read.tpl
  46. 0
      src/ChamiloLMS/Resources/views/default/admin/index.tpl
  47. 0
      src/ChamiloLMS/Resources/views/default/admin/jury_member/index.tpl
  48. 0
      src/ChamiloLMS/Resources/views/default/admin/jury_member/score_user.tpl
  49. 0
      src/ChamiloLMS/Resources/views/default/admin/jury_president/assign_members.tpl
  50. 0
      src/ChamiloLMS/Resources/views/default/admin/jury_president/check_answers.tpl
  51. 0
      src/ChamiloLMS/Resources/views/default/admin/jury_president/index.tpl
  52. 0
      src/ChamiloLMS/Resources/views/default/admin/questionmanager/edit_category.tpl
  53. 0
      src/ChamiloLMS/Resources/views/default/admin/questionmanager/edit_question.tpl
  54. 0
      src/ChamiloLMS/Resources/views/default/admin/questionmanager/question_categories.tpl
  55. 0
      src/ChamiloLMS/Resources/views/default/admin/questionmanager/questionmanager.tpl
  56. 0
      src/ChamiloLMS/Resources/views/default/admin/questionmanager/questions.tpl
  57. 0
      src/ChamiloLMS/Resources/views/default/admin/questionmanager/role_index.tpl
  58. 0
      src/ChamiloLMS/Resources/views/default/admin/questionmanager/show_category.tpl
  59. 0
      src/ChamiloLMS/Resources/views/default/admin/session_manager/role_index.tpl
  60. 0
      src/ChamiloLMS/Resources/views/default/agenda/month.tpl
  61. 0
      src/ChamiloLMS/Resources/views/default/app/session_path/add.tpl
  62. 0
      src/ChamiloLMS/Resources/views/default/app/session_path/edit.tpl
  63. 0
      src/ChamiloLMS/Resources/views/default/app/session_path/list.tpl
  64. 0
      src/ChamiloLMS/Resources/views/default/app/session_path/read.tpl
  65. 0
      src/ChamiloLMS/Resources/views/default/app/session_path/session_tree/add.tpl
  66. 0
      src/ChamiloLMS/Resources/views/default/app/session_path/session_tree/list.tpl
  67. 0
      src/ChamiloLMS/Resources/views/default/auth/categories_list.php
  68. 0
      src/ChamiloLMS/Resources/views/default/auth/courses_categories.php
  69. 0
      src/ChamiloLMS/Resources/views/default/auth/courses_list.php
  70. 0
      src/ChamiloLMS/Resources/views/default/auth/layout.php
  71. 0
      src/ChamiloLMS/Resources/views/default/auth/login.tpl
  72. 66
      src/ChamiloLMS/Resources/views/default/course_description/edit.tpl
  73. 216
      src/ChamiloLMS/Resources/views/default/course_description/index.tpl
  74. 28
      src/ChamiloLMS/Resources/views/default/course_description/upload.tpl
  75. 0
      src/ChamiloLMS/Resources/views/default/create_course/add_course.tpl
  76. 0
      src/ChamiloLMS/Resources/views/default/crud_macros/course_crud.tpl
  77. 0
      src/ChamiloLMS/Resources/views/default/crud_macros/simple_crud.tpl
  78. 0
      src/ChamiloLMS/Resources/views/default/exercise/question/edit_question.tpl
  79. 0
      src/ChamiloLMS/Resources/views/default/exercise/question/show_question.tpl
  80. 0
      src/ChamiloLMS/Resources/views/default/exercise/question_pool.tpl
  81. 0
      src/ChamiloLMS/Resources/views/default/export/table_pdf.tpl
  82. 0
      src/ChamiloLMS/Resources/views/default/form/form_custom_template.tpl
  83. 0
      src/ChamiloLMS/Resources/views/default/glossary/csv.tpl
  84. 16
      src/ChamiloLMS/Resources/views/default/glossary/edit.tpl
  85. 12
      src/ChamiloLMS/Resources/views/default/glossary/header.tpl
  86. 78
      src/ChamiloLMS/Resources/views/default/glossary/index.tpl
  87. 54
      src/ChamiloLMS/Resources/views/default/glossary/javascript.tpl
  88. 68
      src/ChamiloLMS/Resources/views/default/glossary/list.tpl
  89. 144
      src/ChamiloLMS/Resources/views/default/glossary/table.tpl
  90. 16
      src/ChamiloLMS/Resources/views/default/glossary/upload.tpl
  91. 0
      src/ChamiloLMS/Resources/views/default/index/course_block.tpl
  92. 0
      src/ChamiloLMS/Resources/views/default/index/course_session_block.tpl
  93. 0
      src/ChamiloLMS/Resources/views/default/index/help_block.tpl
  94. 0
      src/ChamiloLMS/Resources/views/default/index/navigation_block.tpl
  95. 0
      src/ChamiloLMS/Resources/views/default/index/notice_block.tpl
  96. 0
      src/ChamiloLMS/Resources/views/default/index/profile_block.tpl
  97. 0
      src/ChamiloLMS/Resources/views/default/index/profile_social_block.tpl
  98. 0
      src/ChamiloLMS/Resources/views/default/index/session_block.tpl
  99. 0
      src/ChamiloLMS/Resources/views/default/index/skills_block.tpl
  100. 0
      src/ChamiloLMS/Resources/views/default/index/teacher_block.tpl
  101. Some files were not shown because too many files have changed in this diff Show More

@ -236,7 +236,7 @@ if ($form->validate()) {
$tpl->assign('course_title', Display::url($title, $link));
$tpl->assign('course_id', $course_info['code']);
$template = $tpl->get_template('create_course/add_course.tpl');
$template = $tpl->getTemplate('create_course/add_course.tpl');
$tpl->display($template);
} else {
$message = Display :: return_message(get_lang('CourseCreationFailed'), 'error', false);

@ -1029,7 +1029,7 @@ $(function() {
require_once 'controller.php';
$controller = new DocumentController();
$tpl = $controller->tpl->get_template('layout/layout_2_col.tpl');
$tpl = $controller->tpl->getTemplate('layout/layout_2_col.tpl');
$content = Display::grid_html('documents');
if (!is_null($docs_and_folders)) {

@ -25,6 +25,9 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Yaml\Parser;
use Symfony\Component\Translation\Loader\PoFileLoader;
use Symfony\Component\Translation\Loader\MoFileLoader;
use Symfony\Component\Finder\Finder;
// Determine the directory path for this file.
$includePath = dirname(__FILE__);
@ -290,11 +293,8 @@ $cidReset = null;
/** Silex Middlewares. */
/** A "before" middleware allows you to tweak the Request before the controller is executed. */
use Symfony\Component\Translation\Loader\PoFileLoader;
use Symfony\Component\Translation\Loader\MoFileLoader;
use Symfony\Component\Finder\Finder;
/* A "before" middleware allows you to tweak the Request
* before the controller is executed. */
$app->before(
@ -555,37 +555,6 @@ $app->before(
var_dump(api_get_course_id());exit;
}*/
// Setting course entity for controllers and templates.
// The course parameter is loaded.
$courseCode = $request->get('course');
if (empty($courseCode)) {
$courseCode = api_get_course_id();
}
if (!empty($courseCode)) {
// Converting /courses/XXX/ to a Entity/Course object.
$course = $app['orm.em']->getRepository('Entity\Course')->findOneByCode($courseCode);
$app['course'] = $course;
$app['template']->assign('course', $course);
$sessionId = $request->get('id_session');
if (empty($sessionId)) {
$sessionId = api_get_session_id();
}
$courseSession = $app['orm.em']->getRepository('Entity\Session')->findOneById($sessionId);
$app['course_session'] = $courseSession;
$app['template']->assign('course_session', $courseSession);
} else {
$app['course'] = null;
}
$app['session']->set('course_session', $app['course']);
$studentView = $request->get('isStudentView');
if (!empty($studentView)) {
if ($studentView == 'true') {

@ -63,7 +63,7 @@ class Display
{
global $app;
global $tool_name, $show_learnpath;
$disable_js_and_css_files = true;
$app['template']->disableJsAndCss = true;
$app['template.show_header'] = false;
$app['template.show_footer'] = false;
$app['template.show_learnpath'] = $show_learnpath;

@ -86,7 +86,7 @@ class PDF
Display::$global_template->assign('add_signatures', $this->params['add_signatures']);
//Getting template
$tpl = Display::$global_template->get_template('export/table_pdf.tpl');
$tpl = Display::$global_template->getTemplate('export/table_pdf.tpl');
$html = Display::$global_template->fetch($tpl);
$html = api_utf8_encode($html);

@ -11,6 +11,7 @@ use Silex\Application;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Routing\Router;
use ChamiloLMS\Component\Editor\Editor;
class Template
{
@ -31,6 +32,8 @@ class Template
public $force_plugin_load = true;
public $navigation_array;
public $loadBreadcrumb = true;
public $resources = array();
public $disableJsAndCss = false;
/** @var SecurityContext */
private $security;
@ -38,6 +41,8 @@ class Template
private $translator;
/** @var Router */
private $urlGenerator;
/** @var Editor */
private $htmlEditor;
/**
* @param Application $app
@ -52,11 +57,13 @@ class Template
SecurityContext $security,
Translator $translator,
Router $urlGenerator
//Editor $htmlEditor
) {
$this->app = &$app;
$this->security = $security;
$this->translator = $translator;
$this->urlGenerator = $urlGenerator;
//$this->htmlEditor = $htmlEditor;
$this->app['classic_layout'] = true;
$this->navigation_array = $this->returnNavigationArray();
@ -199,7 +206,7 @@ class Template
* */
public function display_one_col_template()
{
$tpl = $this->get_template('layout/layout_1_col.tpl');
$tpl = $this->getTemplate('layout/layout_1_col.tpl');
$this->display($tpl);
}
@ -208,7 +215,7 @@ class Template
* */
public function display_two_col_template()
{
$tpl = $this->get_template('layout/layout_2_col.tpl');
$tpl = $this->getTemplate('layout/layout_2_col.tpl');
$this->display($tpl);
}
@ -217,7 +224,7 @@ class Template
*/
public function display_blank_template()
{
$tpl = $this->get_template('layout/blank.tpl');
$tpl = $this->getTemplate('layout/blank.tpl');
$this->display($tpl);
}
@ -226,7 +233,7 @@ class Template
*/
public function display_no_layout_template()
{
$tpl = $this->get_template('layout/no_layout.tpl');
$tpl = $this->getTemplate('layout/no_layout.tpl');
$this->display($tpl);
}
@ -316,8 +323,6 @@ class Template
$this->course_id = api_get_course_int_id();
$this->app['course_code'] = api_get_course_id();
$this->app['session_id'] = api_get_session_id();
//$this->app['page_controller']->return_welcome_to_course_block($this->app['template']);
}
/**
@ -392,9 +397,7 @@ class Template
*/
private function setCssFiles()
{
global $disable_js_and_css_files;
$css = array();
$this->theme = api_get_visual_theme();
if (isset($_POST['style']) && api_is_platform_admin()) {
$this->preview_theme = $_POST['style'];
@ -430,7 +433,6 @@ class Template
}
$css[] = api_get_path(WEB_LIBRARY_JS_PATH).'jquery-ui/css/'.$this->jquery_ui_theme.'/jquery-ui-custom.css';
//$css[] = api_get_path(WEB_LIBRARY_JS_PATH).'jquery-ui/default.css';
}
$css[] = api_get_path(WEB_LIBRARY_JS_PATH).'font-awesome/css/font-awesome.css';
@ -442,68 +444,16 @@ class Template
// Default theme CSS.
$css[] = api_get_cdn_path($cssPath.'themes/'.$this->theme.'/default.css');
$css_file_to_string = null;
foreach ($css as $file) {
$css_file_to_string .= api_get_css($file);
}
// @todo move this somewhere else. Special fix when using tablets in order to see the text near icons
if (SHOW_TEXT_NEAR_ICONS == true) {
//hack in order to fix the actions buttons
$css_file_to_string .= '<style>
.td_actions a {
float:left;
width:100%;
}
.forum_message_left a {
float:left;
width:100%;
}
</style>';
}
$navigator_info = api_get_navigator();
if ($navigator_info['name'] == 'Internet Explorer' && $navigator_info['version'] == '6') {
$css_file_to_string .= 'img, div { behavior: url('.api_get_path(
WEB_LIBRARY_JS_PATH
).'iepngfix/iepngfix.htc) } '."\n";
}
if (!$disable_js_and_css_files) {
$style_print = api_get_css(api_get_cdn_path($cssPath.'themes/'.$this->theme.'/print.css'), 'print');
$this->assign('css_style_print', $style_print);
$this->assign('css_file_to_string', $css_file_to_string);
}
}
/**
* @param array $htmlHeadXtra
*/
public function addJsFiles($htmlHeadXtra = array())
{
$extra_headers = null;
if (isset($htmlHeadXtra) && $htmlHeadXtra) {
foreach ($htmlHeadXtra as $this_html_head) {
$extra_headers .= $this_html_head."\n";
}
}
$this->addResource($css, 'css');
if (isset($this->app['extraJS'])) {
foreach ($this->app['extraJS'] as $this_html_head) {
$extra_headers .= $this_html_head."\n";
}
if (!$this->disableJsAndCss) {
$style = api_get_css(api_get_cdn_path($cssPath.'themes/'.$this->theme.'/print.css'), 'print');
$this->addResource($style, 'no_js_css');
}
$this->assign('extra_headers', $extra_headers);
}
/**
* Sets JS files
*/
private function setJsFiles()
public function setJsFiles()
{
global $disable_js_and_css_files, $htmlHeadXtra;
$jsFolder = api_get_path(WEB_LIBRARY_JS_PATH);
if ($this->app['assetic.enabled']) {
@ -530,7 +480,7 @@ class Template
);
}
$this->app['html_editor']->getJavascriptToInclude($jsFiles);
//$this->app['html_editor']->getJavascriptToInclude();
if (api_is_global_chat_enabled()) {
//Do not include the global chat in LP
@ -550,35 +500,74 @@ class Template
if (api_get_setting('disable_copy_paste') == 'true') {
$jsFiles[] = $jsFolder.'jquery.nocutcopypaste.js';
}
$this->addResource($jsFiles, 'js');
}
$js_file_to_string = null;
foreach ($jsFiles as $js_file) {
$js_file_to_string .= api_get_js_simple($js_file);
}
// Loading email_editor js.
if (!api_is_anonymous() && api_get_setting('allow_email_editor') == 'true') {
$js_file_to_string .= $this->fetch($this->app['template_style'].'/mail_editor/email_link.js.tpl');
}
if (!$disable_js_and_css_files) {
$this->assign('js_file_to_string', $js_file_to_string);
/**
* Get resource list.
* @return array
*/
public function getResources()
{
return $this->resources;
}
$extra_headers = null;
if (isset($htmlHeadXtra) && $htmlHeadXtra) {
foreach ($htmlHeadXtra as $this_html_head) {
$extra_headers .= $this_html_head."\n";
}
/**
* Add an item to the resources array.
* @param string $resource
* @param string $type js or css
*/
public function addResource($resource, $type)
{
if (is_array($resource)) {
if (isset($this->resources[$type])) {
$this->resources[$type] = array_merge($this->resources[$type], $resource);
} else {
$this->resources[$type] = $resource;
}
} else {
$this->resources[$type][] = $resource;
}
}
if (isset($this->app['extraJS'])) {
foreach ($this->app['extraJS'] as $this_html_head) {
$extra_headers .= $this_html_head."\n";
}
/**
* @return string
*/
public function parseResources()
{
$resourceToString = null;
foreach ($this->resources as $type => $resources) {
switch($type) {
case 'js':
if ($this->disableJsAndCss == false) {
foreach($resources as $resource) {
$resourceToString .= api_get_js_simple($resource);
}
}
break;
case 'css':
if ($this->disableJsAndCss == false) {
foreach($resources as $resource) {
$resourceToString .= api_get_css($resource);
}
}
break;
case 'string':
if ($this->disableJsAndCss == false) {
foreach($resources as $resource) {
$resourceToString .= $resource;
}
}
break;
case 'no_js_css':
foreach($resources as $resource) {
$resourceToString .= $resource;
}
break;
}
$this->assign('extra_headers', $extra_headers);
}
$this->assign('resources', $resourceToString);
}
/**
@ -955,7 +944,7 @@ class Template
if (empty($layout)) {
$layout = $this->app['default_layout'];
}
$this->addJsFiles();
$this->parseResources();
return $this->app['twig']->render($this->app['template_style'].'/layout/'.$layout);
}
@ -987,7 +976,7 @@ class Template
*/
public function renderTemplate($template, $elements = array())
{
$this->addJsFiles();
$this->parseResources();
return $this->app['twig']->render($this->app['template_style'].'/'.$template, $elements);
}

@ -35,10 +35,8 @@ $app->register(new Flint\Provider\RoutingServiceProvider(), array(
if (isset($app['configuration']['services']['media-alchemyst'])) {
$app->register(new MediaAlchemystServiceProvider());
$app->register(new PHPExiftoolServiceProvider());
$app->register(new FFMpegServiceProvider());
$app->register(new MediaVorusServiceProvider(), array(
'media-alchemyst.configuration' => array(
'ffmpeg.threads' => 4,
@ -197,6 +195,7 @@ $app['allow_admin_toolbar'] = array(
'ROLE_QUESTION_MANAGER',
'ROLE_SESSION_MANAGER'
);
/*
use ChamiloLMS\Component\Auth\CourseVoter;
use ChamiloLMS\Component\Auth\CourseAccessDecisionManager;
@ -236,8 +235,6 @@ if (!empty($strategies)) {
$app->register(new OpauthExtension());
}
/*
$app['security.access_manager'] = $app->share(function($app) {
return new AccessDecisionManager($app['security.voters'], 'unanimous');
@ -256,12 +253,12 @@ $app->register(new Silex\Provider\TranslationServiceProvider(), array(
// Validator provider.
$app->register(new Silex\Provider\ValidatorServiceProvider());
// Form provider
// Form provider.
$app->register(new Silex\Provider\FormServiceProvider(), array(
'form.secret' => sha1(__DIR__)
));
// URL generator provider
// URL generator provider.
//$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
class ManagerRegistry extends AbstractManagerRegistry
@ -294,14 +291,14 @@ class ManagerRegistry extends AbstractManagerRegistry
}
}
// Setting up the Manager registry
// Setting up the Manager registry in order to use entity in forms.
$app['manager_registry'] = $app->share(function() use ($app) {
$managerRegistry = new ManagerRegistry(null, array('db'), array('orm.em'), null, null, $app['orm.proxies_namespace']);
$managerRegistry->setContainer($app);
return $managerRegistry;
});
// Needed to use the "entity" option in Symfony forms
// Needed to use the "entity" option in Symfony forms.
$app['form.extensions'] = $app->share($app->extend('form.extensions', function ($extensions, $app) {
$extensions[] = new \Symfony\Bridge\Doctrine\Form\DoctrineOrmExtension($app['manager_registry']);
return $extensions;
@ -315,7 +312,7 @@ $app['validator.validator_factory'] = $app->share(function ($app) {
return $factory;
});
// Setting Doctrine service provider (DBAL)
// Setting Doctrine service provider (DBAL).
if (isset($app['configuration']['main_database'])) {
/* The database connection can be overwritten if you set $_configuration['db.options']
@ -360,6 +357,7 @@ if (isset($app['configuration']['main_database'])) {
$defaultDatabaseOptions = $app['configuration']['db.options'];
}
// Doctrine service provider.
$app->register(
new Silex\Provider\DoctrineServiceProvider(),
array(
@ -418,7 +416,7 @@ $app->register(
new Silex\Provider\TwigServiceProvider(),
array(
'twig.path' => array(
$app['sys_root'].'main/template', //template folder
$app['sys_root'].'src/ChamiloLMS/Resources/views', //template folder
$app['sys_root'].'plugin' //plugin folder
),
// twitter bootstrap form twig templates
@ -434,7 +432,7 @@ $app->register(
)
);
// Setting Twig options
// Setting Twig options.
$app['twig'] = $app->share(
$app->extend('twig', function ($twig) {
$twig->addFilter('get_lang', new Twig_Filter_Function('get_lang'));
@ -500,9 +498,9 @@ $app->register(new Grom\Silex\ImagineServiceProvider(), array(
// Prompts Doctrine SQL queries using Monolog.
$app['dbal_logger'] = $app->share(function() {
//return new Doctrine\DBAL\Logging\DebugStack();
});
/*$app['dbal_logger'] = $app->share(function() {
return new Doctrine\DBAL\Logging\DebugStack();
});*/
if ($app['debug']) {
/*$logger = new Doctrine\DBAL\Logging\DebugStack();
@ -593,7 +591,7 @@ $app->register(new GaufretteServiceProvider(), array(
));
*/
// Use Symfony2 filesystem instead of custom scripts
// Use Symfony2 filesystem instead of custom scripts.
$app->register(new Neutron\Silex\Provider\FilesystemServiceProvider());
/** Chamilo service provider. */
@ -610,6 +608,35 @@ class ChamiloServiceProvider implements ServiceProviderInterface
$database = $app['database'];
$app['html_editor'] = $app->share(function($app) {
$editor = new ChamiloLMS\Component\Editor\CkEditor\CkEditor(
$app['translator'],
$app['url_generator'],
$app['template'],
$app['course']
);
$editor->setJavascriptToInclude();
return $editor;
/*return new ChamiloLMS\Component\Editor\TinyMce\TinyMce(
$app['translator'], $app['url_generator']
);*/
});
$app['editor_connector'] = $app->share(function ($app) {
$token = $app['security']->getToken();
$user = $token->getUser();
return new Connector(
$app['orm.em'],
$app['paths'],
$app['url_generator'],
$app['translator'],
$app['security'],
$user,
$app['course']
);
});
// Template class
$app['template'] = $app->share(function () use ($app) {
$template = new Template(
@ -635,6 +662,41 @@ class ChamiloServiceProvider implements ServiceProviderInterface
);
});
$app['course'] = $app->share(function () use ($app) {
$request = $app['request'];
$session = $request->getSession();
$courseCode = $request->get('course');
if (empty($courseCode)) {
$courseCode = $session->get('_cid');
}
if (!empty($courseCode)) {
// Converting /courses/XXX/ to a Entity/Course object.
return $app['orm.em']->getRepository('Entity\Course')->findOneByCode($courseCode);
//$app['template']->assign('course', $course);
return $course;
}
return null;
});
$app['course_session'] = $app->share(function () use ($app) {
$request = $app['request'];
$session = $request->getSession();
$sessionId = $request->get('id_session');
if (empty($sessionId)) {
$sessionId = $session->get('id_session');
}
if (!empty($sessionId)) {
return $app['orm.em']->getRepository('Entity\Session')->findOneById($sessionId);
// $app['template']->assign('course_session', $courseSession);
return $courseSession;
}
return null;
});
// Chamilo data filesystem.
$app['chamilo.filesystem'] = $app->share(function () use ($app) {
$filesystem = new ChamiloLMS\Component\DataFilesystem\DataFilesystem(
@ -854,26 +916,6 @@ $app['introduction.controller'] = $app->share(
}
);
$app['html_editor'] = $app->share(function($app) {
return new ChamiloLMS\Component\Editor\CkEditor\CkEditor($app['translator'], $app['url_generator'], $app['course']);
//return new ChamiloLMS\Component\Editor\TinyMce\TinyMce($app['translator'], $app['url_generator']);
});
$app['editor_connector'] = $app->share(function ($app) {
$token = $app['security']->getToken();
$user = $token->getUser();
$course = $app['session']->get('course_session');
return new Connector(
$app['orm.em'],
$app['paths'],
$app['url_generator'],
$app['translator'],
$app['security'],
$user,
$course
);
});
$app->register(new Unoconv\UnoconvServiceProvider(), array(

@ -126,5 +126,5 @@ $tpl = $app['template'];
$tpl->assign('social_left_content', $social_left_content);
$tpl->assign('social_right_content', $social_right_content);
$social_layout = $tpl->get_template('layout/social_layout.tpl');
$social_layout = $tpl->getTemplate('layout/social_layout.tpl');
$tpl->display($social_layout);

@ -21,12 +21,12 @@ class CkEditor extends Editor
}
/**
* @param array $files
* Set js to be include in the template
*/
public function getJavascriptToInclude(& $files)
public function setJavascriptToInclude()
{
$jsFolder = api_get_path(WEB_LIBRARY_JS_PATH);
$files[] = $jsFolder.'ckeditor/ckeditor.js';
$this->template->addResource($jsFolder.'ckeditor/ckeditor.js', 'js');
}
/**

@ -128,6 +128,7 @@ class Connector
$roots = array();
/** @var Driver $driver */
$drivers = $this->getDrivers();
foreach ($drivers as $driver) {
if ($processDefaultValues) {
$plugin = array(
@ -152,7 +153,7 @@ class Connector
*/
public function updateWithDefaultValues($driver)
{
if (empty($driver)) {
if (empty($driver) || !isset($driver['driver'])) {
return array();
}
@ -165,6 +166,7 @@ class Connector
}
$driverUpdated = array_merge($defaultDriver, $driver);
$driverUpdated['driver'] = 'ChamiloLMS\Component\Editor\Driver\\'.$driver['driver'];
$driverUpdated['attributes'] = $attributes;
return $driverUpdated;

@ -221,7 +221,7 @@ class DropBoxDriver extends \elFinderVolumeMySQL implements InterfaceDriver
{
return array(
//'id' => $file->getId().$file->getCId(),
'name' => 'dd',
'name' => 'Dropbox',
//'ts' => $file->getUploadDate(),
'mime' => 'directory',
'read' => true,

@ -45,13 +45,21 @@ class Editor
/** @var Router */
public $urlGenerator;
/** @var \Template */
public $template;
/**
* @param Translator $translator
* @param Router $urlGenerator
* @param \Template $template
* @param Course $course
*/
public function __construct(Translator $translator, Router $urlGenerator, $course)
{
public function __construct(
Translator $translator,
Router $urlGenerator,
\Template $template,
$course
) {
$this->toolbarSet = 'Basic';
$this->value = '';
$this->config = array();
@ -61,6 +69,7 @@ class Editor
$this->translator = $translator;
$this->urlGenerator = $urlGenerator;
$this->course = $course;
$this->template = $template;
}
/**

@ -12,12 +12,12 @@ use ChamiloLMS\Component\Editor\TinyMce\Toolbar;
class TinyMce extends Editor
{
/**
* @param array $files
* Set js to be include in the template
*/
public function getJavascriptToInclude(& $files)
public function setJavascriptToInclude()
{
$jsFolder = api_get_path(WEB_LIBRARY_JS_PATH);
$files[] = $jsFolder.'tinymce/tinymce.min.js';
$this->template->addResource($jsFolder.'tinymce/tinymce.min.js', 'js');
}
/**

@ -206,10 +206,7 @@ class QuestionManagerController
*/
public function questionsAction(Application $app)
{
$extraJS = array();
//@todo improve this JS includes should be added using twig
$extraJS[] = api_get_jqgrid_js();
$app['extraJS'] = $extraJS;
$app['template']->addResource(api_get_jqgrid_js());
// Getting CQuizCategory repo.
/** @var \Gedmo\Tree\Entity\Repository\NestedTreeRepository $repo */

@ -82,9 +82,9 @@ abstract class BaseController extends FlintController
*/
protected function getCourse()
{
if (isset($this->app['course']) && !empty($this->app['course'])) {
//if (isset($this->app['course'])) {
return $this->app['course'];
}
//}
return false;
}

@ -102,10 +102,7 @@ class ExerciseController extends CommonController
*/
public function questionPoolAction(Application $app, $cidReq = null, $exerciseId = null)
{
$extraJS = array();
//@todo improve this JS includes should be added using twig
$extraJS[] = api_get_jqgrid_js();
$app['extraJS'] = $extraJS;
$app['template']->addResource(api_get_jqgrid_js());
// @todo this should be auto

@ -80,7 +80,8 @@ class IndexController extends CommonController
$extra[] = api_get_js('keyboard/jquery.keyboard.js');
}
$app['extraJS'] = $extra;
$app['template']->addResource(api_get_jqgrid_js(), 'string');
$app['this_section'] = SECTION_CAMPUS;
$request = $app['request'];
@ -168,7 +169,7 @@ class IndexController extends CommonController
$extra[] = api_get_css(api_get_path(WEB_LIBRARY_JS_PATH).'keyboard/keyboard.css');
$extra[] = api_get_js('keyboard/jquery.keyboard.js');
}
$app['extraJS'] = $extra;
$app['template']->addResource($extra);
$response = $app['template']->render_template('auth/login.tpl');
return new Response($response, 200, array('Cache-Control' => 's-maxage=3600, public'));
}

@ -71,7 +71,7 @@ class LegacyController extends CommonController
$app['template']->setHeader($app['template.show_header']);
if (isset($htmlHeadXtra)) {
$app['template']->addJsFiles($htmlHeadXtra);
$app['template']->addResource($htmlHeadXtra, 'string');
}
if (isset($interbreadcrumb)) {
@ -79,6 +79,8 @@ class LegacyController extends CommonController
$app['template']->loadBreadcrumbToTemplate();
}
$app['template']->parseResources();
if (isset($tpl)) {
$response = $app['twig']->render($app['default_layout']);
} else {

@ -1,34 +1,34 @@
{{javascript}}
{% for message in messages %}
{{ message }}
{% endfor %}
{% if is_allowed_to_edit %}
<div class="btn-toolbar actions-bar" >
<div class="btn-group">
<a href="{{root}}&amp;action=listing" class="btn" title="{{'ImportCSV'|get_lang}}">
<i class="size-32 icon-back"></i>
</a>
</div>
<div class="btn-group edit new">
{% for type in types %}
<a href="{{root}}&amp;action=add&amp;description_type={{type.id}}" class="btn ">
<img title="{{type.title}}" alt="{{type.title}}" src="{{type.icon|icon(32)}} ">
</a>
{% endfor %}
</div>
</div>
{% endif %}
{% if type.question %}
<div class="normal-message">
<div>
<strong>{{'QuestionPlan'|get_lang}}</strong>
</div>
{{type.question}}
</div>
{% endif %}
{{javascript}}
{% for message in messages %}
{{ message }}
{% endfor %}
{% if is_allowed_to_edit %}
<div class="btn-toolbar actions-bar" >
<div class="btn-group">
<a href="{{root}}&amp;action=listing" class="btn" title="{{'ImportCSV'|get_lang}}">
<i class="size-32 icon-back"></i>
</a>
</div>
<div class="btn-group edit new">
{% for type in types %}
<a href="{{root}}&amp;action=add&amp;description_type={{type.id}}" class="btn ">
<img title="{{type.title}}" alt="{{type.title}}" src="{{type.icon|icon(32)}} ">
</a>
{% endfor %}
</div>
</div>
{% endif %}
{% if type.question %}
<div class="normal-message">
<div>
<strong>{{'QuestionPlan'|get_lang}}</strong>
</div>
{{type.question}}
</div>
{% endif %}
{{form.return_form()}}

@ -1,109 +1,109 @@
{{javascript}}
<script type="text/javascript">
{% if is_allowed_to_edit %}
var sec_token = '{{sec_token}}';
{% endif %}
function delete_entry(name, btn){
if(!confirm("{{'ConfirmYourChoice'|get_lang}}")){
return false;
}
var item = $('#'+name);
var id = item.attr('data-id');
var c_id = item.attr('data-c_id');
var f = function(data){
if(data.success){
item.remove();
}
message.update(data);
$(btn).removeClass("loading");
};
CourseDescription.del(c_id, id, f);
$(btn).addClass("loading");
}
function delete_all(){
if(!confirm("{{'ConfirmYourChoice'|get_lang}}")){
return false;
}
var f = function(data){
if(data.success){
var item = $('.course_descriptions');
item.remove();
}
message.update(data);
};
CourseDescription.delete_by_course({{c_id}}, {{session_id}}, f);
}
</script>
{% for message in messages %}
{{ message }}
{% endfor %}
{% if is_allowed_to_edit %}
<div class="btn-toolbar actions-bar" >
<div class="btn-group edit new">
{% for type in types %}
<a href="{{root}}&amp;action=add&amp;description_type={{type.id}}" class="btn ">
<img title="{{type.title}}" alt="{{type.title}}" src="{{type.icon|icon(32)}} ">
</a>
{% endfor %}
</div>
<div class="btn-group edit">
<a href="{{root}}&amp;action=import_csv" class="btn import_csv" title="{{'ImportCSV'|get_lang}}">
<i class="size-32 icon-import-csv"></i>
</a>
<a href="{{root}}&amp;action=export_csv" class="btn export_csv" title="{{'ExportAsCSV'|get_lang}}">
<i class="size-32 icon-export-csv"></i>
</a>
<a href="javascript:void(0)" onclick="delete_all();return false;" class="btn delete_all" title="{{'DeleteAll'|get_lang}}">
<i class="size-32 icon-delete-all"></i>
</a>
</div>
</div>
{% endif %}
<ul style="list-style: none; margin-left:0;" class="course_descriptions">
{% for description in descriptions %}
<li id="description_{{description.id}}" class="course_description" data-id="{{description.id}}" data-c_id="{{description.c_id}}" data-type="course_description">
<div class="title sectiontitle">
{% if is_allowed_to_edit %}
<div class="pull-right element-actions">
{% if session_id == description.session_id %}
<a href="{{root}}&amp;action=delete&amp;id={{description.id}}"
onclick="delete_entry('description_{{description.id}}', this); return false;"
title="{{'Delete'|get_lang}}">
<i class="size-22 icon-delete"></i>
</a>
<a href="{{root}}&amp;action=edit&amp;id={{description.id}}"
title="{{'Edit'|get_lang}}">
<i class="size-22 icon-edit"></i>
</a>
{% else %}
<img title="{{'EditionNotAvailableFromSession'|get_lang}}"
alt="{{'EditionNotAvailableFromSession'|get_lang}}"
src="{{'edit_na.png'|icon(22)}}"
style="vertical-align:middle;">
{% endif %}
</div>
{% endif %}
<img title="{{description.type.title}}" alt="{{description.type.title}}" src="{{description.type.icon|icon(32)}}" class="icon">
{{description.title}}
</div>
<div class="sectioncomment">
{{description.content}}
</div>
</li>
{% endfor %}
{{javascript}}
<script type="text/javascript">
{% if is_allowed_to_edit %}
var sec_token = '{{sec_token}}';
{% endif %}
function delete_entry(name, btn){
if(!confirm("{{'ConfirmYourChoice'|get_lang}}")){
return false;
}
var item = $('#'+name);
var id = item.attr('data-id');
var c_id = item.attr('data-c_id');
var f = function(data){
if(data.success){
item.remove();
}
message.update(data);
$(btn).removeClass("loading");
};
CourseDescription.del(c_id, id, f);
$(btn).addClass("loading");
}
function delete_all(){
if(!confirm("{{'ConfirmYourChoice'|get_lang}}")){
return false;
}
var f = function(data){
if(data.success){
var item = $('.course_descriptions');
item.remove();
}
message.update(data);
};
CourseDescription.delete_by_course({{c_id}}, {{session_id}}, f);
}
</script>
{% for message in messages %}
{{ message }}
{% endfor %}
{% if is_allowed_to_edit %}
<div class="btn-toolbar actions-bar" >
<div class="btn-group edit new">
{% for type in types %}
<a href="{{root}}&amp;action=add&amp;description_type={{type.id}}" class="btn ">
<img title="{{type.title}}" alt="{{type.title}}" src="{{type.icon|icon(32)}} ">
</a>
{% endfor %}
</div>
<div class="btn-group edit">
<a href="{{root}}&amp;action=import_csv" class="btn import_csv" title="{{'ImportCSV'|get_lang}}">
<i class="size-32 icon-import-csv"></i>
</a>
<a href="{{root}}&amp;action=export_csv" class="btn export_csv" title="{{'ExportAsCSV'|get_lang}}">
<i class="size-32 icon-export-csv"></i>
</a>
<a href="javascript:void(0)" onclick="delete_all();return false;" class="btn delete_all" title="{{'DeleteAll'|get_lang}}">
<i class="size-32 icon-delete-all"></i>
</a>
</div>
</div>
{% endif %}
<ul style="list-style: none; margin-left:0;" class="course_descriptions">
{% for description in descriptions %}
<li id="description_{{description.id}}" class="course_description" data-id="{{description.id}}" data-c_id="{{description.c_id}}" data-type="course_description">
<div class="title sectiontitle">
{% if is_allowed_to_edit %}
<div class="pull-right element-actions">
{% if session_id == description.session_id %}
<a href="{{root}}&amp;action=delete&amp;id={{description.id}}"
onclick="delete_entry('description_{{description.id}}', this); return false;"
title="{{'Delete'|get_lang}}">
<i class="size-22 icon-delete"></i>
</a>
<a href="{{root}}&amp;action=edit&amp;id={{description.id}}"
title="{{'Edit'|get_lang}}">
<i class="size-22 icon-edit"></i>
</a>
{% else %}
<img title="{{'EditionNotAvailableFromSession'|get_lang}}"
alt="{{'EditionNotAvailableFromSession'|get_lang}}"
src="{{'edit_na.png'|icon(22)}}"
style="vertical-align:middle;">
{% endif %}
</div>
{% endif %}
<img title="{{description.type.title}}" alt="{{description.type.title}}" src="{{description.type.icon|icon(32)}}" class="icon">
{{description.title}}
</div>
<div class="sectioncomment">
{{description.content}}
</div>
</li>
{% endfor %}
</ul>

@ -1,15 +1,15 @@
{{javascript}}
{% for message in messages %}
{{ message }}
{% endfor %}
<div class="btn-toolbar actions-bar" >
<div class="btn-group">
<a href="{{root}}&amp;action=listing" class="btn" title="{{'ImportCSV'|get_lang}}">
<i class="size-32 icon-back"></i>
</a>
</div>
</div>
{{javascript}}
{% for message in messages %}
{{ message }}
{% endfor %}
<div class="btn-toolbar actions-bar" >
<div class="btn-group">
<a href="{{root}}&amp;action=listing" class="btn" title="{{'ImportCSV'|get_lang}}">
<i class="size-32 icon-back"></i>
</a>
</div>
</div>
{{form.return_form()}}

@ -1,9 +1,9 @@
{% include app.template_style ~ '/glossary/header.tpl' %}
<div class="actions-bar btn-toolbar" >
<a href = "{{root}}&amp;action=index" class="btn">
<i class="size-32 icon-back"></i>
</a>
</div>
{% include app.template_style ~ '/glossary/header.tpl' %}
<div class="actions-bar btn-toolbar" >
<a href = "{{root}}&amp;action=index" class="btn">
<i class="size-32 icon-back"></i>
</a>
</div>
{{form.return_form()}}

@ -1,7 +1,7 @@
{{javascript}}
<div id="messages">
{% for message in messages %}
{{ message }}
{% endfor %}
{{javascript}}
<div id="messages">
{% for message in messages %}
{{ message }}
{% endfor %}
</div>

@ -1,39 +1,39 @@
{% include app.template_style ~ '/glossary/header.tpl' %}
{% include app.template_style ~ '/glossary/javascript.tpl' %}
<div class="btn-toolbar actions-bar" >
{% if is_allowed_to_edit %}
<div class="btn-group edit">
<a href="{{root}}&amp;action=add" class=" glossary btn" title="{{'Add'|get_lang}}">
<i class="size-32 icon-new-glossary-term"></i>
</a>
<a href="{{root}}&amp;action=import_csv" class="btn import_csv" title="{{'ImportCSV'|get_lang}}">
<i class="size-32 icon-import-csv"></i>
</a>
<a href="{{root}}&amp;action=export_csv" class="btn export_csv" title="{{'ExportAsCSV'|get_lang}}">
<i class="size-32 icon-export-csv"></i>
</a>
<a href="javascript:void(0)" onclick="ui.remove_by_course('entries', this);return false;" class="btn delete_all" title="{{'DeleteAll'|get_lang}}">
<i class="size-32 icon-delete-all"></i>
</a>
</div>
{% endif %}
<div class="btn-group edit">
{% if view == 'table' %}
<a href="{{root}}&amp;view=list" class="btn" title="{{'ViewList'|get_lang}}">
<i class="size-32 icon-view-text"></i>
</a>
{% else %}
<a href="{{root}}&amp;view=table" class="btn" title="{{'ViewTable'|get_lang}}">
<i class="size-32 icon-view-detailed"></i>
</a>
{% endif %}
</div>
</div>
{% if view == 'table' %}
{% include app.template_style ~ '/glossary/table.tpl' %}
{% else %}
{% include app.template_style ~ '/glossary/list.tpl' %}
{% endif %}
{% include app.template_style ~ '/glossary/header.tpl' %}
{% include app.template_style ~ '/glossary/javascript.tpl' %}
<div class="btn-toolbar actions-bar" >
{% if is_allowed_to_edit %}
<div class="btn-group edit">
<a href="{{root}}&amp;action=add" class=" glossary btn" title="{{'Add'|get_lang}}">
<i class="size-32 icon-new-glossary-term"></i>
</a>
<a href="{{root}}&amp;action=import_csv" class="btn import_csv" title="{{'ImportCSV'|get_lang}}">
<i class="size-32 icon-import-csv"></i>
</a>
<a href="{{root}}&amp;action=export_csv" class="btn export_csv" title="{{'ExportAsCSV'|get_lang}}">
<i class="size-32 icon-export-csv"></i>
</a>
<a href="javascript:void(0)" onclick="ui.remove_by_course('entries', this);return false;" class="btn delete_all" title="{{'DeleteAll'|get_lang}}">
<i class="size-32 icon-delete-all"></i>
</a>
</div>
{% endif %}
<div class="btn-group edit">
{% if view == 'table' %}
<a href="{{root}}&amp;view=list" class="btn" title="{{'ViewList'|get_lang}}">
<i class="size-32 icon-view-text"></i>
</a>
{% else %}
<a href="{{root}}&amp;view=table" class="btn" title="{{'ViewTable'|get_lang}}">
<i class="size-32 icon-view-detailed"></i>
</a>
{% endif %}
</div>
</div>
{% if view == 'table' %}
{% include app.template_style ~ '/glossary/table.tpl' %}
{% else %}
{% include app.template_style ~ '/glossary/list.tpl' %}
{% endif %}

@ -1,28 +1,28 @@
<script type="text/javascript" src="{{www}}/main/glossary/resources/js/proxy.js"></script>
<script type="text/javascript" src="{{www}}/main/glossary/resources/js/ui.js"></script>
<script type="text/javascript" src="{{www}}/main/glossary/resources/js/jquery.dataTables.js"></script>
<script type="text/javascript">
$(function() {
ui.proxy = glossary;
window.context = {};
context.sec_token = '{{sec_token}}';
context.c_id = '{{c_id}}';
context.session_id = '{{session_id}}';
context.www = '{{www}}';
context.ajax = '{{www}}/main/inc/ajax/glossary.ajax.php';
if(typeof(lang) == "undefined")
{
window.lang = {};
}
lang.ConfirmYourChoice = "{{'ConfirmYourChoice'|get_lang}}";
});
<script type="text/javascript" src="{{www}}/main/glossary/resources/js/proxy.js"></script>
<script type="text/javascript" src="{{www}}/main/glossary/resources/js/ui.js"></script>
<script type="text/javascript" src="{{www}}/main/glossary/resources/js/jquery.dataTables.js"></script>
<script type="text/javascript">
$(function() {
ui.proxy = glossary;
window.context = {};
context.sec_token = '{{sec_token}}';
context.c_id = '{{c_id}}';
context.session_id = '{{session_id}}';
context.www = '{{www}}';
context.ajax = '{{www}}/main/inc/ajax/glossary.ajax.php';
if(typeof(lang) == "undefined")
{
window.lang = {};
}
lang.ConfirmYourChoice = "{{'ConfirmYourChoice'|get_lang}}";
});
</script>

@ -1,35 +1,35 @@
<ul id="entries" class="unstyled glossary entries" data-c_id="{{c_id}}" data-session_id="{{session_id}}" >
{% for item in items %}
<li id="glossary_{{item.id}}" class="glossary term" data-id="{{item.id}}" data-c_id="{{item.c_id}}" data-type="glossary">
<div class="title sectiontitle">
{% if is_allowed_to_edit %}
<div class="pull-right">
{% if session_id == item.session_id %}
<a href="{{root}}&amp;action=edit&amp;id={{item.id}}"
title="{{'Edit'|get_lang}}">
<i class="size-22 icon-edit"></i>
</a>
<a href="{{root}}&amp;action=delete&amp;id={{item.id}}"
onclick="ui.remove('glossary_{{item.id}}', this); return false;"
title="{{'Delete'|get_lang}}">
<i class="size-22 icon-delete"></i>
</a>
{% else %}
<img title="{{'EditionNotAvailableFromSession'|get_lang}}"
alt="{{'EditionNotAvailableFromSession'|get_lang}}"
src="{{'edit_na.png'|icon(22)}}"
style="vertical-align:middle;">
{% endif %}
</div>
{% endif %}
{{item.name}}
</div>
<div class="sectioncomment">
{{item.description}}
</div>
</li>
{% endfor %}
<ul id="entries" class="unstyled glossary entries" data-c_id="{{c_id}}" data-session_id="{{session_id}}" >
{% for item in items %}
<li id="glossary_{{item.id}}" class="glossary term" data-id="{{item.id}}" data-c_id="{{item.c_id}}" data-type="glossary">
<div class="title sectiontitle">
{% if is_allowed_to_edit %}
<div class="pull-right">
{% if session_id == item.session_id %}
<a href="{{root}}&amp;action=edit&amp;id={{item.id}}"
title="{{'Edit'|get_lang}}">
<i class="size-22 icon-edit"></i>
</a>
<a href="{{root}}&amp;action=delete&amp;id={{item.id}}"
onclick="ui.remove('glossary_{{item.id}}', this); return false;"
title="{{'Delete'|get_lang}}">
<i class="size-22 icon-delete"></i>
</a>
{% else %}
<img title="{{'EditionNotAvailableFromSession'|get_lang}}"
alt="{{'EditionNotAvailableFromSession'|get_lang}}"
src="{{'edit_na.png'|icon(22)}}"
style="vertical-align:middle;">
{% endif %}
</div>
{% endif %}
{{item.name}}
</div>
<div class="sectioncomment">
{{item.description}}
</div>
</li>
{% endfor %}
</ul>

@ -1,72 +1,72 @@
<script type="text/javascript">
$(document).ready(function() {
$('#entries').dataTable( {
"oLanguage": {
"sLengthMenu": "_MENU_ " + "{{'DataTableLengthMenu'|get_lang}}",
"sZeroRecords": "{{'DataTableZeroRecords'|get_lang}}",
"sInfo": "{{'DataTableInfo'|get_lang}}",
"sInfoEmpty": "{{'DataTableInfoEmpty'|get_lang}}",
"sInfoFiltered": "{{'DataTableInfoFiltered'|get_lang}}",
"sSearch": "{{'DataTableSearch'|get_lang}}",
"oPaginate": {
"sPrevious": "",
"sNext": ""
}
}
});
} );
</script>
<table id="entries" class="data_table glossary entries" data-c_id="{{c_id}}" data-session_id="{{session_id}}" >
<thead>
<tr>
<th class="sorting">
{{'TermName'|get_lang}}
</th>
<th class="sorting">
{{'TermDefinition'|get_lang}}
</th>
{% if is_allowed_to_edit %}
<th>
{{'Actions'|get_lang}}
</th>
{% endif %}
</tr>
</thead>
<tbody>
{% for item in items %}
<tr id="glossary_{{item.id}}" class="glossary term" data-id="{{item.id}}" data-c_id="{{item.c_id}}" data-type="glossary">
<td class="title">
{{item.name}}
</td>
<td class="">
{{item.description}}
</td>
{% if is_allowed_to_edit %}
<td class="td_actions">
{% if session_id == item.session_id %}
<a href="{{root}}&amp;action=edit&amp;id={{item.id}}"
title="{{'Edit'|get_lang}}">
<i class="size-22 icon-edit"></i>
</a>
<a href="{{root}}&amp;action=delete&amp;id={{item.id}}"
onclick="ui.remove('glossary_{{item.id}}', this); return false;"
title="{{'Delete'|get_lang}}">
<i class="size-22 icon-delete"></i>
</a>
{% else %}
<img title="{{'EditionNotAvailableFromSession'|get_lang}}"
alt="{{'EditionNotAvailableFromSession'|get_lang}}"
src="{{'edit_na.png'|icon(22)}}"
style="vertical-align:middle;">
{% endif %}
</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
<div style="clear:both"></div>
<script type="text/javascript">
$(document).ready(function() {
$('#entries').dataTable( {
"oLanguage": {
"sLengthMenu": "_MENU_ " + "{{'DataTableLengthMenu'|get_lang}}",
"sZeroRecords": "{{'DataTableZeroRecords'|get_lang}}",
"sInfo": "{{'DataTableInfo'|get_lang}}",
"sInfoEmpty": "{{'DataTableInfoEmpty'|get_lang}}",
"sInfoFiltered": "{{'DataTableInfoFiltered'|get_lang}}",
"sSearch": "{{'DataTableSearch'|get_lang}}",
"oPaginate": {
"sPrevious": "",
"sNext": ""
}
}
});
} );
</script>
<table id="entries" class="data_table glossary entries" data-c_id="{{c_id}}" data-session_id="{{session_id}}" >
<thead>
<tr>
<th class="sorting">
{{'TermName'|get_lang}}
</th>
<th class="sorting">
{{'TermDefinition'|get_lang}}
</th>
{% if is_allowed_to_edit %}
<th>
{{'Actions'|get_lang}}
</th>
{% endif %}
</tr>
</thead>
<tbody>
{% for item in items %}
<tr id="glossary_{{item.id}}" class="glossary term" data-id="{{item.id}}" data-c_id="{{item.c_id}}" data-type="glossary">
<td class="title">
{{item.name}}
</td>
<td class="">
{{item.description}}
</td>
{% if is_allowed_to_edit %}
<td class="td_actions">
{% if session_id == item.session_id %}
<a href="{{root}}&amp;action=edit&amp;id={{item.id}}"
title="{{'Edit'|get_lang}}">
<i class="size-22 icon-edit"></i>
</a>
<a href="{{root}}&amp;action=delete&amp;id={{item.id}}"
onclick="ui.remove('glossary_{{item.id}}', this); return false;"
title="{{'Delete'|get_lang}}">
<i class="size-22 icon-delete"></i>
</a>
{% else %}
<img title="{{'EditionNotAvailableFromSession'|get_lang}}"
alt="{{'EditionNotAvailableFromSession'|get_lang}}"
src="{{'edit_na.png'|icon(22)}}"
style="vertical-align:middle;">
{% endif %}
</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
<div style="clear:both"></div>

@ -1,9 +1,9 @@
{% include app.template_style ~ '/glossary/header.tpl' %}
<div class="actions-bar btn-toolbar" >
<a href = "{{root}}&amp;action=index" class="btn">
<i class="size-32 icon-back"></i>
</a>
</div>
{% include app.template_style ~ '/glossary/header.tpl' %}
<div class="actions-bar btn-toolbar" >
<a href = "{{root}}&amp;action=index" class="btn">
<i class="size-32 icon-back"></i>
</a>
</div>
{{form.return_form()}}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save