Bonjour à tous,
Je sèche complètement sur un sujet que je trouve assez complexe.
J'utilise REDIPS drag and drop pour réaliser un planning. Le tableau fonctionne parfaitement et je parviens à récupérer les résultats soit en plain query string soit en format JSON.
Le hic est que je ne sais pas comment faire pour que lors du rechargement de la page les modifications réalisées via le drag and drop puissent être prises en compte. Je ne sais absolument pas comment m'y prendre.
Pour voir le tableau en version light : http://www.studio-tennis.fr/test/REDIPS_drag/example01/
En ce qui concerne les codes.
Voila pour le html :
Voila pour le fichier javascript :
Enfin, le fichier php qui affiche le résultat de la sauvegarde (JSON) :
Merci pour votre aide. Bonne journée à tous !
Je sèche complètement sur un sujet que je trouve assez complexe.
J'utilise REDIPS drag and drop pour réaliser un planning. Le tableau fonctionne parfaitement et je parviens à récupérer les résultats soit en plain query string soit en format JSON.
Le hic est que je ne sais pas comment faire pour que lors du rechargement de la page les modifications réalisées via le drag and drop puissent être prises en compte. Je ne sais absolument pas comment m'y prendre.
Pour voir le tableau en version light : http://www.studio-tennis.fr/test/REDIPS_drag/example01/
En ce qui concerne les codes.
Voila pour le html :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta name="author" content="Darko Bunic"/>
<meta name="description" content="Drag and drop table content with JavaScript"/>
<meta name="viewport" content="width=device-width, user-scalable=no"/><!-- "position: fixed" fix for Android 2.2+ -->
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
<script type="text/javascript" src="../redips-drag-min.js"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<!-- tables inside this DIV could have draggable content -->
<div id="redips-drag">
<table id="table1">
<colgroup><col width="200"/><col width="200"/><col width="200"/><col width="200"/></colgroup>
<tr>
<td class="redips-mark">Jour</td>
<td class="redips-mark">Date</td>
<td class="redips-mark">Matin</td>
<td class="redips-mark">Arpès-Midi</td>
</tr>
<tr style="background-color: #eee">
<td class="redips-mark"></td>
<td class="redips-mark"></td>
<td></td>
<td></td>
</tr>
<tr>
<td class="redips-mark"></td>
<td class="redips-mark"></td>
<td></td>
<td></td>
</tr>
<tr style="background-color: #eee">
<td class="redips-mark"></td>
<td class="redips-mark"></td>
<td></td>
<td></td>
</tr>
<tr>
<td class="redips-mark"></td>
<td class="redips-mark"></td>
<td></td>
<td></td>
</tr>
<tr style="background-color: #eee">
<td class="redips-mark"></td>
<td class="redips-mark"></td>
<td></td>
<td></td>
</tr>
</table>
<table id="table3">
<colgroup><col width="200"/><col width="200"/><col width="200"/></colgroup>
<tr style="background-color: #eee">
<td id="message" class="redips-mark" title="You can not drop here">Table3</td>
<td><div id="d1" class="redips-drag t3 redips-clone" title="infinite cloning">Thierry Zobel</div></td>
<td><div id="d2" class="redips-drag t3 redips-clone" title="infinite cloning">Agathe Nadimi</div></td>
</tr>
<tr>
<td><div id="d3" class="redips-drag t3 redips-clone" title="infinite cloning">Philippe Maudieu</div></td>
<td><div id="d4" class="redips-drag t3 redips-clone" title="infinite cloning">Thierry Delbasse</div></td>
<td><div id="d5" class="redips-drag t3 redips-clone" title="infinite cloning">F. Micheak</div></td>
</tr>
<tr>
<td><div id="d6" class="redips-drag t3 redips-clone" title="infinite cloning">Fabrice Laviec</div></td>
<td><div id="d7" class="redips-drag t3 redips-clone" title="infinite cloning">Didier Leduc</div></td>
<td><div id="d8" class="redips-drag t3 redips-clone" title="infinite cloning">Frédérique De Boissieu</div></td>
</tr>
<tr style="background-color: #eee">
<td><div id="d9" class="redips-drag t3 redips-clone" title="infinite cloning">Julien Marfisi</div></td>
<td><div id="d10" class="redips-drag t3 redips-clone" title="infinite cloning">Dominique Beaulieu</div></td>
<td class="redips-trash" title="Trash">Trash</td>
</tr>
</table>
<div><input type="button" value="Save1" class="button" onclick="save('plain')" title="Send content to the server (it will only show accepted parameters)"/><span class="message_line">Save content of the first table (plain query string)</span></div>
<div><input type="button" value="Save2" class="button" onclick="save('json')" title="Send content to the server (it will only show accepted parameters)"/><span class="message_line">Save content of the first table (JSON format)</span></div>
</div>
</body>
</html>
Voila pour le fichier javascript :
/* enable strict mode */
"use strict";
// define redips_init variable
var redipsInit;
// redips initialization
redipsInit = function () {
// reference to the REDIPS.drag library and message line
var rd = REDIPS.drag,
msg = document.getElementById('message');
// how to display disabled elements
rd.style.borderDisabled = 'solid'; // border style for disabled element will not be changed (default is dotted)
rd.style.opacityDisabled = 60; // disabled elements will have opacity effect
// initialization
rd.init();
// only "smile" can be placed to the marked cell
rd.mark.exception.d8 = 'smile';
// prepare handlers
rd.event.clicked = function () {
msg.innerHTML = 'Clicked';
};
rd.event.dblClicked = function () {
msg.innerHTML = 'Dblclicked';
};
rd.event.moved = function () {
msg.innerHTML = 'Moved';
};
rd.event.notMoved = function () {
msg.innerHTML = 'Not moved';
};
rd.event.dropped = function () {
msg.innerHTML = 'Dropped';
};
rd.event.switched = function () {
msg.innerHTML = 'Switched';
};
rd.event.clonedEnd1 = function () {
msg.innerHTML = 'Cloned end1';
};
rd.event.clonedEnd2 = function () {
msg.innerHTML = 'Cloned end2';
};
rd.event.notCloned = function () {
msg.innerHTML = 'Not cloned';
};
rd.event.deleted = function (cloned) {
// if cloned element is directly moved to the trash
if (cloned) {
// set id of original element (read from redips property)
// var id_original = rd.obj.redips.id_original;
msg.innerHTML = 'Deleted (c)';
}
else {
msg.innerHTML = 'Deleted';
}
};
rd.event.undeleted = function () {
msg.innerHTML = 'Undeleted';
};
rd.event.cloned = function () {
// display message
msg.innerHTML = 'Cloned';
// append 'd' to the element text (Clone -> Cloned)
rd.obj.innerHTML += '';
};
rd.event.changed = function () {
// get target and source position (method returns positions as array)
var pos = rd.getPosition();
// display current row and current cell
msg.innerHTML = 'Changed: ' + pos[1] + ' ' + pos[2];
};
};
// toggles trash_ask parameter defined at the top
function toggleConfirm(chk) {
if (chk.checked === true) {
REDIPS.drag.trash.question = 'Are you sure you want to delete DIV element?';
}
else {
REDIPS.drag.trash.question = null;
}
}
// toggles delete_cloned parameter defined at the top
function toggleDeleteCloned(chk) {
REDIPS.drag.clone.drop = !chk.checked;
}
// enables / disables dragging
function toggleDragging(chk) {
REDIPS.drag.enableDrag(chk.checked);
}
// function sets drop_option parameter defined at the top
function setMode(radioButton) {
REDIPS.drag.dropMode = radioButton.value;
}
// show prepared content for saving
function save(type) {
// define table_content variable
var table_content;
// prepare table content of first table in JSON format or as plain query string (depends on value of "type" variable)
table_content = REDIPS.drag.saveContent('table1', type);
// if content doesn't exist
if (!table_content) {
alert('Table is empty!');
}
// display query string
else if (type === 'json') {
//window.open('/my/multiple-parameters-json.php?p=' + table_content, 'Mypop', 'width=350,height=260,scrollbars=yes');
window.open('multiple-parameters-json.php?p=' + table_content, 'Mypop', 'width=350,height=260,scrollbars=yes');
}
else {
//window.open('/my/multiple-parameters.php?' + table_content, 'Mypop', 'width=350,height=160,scrollbars=yes');
window.open('multiple-parameters.php?' + table_content, 'Mypop', 'width=350,height=260,scrollbars=yes');
}
}
// add onload event listener
if (window.addEventListener) {
window.addEventListener('load', redipsInit, false);
}
else if (window.attachEvent) {
window.attachEvent('onload', redipsInit);
}
Enfin, le fichier php qui affiche le résultat de la sauvegarde (JSON) :
<html>
<head>
<title>www.redips.net - Reading multiple parameters from URL</title>
<style>body{font-family:Verdana,Arial,Helvetica,sans-serif;}</style>
</head>
<body>
<b>Query string</b>
<br/>
<?php print(urldecode($_SERVER['QUERY_STRING'])) ?>
<br/>
<br/>
<b>Accepted parameters:</b>
<br/>
<?php
// accept JSON parameter (and Un-quote string if needed)
$p = stripslashes($_REQUEST['p']);
// decode JSON object (it shouldn't be decoded as associative array)
$arr = json_decode($p);
// open loop through each array element
foreach ($arr as $p){
// set id, row index and cell index
$id = $p[0];
$row = $p[1];
$cell = $p[2];
// instead of print, you can store accepted parameteres to the database
print "Id=$id Row=$row Cell=$cell<br>";
}
?>
</body>
</html>
Merci pour votre aide. Bonne journée à tous !