Add graph just for dev purposes, fix delete and add. see BT#9893

1.10.x
Julio Montoya 10 years ago
parent f7e35c17eb
commit 84853facf9
  1. 21
      main/admin/resource_sequence.php
  2. 48
      main/inc/ajax/sequence.ajax.php
  3. 149
      main/template/default/admin/resource_sequence.tpl

@ -11,10 +11,12 @@ api_protect_global_admin_script();
$tpl = new Template(get_lang('ResourcesSequencing'));
$sessionList = SessionManager::get_sessions_list();
if (!empty($sessionList)) {
//$sessionList[] = ['name' => get_lang('PleaseSelect'), 'id' => 0];
$sessionList = array_column($sessionList, 'name', 'id');
$sessionListFromDatabase = SessionManager::get_sessions_list();
$sessionList = [];
if (!empty($sessionListFromDatabase)) {
foreach ($sessionListFromDatabase as $sessionItem) {
$sessionList[$sessionItem['id']] = $sessionItem['name'].' ('.$sessionItem['id'].')';
}
}
$formSequence = new FormValidator('sequence_form', 'post', api_get_self());
@ -24,7 +26,6 @@ $formSequence->addButtonCreate(get_lang('AddSequence'), 'submit_sequence');
$em = Database::getManager();
if ($formSequence->validate()) {
//$values = $form->getSubmitValue('name');
$values = $formSequence->exportValues();
$sequence = new Sequence();
$sequence->setName($values['name']);
@ -51,9 +52,17 @@ $form->addSelect(
'sessions',
get_lang('Sessions'),
$sessionList,
['id' => 'item', 'multiple' => 'multiple']
['id' => 'item']
);
$form->addButtonNext(get_lang('UseAsReference'), 'use_as_reference');
$form->addSelect(
'requirements',
get_lang('Requirements'),
$sessionList,
['id' => 'requirements', 'multiple' => 'multiple']
);
$form->addButtonCreate(get_lang('SetAsRequirementForSelected'), 'set_requirement');
$form->addButtonSave(get_lang('Save'), 'save_resource');

@ -10,6 +10,7 @@ use Chamilo\CoreBundle\Entity\SequenceResource;
use Fhaculty\Graph\Graph;
use Fhaculty\Graph\Vertex;
require_once '../global.inc.php';
api_block_anonymous_users();
@ -18,9 +19,31 @@ api_protect_admin_script();
$action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null;
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
$type = isset($_REQUEST['type']) ? $_REQUEST['type'] : null;
$sequenceId = isset($_REQUEST['sequence_id']) ? $_REQUEST['sequence_id'] : 0;
$em = Database::getManager();
$repository = $em->getRepository('ChamiloCoreBundle:SequenceResource');
switch ($action) {
case 'graph':
switch ($type) {
case 'session':
$type = SequenceResource::SESSION_TYPE;
/** @var Sequence $sequence */
$sequence = $em->getRepository('ChamiloCoreBundle:Sequence')->find($sequenceId);
if (empty($sequence)) {
exit;
}
if ($sequence->hasGraph()) {
$graph = $sequence->getUnSerializeGraph();
$graphviz = new \Graphp\GraphViz\GraphViz();
echo $graphviz->createImageHtml($graph);
}
break;
}
break;
case 'get_icon':
$link = '';
switch ($type) {
@ -40,7 +63,7 @@ switch ($action) {
}
$link = '<div class="parent" data-id="'.$id.'">'.
$image.' '.$sessionInfo['name'].$linkDelete.
$image.' '.$sessionInfo['name'].' ('.$id.')'.$linkDelete.
'</div>';
}
break;
@ -49,11 +72,9 @@ switch ($action) {
break;
case 'delete_vertex':
$vertexId = isset($_REQUEST['vertex_id']) ? $_REQUEST['vertex_id'] : null;
$sequenceId = isset($_REQUEST['sequence_id']) ? $_REQUEST['sequence_id'] : 0;
$type = SequenceResource::SESSION_TYPE;
/** @var Sequence $sequence */
$sequence = $em->getRepository('ChamiloCoreBundle:Sequence')->find($sequenceId);
@ -113,8 +134,6 @@ switch ($action) {
if ($sequenceResource->hasGraph()) {
$graph = $sequenceResource->getSequence()->getUnSerializeGraph();
//$graphviz = new GraphViz();
//echo $graphviz->createImageHtml($graph);
/** @var Vertex $mainVertice */
if ($graph->hasVertex($id)) {
@ -166,20 +185,31 @@ switch ($action) {
$parents = explode(',', $parents);
$parents = array_filter($parents);
$graph = new Graph();
if ($sequence->hasGraph()) {
$graph = $sequence->getUnSerializeGraph();
} else {
$graph = new Graph();
}
switch ($type) {
case 'session':
$type = SequenceResource::SESSION_TYPE;
$sessionInfo = api_get_session_info($id);
$name = $sessionInfo['name'];
$main = $graph->createVertex($id);
if ($graph->hasVertex($id)) {
$main = $graph->getVertex($id);
} else {
$main = $graph->createVertex($id);
}
foreach ($parents as $parentId) {
$parent = $graph->createVertex($parentId);
if ($graph->hasVertex($parentId)) {
$parent = $graph->getVertex($parentId);
} else {
$parent = $graph->createVertex($parentId);
}
$parent->createEdgeTo($main);
}

@ -7,11 +7,83 @@
var resourceId = 0;
var sequenceId = 0;
function useAsReference(type, sequenceId) {
var id = $("#item option:selected" ).val();
sequenceId = $("#sequence_id option:selected" ).val();
// Cleaning parent list.
parentList = [];
// Check if data exists and load parents
$.ajax({
url: url + '?a=load_resource&load_resource_type=parent&id=' + id + '&type='+type+'&sequence_id='+sequenceId,
success: function (data) {
if (data) {
var listLoaded = data.split(',');
listLoaded.forEach(function(value) {
$.ajax({
url: url + '?a=get_icon&id='+ value+'&type='+type+'&sequence_id='+sequenceId+'&show_delete=1',
success:function(data){
$('#parents').append(data);
parentList.push(value);
}
});
});
}
}
});
// Check if data exists and load children
$.ajax({
url: url + '?a=load_resource&load_resource_type=children&id=' + id + '&type='+type+'&sequence_id='+sequenceId,
success: function (data) {
if (data) {
var listLoaded = data.split(',');
listLoaded.forEach(function(value) {
$.ajax({
url: url + '?a=get_icon&id='+ value+'&type='+type+'&sequence_id='+sequenceId,
success:function(data){
$('#children').append(data);
}
});
});
}
}
});
// Cleaning
$('#parents').html('');
$('#children').html('');
$.ajax({
url: url + '?a=get_icon&id='+ id+'&type='+type+'&sequence_id='+sequenceId,
success:function(data){
$('#resource').html(data);
parentList.push(id);
resourceId = id;
}
});
$.ajax({
url: url + '?a=graph&type='+type+'&sequence_id='+sequenceId,
success: function (data) {
$('#show_graph').html(data);
}
});
}
$(document).ready(function() {
var type = $('input[name="sequence_type"]').val();
// By default "set requirement" is set to false
$('button[name="set_requirement"]').prop('disabled', true);
$('#requirements').prop('disabled', true);
$('button[name="save_resource"]').prop('disabled', true);
sequenceId = $("#sequence_id option:selected" ).val();
// Load parents
$('#parents').on('click', 'a', function() {
var vertexId = $(this).attr('data-id');
var parent = $(this).parent();
@ -21,76 +93,28 @@
url: url + '?a=delete_vertex&id='+resourceId+'&vertex_id=' + vertexId + '&type=' +type+'&sequence_id='+sequenceId,
success: function (data) {
parent.remove();
useAsReference(type, sequenceId);
}
});
}
});
// Button use as reference
$('button[name="use_as_reference"]').click(function() {
$('button[name="set_requirement"]').prop('disabled', false);
$('#requirements').prop('disabled', false);
$('button[name="save_resource"]').prop('disabled', false);
var id = $("#item option:selected" ).val();
sequenceId = $("#sequence_id option:selected" ).val();
// Cleaning parent list.
parentList = [];
// Check if data exists and load parents
$.ajax({
url: url + '?a=load_resource&load_resource_type=parent&id=' + id + '&type='+type+'&sequence_id='+sequenceId,
success: function (data) {
if (data) {
var listLoaded = data.split(',');
listLoaded.forEach(function(value) {
$.ajax({
url: url + '?a=get_icon&id='+ value+'&type='+type+'&sequence_id='+sequenceId+'&show_delete=1',
success:function(data){
$('#parents').append(data);
parentList.push(value);
}
});
});
}
}
});
// Check if data exists and load children
$.ajax({
url: url + '?a=load_resource&load_resource_type=children&id=' + id + '&type='+type+'&sequence_id='+sequenceId,
success: function (data) {
if (data) {
var listLoaded = data.split(',');
listLoaded.forEach(function(value) {
$.ajax({
url: url + '?a=get_icon&id='+ value+'&type='+type+'&sequence_id='+sequenceId,
success:function(data){
$('#children').append(data);
}
});
});
}
}
});
// Cleaning
$('#parents').html('');
$('#children').html('');
$.ajax({
url: url + '?a=get_icon&id='+ id+'&type='+type+'&sequence_id='+sequenceId,
success:function(data){
$('#resource').html(data);
parentList.push(id);
resourceId = id;
}
});
useAsReference(type, sequenceId);
return false;
});
// Button set requirement
$('button[name="set_requirement"]').click(function() {
$("#item option:selected" ).each(function() {
$("#requirements option:selected" ).each(function() {
var id = $(this).val();
if ($.inArray(id, parentList) == -1) {
$.ajax({
@ -105,6 +129,7 @@
return false;
});
// Button save
$('button[name="save_resource"]').click(function() {
if (resourceId != 0) {
var params = decodeURIComponent(parentList);
@ -112,6 +137,7 @@
url: url + '?a=save_resource&id=' + resourceId + '&parents=' + params+'&type='+type+'&sequence_id='+sequenceId,
success: function (data) {
alert('saved');
useAsReference(type, sequenceId);
}
});
}
@ -121,10 +147,10 @@
</script>
<div class="row">
<div class="col-md-3">
<div class="col-md-4">
{{ left_block }}
</div>
<div class="col-md-9">
<div class="col-md-8">
<h3>
{{ 'ItemsTheReferenceDependsOn' | get_lang }}
</h3>
@ -138,6 +164,11 @@
<h3>{{ 'Dependencies' | get_lang }}</h3>
<div id="children">
</div>
<h3>{{ 'Graph' | get_lang }}</h3>
<div id="show_graph"></div>
{{ right_block }}
</div>
</div>

Loading…
Cancel
Save