rails_admin_content 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -11
  3. data/app/assets/images/common/backtop.png +0 -0
  4. data/app/assets/images/common/bg.gif +0 -0
  5. data/app/assets/images/common/bg_glow.png +0 -0
  6. data/app/assets/images/common/black_opacity12.png +0 -0
  7. data/app/assets/images/common/black_opacity20.png +0 -0
  8. data/app/assets/images/common/header_bg.png +0 -0
  9. data/app/assets/images/common/header_logo.png +0 -0
  10. data/app/assets/images/common/header_site.png +0 -0
  11. data/app/assets/images/common/home_center.png +0 -0
  12. data/app/assets/images/common/ra_backtop.png +0 -0
  13. data/app/assets/images/common/ra_tools.png +0 -0
  14. data/app/assets/images/common/sidebar_ie_bg.png +0 -0
  15. data/app/assets/images/common/sidebar_search.png +0 -0
  16. data/app/assets/javascripts/develop/manages.js.coffee +56 -18
  17. data/app/assets/javascripts/rails_admin_content.js +2 -1
  18. data/app/assets/stylesheets/develop/application/common.css.sass +780 -0
  19. data/app/assets/stylesheets/develop/application/forbidden.css.sass +24 -0
  20. data/app/assets/stylesheets/develop/application/login.css.sass +153 -0
  21. data/app/assets/stylesheets/develop/application.css.scss +6 -0
  22. data/app/assets/stylesheets/rails_admin_content.css +3 -5
  23. data/app/assets/stylesheets/site.css +2 -323
  24. data/app/controllers/rails_admin_content/develop/manages_controller.rb +1 -0
  25. data/app/views/layouts/rails_admin_content/admin.html.slim +42 -51
  26. data/app/views/rails_admin_content/develop/manages/_filter.html.slim +20 -22
  27. data/app/views/rails_admin_content/develop/manages/_header.html.slim +31 -0
  28. data/app/views/rails_admin_content/develop/manages/edit.html.slim +13 -15
  29. data/app/views/rails_admin_content/develop/manages/edit_column.html.slim +1 -1
  30. data/app/views/rails_admin_content/develop/manages/new.html.slim +10 -10
  31. data/app/views/rails_admin_content/develop/manages/query.html.slim +3 -2
  32. data/app/views/rails_admin_content/develop/manages/show.html.slim +24 -24
  33. data/lib/assets/javascripts/jquery/jquery.color.js +123 -0
  34. data/lib/assets/javascripts/jquery/jquery.cookie.js +96 -0
  35. data/lib/rails_admin_content/client.rb +4 -0
  36. data/lib/rails_admin_content/mysql/adapters/client.rb +2 -0
  37. data/lib/rails_admin_content/version.rb +1 -1
  38. metadata +64 -9
  39. data/app/views/rails_admin_content/develop/manages/_menv.html.slim +0 -8
  40. data/app/views/rails_admin_content/develop/manages/_navbar.html.slim +0 -27
  41. data/lib/assets/codemirror/charisma-app.css +0 -501
  42. data/lib/assets/codemirror/matchbrackets.js +0 -82
  43. data/lib/assets/codemirror/solarized.css +0 -207
  44. data/lib/assets/codemirror/twilight.css +0 -26
  45. data/lib/assets/javascripts/bootstrap/bootstrap-alert.js +0 -100
@@ -32,6 +32,7 @@ class RailsAdminContent::Develop::ManagesController < RailsAdminContent::Develop
32
32
 
33
33
  def edit_column
34
34
  @fields = RailsAdminContent::Client.desc_table params[:id]
35
+ @sql = RailsAdminContent::Client.show_create_sql params[:id]
35
36
  end
36
37
 
37
38
  def details
@@ -1,58 +1,49 @@
1
1
  doctype html
2
2
  html
3
3
  head
4
- title RailsAdmin
5
- meta name="key_words" content="template languagea"
4
+ meta http-equiv="Content-Type" content="text/html; charset=utf-8"
5
+ title Rails Admin
6
6
  = stylesheet_link_tag "rails_admin_content", media: "all"
7
7
  = javascript_include_tag 'rails_admin_content'
8
8
  = csrf_meta_tag
9
- body
10
- #wrapper
11
- #wrapper2
12
- #wrapper3
13
- #header
14
- h1 RailsAdmin
15
- #main-menu
16
- - unless action_name =~ /query/
17
- = render 'navbar'
18
- - if flash[:success]
19
- .alert.alert-success
20
- button data-dismiss="alert" class="close" type="button" x
21
- strong
22
- | 成功:
23
- = flash[:success]
9
+ body.bgcolor16
10
+ #body.railsadmin
11
+ = render 'header'
12
+ .Container
13
+ .sidebar
14
+ .searchbox
15
+ form
16
+ .search
17
+ input.text type="text" value="" id="seaerch-T" placeholder="搜索文档"
18
+ input.submit type="submit" title="搜索文档" value="" onclick="return false"
19
+ .section
20
+ / h3 账号
21
+ ul.link_list
22
+ - RailsAdminContent::Client.get_tables.each do |table|
23
+ li data-field="#{table.values.first}"
24
+ = link_to table.values.first.to_s.truncate(30), develop_manage_path(table.values.first), title: "[#{table.keys.first}] #{table.values.first}", class: "#{'current' if params[:id] == table.values.first}"
25
+ .main
26
+ .section
27
+ - if action_name =~ /show/
28
+ h1
29
+ = params[:id]
30
+ .formbox
31
+ = render 'filter'
32
+ - if action_name =~ /query/
33
+ h1
34
+ .formbox
35
+ = render 'form'
36
+ = yield
24
37
 
25
- - if flash[:errors]
26
- .alert.alert-error
27
- button data-dismiss="alert" class="close" type="button" x
28
- strong
29
- | 错误:
30
- = flash[:errors]
31
-
32
- - if flash[:notice]
33
- .alert.alert-info
34
- button data-dismiss="alert" class="close" type="button" x
35
- strong
36
- | 成功:
37
- = flash[:notice]
38
- .container-fluid
39
- .row-fluid
40
- .span2
41
- = render 'menv'
42
- .content.span10
43
-
44
- - if action_name =~ /show/
45
- = render 'filter'
46
- - elsif action_name =~ /query/
47
- = render 'form'
48
- .span11 style="width:100%;margin: 0px;"
49
- = yield
50
- - if @entries.present?
51
- #edit_tools
52
- span
53
- label 当前选择<span id="select_num">0</span>条
54
- span
55
- = link_to 'ⓧ', "#", class: 'btn deselect', title: '取消选择'
56
- = link_to '✘', "", class: 'btn', title: '删除', disabled: true, id: "btn_delete"
57
- span
58
- = @entries.present? ? custom_paginate(@entries, spage: @page, stint: @per) : '0条数据'
38
+ .clear
39
+ .ra_tools
40
+ .fadeout
41
+ .tools_box
42
+ .manipulate
43
+ - if action_name =~ /show/
44
+ = link_to '+', new_develop_manage_path(id: RailsAdminContent::Client.table_name),class: 'tool_01'
45
+ = link_to '-', "", class: 'tool_02', title: '删除', id: 'btn_del'
46
+ / a.tool_02 href="#" -
47
+ / a.tool_03 href="#" v
48
+ = custom_paginate(@entries, spage: @page, stint: @per) if @entries.present?
49
+ a.layout_scrolltop id="layout_scrolltop" style="visibility: visible;" &nbsp;
@@ -1,25 +1,23 @@
1
1
  .span12
2
- .search
3
- .row
4
- = hidden_field_tag 'current_condition', params[:calc].present? && params[:calc].keys.join(",")
5
- = form_tag "", method: :post, class: 'form-search', method: :get
2
+ = hidden_field_tag 'current_condition', params[:calc].present? && params[:calc].keys.join(",")
3
+ = form_tag "", method: :post, class: 'form-search', method: :get
6
4
 
7
- - RailsAdminContent::Client.desc_table(params[:id]).each do |column|
8
- div class="span7 #{column["Field"]} check_edit" style="#{params[:calc].present? && params[:calc].has_key?(column["Field"]) ? '' : 'display:none;' }"
9
- .span4
10
- = label_tag do
11
- = check_box_tag "check_box[#{column['Field']}]", '', true, class: 'check_box_edit', name: '', 'data-field' => column['Field']
12
- |
13
- = column["Field"]
14
- .span3
15
- = select_tag "calc[#{column['Field']}]", options_for_select(RailsAdminContent::Client.select_field(column["Type"]), params[:calc].present? ? params[:calc][column['Field']] : nil), 'data-field' => "calc[#{column['Field']}]", class: 'span6 calc'
16
- .span3
17
- - column["Type"] = 'varchar' if column["Type"] == 'text'
18
- - column["Default"] = params[:field][column["Field"]] if params[:field].present?
19
- = content_field(column)
5
+ - RailsAdminContent::Client.desc_table(params[:id]).each do |column|
6
+ div class="span7 #{column["Field"]} check_edit" style="#{params[:calc].present? && params[:calc].has_key?(column["Field"]) ? '' : 'display:none;' }"
7
+ .span4
8
+ = label_tag do
9
+ = check_box_tag "check_box[#{column['Field']}]", '', true, class: 'check_box_edit', name: '', 'data-field' => column['Field']
10
+ |
11
+ = column["Field"]
12
+ .span3
13
+ = select_tag "calc[#{column['Field']}]", options_for_select(RailsAdminContent::Client.select_field(column["Type"]), params[:calc].present? ? params[:calc][column['Field']] : nil), 'data-field' => "calc[#{column['Field']}]", class: 'span6 calc'
14
+ .span3
15
+ - column["Type"] = 'varchar' if column["Type"] == 'text'
16
+ - column["Default"] = params[:field][column["Field"]] if params[:field].present?
17
+ = content_field(column)
20
18
 
21
- .span8
22
- = field_set_tag "Selection" do
23
- = select_tag 'select_field', options_for_select_column_data(params[:id]), class: 'span2', name: '', :prompt => "Select Filter"
24
- = button_tag 'Apply', class: 'btn'
25
- = link_to 'Clear', '#', class: 'btn clear'
19
+ .span8
20
+ = field_set_tag "Selection" do
21
+ = select_tag 'select_field', options_for_select_column_data(params[:id]), class: 'span2', name: '', :prompt => "Select Filter"
22
+ = button_tag 'Apply', class: 'btn'
23
+ = link_to 'Clear', '#', class: 'btn clear'
@@ -0,0 +1,31 @@
1
+ css:
2
+ body{
3
+ font-family: "Microsoft YaHei",'微软雅黑',msyh;
4
+ }
5
+ .HeaderContainer
6
+ a.logo title="Home"
7
+ ul.topbar
8
+ li
9
+ = link_to 'Home', develop_manages_path, class: "#{'current' if action_name =~ /index/}", title: 'Home'
10
+ - unless action_name =~ /index|query/
11
+ li
12
+ = link_to 'Content', develop_manage_path(RailsAdminContent::Client.table_name), class: "#{ 'current' if action_name =~ /show/ && controller_name =~ /manages/ }", title: 'Content'
13
+ li
14
+ = link_to 'Structure', edit_column_develop_manage_path(RailsAdminContent::Client.table_name), class: "#{ 'current' if action_name =~ /edit_column/ && controller_name =~ /manages/ }", title: 'Structure'
15
+
16
+ li
17
+ = link_to 'Table', details_develop_manage_path(RailsAdminContent::Client.table_name), class: "#{ 'current' if action_name =~ /details/ && controller_name =~ /manages/ }", title: 'Table info'
18
+ li
19
+ = link_to 'Query', query_develop_manages_path, class: 'btn-icon', title: 'Query'
20
+ a Help
21
+ .userinfo
22
+ ul
23
+ li.site
24
+ a.set title="设置"
25
+ .sitebox
26
+ .list
27
+ - (1...20).each do |i|
28
+ =link_to "bgcolor#{i}", '#', class: "color bgcolor#{i}"
29
+ .hr
30
+ .sitesignout
31
+ = link_to 'Sign out'
@@ -1,17 +1,15 @@
1
-
2
- .span8
3
- = form_tag(develop_manage_path(params[:id]), method: :put)
4
- = field_set_tag "Table[#{params[:table_name]}]" do
5
- = hidden_field_tag 'table_name', params[:table_name]
6
- - columns = RailsAdminContent::Client.conn.origin_query("DESC #{params[:table_name]}").each
7
- - RailsAdminContent::Client.conn.origin_query("SELECT * FROM #{params[:table_name]} WHERE id = #{params[:id]}").each[0].map do |key,value|
8
- - if key == "id"
9
- = hidden_field_tag :id, value
10
- - else
1
+ h1
2
+ = params[:table_name]
3
+ = form_tag(develop_manage_path(params[:id]), method: :put, class: 'formbox formitem')
4
+ = hidden_field_tag 'table_name', params[:table_name]
5
+ - columns = RailsAdminContent::Client.conn.origin_query("DESC #{params[:table_name]}").each
6
+ - RailsAdminContent::Client.conn.origin_query("SELECT * FROM #{params[:table_name]} WHERE id = #{params[:id]}").each[0].map do |key,value|
7
+ - if key == "id"
8
+ = hidden_field_tag :id, value
9
+ - else
10
+ fieldset
11
11
  = label_tag "field[#{key}]", key
12
12
  = content_field(columns.select{|c| c["Field"] == key }.first ,value)
13
- .controllers
14
- .span2
15
- = submit_tag 'Save', class: 'btn btn-primary'
16
- .span2
17
- = link_to 'Back', :back, class: 'btn'
13
+ fieldset.ff-item-top
14
+ = submit_tag 'Save'
15
+ = link_to 'Back', :back
@@ -27,4 +27,4 @@ hr
27
27
  td
28
28
  = field["Default"]
29
29
  td
30
- = field["extra"]
30
+ = field["extra"]
@@ -1,10 +1,10 @@
1
- .span8
2
- = form_tag develop_manages_path
3
- = field_set_tag "Table[#{params[:id]}]" do
4
- = hidden_field_tag 'table_name', params[:id]
5
- - RailsAdminContent::Client.conn.origin_query("DESC #{params[:id]}").each.map do |column|
6
- - next if column["Field"] == "id"
7
- = label_tag "field[#{column["Field"]}]", column["Field"]
8
- = content_field column
9
- .controllers
10
- = submit_tag 'Save', class: 'btn btn-primary'
1
+ h1
2
+ = params[:id]
3
+ = form_tag develop_manages_path, class: "formbox formitem"
4
+ = hidden_field_tag 'table_name', params[:id]
5
+ - RailsAdminContent::Client.conn.origin_query("DESC #{params[:id]}").each.map do |column|
6
+ - next if column["Field"] == "id"
7
+ = label_tag "field[#{column["Field"]}]", column["Field"]
8
+ = content_field column
9
+ .controllers
10
+ = submit_tag 'Save', class: 'btn btn-primary'
@@ -1,5 +1,5 @@
1
1
  - if @entries.present? && @entries.first
2
- .nav#nav
2
+ .tablescroll
3
3
  | #{@content}
4
4
  .details#grid_search
5
5
  form action="#{develop_manage_path(RailsAdminContent::Client.table_name)}" method="delete" id="details_form" remote="true"
@@ -7,7 +7,8 @@
7
7
  table#edit_tables.table-bordered.table.table-hover
8
8
  thead
9
9
  tr#th-title
10
- th Index
10
+ th
11
+ input type="checkbox" class="checkbox toggle" id="toggle_check"
11
12
  - @entries.first.keys.each do |entry|
12
13
  th
13
14
  = entry
@@ -1,27 +1,27 @@
1
1
 
2
- .nav#nav
2
+ .tablescroll
3
3
  | #{@content}
4
- .details#grid_search
5
- form action="#{develop_manage_path(params[:id])}" method="delete" id="details_form" remote="true"
6
- input type="hidden" value="#{RailsAdminContent::Client.table_name}" name="table_name"
7
- table#edit_tables.table-bordered.table.table-hover
8
- thead
9
- tr#th-title
10
- th Index
11
- - @fields.map do |element|
12
- th
13
- = element["Field"]
14
- - if @entries.present? && @entries.first
15
- tbody
16
- - @entries.each do |content|
17
- tr class="tr_#{content.first[1]}"
4
+ form action="#{develop_manage_path(params[:id])}" method="delete" id="details_form" remote="true"
5
+ input type="hidden" value="#{RailsAdminContent::Client.table_name}" name="table_name"
6
+ table.table
7
+ thead
8
+ tr#th-title
9
+ th
10
+ input type="checkbox" class="checkbox toggle" id="toggle_check" checked=""
11
+ - @fields.map do |element|
12
+ th
13
+ = element["Field"]
14
+ - if @entries.present? && @entries.first
15
+ tbody
16
+ - @entries.each do |content|
17
+ tr class="tr_#{content.first[1]}"
18
+ td
19
+ label
20
+ input type="checkbox" class="edit_checkbox" value="#{content.first[1]}" name="edit_id[]"
21
+ - content.each do |key,value|
18
22
  td
19
- label
20
- input type="checkbox" class="edit_checkbox" value="#{content.first[1]}" name="edit_id[]"
21
- - content.each do |key,value|
22
- td
23
- span class="#{edited(key,value)}" data-field="#{key}" data-table="#{RailsAdminContent::Client.table_name}" data-title="#{value}" data-url="#{update_field_develop_manage_path(content.values.first)}"
24
- - if key == "id"
25
- = link_to value, edit_develop_manage_path(value,table_name: RailsAdminContent::Client.table_name), title: 'edit'
26
- - else
27
- = format(value)
23
+ span class="#{edited(key,value)}" data-field="#{key}" data-table="#{RailsAdminContent::Client.table_name}" data-title="#{value}" data-url="#{update_field_develop_manage_path(content.values.first)}"
24
+ - if key == "id"
25
+ = link_to value, edit_develop_manage_path(value,table_name: RailsAdminContent::Client.table_name), title: 'edit'
26
+ - else
27
+ = format(value)
@@ -0,0 +1,123 @@
1
+ /*
2
+ * jQuery Color Animations
3
+ * Copyright 2007 John Resig
4
+ * Released under the MIT and GPL licenses.
5
+ */
6
+
7
+ (function(jQuery){
8
+
9
+ // We override the animation for all of these color styles
10
+ jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
11
+ jQuery.fx.step[attr] = function(fx){
12
+ if ( fx.state == 0 ) {
13
+ fx.start = getColor( fx.elem, attr );
14
+ fx.end = getRGB( fx.end );
15
+ }
16
+
17
+ fx.elem.style[attr] = "rgb(" + [
18
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
19
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
20
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
21
+ ].join(",") + ")";
22
+ }
23
+ });
24
+
25
+ // Color Conversion functions from highlightFade
26
+ // By Blair Mitchelmore
27
+ // http://jquery.offput.ca/highlightFade/
28
+
29
+ // Parse strings looking for color tuples [255,255,255]
30
+ function getRGB(color) {
31
+ var result;
32
+
33
+ // Check if we're already dealing with an array of colors
34
+ if ( color && color.constructor == Array && color.length == 3 )
35
+ return color;
36
+
37
+ // Look for rgb(num,num,num)
38
+ if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
39
+ return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
40
+
41
+ // Look for rgb(num%,num%,num%)
42
+ if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
43
+ return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
44
+
45
+ // Look for #a0b1c2
46
+ if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
47
+ return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
48
+
49
+ // Look for #fff
50
+ if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
51
+ return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
52
+
53
+ // Otherwise, we're most likely dealing with a named color
54
+ return colors[jQuery.trim(color).toLowerCase()];
55
+ }
56
+
57
+ function getColor(elem, attr) {
58
+ var color;
59
+
60
+ do {
61
+ color = jQuery.curCSS(elem, attr);
62
+
63
+ // Keep going until we find an element that has color, or we hit the body
64
+ if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
65
+ break;
66
+
67
+ attr = "backgroundColor";
68
+ } while ( elem = elem.parentNode );
69
+
70
+ return getRGB(color);
71
+ };
72
+
73
+ // Some named colors to work with
74
+ // From Interface by Stefan Petre
75
+ // http://interface.eyecon.ro/
76
+
77
+ var colors = {
78
+ aqua:[0,255,255],
79
+ azure:[240,255,255],
80
+ beige:[245,245,220],
81
+ black:[0,0,0],
82
+ blue:[0,0,255],
83
+ brown:[165,42,42],
84
+ cyan:[0,255,255],
85
+ darkblue:[0,0,139],
86
+ darkcyan:[0,139,139],
87
+ darkgrey:[169,169,169],
88
+ darkgreen:[0,100,0],
89
+ darkkhaki:[189,183,107],
90
+ darkmagenta:[139,0,139],
91
+ darkolivegreen:[85,107,47],
92
+ darkorange:[255,140,0],
93
+ darkorchid:[153,50,204],
94
+ darkred:[139,0,0],
95
+ darksalmon:[233,150,122],
96
+ darkviolet:[148,0,211],
97
+ fuchsia:[255,0,255],
98
+ gold:[255,215,0],
99
+ green:[0,128,0],
100
+ indigo:[75,0,130],
101
+ khaki:[240,230,140],
102
+ lightblue:[173,216,230],
103
+ lightcyan:[224,255,255],
104
+ lightgreen:[144,238,144],
105
+ lightgrey:[211,211,211],
106
+ lightpink:[255,182,193],
107
+ lightyellow:[255,255,224],
108
+ lime:[0,255,0],
109
+ magenta:[255,0,255],
110
+ maroon:[128,0,0],
111
+ navy:[0,0,128],
112
+ olive:[128,128,0],
113
+ orange:[255,165,0],
114
+ pink:[255,192,203],
115
+ purple:[128,0,128],
116
+ violet:[128,0,128],
117
+ red:[255,0,0],
118
+ silver:[192,192,192],
119
+ white:[255,255,255],
120
+ yellow:[255,255,0]
121
+ };
122
+
123
+ })(jQuery);
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Cookie plugin
3
+ *
4
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
5
+ * Dual licensed under the MIT and GPL licenses:
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ * http://www.gnu.org/licenses/gpl.html
8
+ *
9
+ */
10
+
11
+ /**
12
+ * Create a cookie with the given name and value and other optional parameters.
13
+ *
14
+ * @example $.cookie('the_cookie', 'the_value');
15
+ * @desc Set the value of a cookie.
16
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
17
+ * @desc Create a cookie with all available options.
18
+ * @example $.cookie('the_cookie', 'the_value');
19
+ * @desc Create a session cookie.
20
+ * @example $.cookie('the_cookie', null);
21
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
22
+ * used when the cookie was set.
23
+ *
24
+ * @param String name The name of the cookie.
25
+ * @param String value The value of the cookie.
26
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
27
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
28
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
29
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
30
+ * when the the browser exits.
31
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
32
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
33
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
34
+ * require a secure protocol (like HTTPS).
35
+ * @type undefined
36
+ *
37
+ * @name $.cookie
38
+ * @cat Plugins/Cookie
39
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
40
+ */
41
+
42
+ /**
43
+ * Get the value of a cookie with the given name.
44
+ *
45
+ * @example $.cookie('the_cookie');
46
+ * @desc Get the value of a cookie.
47
+ *
48
+ * @param String name The name of the cookie.
49
+ * @return The value of the cookie.
50
+ * @type String
51
+ *
52
+ * @name $.cookie
53
+ * @cat Plugins/Cookie
54
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
55
+ */
56
+ jQuery.cookie = function(name, value, options) {
57
+ if (typeof value != 'undefined') { // name and value given, set cookie
58
+ options = options || {};
59
+ if (value === null) {
60
+ value = '';
61
+ options.expires = -1;
62
+ }
63
+ var expires = '';
64
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
65
+ var date;
66
+ if (typeof options.expires == 'number') {
67
+ date = new Date();
68
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
69
+ } else {
70
+ date = options.expires;
71
+ }
72
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
73
+ }
74
+ // CAUTION: Needed to parenthesize options.path and options.domain
75
+ // in the following expressions, otherwise they evaluate to undefined
76
+ // in the packed version for some reason...
77
+ var path = options.path ? '; path=' + (options.path) : '';
78
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
79
+ var secure = options.secure ? '; secure' : '';
80
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
81
+ } else { // only name given, get cookie
82
+ var cookieValue = null;
83
+ if (document.cookie && document.cookie != '') {
84
+ var cookies = document.cookie.split(';');
85
+ for (var i = 0; i < cookies.length; i++) {
86
+ var cookie = jQuery.trim(cookies[i]);
87
+ // Does this cookie string begin with the name we want?
88
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
89
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
90
+ break;
91
+ }
92
+ }
93
+ }
94
+ return cookieValue;
95
+ }
96
+ };