4 function ajax_request_callback(req)
6 if (req.readyState == 4 && req.status == 200) {
7 var data = json_parse(req.responseText);
9 if (typeof data.error == 'string') {
10 error('Fehler im AJAX-Backend');
11 alert("Error in AJAX backend:\n" + data.error);
12 } else if (req.oncomplete)
17 function ajax_request(func,params,oncomplete)
19 var req = new XMLHttpRequest();
22 var params = 'func=' + func + '&' + params;
23 req.open ("POST", 'ajax/ajax.php');
24 req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
25 req.setRequestHeader("Content-length", params.length);
26 req.setRequestHeader("Connection", "close");
27 req.onreadystatechange = function() { ajax_request_callback(req); }
28 if (typeof oncomplete == 'function')
29 req.oncomplete = oncomplete;
35 var status = document.getElementById('status');
38 status.innerHTML = msg;
39 status.className = 'status_ok';
44 var status = document.getElementById('status');
47 status.innerHTML = msg;
48 status.className = 'status_error';
51 function set_value(id, value)
53 var obj = document.getElementById(id);
56 if (obj.nodeName.toLowerCase() == 'input'
57 && obj.type.toLowerCase() == 'checkbox')
58 if (value) obj.checked = true;
59 else obj.checked = false;
60 else if (obj.nodeName.toLowerCase() == 'input'
61 || obj.nodeName.toLowerCase() == 'textarea')
63 else if (obj.nodeName.toLowerCase() == 'span')
64 obj.innerHTML = value;
65 else if (obj.nodeName.toLowerCase() == 'select')
66 for (var i=0; i < obj.options.length; i++)
67 if (obj.options[i].value == value)
68 obj.selectedIndex = i;
76 var form = document.getElementById('form_edit');
80 for (var i=0; i<form.children.length; i++)
81 if (form.children[i].tagName.toLowerCase() == 'input'
82 && form.children[i].type.toLowerCase() == 'password')
83 form.children[i].value = '';
86 function save_callback(data)
88 info('Datensatz gespeichert');
92 function delete_callback(data)
94 info('Datensatz gelöscht');
98 function form_save(obj)
101 ajax_request('save', Form.serialize(obj.form), save_callback);
105 function form_insert(obj)
108 ajax_request('insert', Form.serialize(obj.form), save_callback);
112 function form_delete(obj)
114 var id = document.getElementById('edit_id');
115 var source = document.getElementById('edit_source');
117 var params = 'id='+id.value + '&source='+source.value;
118 ajax_request('delete', params, delete_callback);
125 function details_callback(data)
128 set_value('detail_'+id, data[id]);
131 function fetch_callback(data)
134 set_value('edit_'+id, data[id]);
136 var status = document.getElementById('form_status');
137 status.innerHTML = 'Geändert: ' + data.sys_edit + ' von ' + data.sys_user;
143 function gridDrillDown(e)
145 if (e.originalTarget && e.originalTarget.target && e.originalTarget.target == '_top')
148 var id = 0; // Column 0 contains ID
149 var row = grid.edit.drillDown(e,0,0);
150 var cell = grid.columns[id].cell(row);
152 var value = cell.innerHTML;
154 if (document.getElementById('details')) {
155 var params = 'source=' + grid.tableId.substr(5) + '&id=' + value;
156 ajax_request('details', params, details_callback);
159 if (document.getElementById('form_edit')) {
160 var params = 'source=' + grid.tableId.substr(5) + '&id=' + value;
161 ajax_request('fetch', params, fetch_callback);
165 /* Update an existing grid
167 * grid is a live grid
168 * filter is the array index of the $table_filters array in mskdef
169 * value is the value applied to the filter
171 function grid_update(grid, filter, value)
173 if (grid === undefined)
176 if (filter !== undefined && filter !== false)
177 grid.buffer.options.requestParameters = ['w'+filter+'=' + value];
179 grid.buffer.setTotalRows(0);
180 grid.buffer.foundRowCount = false;
182 grid.ClearSelection();
184 if (grid.bookmark) grid.bookmark.innerHTML=" ";
186 grid.buffer.fetch(-1);