Rework help section of admin
[pyTivo/krkeegan.git] / plugins / admin / templates / settings.tmpl
blob852f1869b43c49224b450e9b3ddc62599bcfce0b
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\r
2 <html>\r
3 <head>\r
4         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
5         <title>pyTivo Web Configuration</title>\r
6         <script language="javascript" type="text/javascript">\r
7                 function fillBlank(){\r
8                         var texts=document.getElementsByTagName('input');\r
9                         for (var i_tem = 0; i_tem < texts.length; i_tem++){\r
10                                 if (texts[i_tem].value==''){\r
11                                         texts[i_tem].value=' ';\r
12                                 }\r
13                         }\r
14                 }\r
15                 function switchDiv(pass, type){ \r
16                         hideallids(type);\r
17                         showDiv(pass);\r
18                 }\r
19                 function hideallids(type){\r
20                         //loop through the array and hide each element by id\r
21                         var divs = document.getElementsByTagName('div');\r
22                         for (var i=0;i<divs.length;i++){\r
23                                 if(divs[i].id.match(type)){\r
24                                         hideDiv(divs[i].id);\r
25                                 }\r
26                         } \r
27                 }\r
28                 function hideDiv(pass) {\r
29                         var divs = document.getElementsByTagName('div');\r
30                         for(i=0;i<divs.length;i++){\r
31                                 if(divs[i].id.match(pass)){//if they are 'see' divs\r
32                                         if (document.getElementById){// DOM3 = IE5, NS6\r
33                                                 divs[i].style.visibility="hidden";// show/hide\r
34                                         }\r
35                                         else{\r
36                                                 if (document.layers){ // Netscape 4\r
37                                                         document.layers[divs[i]].display = 'hidden';\r
38                                                 }\r
39                                                 else{ // IE 4\r
40                                                         document.all.hideshow.divs[i].visibility = 'hidden';\r
41                                                 }\r
42                                         }\r
43                                 }\r
44                         }\r
45                 }\r
46                 function showDiv(pass) {\r
47                         var divs = document.getElementsByTagName('div');\r
48                         for(i=0;i<divs.length;i++){\r
49                                 if(divs[i].id == pass){\r
50                                         if (document.getElementById){\r
51                                                 divs[i].style.visibility="";\r
52                                         }\r
53                                         else {\r
54                                                 if (document.layers){ // Netscape 4\r
55                                                         document.layers[divs[i]].display = '';\r
56                                                 }\r
57                                                 else{ // IE 4\r
58                                                         document.all.hideshow.divs[i].visibility = '';\r
59                                                 }\r
60                                         }\r
61                                 }\r
62                         }\r
63                 }\r
64                 function deleteSection(id){\r
65                         if (select_section.section.options[id].text == 'Global Server Settings'){\r
66                                 alert('Delete Error:\n\nSorry the Global Server Settings Section is required for pyTivo to run and cannot be deleted');\r
67                                 return true;\r
68                         }\r
69                         var name = select_section.section.options[id].text;\r
70                         var answer = confirm("Are you sure you wish to delete the '" + name + "' Section?")\r
71                         if (answer){\r
72                                 switchDiv('set-delete', 'set-');\r
73                                 select_section.section.options[id] = null;\r
74                                 var field = document.getElementById(name).value;\r
75                                 document.getElementById(field).value = 'Delete_Me';\r
76                                 saveNotify();\r
77                                 return true;\r
78                         }               \r
79                 }\r
80                 function resetpyTivo(){\r
81                         var answer = confirm("Are you sure you wish to reset the pyTivo Server? Any unsaved changes will be lost!")\r
82                         if (answer){\r
83                                 window.location="/TiVoConnect?Command=Reset&Container=$container"\r
84                         }\r
85                 }\r
86                 function showData(form) {\r
87                         var section = ""\r
88                         var setting = ""\r
89                         re=/[\[\]<>|]/;\r
90                         inputs = form.getElementsByTagName("input");\r
91                         for (i = 0; i < inputs.length; i++){\r
92                                 if (inputs[i].type == 'text' && re.exec(inputs[i].value)){\r
93                                         setting = inputs[i].name;\r
94                                         break;\r
95                                 }\r
96                         }\r
97                         if (setting != ""){\r
98                                 var map = document.getElementById('Section_Map').value.split(']');\r
99                                 map.pop();\r
100                                 splitSetting = setting.split('.');\r
101                                 for(i=0;i<map.length;i++){\r
102                                         key = map[i].split('|');\r
103                                         //buffer += key[0] + "---" + key[1] + "===" + splitSetting[0] + "\n";\r
104                                         if (splitSetting[0] == 'Server'){\r
105                                                 section = 'server';\r
106                                                 break;\r
107                                         }\r
108                                         if (key[0] == splitSetting[0]){\r
109                                                 section = key[1];\r
110                                                 break;\r
111                                         }\r
112                                 }\r
113                                 alert("Invalid Entry:\nSorry these are not allowed \n[]<>|");\r
114                                 switchDiv('set-' + section, 'set-');\r
115                                 document.getElementById(setting).select();\r
116                                 return false;\r
117                         }\r
118                         fillBlank();\r
119                         document.config.submit();\r
120                 }
121                 function saveNotify(){\r
122                         document.getElementById('B1').style.fontWeight= 'bold';\r
123                         document.getElementById('B2').disabled = true;\r
124                 }\r
125         </script>
126 </head>\r
127 <body style="background-color: rgb(250, 250, 250);">\r
129 <p align="center"><font size="6">pyTivo Web\r
130 Configuration</font> <a href="javascript:switchDiv('help-instructions', 'help-');">help</a></p>\r
131 <center>\r
132 <table style="border: 1px solid rgb(220, 220, 220);background-color: rgb(255, 255, 255);text-align: left; margin-left: auto; margin-right: auto;" border="0" cellpadding="0" cellspacing="4">\r
134   <tbody>\r
136     <tr>\r
138       <td style="border-right: 1px dotted rgb(153, 153, 153); vertical-align: top;">\r
139       <div id="leftframe" style="position: relative; text-align: center; width: 200px;">\r
140       <form name="select_section">Sections\r
141         <select name="section" size="7">\r
142         <option value="set-server">Global Server Settings</option>\r
143 #for $name, $data in $shares_data\r
144         <option value="set-$name">$name</option>\r
145 #end for\r
146 #for $name, $data in $tivos_data\r
147         <option value="set-$name">$name</option>\r
148 #end for\r
149         </select>\r
151         <input name="B3" value="Edit Section" type="button" onclick="switchDiv(select_section.section.options[select_section.section.selectedIndex].value, 'set-');return true;"> \r
152         <input name="B4" value="Delete Section" type="button" onclick="deleteSection(select_section.section.selectedIndex)">\r
153         <input name="B5" value="Add Section" type="button" onclick="switchDiv('set-add', 'set-');return true;"></form>\r
155       <hr>Administration\r
156       <form method="post">\r
157         <p align="center"><input name="B1" id="B1" value="Save Changes" type="button" onclick="showData(document.config);return true;">\r
158         <input id="B2" name="B2" value="Soft Reset pyTivo" type="button" onclick="resetpyTivo();"></p>\r
160       </form>\r
162 <a href="javascript:alert('This feature is not available yet');">View Raw File</a> </div>\r
164       </td>\r
166       <td style="vertical-align: top;">\r
167       <div id="settings" style="width: 300px; overflow: scroll; height: 450px; position: relative;">\r
168       <form name="config" method="GET" action="TiVoConnect" onsubmit="fillBlank();showData(this);">\r
169       <input type="hidden" name="Command" value="UpdateSettings">\r
170       <input type="hidden" name="Container" value="$container">\r
171 <div id="set-server" style="width: 280px; text-align: center;position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
172         <b>Global Server Settings</b><br>\r
173         <hr style="width: 100%; height: 2px;"> \r
174         <table align="center">\r
175 #set $i = 0\r
176 #for $key in $server_known\r
177 #set $i += 1\r
178 #if $i%2\r
179 <tr style="background-color: rgb(250, 250, 250);">\r
180 #else\r
181 <tr>\r
182 #end if\r
183 <td>\r
184 #if $key in $server_data\r
185         $key :</td><td><input size="20" id="Server.$key" name="Server.$key" value="$server_data[$key]" onChange="saveNotify();" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
187 #else\r
188         $key :</td><td><input size="20" id="Server.$key" name="Server.$key" value="" onChange="saveNotify();" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
190 #end if\r
191 </td></tr>\r
192 #end for\r
193 <tr><td colspan="2" align="center" style="border-bottom: 1px solid rgb(153, 153, 153);">User Defined Settings:</td></tr>        \r
194 #set $i = 0\r
195 #for $key in $server_data \r
196         #if not $key in $server_known\r
197                 #set $i += 1\r
198                 #if $i%2\r
199                         <tr style="background-color: rgb(250, 250, 250);">\r
200                 #else\r
201                         <tr>\r
202                 #end if\r
203                 <td>         $key :</td><td>\r
204                 <input size="20" id="Server.$key" name="Server.$key" value="$server_data[$key]" onChange="saveNotify();" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
205                 </td></tr>\r
206         #end if \r
207 #end for \r
208         </table>\r
209         <div style="width: 280px; position: relative;">\r
210                 <div id="add-server-button" style="width: 280px; position: absolute; position: absolute; left: 0px; top: 0px;">\r
211                         <br>\r
212                         <center>\r
213                         <input type="button" value="Add Setting" onclick="switchDiv('add-server-field', 'add-server-');return true;">\r
214                         </center>\r
215                 </div>\r
216                 <div id="add-server-field" style="position: absolute; position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
217                         <table style="width: 265px;">\r
218                         <tr><td colspan="2" align="center" style="border-bottom: 1px solid rgb(153, 153, 153);">Add a Setting</td></tr>\r
219                         <tr><td>Setting Name:</td><td>Setting Value:</td></tr>\r
220                         <tr><td><input size="16" id="Server.new_settting" name="Server.new__setting" onChange="saveNotify();" type="text" value=""></td><td><input size="16" type="text" onChange="saveNotify();" id="Server.new_value"  name="Server.new__value" value=""></td></tr>\r
221                         </table>\r
222                 </div>\r
223         </div>\r
224 </div>\r
225 #set $section_count = 0\r
226 #set $section_map = ''\r
227 #for $name, $data in $shares_data\r
228         #set $section_count += 1\r
229         #set $section_number = 'section-' + str($section_count)\r
230         <input type="hidden" name="$name" id="$name" value="$section_number">\r
231         #set $section_map += $section_number + '|' + $name + ']'\r
232         <div id="set-$name" style="text-align: center;position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
233         [<input size="20" onChange="saveNotify();" id="$section_number" name="$section_number" value="$name">]<br>\r
234         <hr style="width: 100%; height: 2px;"><table align="center">\r
235         #set $i = 0\r
236         #for $key in $shares_known\r
237                 #set $i += 1\r
238                 #if $i%2\r
239                         <tr style="background-color: rgb(250, 250, 250);">\r
240                 #else\r
241                         <tr>\r
242                 #end if\r
243                 #if $key in $data\r
244                         <td>$key :</td><td><input onChange="saveNotify();" size="20" id="$section_number.$key" name="$section_number.$key" value="$data[$key]" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
245                         </td>\r
246                 #else\r
247                         <td>$key : </td><td><input onChange="saveNotify();" size="20" id="$section_number.$key" name="$section_number.$key" value="" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
248                         </td>\r
249                 #end if\r
250                 </tr>\r
251         #end for\r
253         <tr><td colspan="2" align="center" style="border-bottom: 1px solid rgb(153, 153, 153);">User Defined Settings:</td></tr> \r
254         #set $i = 0\r
255         #for $key in $data \r
256                 #if not $key in $shares_known\r
257                         #set $i += 1\r
258                         #if $i%2\r
259                                 <tr style="background-color: rgb(250, 250, 250);">\r
260                         #else\r
261                                 <tr>\r
262                         #end if\r
263                         <td> $key : </td><td>\r
264                         <input size="20" onChange="saveNotify();" id="$section_number.$key" name="$section_number.$key" value="$data[$key]" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
265                         </td></tr>\r
266                 #end if \r
267         #end for\r
268         </table>\r
269                 <div style="position: relative;">\r
270                         <div id="add-$name-button" style="width: 280px; position: absolute; position: absolute; left: 0px; top: 0px;">\r
271                                 <br>\r
272                                 <center>\r
273                                 <input type="button" value="Add Setting" onclick="switchDiv('add-$name-field', 'add-$name-');return true;">\r
274                                 </center>\r
275                         </div>\r
276                         <div id="add-$name-field" style="position: absolute; position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
277                                 <table style="width: 265px;">\r
278                                 <tr><td colspan="2" align="center" style="border-bottom: 1px solid rgb(153, 153, 153);">Add a Setting</td></tr>\r
279                                 <tr><td>Setting Name:</td><td>Setting Value:</td></tr>\r
280                                 <tr><td><input onChange="saveNotify();" size="16" id="$(section_number).new__setting" name="$(section_number).new__setting" type="text" value=""></td><td><input onChange="saveNotify();" size="16" type="text" id="$(section_number).new__value" name="$(section_number).new__value" value=""></td></tr>\r
281                                 </table>\r
282                         </div>\r
283                 </div>\r
284         </div>\r
285 #end for\r
287 #for $name, $data in $tivos_data\r
288         #set $section_count += 1\r
289         #set $section_number = 'section-' + str($section_count)\r
290         <input type="hidden" name="$name" id="$name" value="$section_number">\r
291         #set $section_map += $section_number + '|' + $name + ']'\r
292         <div id="set-$name" style="text-align: center;position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
293         [<input size="20" onChange="saveNotify();" id="$section_number" name="$section_number" value="$name">]<br>\r
294         <hr style="width: 100%; height: 2px;"><table align="center">\r
295         #set $i = 0\r
296         #for $key in $tivos_known\r
297                 #set $i += 1\r
298                 #if $i%2\r
299                         <tr style="background-color: rgb(250, 250, 250);">\r
300                 #else\r
301                         <tr>\r
302                 #end if\r
303                 #if $key in $data\r
304                         <td>$key :</td><td><input onChange="saveNotify();" size="20" id="$section_number.$key" name="$section_number.$key" value="$data[$key]" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
305                         </td>\r
306                 #else\r
307                         <td>$key :</td><td><input onChange="saveNotify();" size="20" id="$section_number.$key" name="$section_number.$key" value="" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
308                         </td>\r
309                 #end if\r
310                 </tr>\r
311         #end for\r
313         <tr><td colspan="2" align="center" style="border-bottom: 1px solid rgb(153, 153, 153);">User Defined Settings:</td></tr> \r
314         #set $i = 0\r
315         #for $key in $data \r
316                 #if not $key in $tivos_known\r
317                         #set $i += 1\r
318                         #if $i%2\r
319                                 <tr style="background-color: rgb(250, 250, 250);">\r
320                         #else\r
321                                 <tr>\r
322                         #end if\r
323                         <td> $key :</td><td> \r
324                         <input size="20" onChange="saveNotify();" id="$section_number.$key" name="$section_number.$key" value="$data[$key]" onfocus="switchDiv('help-$key', 'help-');return true;" type="text">\r
325                         </td></tr>\r
326                 #end if \r
327         #end for\r
328         </table>\r
329                 <div style="position: relative;">\r
330                         <div id="add-$name-button" style="width: 280px; position: absolute; position: absolute; left: 0px; top: 0px;">\r
331                                 <br>\r
332                                 <center>\r
333                                 <input type="button" value="Add Setting" onclick="switchDiv('add-$name-field', 'add-$name-');return true;">\r
334                                 </center>\r
335                         </div>\r
336                         <div id="add-$name-field" style="position: absolute; position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
337                                 <table style="width: 265px;">\r
338                                 <tr><td colspan="2" align="center" style="border-bottom: 1px solid rgb(153, 153, 153);">Add a Setting</td></tr>\r
339                                 <tr><td>Setting Name:</td><td>Setting Value:</td></tr>\r
340                                 <tr><td><input onChange="saveNotify();" size="16" id="$(section_number).new__setting" name="$(section_number).new__setting" type="text" value=""></td><td><input onChange="saveNotify();" size="16" type="text" id="$(section_number).new__value" name="$(section_number).new__value" value=""></td></tr>\r
341                                 </table>\r
342                         </div>\r
343                 </div>\r
344         </div>\r
345 #end for\r
346 <div id="set-add" style="text-align: center;position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
347         Add a New Section\r
348         <hr>\r
349         <table>\r
350         <tr>\r
351         <td> Section Name :</td><td> \r
352                 <input onChange="saveNotify();" type="text" size="20" name="new_Section" value="" onfocus="switchDiv('help-add', 'help-');return true;">\r
353         </td></tr></table>\r
354         The new section name will be added to the pyTivo.conf file when you click <b>Save Changes</b>.\r
355 </div>\r
356 <div id="set-delete" style="text-align: center;position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
357         Delete a Section\r
358         <hr>\r
359         <br>\r
360         The Section has been marked for deletion. However it will not be actually deleted until you click the <b>Save Changes</b> button.\r
361 </div>\r
362 <input type="hidden" id="Section_Map" name="Section_Map" value="$section_map">\r
363       </form>\r
365       </div>\r
367       </td>\r
369       <td style="border-left: 1px dotted rgb(153, 153, 153); vertical-align: top;">\r
370       <div id="sidesections" style="width: 400px; position: relative;"><!-- HELP SECTIONS -->\r
371       <div id="help-instructions" style="visibility: visible; width: 400px; overflow: scroll; height: 450px; position: absolute; left: 0px; top: 0px;">\r
372       <p align="center"><strong>Instructions</strong>\r
373       </p>\r
374       <b>To Edit a Share:</b><br>\r
375       Select the share in the left hand menu and click edit.<br><br>\r
376       \r
377       <b>To Delete a Share</b><br>\r
378       Select the share in the left hand menu and click delete.<br><br>\r
379       \r
380       <b>To Add a Share/Tivo/Section</b><br>\r
381       Click the add section button.  Then provide the name of the share or TiVo. You must save your \r
382       changes before you can edit settings in the new share.<br><br>\r
383       \r
384       <b>To Add a Setting</b><br>\r
385       Select you share first.  If the setting is a known setting simply add the value to the appropriate setting.\r
386       If the setting is not listed you can add a "User Defined Setting".  Simple click add setting and provide\r
387       the name and value of this new setting.<br><br>\r
388       \r
389       <b>To Delete a Setting</b><br>\r
390       Delete the value of the setting so that it is blank.  If this is a known share the name will remain after a save.\r
391       If the setting is a user defined setting the name will be deleted after the save.<br><br>\r
392       \r
393       <b>Save Settings</b><br>\r
394       Clicking Save Settings will write your changes to the pyTivo.conf file.  These settings will not have an effect on\r
395       your pyTivo server until it is Soft Reset or restarted.<br><br>\r
396       \r
397       <b>Soft Reset</b><br>\r
398       Soft Reset allows your new settings to take effect without manually restarting the TiVo.  The Soft Reset will cause\r
399       a re-read of the pyTivo.conf file so your changes must be saved to the file before the reset.  <b>Note:</b> The only\r
400       setting that will not take effect until a hard restart is the Port setting.  Changing the Port setting requires a full\r
401       restart.      \r
402       </div>\r
404         <div id="help-add" style="position: absolute; left: 0px; top: 0px; visibility: hidden;">\r
405       <p align="center"><strong>Add a New Section</strong> </p>\r
407       <p> Add the name of a new section.<br>\r
409       Remember if you want to add TiVo section remember it must start with _tivo_<br>\r
411       You must save your settings before the new section will be editable.<br>\r
412         </p>\r
414       </div>\r
415 #for $setting in $help_list\r
416         <div id="help-$setting" style="visibility: hidden; width: 400px; overflow: scroll; height: 450px; position: absolute; left: 0px; top: 0px;">\r
417               <p align="center"><strong>$setting</strong></p>\r
418               #for $line in $help_list[$setting]\r
419                   <strong>$(line.split(':',1)[0]):</strong>$(line.split(':',1)[1])</p>\r
420               #end for\r
421         </div>\r
422 #end for\r
423 <!-- END HELP SECTIONS --> </div>\r
425       </td>\r
427     </tr>\r
429   </tbody>\r
430 </table>\r
431 </center>\r
432 </body>\r
433 </html>\r