1.
<?php
2.
3.
/*
4.
5.
Formulaire d'édition pour la table : eventtype.
6.
7.
07/03/2021 10:45
8.
9.
lvardon@laposte.net - 2021
10.
11.
Licence libre
12.
13.
*/
14.
15.
include_once "dbconnect.php";
16.
include_once "phpdb/class_eventtype.php";
17.
include_once "phpdb/class_eventtype_ext.php";
18.
19.
if (isset($_REQUEST['a_id_value'])) $id=$_REQUEST['a_id_value'];
20.
else
21.
if (isset($_REQUEST['id'])) $id=$_REQUEST['id'];
22.
else die("Erreur : _REQUEST['id'] est manquant.");
23.
24.
if (isset($_REQUEST['offset']))
25.
$offset=$_REQUEST['offset'];
26.
else
27.
$offset = '';
28.
29.
$userUiMessage="";
30.
31.
// Class instance
32.
$myeventtype = new eventtype( $db );
33.
34.
35.
36.
$sqlError = false;
37.
38.
// Sauvegarde
39.
if(isset($_POST['submitSave']))
40.
{
41.
if ($id > 0) {
42.
$results = $myeventtype->update(
43.
$_REQUEST["a_id"],
44.
$_REQUEST["a_name"],
45.
$_REQUEST["a_code"],
46.
$_REQUEST["a_category"],
47.
$_REQUEST["a_description"] );
48.
49.
if ($results === false) {
50.
$userUiMessage .= '<div class="editmessageError">Erreur sauvegarde (id='.$id.') :'.$myeventtype->lasterror.'</div>';
51.
$sqlError = true;
52.
}
53.
else
54.
$userUiMessage .= '<div class="editmessageInfo">Sauvegarde effectuée (id='.$id.')</div>';
55.
}
56.
else
57.
{
58.
$results = $myeventtype->insert(
59.
$_REQUEST["a_name"],
60.
$_REQUEST["a_code"],
61.
$_REQUEST["a_category"],
62.
$_REQUEST["a_description"] );
63.
echo '<div class="editmessage">';
64.
if ($results === false) {
65.
$userUiMessage .= '<div class="editmessageError">Erreur de création :'.$myeventtype->lasterror.'</div>';
66.
$sqlError = true;
67.
}
68.
else {
69.
$id=$myeventtype->lastInsertId;
70.
$userUiMessage .= '<div class="editmessageInfo">Création effectuée (id='.$id.')</div>';
71.
}
72.
}
73.
}
74.
75.
// Suppression
76.
if(isset($_POST['submitDelete']))
77.
{
78.
if ($id > 0) {
79.
$results = $myeventtype->delete( $id );
80.
81.
if ($results === false) {
82.
$userUiMessage .= '<div class="editmessageError">Erreur Suppression (id='.$id.') :'.$myeventtype->lasterror.'</div>';
83.
$sqlError = true;
84.
}
85.
else {
86.
$userUiMessage .= '<div class="editmessageInfo">Suppression effectuée (id='.$id.')</div>';
87.
$id = -1;
88.
}
89.
90.
}
91.
}
92.
93.
// Select reccord by id :
94.
if ($sqlError === false ) {
95.
96.
if ( isset($_POST['submitSave']) || isset($_POST['submitDelete']) )
97.
$results = $myeventtype->select( $id );
98.
else {
99.
switch ($offset) {
100.
case '_PREV':
101.
$results = $myeventtype->selectPrev( $id );
102.
$id = $results[0]['a.id'];
103.
break;
104.
case '_NEXT':
105.
$results = $myeventtype->selectNext( $id );
106.
$id = $results[0]['a.id'];
107.
break;
108.
default:
109.
$results = $myeventtype->select( $id );
110.
break;
111.
}
112.
}
113.
114.
if ($results === false) {
115.
$userUiMessage .= '<div class="editmessageError">Erreur Sql : '.$myeventtype->lasterror.'</div>';
116.
$sqlError = true;
117.
}
118.
/*if ( empty($results) ) {
119.
$userUiMessage .= '<div class="editmessageInfo">Cet enregistrement n\'existe plus. id = '.$id.' </div>';
120.
$sqlError = true;
121.
}
122.
*/
123.
}
124.
else {
125.
$results[0]["a.id"] = $_REQUEST['a_id'];
126.
$results[0]["a.code"] = $_REQUEST['a_code'];
127.
$results[0]["a.name"] = $_REQUEST['a_name'];
128.
$results[0]["a.description"] = $_REQUEST['a_description'];
129.
$results[0]["a.category"] = $_REQUEST['a_category'];
130.
131.
}
132.
133.
$recordcount = $myeventtype->getCount();
134.
135.
echo '<div class="formtable">';
136.
137.
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https')
138.
=== FALSE ? 'http' : 'https';
139.
$host = $_SERVER['HTTP_HOST'];
140.
$script = $_SERVER['SCRIPT_NAME'];
141.
$params = $_SERVER['QUERY_STRING'];
142.
143.
$currentUrl = $protocol . '://' . $host . $script . '?' . $params;
144.
145.
// xxx fix enctype
146.
echo '<form id="editform" class="formedit pure-form pure-form-aligned" method="post" action="'.$currentUrl.'" enctype="multipart/form-data" >';
147.
148.
echo '<fieldset>';
149.
150.
echo '<legend style="display:inline-block" class="titleedit"><span title="Référentiel des types évenements" class="titleedit">Type evenement</span> #'.($id==-1?'?':$id).'/'.$recordcount['count'];
151.
152.
echo '<div style="font-size:80%; float:right; display:inline-block;">'.$userUiMessage.'</div>';
153.
154.
echo '</legend>';
155.
?>
156.
157.
<input type="hidden" readonly name="a.id.value" value="<?php echo $results[0]["a.id"]; ?>" >
158.
159.
<div class="pure-control-group"><label for="aligned-name">a_id</label>
160.
<input type="{{edithidden}}" readonly name="a.id" value="<?php echo $results[0]["a.id"]; ?>"
161.
style="width:12em;" ><span class="pure-form-message-inline"></span>
162.
</div>
163.
164.
<div class="pure-control-group"><label title="code" for="aligned-name">a_code</label>
165.
166.
167.
168.
169.
<input type="text" class="" name="a.code" id="a_code"
170.
value="<?php if ( $results[0]["a.code"] !='') echo $results[0]["a.code"]; else echo ''; ?>"
171.
style="width:8em;"
172.
>
173.
<div style="display:inline-block; color:red"> </div>
174.
175.
176.
177.
<span class="pure-form-message-inline"></span>
178.
179.
</div>
180.
181.
<div class="pure-control-group"><label title="name" for="aligned-name">a_name</label>
182.
183.
184.
185.
186.
<input type="text" class="" name="a.name" id="a_name"
187.
value="<?php if ( $results[0]["a.name"] !='') echo $results[0]["a.name"]; else echo ''; ?>"
188.
style="width:30em;"
189.
>
190.
<div style="display:inline-block; color:red">*</div>
191.
192.
193.
194.
<span class="pure-form-message-inline"></span>
195.
196.
</div>
197.
198.
<div class="pure-control-group"><label title="description" for="aligned-name">a_description</label>
199.
200.
201.
202.
203.
<textarea text rows="4" cols="40" name="a.description" rows="4" cols="30" ><?php if ( $results[0]["a.description"] !='') echo $results[0]["a.description"]; else echo ''; ?></textarea>
204.
205.
206.
<span class="pure-form-message-inline"></span>
207.
208.
</div>
209.
210.
<div class="pure-control-group"><label title="category" for="aligned-name">a_category</label>
211.
212.
213.
214.
215.
<select name="a.category" >
216.
<option value="FAM0" <?php if ($results[0]["a.category"]=="FAM0") echo "selected"; ?> >Familial 0 (création de famille)</option>
217.
<option value="FAM1" <?php if ($results[0]["a.category"]=="FAM1") echo "selected"; ?> >Familial</option>
218.
<option value="INDI" <?php if ($results[0]["a.category"]=="INDI") echo "selected"; ?> >Individuel</option>
219.
220.
</select>
221.
<div style="display:inline-block; color:red">*</div>
222.
223.
224.
<span class="pure-form-message-inline"></span>
225.
226.
</div>
227.
228.
<?
229.
230.
echo ' <div class="pure-controls">'."\n";
231.
echo '<button type="submit" name = "submitSave" class="formbutton xpure-button xpure-button-primary">Enregistrer</button>'."\n";
232.
$confirmBox = "onclick=\"return confirm('Etes vous sûr de vouloir supprimer cet article ?')\"";
233.
if ($id > 0)
234.
echo '<button type="submit" name = "submitDelete" class="formbutton xpure-button xpure-button-primary" '.$confirmBox.' >Supprimer</button>'."\n";
235.
236.
237.
parse_str($_SERVER['QUERY_STRING'], $query_string);
238.
239.
if ($id != -1 and $id > $recordcount['minid'] ) {
240.
$urlPrev='';
241.
$query_string['id'] = $id;
242.
$query_string['offset'] = '_PREV';
243.
$paramPrev = http_build_query($query_string);
244.
$urlPrev = $protocol . '://' . $host . $script . '?' . $paramPrev;
245.
echo "<a class='formbutton' href='$urlPrev'>Précédent</a>\n";
246.
}
247.
else echo "<a class='formbutton' style='color:gray; pointer-events: none' href=''>Précédent</a>\n";
248.
249.
if ($id != -1 and $id < $recordcount['maxid'] ) {
250.
$urlNext='';
251.
$query_string['id'] = $id;
252.
$query_string['offset'] = '_NEXT';
253.
$paramNext = http_build_query($query_string);
254.
$urlNext = $protocol . '://' . $host . $script . '?' . $paramNext;
255.
echo "<a class='formbutton' href='$urlNext'>Suivant</a>\n";
256.
}
257.
else echo "<a class='formbutton' style='color:gray; pointer-events: none' href=''>Suivant</a>\n";
258.
259.
260.
echo '</div>'."\n";
261.
echo '</fieldset>'."\n";
262.
echo '</form>'."\n";
263.
264.
echo '</div>';
265.
266.
?>
267.
268.
269.
<script type="text/javascript">
270.
271.
$(document).ready(function(){
272.
273.
$(".selectlist").on("click", function() {
274.
startModal('selectplaceholder');
275.
//alert("Id du champ à remplir au retour : [" + $(this).attr('valuebackval') + "]");
276.
var url = "phpui/select_" + $(this).attr('valuetable') + ".php?valuebackfield=" + $(this).attr('valuebackfield') + '&valuebackval=' + $(this).attr('valuebackval');
277.
278.
$('#selectplaceholder').load(url, function() {
279.
$('#selectplaceholder').css("background-color", "white");
280.
$('#selectplaceholder').css("border", "1px solid #034668");
281.
//box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
282.
//-webkit-box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
283.
//-moz-box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
284.
$('#selectplaceholder').css("box-shadow", "5px 10px 12px -4px rgba(0,0,0,0.75)");
285.
$('#selectplaceholder').css("border-radius", "7px");
286.
});
287.
288.
});
289.
});
290.
291.
function startModal(id) {
292.
$("body").prepend(
293.
"<div id='PopupMask' style='position:fixed;width:100%;height:100%;z-index:10;background-color:gray;'></div>"+
294.
"<div style='position: fixed;top: 50%;left: 50%; transform: translate(-50%, -50%);' "+
295.
"id='selectplaceholder'><img width='180' height='60' src='img/loading.gif'></div>");
296.
$("#PopupMask").css('opacity', 0.5);
297.
$("#"+id).data('saveZindex', $("#"+id).css( "z-index"));
298.
$("#"+id).data('savePosition', $("#"+id).css( "position"));
299.
$("#"+id).css( "z-index" , 11 );
300.
$("#"+id).css( "position" , "fixed" );
301.
}
302.
303.
</script>
304.
305.
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
306.
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
307.
308.
<script>
309.
310.
// Disable autofill
311.
$(".datepicker").prop("autocomplete", "off");
312.
313.
$( function() {
314.
315.
$.datepicker.regional['fr'] = {
316.
yearRange: '1:2099',
317.
changeMonth: true,
318.
changeYear: true,
319.
closeText: 'Fermer',
320.
prevText: '<Préc',
321.
nextText: 'Suiv>',
322.
currentText: 'Aujourd\'hui',
323.
monthNames: ['Janvier','Fevrier','Mars','Avril','Mai','Juin',
324.
'Juillet','Aout','Septembre','Octobre','Novembre','Decembre'],
325.
monthNamesShort: ['Jan','Fev','Mar','Avr','Mai','Jun',
326.
'Jul','Aou','Sep','Oct','Nov','Dec'],
327.
dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
328.
dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
329.
dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
330.
weekHeader: 'Sm',
331.
dateFormat: 'dd/mm/yy',
332.
firstDay: 1,
333.
/*isRTL: false,*/
334.
/*showMonthAfterYear: false,*/
335.
/*yearSuffix: '',*/
336.
/*minDate: 0,*/
337.
/*maxDate: '+12M +0D',*/
338.
numberOfMonths: 1,
339.
showButtonPanel: true
340.
};
341.
342.
$.datepicker.setDefaults($.datepicker.regional['fr']);
343.
344.
$(".datepicker" ).datepicker().on("show", function() {
345.
var formDate = $(this).val()
346.
$(this).val(formDate).datepicker('update');
347.
});
348.
349.
} );
350.
351.
$("#over").remove();
352.
353.
// Page quit confirmation
354.
var form = $('#editform'),
355.
original = form.serialize()
356.
357.
form.submit(function(){
358.
$('body').append('<div id="over" style="background:rgba(0,0,0, 0.05); position:fixed; top:0; left:0; width:100%; height:100%;"> <img style="position:absolute; top:0; left:0; right:0; bottom:0; margin:auto;" width="180" height="60" src="img/loading.gif"> </div> ');
359.
window.onbeforeunload = null
360.
})
361.
362.
window.onbeforeunload = function(){
363.
if (form.serialize() != original)
364.
return "Confirmez-vous l'abandon de vos modifications ?"
365.
}
366.
367.
</script>
368.
369.