comparison admin.inc.php @ 105:a85f258f6beb

Move some things around and modularize the code.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 21 Oct 2013 16:26:42 +0300
parents 4684336cec09
children 6e076b3630a0
comparison
equal deleted inserted replaced
104:c7b1eb993240 105:a85f258f6beb
11 { 11 {
12 switch ($item["vtype"]) 12 switch ($item["vtype"])
13 { 13 {
14 case VT_STR: 14 case VT_STR:
15 case VT_TEXT: $type = 0; break; 15 case VT_TEXT: $type = 0; break;
16 case VT_INT: $type = 4; break; 16 case VT_INT: $type = 4; break;
17 case VT_BOOL: $type = 3; break; 17 case VT_BOOL: $type = 3; break;
18 } 18 }
19 $args[] = "\"".$item["key"]."\":".$type; 19 $args[] = "\"".$item["key"]."\":".$type;
20 } 20 }
21 } 21 }
59 59
60 if ($authState == "ok") 60 if ($authState == "ok")
61 { 61 {
62 ?> 62 ?>
63 <script type="text/javascript"> 63 <script type="text/javascript">
64 // <? stCreateSettingsData(); ?> 64 // <? stCreateSettingsData(); include "ajax.js"; ?>
65
66
67 function statusMsg(msg)
68 {
69 document.getElementById("nstatus").innerHTML = msg;
70 }
71
72
73 function strtrim(str)
74 {
75 if (!str || str == null)
76 return "";
77 return str.replace(/^\s+|\s+$/g,'')
78 }
79
80
81 function strencode(str)
82 {
83 return encodeURIComponent(str);
84 }
85
86
87 function createXMLRequest()
88 {
89 var req;
90 if (window.XMLHttpRequest)
91 {
92 // Modern browsers
93 req = new XMLHttpRequest();
94 }
95 else
96 {
97 // Old IE versions
98 req = new ActiveXObject("Microsoft.XMLHTTP");
99 }
100 return req;
101 }
102
103
104 function sendPOSTRequest(params, success, failure)
105 {
106 var req = createXMLRequest();
107 req.open("POST", "ajax.php", true);
108 req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
109 req.setRequestHeader("Content-length", params.length);
110 req.setRequestHeader("Connection", "close");
111
112 req.onreadystatechange = function()
113 {
114 if (req.readyState == 4)
115 {
116 if (req.status == 404)
117 {
118 window.location = "admlogout.php";
119 }
120 else
121 if (req.status == 200)
122 {
123 if (success)
124 {
125 success(req.responseText);
126 }
127 statusMsg(req.statusText);
128 }
129 else
130 {
131 if (failure)
132 {
133 failure(req.status, req.statusText, req.responseText);
134 }
135 else
136 {
137 statusMsg("["+req.status+" - "+req.statusText+"] "+ req.responseText);
138 }
139 }
140 }
141 }
142 req.send(params);
143 }
144
145
146 function makePostArgs(fields, fprefix, fsuffix)
147 {
148 var res = [];
149 for (var id in fields)
150 {
151 var elem = document.getElementById(fprefix + id + fsuffix);
152 if (!elem)
153 {
154 alert("No such DOM element '"+ fprefix + id + fsuffix +"'.");
155 return "";
156 }
157
158 switch (fields[id])
159 {
160 case 0:
161 case 1:
162 case 4:
163 {
164 var str = strtrim(elem.value);
165 if ((fields[id] == 1 || fields[id] == 4) && str == "")
166 {
167 alert("One or more of the required fields are empty.");
168 return "";
169 }
170 if (fields[id] == 4)
171 res.push(id+"="+parseInt(elem.value));
172 else
173 res.push(id+"="+strencode(str));
174 }
175 break;
176
177 case 2:
178 res.push(id+"="+parseInt(elem.value));
179 break;
180
181 case 3:
182 res.push(id+"="+(elem.checked ? "1" : "0"));
183 break;
184
185 }
186 }
187 return res.join("&");
188 }
189
190
191 function refreshItems(id,name,msgname)
192 {
193 var msuccess = function(txt)
194 {
195 var nitem = document.getElementById(id);
196 nitem.innerHTML = txt;
197 }
198
199 sendPOSTRequest("action=get&type="+name, msuccess);
200 }
201
202
203 function deleteItem(id,prefix,type,func,dsc)
204 {
205 var msuccess = function(txt)
206 {
207 var item = document.getElementById(prefix+id);
208 item.style.display = "none";
209 setTimeout(func, 50);
210 }
211
212 if (confirm("Are you sure you want to delete "+dsc+" #"+id+"?"))
213 {
214 sendPOSTRequest("action=delete&type="+type+"&id="+id, msuccess);
215 }
216 }
217 65
218 66
219 function refreshSettings() 67 function refreshSettings()
220 { 68 {
221 refreshItems("nsettings", "settings", "General settings"); 69 refreshItems("nsettings", "settings", "General settings");