git-svn-id: svn://euphorik.ch/pompage@45 02bbb61a-6d21-0410-aba0-cb053bdfd66a
[pompage.git] / doc / webdeveloper / dialogs / cookie.js
1 // Initializes the cookie dialog
2 function webdeveloper_initializeCookie()
3 {
4 var stringBundle = document.getElementById("webdeveloper-string-bundle");
5
6 // If the first argument equals add
7 if(window.arguments[0] == "add")
8 {
9 var url = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURL);
10 var windowContent = window.opener.document.getElementById("content");
11
12 document.title = stringBundle.getString("webdeveloper_addCookie");
13 url.spec = windowContent.browsers[windowContent.mTabBox.selectedIndex].contentDocument.documentURI;
14
15 document.getElementById("webdeveloper-cookie-expires").value = new Date().toUTCString();
16 document.getElementById("webdeveloper-cookie-host").value = url.host;
17 document.getElementById("webdeveloper-cookie-path").value = url.path;
18 }
19 else
20 {
21 document.title = stringBundle.getString("webdeveloper_editCookie");
22
23 document.getElementById("webdeveloper-cookie-name").value = window.arguments[1];
24 document.getElementById("webdeveloper-cookie-value").value = window.arguments[2];
25 document.getElementById("webdeveloper-cookie-host").value = window.arguments[3];
26 document.getElementById("webdeveloper-cookie-path").value = window.arguments[4];
27
28 // If the cookie is a session cookie
29 if(window.arguments[5] == stringBundle.getString("webdeveloper_viewCookieInformationSession"))
30 {
31 document.getElementById("webdeveloper-cookie-expires").disabled = true;
32 document.getElementById("webdeveloper-cookie-session").checked = true;
33 }
34 else
35 {
36 document.getElementById("webdeveloper-cookie-expires").value = window.arguments[5];
37 }
38
39 // If the cookie is secure
40 if(window.arguments[6] == "true")
41 {
42 document.getElementById("webdeveloper-cookie-secure").checked = true;
43 }
44 }
45 }
46
47 // Saves the cookie
48 function webdeveloper_saveCookie()
49 {
50 var host = document.getElementById("webdeveloper-cookie-host").value.trim();
51 var errors = "";
52 var expires = document.getElementById("webdeveloper-cookie-expires").value.trim();
53 var expiresDate = new Date(expires);
54 var name = document.getElementById("webdeveloper-cookie-name").value.trim();
55 var path = document.getElementById("webdeveloper-cookie-path").value.trim();
56 var stringBundle = document.getElementById("webdeveloper-string-bundle");
57
58 // If the name is empty
59 if(!name)
60 {
61 errors += stringBundle.getString("webdeveloper_emptyName") + "\n";
62 }
63
64 // If the host is empty
65 if(!host)
66 {
67 errors += stringBundle.getString("webdeveloper_emptyHost") + "\n";
68 }
69
70 // If the path is empty
71 if(!path)
72 {
73 errors += stringBundle.getString("webdeveloper_emptyPath") + "\n";
74 }
75
76 // If this is not a session cookie
77 if(!document.getElementById("webdeveloper-cookie-session").checked)
78 {
79 // If the expires is empty
80 if(!expires)
81 {
82 errors += stringBundle.getString("webdeveloper_emptyExpires") + "\n";
83 }
84 else if(expiresDate && expiresDate == "Invalid Date")
85 {
86 errors += stringBundle.getString("webdeveloper_invalidExpires") + "\n";
87 }
88 }
89
90 // If there are errors
91 if(errors)
92 {
93 webdeveloper_error(errors.trim());
94
95 return false;
96 }
97 else
98 {
99 var cookie = name + "=" + document.getElementById("webdeveloper-cookie-value").value.trim() + ";";
100 var cookieService = Components.classes["@mozilla.org/cookieService;1"].getService().QueryInterface(Components.interfaces.nsICookieService);
101 var scheme = "http://";
102 var secure = document.getElementById("webdeveloper-cookie-secure").checked;
103 var session = document.getElementById("webdeveloper-cookie-session").checked;
104 var uri = null;
105
106 // If the first argument equals edit
107 if(window.arguments[0] == "edit")
108 {
109 Components.classes["@mozilla.org/cookiemanager;1"].getService(Components.interfaces.nsICookieManager).remove(window.arguments[3], window.arguments[1], window.arguments[4], false);
110 }
111
112 // If the host is a domain
113 if(host.charAt(0) == ".")
114 {
115 cookie += "domain=" + host + ";";
116 }
117
118 cookie += "path=" + path + ";";
119
120 // If this is not a session cookie
121 if(!session)
122 {
123 cookie += "expires=" + expiresDate + ";";
124 }
125
126 // If the cookie is secure
127 if(secure)
128 {
129 cookie += "secure;";
130 scheme = "https://";
131 }
132
133 uri = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI(scheme + host + path, null, null);
134
135 cookieService.setCookieString(uri, null, cookie, null);
136 }
137
138 return true;
139 }
140
141 // Updates the expiry status
142 function webdeveloper_updateExpiryStatus()
143 {
144 var disabled = false;
145 var expires = new Date();
146
147 // If session cookie is checked
148 if(document.getElementById("webdeveloper-cookie-session").checked)
149 {
150 disabled = true;
151 expires = "";
152 }
153
154 document.getElementById("webdeveloper-cookie-expires").disabled = disabled;
155 document.getElementById("webdeveloper-cookie-expires").value = expires;
156 }