Fix exercise/question/category creation using resources.

pull/3064/head
Julio Montoya 6 years ago
parent d4ceb92741
commit b729e696ee
  1. 12
      main/exercise/TestCategory.php
  2. 35
      main/exercise/exercise.class.php
  3. 7
      main/exercise/question.class.php
  4. 38
      main/inc/lib/ExerciseCategoryManager.php
  5. 3
      src/CoreBundle/Repository/ResourceRepository.php

@ -97,12 +97,8 @@ class TestCategory
->setDescription($this->description); ->setDescription($this->description);
$em = $repo->getEntityManager(); $em = $repo->getEntityManager();
$em->persist($category); $em->persist($category);
$em->flush();
if ($category) { if ($category) {
$newId = $category->getIid();
$sql = "UPDATE $table SET id = iid WHERE iid = $newId";
Database::query($sql);
$repo->addResourceToCourse( $repo->addResourceToCourse(
$category, $category,
ResourceLink::VISIBILITY_PUBLISHED, ResourceLink::VISIBILITY_PUBLISHED,
@ -112,6 +108,12 @@ class TestCategory
api_get_group_entity() api_get_group_entity()
); );
$repo->getEntityManager()->flush();
$newId = $category->getIid();
$sql = "UPDATE $table SET id = iid WHERE iid = $newId";
Database::query($sql);
return $newId; return $newId;
} }
} }
@ -1096,7 +1098,7 @@ class TestCategory
[ [
'persistence' => false, 'persistence' => false,
'route' => 'home', 'route' => 'home',
'filterable' => true, 'filterable' => false,
'sortable' => true, 'sortable' => true,
'max_per_page' => 10, 'max_per_page' => 10,
] ]

@ -1533,8 +1533,6 @@ class Exercise
$expired_time = (int) $this->expired_time; $expired_time = (int) $this->expired_time;
$repo = Container::getExerciseRepository(); $repo = Container::getExerciseRepository();
$courseEntity = api_get_course_entity($this->course_id);
// Exercise already exists // Exercise already exists
if ($id) { if ($id) {
// we prepare date in the database using the api_get_utc_datetime() function // we prepare date in the database using the api_get_utc_datetime() function
@ -1697,17 +1695,20 @@ class Exercise
Database::query($sql); Database::query($sql);
$exercise = $repo->find($this->id); $exercise = $repo->find($this->id);
$repo->addResourceToCourse( if ($exercise) {
$exercise, $repo->addResourceToCourse(
ResourceLink::VISIBILITY_PUBLISHED, $exercise,
api_get_user_entity(api_get_user_id()), ResourceLink::VISIBILITY_PUBLISHED,
api_get_course_entity(), api_get_user_entity(api_get_user_id()),
api_get_session_entity(), api_get_course_entity(),
api_get_group_entity() api_get_session_entity(),
); api_get_group_entity()
);
$repo->getEntityManager()->flush();
if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) { if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) {
$this->search_engine_save(); $this->search_engine_save();
}
} }
} }
} }
@ -8368,6 +8369,8 @@ class Exercise
$editAccess = Container::getAuthorizationChecker()->isGranted(ResourceNodeVoter::ROLE_CURRENT_COURSE_TEACHER); $editAccess = Container::getAuthorizationChecker()->isGranted(ResourceNodeVoter::ROLE_CURRENT_COURSE_TEACHER);
$allowFilters = false;
// 5. Set parameters and properties. // 5. Set parameters and properties.
$grid = $builder->createBuilder( $grid = $builder->createBuilder(
'grid', 'grid',
@ -8375,7 +8378,7 @@ class Exercise
[ [
'persistence' => false, 'persistence' => false,
'route' => 'home', 'route' => 'home',
'filterable' => $editAccess, 'filterable' => $allowFilters,
'sortable' => $editAccess, 'sortable' => $editAccess,
'max_per_page' => 10, 'max_per_page' => 10,
] ]
@ -8433,7 +8436,7 @@ class Exercise
'legacy_main', 'legacy_main',
false, false,
'_self', '_self',
['class' => 'btn btn-secondary'] ['class' => 'btn btn-secondary', 'icon' => 'fa fa-pen']
); );
$myRowAction->setRouteParameters( $myRowAction->setRouteParameters(
@ -8475,7 +8478,7 @@ class Exercise
'legacy_main', 'legacy_main',
false, false,
'_self', '_self',
['class' => 'btn btn-primary'] ['class' => 'btn btn-secondary']
); );
$myRowAction->setRouteParameters( $myRowAction->setRouteParameters(
[ [
@ -8516,7 +8519,7 @@ class Exercise
$title = get_lang('Enable'); $title = get_lang('Enable');
if ($link->getVisibility() === ResourceLink::VISIBILITY_PUBLISHED) { if ($link->getVisibility() === ResourceLink::VISIBILITY_PUBLISHED) {
$visibleChoice = 'disable'; $visibleChoice = 'disable';
$attributes = ['class' => 'btn btn-danger']; $attributes = ['class' => 'btn btn-secondary'];
$title = get_lang('Disable'); $title = get_lang('Disable');
} }
$params = [ $params = [

@ -897,14 +897,7 @@ abstract class Question
$exerciseId = $exercise->id; $exerciseId = $exercise->id;
$id = $this->id; $id = $this->id;
$question = $this->question;
$description = $this->description;
$weighting = $this->weighting;
$position = $this->position;
$type = $this->type; $type = $this->type;
$picture = $this->picture;
$level = $this->level;
$extra = $this->extra;
$c_id = $this->course['real_id']; $c_id = $this->course['real_id'];
$categoryId = $this->category; $categoryId = $this->category;

@ -174,7 +174,6 @@ class ExerciseCategoryManager extends Model
$category->setPosition($position); $category->setPosition($position);
*/ */
$em->persist($category); $em->persist($category);
$em->flush();
$repo->addResourceToCourse( $repo->addResourceToCourse(
$category, $category,
@ -190,43 +189,6 @@ class ExerciseCategoryManager extends Model
return $category; return $category;
} }
/**
* @param string $token
*
* @return string
*/
public function getJqgridActionLinks($token)
{
//With this function we can add actions to the jgrid (edit, delete, etc)
$editIcon = Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL);
$deleteIcon = Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL);
/*$editIcon = Display::returnFontAwesomeIcon('pencil');
$deleteIcon = Display::returnFontAwesomeIcon('trash');*/
$confirmMessage = addslashes(
api_htmlentities(get_lang('Please confirm your choice'), ENT_QUOTES)
);
$courseParams = api_get_cidreq();
$editButton = <<<JAVASCRIPT
<a href="?action=edit&{$courseParams}&id=' + options.rowId + '" class="">\
$editIcon\
</a>
JAVASCRIPT;
$deleteButton = <<<JAVASCRIPT
<a \
onclick="if (!confirm(\'$confirmMessage\')) {return false;}" \
href="?sec_token=$token&{$courseParams}&id=' + options.rowId + '&action=delete" \
class="">\
$deleteIcon\
</a>
JAVASCRIPT;
return "function action_formatter(cellvalue, options, rowObject) {
return '$editButton $deleteButton';
}";
}
/** /**
* @param string $url * @param string $url
* @param string $action * @param string $action

@ -339,7 +339,8 @@ class ResourceRepository extends EntityRepository
*/ */
public function addResourceToCourse(AbstractResource $resource, int $visibility, User $creator, Course $course, Session $session = null, CGroupInfo $group = null) public function addResourceToCourse(AbstractResource $resource, int $visibility, User $creator, Course $course, Session $session = null, CGroupInfo $group = null)
{ {
$node = $this->addResourceNode($resource, $creator, $course); $node = $this->createNodeForResource($resource, $creator, $course->getResourceNode());
$this->addResourceNodeToCourse($node, $visibility, $course, $session, $group); $this->addResourceNodeToCourse($node, $visibility, $course, $session, $group);
} }

Loading…
Cancel
Save