rails_admin_content 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ };