luci-app-openvpn: "final" changeset
[project/luci.git] / applications / luci-app-openvpn / luasrc / view / openvpn / cbi-select-input-add.htm
1
2 <script type="text/javascript">
3 //<![CDATA[
4 function vpn_add()
5 {
6 var vpn_name = div_add.querySelector("#instance_name1").value.replace(/[^\x00-\x7F]|[\s!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,'');
7 var vpn_template = div_add.querySelector("#instance_template").value;
8 var form = document.getElementsByName('cbi')[0];
9
10 if (!vpn_name || !vpn_name.length)
11 {
12 return info_message(vpn_output, "<%=pcdata(translate("The 'Name' field must not be empty!"))%>", 2000);
13 }
14
15 document.getElementById("instance_name1").value = vpn_name;
16 if (document.getElementById("cbi-openvpn-" + vpn_name) != null)
17 {
18 return info_message(vpn_output, "<%=pcdata(translate("Instance with that name already exists!"))%>", 2000);
19 }
20
21 if (!vpn_template || !vpn_template.length)
22 {
23 return info_message(vpn_output, "<%=pcdata(translate("Please select a valid VPN template!"))%>", 2000);
24 }
25
26 if (form)
27 {
28 form.submit();
29 }
30 }
31
32 function vpn_upload()
33 {
34 var vpn_name = div_upload.querySelector("#instance_name2").value.replace(/[^\x00-\x7F]|[\s!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,'');
35 var vpn_file = document.getElementById("ovpn_file").value;
36 var form = document.getElementsByName('cbi')[0];
37
38 if (!vpn_name || !vpn_name.length)
39 {
40 return info_message(vpn_output, "<%=pcdata(translate("The 'Name' field must not be empty!"))%>", 2000);
41 }
42
43 document.getElementById("instance_name2").value = vpn_name;
44 if (document.getElementById("cbi-openvpn-" + vpn_name) != null)
45 {
46 return info_message(vpn_output, "<%=pcdata(translate("Instance with that name already exists!"))%>", 2000);
47 }
48
49 if (!vpn_file || !vpn_file.length)
50 {
51 return info_message(vpn_output, "<%=pcdata(translate("Please select a valid OVPN config file to upload!"))%>", 2000);
52 }
53
54 if (form)
55 {
56 form.enctype = 'multipart/form-data';
57 form.action = '<%=url('admin/services/openvpn/upload')%>';
58 form.submit();
59 }
60 }
61
62 function info_message(output, msg, timeout)
63 {
64 timeout = timeout || 0;
65 output.innerHTML = '<em>' + msg + '</em>';
66 if (timeout > 0)
67 {
68 setTimeout(function(){ output.innerHTML=""}, timeout);
69 }
70 }
71 //]]>
72 </script>
73
74 <%+openvpn/ovpn_css%>
75
76 <div class="cbi-section-node">
77 <div class="table cbi-section-table">
78 <h4><%:Template based configuration%></h4>
79 <div class="tr cbi-section-table-row" id="div_add">
80 <div class="td left">
81 <input type="text" maxlength="20" placeholder="Instance name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.text" id="instance_name1" />
82 </div>
83 <div class="td left">
84 <select id="instance_template" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select">
85 <option value="" selected="selected" disabled="disabled"><%:Select template ...%></option>
86 <%- for k, v in luci.util.kspairs(self.add_select_options) do %>
87 <option value="<%=k%>"><%=luci.util.pcdata(v)%></option>
88 <% end -%>
89 </select>
90 </div>
91 <div class="td left">
92 <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_add(); return false;" value="<%:Add%>" title="<%:Add template based configuration%>" /><br />
93 </div>
94 </div>
95 <h4><%:OVPN configuration file upload%></h4>
96 <div class="tr cbi-section-table-row" id="div_upload">
97 <div class="td left">
98 <input type="text" maxlength="20" placeholder="Instance name" name="instance_name2" id="instance_name2" />
99 </div>
100 <div class="td left">
101 <input type="file" name="ovpn_file" id="ovpn_file" accept="application/x-openvpn-profile,.ovpn" />
102 </div>
103 <div class="td left">
104 <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_upload(); return false;" value="<%:Upload%>" title="<%:Upload ovpn file%>" />
105 </div>
106 </div>
107 </div>
108 <div class="vpn-output">
109 <span id="vpn_output"></span>
110 </div>
111 </div>