Permalink
Browse files

adding first version to github

  • Loading branch information...
0 parents commit 7ca2941f061748fb3e72017e9d04ebb6bea8ce8a @netaustin committed Nov 10, 2011
@@ -0,0 +1,3 @@
+= keyboard_shortcuts
+
+Description goes here
@@ -0,0 +1,9 @@
+<%= stylesheet_link_tag("keyboard_shortcuts", :plugin => "redmine_keyboard_shortcuts", :media => "screen") %>
+<%= javascript_include_tag('cookie_jar', :plugin => 'redmine_keyboard_shortcuts') %>
+<%= javascript_include_tag('keyboard_shortcuts', :plugin => 'redmine_keyboard_shortcuts') %>
+<script type="text/javascript">
+ var ks_projects = <%= ActiveSupport::JSON.encode(Project.visible.find(:all, :select => 'name, identifier', :order => 'lft')) %>;
+ <% if (params[:controller] == 'issues' && params[:action] == 'show'): %>
+ var ks_issue_id = <%= @issue.id %>;
+ <% end %>
+</script>
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,157 @@
+/**
+ * Javascript code to store data as JSON strings in cookies.
+ * It uses prototype.js 1.5.1 (http://www.prototypejs.org)
+ *
+ * Author : Lalit Patel
+ * Website: http://www.lalit.org/lab/jsoncookies
+ * License: Apache Software License 2
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Version: 0.5
+ * Updated: Jan 26, 2009
+ *
+ * Chnage Log:
+ * v 0.5
+ * - Changed License from CC to Apache 2
+ * v 0.4
+ * - Removed a extra comma in options (was breaking in IE and Opera). (Thanks Jason)
+ * - Removed the parameter name from the initialize function
+ * - Changed the way expires date was being calculated. (Thanks David)
+ * v 0.3
+ * - Removed dependancy on json.js (http://www.json.org/json.js)
+ * - empty() function only deletes the cookies set by CookieJar
+ */
+
+var CookieJar = Class.create();
+
+CookieJar.prototype = {
+
+ /**
+ * Append before all cookie names to differntiate them.
+ */
+ appendString: "__CJ_",
+
+ /**
+ * Initializes the cookie jar with the options.
+ */
+ initialize: function(options) {
+ this.options = {
+ expires: 3600, // seconds (1 hr)
+ path: '', // cookie path
+ domain: '', // cookie domain
+ secure: '' // secure ?
+ };
+ Object.extend(this.options, options || {});
+
+ if (this.options.expires != '') {
+ var date = new Date();
+ date = new Date(date.getTime() + (this.options.expires * 1000));
+ this.options.expires = '; expires=' + date.toGMTString();
+ }
+ if (this.options.path != '') {
+ this.options.path = '; path=' + escape(this.options.path);
+ }
+ if (this.options.domain != '') {
+ this.options.domain = '; domain=' + escape(this.options.domain);
+ }
+ if (this.options.secure == 'secure') {
+ this.options.secure = '; secure';
+ } else {
+ this.options.secure = '';
+ }
+ },
+
+ /**
+ * Adds a name values pair.
+ */
+ put: function(name, value) {
+ name = this.appendString + name;
+ cookie = this.options;
+ var type = typeof value;
+ switch(type) {
+ case 'undefined':
+ case 'function' :
+ case 'unknown' : return false;
+ case 'boolean' :
+ case 'string' :
+ case 'number' : value = String(value.toString());
+ }
+ var cookie_str = name + "=" + escape(Object.toJSON(value));
+ try {
+ document.cookie = cookie_str + cookie.expires + cookie.path + cookie.domain + cookie.secure;
+ } catch (e) {
+ return false;
+ }
+ return true;
+ },
+
+ /**
+ * Removes a particular cookie (name value pair) form the Cookie Jar.
+ */
+ remove: function(name) {
+ name = this.appendString + name;
+ cookie = this.options;
+ try {
+ var date = new Date();
+ date.setTime(date.getTime() - (3600 * 1000));
+ var expires = '; expires=' + date.toGMTString();
+ document.cookie = name + "=" + expires + cookie.path + cookie.domain + cookie.secure;
+ } catch (e) {
+ return false;
+ }
+ return true;
+ },
+
+ /**
+ * Return a particular cookie by name;
+ */
+ get: function(name) {
+ name = this.appendString + name;
+ var cookies = document.cookie.match(name + '=(.*?)(;|$)');
+ if (cookies) {
+ return (unescape(cookies[1])).evalJSON();
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * Empties the Cookie Jar. Deletes all the cookies.
+ */
+ empty: function() {
+ keys = this.getKeys();
+ size = keys.size();
+ for(i=0; i<size; i++) {
+ this.remove(keys[i]);
+ }
+ },
+
+ /**
+ * Returns all cookies as a single object
+ */
+ getPack: function() {
+ pack = {};
+ keys = this.getKeys();
+
+ size = keys.size();
+ for(i=0; i<size; i++) {
+ pack[keys[i]] = this.get(keys[i]);
+ }
+ return pack;
+ },
+
+ /**
+ * Returns all keys.
+ */
+ getKeys: function() {
+ keys = $A();
+ keyRe= /[^=; ]+(?=\=)/g;
+ str = document.cookie;
+ CJRe = new RegExp("^" + this.appendString);
+ while((match = keyRe.exec(str)) != undefined) {
+ if (CJRe.test(match[0].strip())) {
+ keys.push(match[0].strip().gsub("^" + this.appendString,""));
+ }
+ }
+ return keys;
+ }
+};
Oops, something went wrong.

0 comments on commit 7ca2941

Please sign in to comment.