-
Notifications
You must be signed in to change notification settings - Fork 0
/
form_builder.php
117 lines (107 loc) · 4.46 KB
/
form_builder.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
session_start();
$currentPage = 'Form Builder';
$ROOT_PATH = '.';
require_once($ROOT_PATH . '/helpers/database.php');
require_once($ROOT_PATH . '/helpers/json.php');
require_once($ROOT_PATH . '/helpers/data_validation.php');
require_once($ROOT_PATH . '/helpers/validation.php');
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<?php require_once('elements/header.php'); ?>
<link rel="stylesheet" href="./css/form_builder.css">
</head>
<body>
<?php require_once('elements/navbar.php'); ?>
<div class="container">
<div class="row">
<div class="form col-md-11" id="form-wrapper">
<form>
<div id="header-container" class="item">
</div>
<div id="item-container">
</div>
<div id="footer-container" class="d-flex justify-content-center">
<button type="button" class="btn btn-outline-success" id="submit-button" onclick="submitEditForm()">Submit</button>
</div>
</form>
</div>
<div class="col-md-1" id="item-menu-container">
<div id="add-item-menu">
<button type="button" class="btn" title="Short Answer" onclick="addItem('Short Answer')"><i class="fas fa-font fa-fw"></i></button>
<button type="button" class="btn" title="Paragraph" onclick="addItem('Paragraph')"><i class="fas fa-align-left fa-fw"></i></button>
<button type="button" class="btn" title="Multiple Choice" onclick="addItem('Multiple Choice')"><i class="fas fa-dot-circle fa-fw"></i></button>
<button type="button" class="btn" title="Checkboxes" onclick="addItem('Checkboxes')"><i class="far fa-check-square fa-fw"></i></button>
<button type="button" class="btn" title="Dropdown" onclick="addItem('Dropdown')"><i class="fas fa-chevron-circle-down fa-fw"></i></button>
</div>
</div>
</div>
</div>̥
<?php require_once($ROOT_PATH . '/form_builder/include.php');?>
<script type="text/javascript">
let submitEditForm = async function() {
//console.log(JSON.stringify(form.getFormData()));
//return;
let logged_in = await check_login();
if(logged_in == false) {
document.querySelector('#login-button').click();
} else {
let user_id = await get_user_id();
if(user_id != false) {
form.owner = user_id;
let submit_form = new Promise(function(resolve, reject) {
let xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
resolve(this.responseText);
}
};
xhttp.open("POST", "<?php echo $ROOT_PATH . '/submit_form.php';?>", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send('form_data=' + JSON.stringify(form.getFormData()));
});
let result = await submit_form;
if(result.slice(0, 7) == 'SUCCESS') {
let form = document.createElement('form');
form.method = 'post';
form.action = '<?php echo $ROOT_PATH; ?>/dashboard.php';
let id_input = document.createElement('input');
id_input.type = 'hidden';
id_input.name = 'submit_form';
id_input.value = result.substr(7);
form.appendChild(id_input);
document.body.appendChild(form);
form.submit();
} else if (result == 'ERROR: EMPTY FORM') {
alert('You can\'t submit an empty form.');
} else {
console.log(result);
alert('Something went wrong...');
}
} else {
alert('Something went wrong...');
}
}
}
let mainContainer = document.querySelector('#form-wrapper');
let form = new Form(mainContainer);
<?php
if(
isset($_POST['template']) &&
is_string($_POST['template'])
// is_json($_POST['template']) &&
// validate_form(json_decode($_POST['template']))
) {
echo 'form.constructForm(JSON.parse(`' . addslashes($_POST['template']) . '`));';
} else {
echo 'addItem();';
}
?>
form.drawEditForm();
</script>
<?php require_once('elements/auth.php'); ?>
<?php require_once('elements/footer.php'); ?>
</body>
</html>