user_preferences.js 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. $(document).ready(function () {
  2. $("input:checkbox, input:text, select").uniform();
  3. setOptions();
  4. setEvents();
  5. });
  6. updateCallback = function () {
  7. setOptions();
  8. };
  9. function setOptions() {
  10. $("#saveMaxDateButton").button().hide();
  11. $("#maxDateType").buttonset();
  12. $(':checkbox', '#options-box').removeAttr('checked');
  13. $("#justDelete").prop('checked', preferences.justDelete);
  14. $("#showAlerts").prop('checked', preferences.showAlerts);
  15. $("#showDomain").prop('checked', preferences.showDomain);
  16. $("#showContextMenu").prop('checked', preferences.showContextMenu);
  17. $("#showFlagAndDeleteAll").prop('checked', preferences.showFlagAndDeleteAll);
  18. $("#showCommandsLabels").prop('checked', preferences.showCommandsLabels);
  19. if (isChristmasPeriod()) {
  20. $("#showChristmasIcon").prop('checked', preferences.showChristmasIcon);
  21. } else {
  22. $("#showChristmasIcon").closest(".formLine").hide();
  23. }
  24. $("#refreshAfterSubmit").prop('checked', preferences.refreshAfterSubmit);
  25. $("#skipCacheRefresh").prop('checked', preferences.skipCacheRefresh);
  26. $("#skipCacheRefresh").prop("disabled", !preferences.refreshAfterSubmit);
  27. if (!preferences.refreshAfterSubmit) {
  28. $("#skipCacheRefreshLabel").addClass("disabled");
  29. } else {
  30. $("#skipCacheRefreshLabel").removeClass("disabled");
  31. }
  32. $("#useCustomLocale").prop('checked', preferences.useCustomLocale);
  33. $("#customLocale").empty();
  34. $("#customLocale").prop("disabled", !preferences.useCustomLocale);
  35. var select = $("#customLocale");
  36. existingLocales = chrome.i18n.getExistingLocales();
  37. for (var i = 0; i < existingLocales.length; i++) {
  38. $("#customLocale").append($("<option>").attr("value", existingLocales[i].code).prop("selected", (existingLocales[i].code == preferences.customLocale)).text(existingLocales[i].name));
  39. }
  40. $("#useMaxDate").prop('checked', preferences.useMaxCookieAge);
  41. $("#maxDate").prop("disabled", !preferences.useMaxCookieAge);
  42. if (!preferences.useMaxCookieAge) {
  43. $("#maxDateLabel").addClass("disabled");
  44. $("#maxDateType").buttonset("disable");
  45. $("#saveMaxDateButton").button("disable");
  46. } else {
  47. $("#maxDateLabel").removeClass("disabled");
  48. $("#maxDateType").buttonset("enable");
  49. $("#saveMaxDateButton").button("enable");
  50. }
  51. $("#maxDate").val(preferences.maxCookieAge);
  52. $("input:radio", ".radioMaxDate").prop('checked', false);
  53. $("input:radio[value='" + preferences.maxCookieAgeType + "']").prop('checked', true);
  54. $("#maxDateType").buttonset("refresh");
  55. $("option[value='" + preferences.copyCookiesType + "']").prop("selected", true);
  56. $("#showDomainBeforeName").prop('checked', preferences.showDomainBeforeName);
  57. $("#showDomainBeforeName").prop("disabled", !preferences.showDomain);
  58. if (!preferences.showDomain)
  59. $("#showDomainBeforeNameLabel").addClass("disabled");
  60. else
  61. $("#showDomainBeforeNameLabel").removeClass("disabled");
  62. $("option[value='" + preferences.sortCookiesType + "']").prop("selected", true);
  63. $("#showDevToolsPanel").prop('checked', preferences.showDevToolsPanel);
  64. $.uniform.update();
  65. }
  66. //Set Events
  67. function setEvents() {
  68. $("#showAlerts").click(function () {
  69. preferences.showAlerts = $('#showAlerts').prop("checked");
  70. });
  71. $("#showDomain").click(function () {
  72. preferences.showDomain = $('#showDomain').prop("checked");
  73. $("#showDomainBeforeName").prop("disabled", !preferences.showDomain);
  74. if (!preferences.showDomain) {
  75. $("#showDomainBeforeNameLabel").addClass("disabled");
  76. } else {
  77. $("#showDomainBeforeNameLabel").removeClass("disabled");
  78. }
  79. $.uniform.update();
  80. });
  81. $("#refreshAfterSubmit").click(function () {
  82. preferences.refreshAfterSubmit = $('#refreshAfterSubmit').prop("checked");
  83. $("#skipCacheRefresh").prop("disabled", !preferences.refreshAfterSubmit);
  84. if (preferences.refreshAfterSubmit) {
  85. $("#skipCacheRefreshLabel").removeClass("disabled");
  86. } else {
  87. $("#skipCacheRefreshLabel").addClass("disabled");
  88. }
  89. $.uniform.update();
  90. });
  91. $("#skipCacheRefresh").click(function () {
  92. preferences.skipCacheRefresh = $('#skipCacheRefresh').prop("checked");
  93. });
  94. $("#encodeCookieValue").click(function () {
  95. preferences.encodeCookieValue = $('#encodeCookieValue').prop("checked");
  96. });
  97. $("#showContextMenu").click(function () {
  98. preferences.showContextMenu = $('#showContextMenu').prop("checked");
  99. });
  100. $("#showFlagAndDeleteAll").click(function () {
  101. preferences.showFlagAndDeleteAll = $('#showFlagAndDeleteAll').prop("checked");
  102. });
  103. $("#showCommandsLabels").click(function () {
  104. preferences.showCommandsLabels = $('#showCommandsLabels').prop("checked");
  105. });
  106. $("#showChristmasIcon").click(function () {
  107. preferences.showChristmasIcon = $('#showChristmasIcon').prop("checked");
  108. });
  109. $("#useMaxDate").click(function () {
  110. updateMaxDate();
  111. });
  112. $("#maxDateType").click(function () {
  113. $("#saveMaxDateButton:hidden").fadeIn();
  114. });
  115. $("#maxDate").keydown(function (e) {
  116. var keyPressed;
  117. if (!e) var e = window.event;
  118. if (e.keyCode) keyPressed = e.keyCode;
  119. else if (e.which) keyPressed = e.which;
  120. if (keyPressed == 46 || keyPressed == 8 || keyPressed == 9 || keyPressed == 27 || keyPressed == 13 ||
  121. // Allow: Ctrl+A
  122. (keyPressed == 65 && e.ctrlKey === true) ||
  123. // Allow: home, end, left, right
  124. (keyPressed >= 35 && keyPressed <= 39)) {
  125. // let it happen, don't do anything
  126. return;
  127. }
  128. else {
  129. // Ensure that it is a number and stop the keypress
  130. if (e.shiftKey || (keyPressed < 48 || keyPressed > 57) && (keyPressed < 96 || keyPressed > 105)) {
  131. e.preventDefault();
  132. }
  133. }
  134. });
  135. $("#maxDate").bind("keyup blur", function (e) {
  136. $("#saveMaxDateButton:hidden").fadeIn();
  137. });
  138. $("#saveMaxDateButton").click(function (e) {
  139. $("#saveMaxDateButton").fadeOut(function () {
  140. $("#shortenProgress").fadeIn(function () {
  141. updateMaxDate(true);
  142. });
  143. });
  144. });
  145. $("#useCustomLocale").click(function () {
  146. preferences.useCustomLocale = $('#useCustomLocale').prop("checked");
  147. top.location.reload();
  148. });
  149. $("#customLocale").change(function () {
  150. preferences.customLocale = $("#customLocale").val();
  151. top.location.reload();
  152. });
  153. $("#copyCookiesType").change(function () {
  154. preferences.copyCookiesType = $("#copyCookiesType").val();
  155. });
  156. $("#showDomainBeforeName").click(function () {
  157. preferences.showDomainBeforeName = $('#showDomainBeforeName').prop("checked");
  158. });
  159. $("#sortCookiesType").change(function () {
  160. preferences.sortCookiesType = $("#sortCookiesType").val();
  161. });
  162. $("#showDevToolsPanel").change(function () {
  163. preferences.showDevToolsPanel = $('#showDevToolsPanel').prop("checked");
  164. });
  165. }
  166. var totalCookies;
  167. var cookiesShortened;
  168. function updateMaxDate(filterAllCookies) {
  169. var tmp_useMaxCookieAge = $('#useMaxDate').prop("checked");
  170. $("#useMaxDate").prop('checked', tmp_useMaxCookieAge);
  171. $("#maxDate").prop("disabled", !tmp_useMaxCookieAge);
  172. if (!tmp_useMaxCookieAge) {
  173. $("#maxDateLabel").addClass("disabled");
  174. $("#maxDateType").buttonset("disable");
  175. $("#saveMaxDateButton").button("disable").fadeOut();
  176. $("#saveMaxDateButton:visible").fadeOut();
  177. } else {
  178. $("#maxDateLabel").removeClass("disabled");
  179. $("#maxDateType").buttonset("enable");
  180. $("#saveMaxDateButton").button("enable");
  181. if (!filterAllCookies)
  182. $("#saveMaxDateButton:hidden").fadeIn();
  183. }
  184. if (!tmp_useMaxCookieAge || filterAllCookies)
  185. preferences.useMaxCookieAge = tmp_useMaxCookieAge;
  186. if (filterAllCookies == undefined || filterAllCookies == false)
  187. return;
  188. preferences.maxCookieAgeType = $("input:radio[name='radioMaxDate']:checked").val();
  189. tmp_maxCookieAge = parseInt($("#maxDate").val());
  190. if (!(typeof tmp_maxCookieAge === 'number' && tmp_maxCookieAge % 1 == 0)) {
  191. $("#maxDate").val(1);
  192. tmp_maxCookieAge = 1;
  193. }
  194. preferences.maxCookieAge = tmp_maxCookieAge;
  195. chrome.cookies.getAll({}, function (cookies) {
  196. totalCookies = cookies.length;
  197. cookiesShortened = 0;
  198. $("span", "#shortenProgress").text("0 / " + totalCookies);
  199. shortenCookies(cookies, setOptions);
  200. });
  201. }
  202. function shortenCookies(cookies, callback) {
  203. if (cookies.length <= 0) {
  204. data.nCookiesShortened += cookiesShortened;
  205. $("#shortenProgress").fadeOut(function () {
  206. if (callback != undefined)
  207. callback();
  208. });
  209. return;
  210. }
  211. $("span", "#shortenProgress").text((totalCookies - cookies.length) + " / " + totalCookies);
  212. var cookie = cookies.pop();
  213. var maxAllowedExpiration = Math.round((new Date).getTime() / 1000) + (preferences.maxCookieAge * preferences.maxCookieAgeType);
  214. if (cookie.expirationDate != undefined && cookie.expirationDate > maxAllowedExpiration) {
  215. console.log("Shortening life of cookie '" + cookie.name + "' from '" + cookie.expirationDate + "' to '" + maxAllowedExpiration + "'");
  216. var newCookie = cookieForCreationFromFullCookie(cookie);
  217. if (!cookie.session)
  218. newCookie.expirationDate = maxAllowedExpiration;
  219. chrome.cookies.set(newCookie, function () {
  220. shortenCookies(cookies, callback)
  221. });
  222. cookiesShortened++;
  223. } else
  224. shortenCookies(cookies, callback);
  225. }