Fix exercise/question/category creation using resources.

pull/3064/head
Julio Montoya 5 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);
$em = $repo->getEntityManager();
$em->persist($category);
$em->flush();
if ($category) {
$newId = $category->getIid();
$sql = "UPDATE $table SET id = iid WHERE iid = $newId";
Database::query($sql);
$repo->addResourceToCourse(
$category,
ResourceLink::VISIBILITY_PUBLISHED,
@ -112,6 +108,12 @@ class TestCategory
api_get_group_entity()
);
$repo->getEntityManager()->flush();
$newId = $category->getIid();
$sql = "UPDATE $table SET id = iid WHERE iid = $newId";
Database::query($sql);
return $newId;
}
}
@ -1096,7 +1098,7 @@ class TestCategory
[
'persistence' => false,
'route' => 'home',
'filterable' => true,
'filterable' => false,
'sortable' => true,
'max_per_page' => 10,
]

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

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

@ -174,7 +174,6 @@ class ExerciseCategoryManager extends Model
$category->setPosition($position);
*/
$em->persist($category);
$em->flush();
$repo->addResourceToCourse(
$category,
@ -190,43 +189,6 @@ class ExerciseCategoryManager extends Model
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 $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)
{
$node = $this->addResourceNode($resource, $creator, $course);
$node = $this->createNodeForResource($resource, $creator, $course->getResourceNode());
$this->addResourceNodeToCourse($node, $visibility, $course, $session, $group);
}

Loading…
Cancel
Save