Bernd Wurst commited on 2013-01-20 12:09:29
Zeige 2 geänderte Dateien mit 39 Einfügungen und 36 Löschungen.
... | ... |
@@ -22,18 +22,22 @@ require_once('su.php'); |
22 | 22 |
|
23 | 23 |
require_role(ROLE_SYSADMIN); |
24 | 24 |
|
25 |
-if (isset($_GET['type'])) |
|
25 |
+if (isset($_GET['do'])) |
|
26 | 26 |
{ |
27 |
- check_form_token('su_su_ajax', $_GET['formtoken']); |
|
27 |
+ if ($_SESSION['su_ajax_timestamp'] < time() - 30) { |
|
28 |
+ system_failure("Die su-Auswahl ist schon abgelaufen!"); |
|
29 |
+ } |
|
30 |
+ $type = $_GET['do'][0]; |
|
31 |
+ $id = (int) substr($_GET['do'], 1); |
|
28 | 32 |
$role = NULL; |
29 | 33 |
$admin_user = $_SESSION['userinfo']['username']; |
30 | 34 |
$_SESSION['admin_user'] = $admin_user; |
31 |
- if ($_GET['type'] == 'customer') { |
|
32 |
- $role = find_role($_GET['id'], '', True); |
|
33 |
- setup_session($role, $_GET['id']); |
|
34 |
- } elseif ($_GET['type'] == 'systemuser') { |
|
35 |
- $role = find_role($_GET['uid'], '', True); |
|
36 |
- setup_session($role, $_GET['uid']); |
|
35 |
+ if ($type == 'c') { |
|
36 |
+ $role = find_role($id, '', True); |
|
37 |
+ setup_session($role, $id); |
|
38 |
+ } elseif ($type == 'u') { |
|
39 |
+ $role = find_role($id, '', True); |
|
40 |
+ setup_session($role, $id); |
|
37 | 41 |
} else { |
38 | 42 |
system_failure('unknown type'); |
39 | 43 |
} |
... | ... |
@@ -62,32 +66,26 @@ $debug = ''; |
62 | 66 |
if ($debugmode) |
63 | 67 |
$debug = 'debug&'; |
64 | 68 |
|
65 |
-html_header('<script type="text/javascript" src="'.$prefix.'js/ajax.js" ></script> |
|
66 |
-<script type="text/javascript"> |
|
67 |
- |
|
68 |
-function doRequest() { |
|
69 |
- ajax_request(\'su_ajax\', \''.$debug.'q=\'+document.getElementById(\'query\').value, got_response) |
|
70 |
-} |
|
71 |
- |
|
72 |
-function keyPressed() { |
|
73 |
- if(window.mytimeout) window.clearTimeout(window.mytimeout); |
|
74 |
- window.mytimeout = window.setTimeout(doRequest, 500); |
|
75 |
- return true; |
|
76 |
-} |
|
69 |
+html_header(' |
|
70 |
+<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css"> |
|
71 |
+<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.js" ></script> |
|
72 |
+<script type="text/javascript" src="http://code.jquery.com/ui/1.10.0/jquery-ui.js" ></script> |
|
73 |
+'); |
|
77 | 74 |
|
78 |
-function got_response() { |
|
79 |
- if (xmlHttp.readyState == 4) { |
|
80 |
- document.getElementById(\'response\').innerHTML = xmlHttp.responseText; |
|
75 |
+output('<label for="query"><strong>Suchtext:</strong></label> <input type="text" id="query" /> |
|
76 |
+<input type="hidden" id="query_id" name="query_id" /> |
|
77 |
+'); |
|
78 |
+output(' |
|
79 |
+<script> |
|
80 |
+$("#query").autocomplete({ |
|
81 |
+ source: "su_ajax", |
|
82 |
+ select: function( event, ui ) { |
|
83 |
+ if (ui.item) { |
|
84 |
+ window.location.href = "?do="+ui.item.id; |
|
81 | 85 |
} |
82 | 86 |
} |
83 |
- |
|
84 |
-</script> |
|
85 |
-'); |
|
86 |
- |
|
87 |
-output(html_form('su_su_ajax', '', '', '<strong>Suchtext:</strong> <input type="text" id="query" onkeyup="keyPressed()" /> |
|
88 |
-')); |
|
89 |
-output('<div id="response"></div> |
|
90 |
-<div style="height: 3em;"> </div>'); |
|
87 |
+ }); |
|
88 |
+</script>'); |
|
91 | 89 |
|
92 | 90 |
/* |
93 | 91 |
|
... | ... |
@@ -24,19 +24,24 @@ require_once('class/customer.php'); |
24 | 24 |
|
25 | 25 |
require_role(ROLE_SYSADMIN); |
26 | 26 |
|
27 |
-$ajax_formtoken = generate_form_token('su_su_ajax'); |
|
27 |
+# Save the timestamp of this request to the session, so we accept only actions performed some seconds after this |
|
28 |
+$_SESSION['su_ajax_timestamp'] = time(); |
|
28 | 29 |
|
29 |
-$result = array_unique(find_customers($_GET['q'])); |
|
30 |
+header("Content-Type: text/javascript"); |
|
31 |
+echo "[\n"; |
|
32 |
+ |
|
33 |
+$result = array_unique(find_customers($_GET['term'])); |
|
30 | 34 |
sort($result); |
31 | 35 |
foreach ($result as $val) { |
32 | 36 |
$c = new Customer((int) $val); |
33 |
- echo '<div style="margin-bottom: 0.5em;">'.internal_link('su.php', 'Kunde '.$c->id.': <strong>'.$c->fullname.'</strong>', 'type=customer&id='.$c->id.'&formtoken='.$ajax_formtoken); |
|
37 |
+ echo " {\"id\": \"c{$c->id}\", \"value\": \"Kunde {$c->id}: {$c->fullname}\"},\n"; |
|
34 | 38 |
$users = find_users_for_customer($c->id); |
35 | 39 |
foreach ($users as $uid => $username) { |
36 |
- echo '<p style="padding:0; margin:0;margin-left: 2em;">'.internal_link('', 'User »'.$username.'« (UID '.$uid.')', 'type=systemuser&uid='.$uid.'&formtoken='.$ajax_formtoken).'</p>'; |
|
40 |
+ echo " {\"id\": \"u{$uid}\", \"label\": \"User {$uid}: {$username}\"},\n"; |
|
37 | 41 |
} |
38 |
- echo '</div>'; |
|
39 | 42 |
} |
43 |
+echo ' {} |
|
44 |
+]'; |
|
40 | 45 |
die(); |
41 | 46 |
|
42 | 47 |
|
43 | 48 |