rails_admin_content 0.1.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 (68) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +38 -0
  3. data/Rakefile +7 -0
  4. data/app/assets/javascripts/develop/manages.js.coffee +96 -0
  5. data/app/assets/javascripts/rails_admin_content.js +22 -0
  6. data/app/assets/stylesheets/develop/manages.css.scss +38 -0
  7. data/app/assets/stylesheets/rails_admin_content.css +19 -0
  8. data/app/assets/stylesheets/site.css +479 -0
  9. data/app/controllers/application_controller.rb +3 -0
  10. data/app/controllers/rails_admin_content/develop/application_controller.rb +5 -0
  11. data/app/controllers/rails_admin_content/develop/manages_controller.rb +77 -0
  12. data/app/views/layouts/rails_admin_content/admin.html.slim +58 -0
  13. data/app/views/rails_admin_content/develop/manages/_content.html.slim +21 -0
  14. data/app/views/rails_admin_content/develop/manages/_filter.html.slim +25 -0
  15. data/app/views/rails_admin_content/develop/manages/_form.html.slim +5 -0
  16. data/app/views/rails_admin_content/develop/manages/_menv.html.slim +8 -0
  17. data/app/views/rails_admin_content/develop/manages/_navbar.html.slim +34 -0
  18. data/app/views/rails_admin_content/develop/manages/details.html.slim +18 -0
  19. data/app/views/rails_admin_content/develop/manages/edit.html.slim +16 -0
  20. data/app/views/rails_admin_content/develop/manages/edit_column.html.slim +30 -0
  21. data/app/views/rails_admin_content/develop/manages/index.html.slim +2 -0
  22. data/app/views/rails_admin_content/develop/manages/new.html.slim +10 -0
  23. data/app/views/rails_admin_content/develop/manages/query.html.slim +24 -0
  24. data/app/views/rails_admin_content/develop/manages/show.html.slim +27 -0
  25. data/config/routes.rb +12 -0
  26. data/lib/assets/codemirror/charisma-app.css +501 -0
  27. data/lib/assets/codemirror/codemirror.css +249 -0
  28. data/lib/assets/codemirror/codemirror.js +5637 -0
  29. data/lib/assets/codemirror/javascript.js +471 -0
  30. data/lib/assets/codemirror/matchbrackets.js +82 -0
  31. data/lib/assets/codemirror/midnight.css +52 -0
  32. data/lib/assets/codemirror/solarized.css +207 -0
  33. data/lib/assets/codemirror/sql.js +267 -0
  34. data/lib/assets/codemirror/twilight.css +26 -0
  35. data/lib/assets/images/add.png +0 -0
  36. data/lib/assets/images/column.png +0 -0
  37. data/lib/assets/images/content.png +0 -0
  38. data/lib/assets/images/details.png +0 -0
  39. data/lib/assets/images/file.png +0 -0
  40. data/lib/assets/images/home.png +0 -0
  41. data/lib/assets/images/search.png +0 -0
  42. data/lib/assets/images/setting.png +0 -0
  43. data/lib/assets/images/user.png +0 -0
  44. data/lib/assets/javascripts/bootstrap/bootstrap-alert.js +100 -0
  45. data/lib/assets/javascripts/jquery/dyndatetime/calendar_zh.js +128 -0
  46. data/lib/assets/javascripts/jquery/dyndatetime/dynDateTime.js +2011 -0
  47. data/lib/assets/javascripts/jquery/editable.js +31 -0
  48. data/lib/assets/javascripts/jquery/jquery.jeditable.js +543 -0
  49. data/lib/assets/stylesheets/bootstrap/bootstrap-app.css +5255 -0
  50. data/lib/assets/stylesheets/dyndatetime/calendar-system.css +251 -0
  51. data/lib/assets/stylesheets/dyndatetime/skins/aqua/active-bg.gif +0 -0
  52. data/lib/assets/stylesheets/dyndatetime/skins/aqua/dark-bg.gif +0 -0
  53. data/lib/assets/stylesheets/dyndatetime/skins/aqua/hover-bg.gif +0 -0
  54. data/lib/assets/stylesheets/dyndatetime/skins/aqua/menuarrow.gif +0 -0
  55. data/lib/assets/stylesheets/dyndatetime/skins/aqua/normal-bg.gif +0 -0
  56. data/lib/assets/stylesheets/dyndatetime/skins/aqua/rowhover-bg.gif +0 -0
  57. data/lib/assets/stylesheets/dyndatetime/skins/aqua/status-bg.gif +0 -0
  58. data/lib/assets/stylesheets/dyndatetime/skins/aqua/theme.css +236 -0
  59. data/lib/assets/stylesheets/dyndatetime/skins/aqua/title-bg.gif +0 -0
  60. data/lib/assets/stylesheets/dyndatetime/skins/aqua/today-bg.gif +0 -0
  61. data/lib/rails_admin_content/client.rb +93 -0
  62. data/lib/rails_admin_content/engine.rb +12 -0
  63. data/lib/rails_admin_content/helper.rb +65 -0
  64. data/lib/rails_admin_content/mysql/adapters/client.rb +18 -0
  65. data/lib/rails_admin_content/paginate.rb +53 -0
  66. data/lib/rails_admin_content/version.rb +3 -0
  67. data/lib/rails_admin_content.rb +5 -0
  68. metadata +180 -0
@@ -0,0 +1,93 @@
1
+ class RailsAdminContent::Client < Mysql2::Client
2
+
3
+ Syntax = /limit\s+\d+,\d+|limit\s+\d+/
4
+ Syntax_table = /from\s+(\w+)/
5
+
6
+ cattr_accessor :query_str, :total_nums, :table_name
7
+
8
+ def self.select_field(type)
9
+ case type.gsub(/\(.*?\)/,'')
10
+ when "tinyint" then [['等于', '='], ['不等于', '≠']]
11
+ when "datetime" then [['等于', '='], ['不等于', '≠'], ['大于', '>'], ['小于','<']]
12
+ when "int" then [['等于', '='], ['不等于', '≠'], ['大于', '>'], ['小于','<'], ['含有', 'IN']]
13
+ else
14
+ [['等于', '='], ['不等于', '≠'], ['包含', 'LIKE']]
15
+ end
16
+ end
17
+
18
+ def self.conn
19
+ @client ||= new ActiveRecord::Base.connection_config
20
+ end
21
+
22
+ alias :origin_query :query
23
+
24
+ def self.query(query_sql, page=nil, stint=nil)
25
+ self.table_name = query_sql.downcase.match(Syntax_table)[1] if query_sql.downcase.match(Syntax_table)
26
+ self.total_nums = conn.origin_query(query_sql).size
27
+ query_sql = limit(query_sql, page, stint) if stint && page
28
+ query_sql = query_sql.gsub(/;/, '')
29
+ conn.origin_query(query_sql)
30
+ end
31
+
32
+ def self.limit(query_sql, page=1, stint)
33
+ page = page == 1 ? page = 0 : page.to_i*stint.to_i-stint.to_i
34
+ query_sql.downcase.match(Syntax).present? ? query_sql.downcase.gsub(Syntax, "LIMIT #{page},#{stint}") : "#{query_sql} LIMIT #{page},#{stint}"
35
+ end
36
+
37
+ def self.get_tables
38
+ @tables ? @tables : @tables = conn.origin_query('SHOW TABLES')
39
+ end
40
+
41
+ def self.compose(params)
42
+ "SELECT * FROM #{params[:id]} WHERE #{params["field"].inject([]){|a, (key,value)| a << compose_key(params["calc"][key],key, value); a }.join('and')}"
43
+ end
44
+
45
+ def self.compose_key(calc,key,value)
46
+ case calc
47
+ when '=', '>', '<'
48
+ " `#{key}` #{calc} '#{value}' "
49
+ when 'IN'
50
+ " `#{key}` IN (#{value}) "
51
+ when '≠'
52
+ " `#{key}` != '#{value}' "
53
+ when 'LIKE'
54
+ " `#{key}` LIKE '%#{value}%' "
55
+ when '≥'
56
+ " `#{key}` >= '#{value}' "
57
+ when '≤'
58
+ " `#{key}` <= '#{value}' "
59
+ end
60
+ end
61
+
62
+
63
+ def self.delete(table_name, ids)
64
+ conn.origin_query("DELETE FROM #{table_name} WHERE id IN (#{ids.join(',')})") if ids.is_a?(Array)
65
+ end
66
+
67
+ def self.insert(table_name, field)
68
+ conn.origin_query("INSERT INTO #{table_name} (#{field.keys.join(',')}) VALUES ('#{field.values.join("','")}')")
69
+ end
70
+
71
+ def self.update(table_name, id, fields)
72
+ update_str = "UPDATE #{table_name} SET #{compose_update_sql(table_name, fields.to_a)} WHERE id = #{id}"
73
+ conn.origin_query update_str
74
+ end
75
+
76
+ def self.compose_update_sql(table_name,fields)
77
+ columns = desc_table(table_name)
78
+ fields.inject([]) do |array, field|
79
+ columns.each do |column|
80
+ if field[0] == column["Field"]
81
+ array << (%w(int decimal tinyint).include?(column["Type"].gsub(/\(.*?\)/,'')) ? "#{field[0]} = #{field[1]}" : "#{field[0]} = REPLACE(REPLACE(REPLACE('#{field[1]}', '&','&amp;'), '>', '&gt;'), '<', '&lt;')")
82
+ end
83
+ end
84
+ array
85
+ end.join(',')
86
+ end
87
+
88
+ def self.desc_table(table_name)
89
+ conn.origin_query("DESC #{table_name}").each
90
+ end
91
+
92
+
93
+ end
@@ -0,0 +1,12 @@
1
+ require 'jquery-rails'
2
+ require 'slim'
3
+ require 'rails_admin_content/mysql/adapters/client'
4
+ require 'rails_admin_content/paginate'
5
+ require 'rails_admin_content/client'
6
+ require 'rails_admin_content/helper'
7
+
8
+ module RailsAdminContent
9
+ class Engine < ::Rails::Engine
10
+ isolate_namespace RailsAdminContent
11
+ end
12
+ end
@@ -0,0 +1,65 @@
1
+ module ActionView
2
+ module Helpers
3
+ module DateHelper
4
+ def custom_paginate(scope, options = {})
5
+ paginate = RailsAdminContent::Paginate.new(scope, options.update(per_page: options[:stint]))
6
+ paginate.to_s
7
+ end
8
+
9
+ def format(value, limit=10)
10
+ value = value.is_a?(String) && value.size > limit ? value.truncate(limit) : value
11
+ value = value.is_a?(Time) ? value.to_s(:db) : value
12
+ value ||= "null"
13
+ end
14
+
15
+ def menu_value(value, icon)
16
+ raw <<-HTML
17
+ <i class="#{icon}"></i><span class="hidden-tablet">#{value}</span>
18
+ HTML
19
+ end
20
+
21
+ def link_to_menu(*args, &block)
22
+ name = menu_value(args[0], args[1])
23
+ options = args[2] || {}
24
+ html_options = args[3]
25
+
26
+ html_options = convert_options_to_data_attributes(options, html_options)
27
+ url = url_for(options)
28
+
29
+ href = html_options['href']
30
+ tag_options = tag_options(html_options)
31
+ href_attr = "href=\"#{ERB::Util.html_escape(url)}\"" unless href
32
+ "<a #{href_attr}#{tag_options}>#{ERB::Util.html_escape(name || url)}</a>".html_safe
33
+ end
34
+
35
+ def edited(key, value, str='')
36
+ str << 'editable' unless key == 'id'
37
+ str << ' edit_datepicker' if value.is_a?(Time)
38
+ str
39
+ end
40
+
41
+ def options_for_select_column_data(table, selected=nil)
42
+ options_for_select RailsAdminContent::Client.desc_table(table).map{|a| [ a["Field"],a["Field"], column_type: a["Type"].gsub(/\(.*?\)/,'') ]}, selected
43
+ end
44
+
45
+ def content_field(column, value=nil)
46
+ type = column["Type"].gsub(/\(.*?\)/,'')
47
+ column["Default"] = value if value
48
+ column["Field"] = "field[#{column["Field"]}]"
49
+ case type
50
+ when 'text'
51
+ text_area_tag column["Field"], column["Default"], :size => "25x6", 'data-field' => column["Field"], class: "#{type} span10"
52
+ when 'varchar'
53
+ text_field_tag column["Field"], column["Default"], 'data-field' => column["Field"], class: "#{type} span10"
54
+ when 'int'
55
+ number_field_tag column["Field"], column["Default"], 'data-field' => column["Field"], class: "#{type} span10"
56
+ when 'tinyint'
57
+ select_tag column["Field"], options_for_select([['Yes',1],['No',0]], column["Default"]), 'data-field' => column["Field"], class: "#{type} span10"
58
+ else
59
+ text_field_tag column["Field"], column["Default"], 'data-field' => column["Field"], class: "#{type} span10"
60
+ end
61
+ end
62
+
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,18 @@
1
+ module RailsAdminContent
2
+ module Mysql
3
+ module Adapters
4
+ class Client
5
+
6
+ def initialize
7
+ @client = client = Mysql2::Client.new ActiveRecord::Base.connection_config
8
+ end
9
+
10
+ def query(sql)
11
+ @client.query(sql).each
12
+ end
13
+
14
+ end
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,53 @@
1
+ module RailsAdminContent
2
+ class Paginate
3
+
4
+ def initialize(scope, options = {})
5
+ @scope, @options = scope, options
6
+ end
7
+
8
+ def to_s
9
+ return "" unless @scope
10
+ current_page, total_pages = @options[:spage].to_i, RailsAdminContent::Client.total_nums / @options[:stint] + 1
11
+ # return "共#{RailsAdminContent::Client.total_nums}条数据" if total_pages <= 1
12
+ param_name = @options["param_name"] || "page"
13
+ url = @options["url"] || ""
14
+ helpers.content_tag :div, :class => "pagination" do
15
+ helpers.content_tag :ul do
16
+ result = ''
17
+ result += helpers.content_tag(:li, class: 'previous'){helpers.link_to("‹ 上一页","#{url}?#{param_name}=#{current_page-1}")} if current_page.to_i > 1
18
+ if total_pages > 8
19
+ 1.upto(3) { |i| result << page_link(i, current_page) }
20
+ if current_page > 1 and current_page < total_pages
21
+ result << helpers.content_tag(:li, helpers.link_to("...",'#'), class: 'disabled') if current_page > 5
22
+ min = current_page > 4 ? current_page-1 : 4
23
+ max = current_page < total_pages-4 ? current_page+2 : total_pages-2
24
+ (min..max-1).each { |i| result << page_link(i, current_page) } if max >= min+1
25
+ result << helpers.content_tag(:li, helpers.link_to("...", "#"), class: 'disabled') if current_page < total_pages-4
26
+ else
27
+ result << helpers.content_tag(:li, helpers.link_to("...",'#'), class: 'disabled')
28
+ end
29
+ (total_pages-2..total_pages).each{ |i| result << page_link(i, current_page) }
30
+ else
31
+ (1..total_pages).each{ |i| result << page_link(i, current_page) }
32
+ end
33
+ result += helpers.content_tag(:li, class: "next"){helpers.link_to("下一页 ›", "#{url}?#{param_name}=#{current_page+1}")} if current_page < total_pages
34
+ result += helpers.content_tag(:li, class: 'disabled total_pages'){helpers.link_to "共#{RailsAdminContent::Client.total_nums}条数据", "#"}
35
+ result.html_safe
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+ private
42
+ def page_link(page, current_page)
43
+ param_name = @options["param_name"] || "page"
44
+ url = @options["url"] || ""
45
+ current_page == page ? helpers.content_tag(:li, page, :class => "active"){helpers.link_to page, '#'} : helpers.content_tag(:li, helpers.link_to("#{page}", "#{url}?#{param_name}=#{page}"))
46
+ end
47
+
48
+ def helpers
49
+ ActionController::Base.helpers
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,3 @@
1
+ module RailsAdminContent
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_admin_content/engine'
2
+
3
+
4
+ module RailsAdminContent
5
+ end
metadata ADDED
@@ -0,0 +1,180 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails_admin_content
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Lijia Tong
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.13
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.2.13
27
+ - !ruby/object:Gem::Dependency
28
+ name: jquery-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jquery-ui-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: slim
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mysql2
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Content Management Database Development Environment
84
+ email:
85
+ - wtuyuupe@163.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - app/assets/javascripts/develop/manages.js.coffee
91
+ - app/assets/javascripts/rails_admin_content.js
92
+ - app/assets/stylesheets/develop/manages.css.scss
93
+ - app/assets/stylesheets/rails_admin_content.css
94
+ - app/assets/stylesheets/site.css
95
+ - app/controllers/application_controller.rb
96
+ - app/controllers/rails_admin_content/develop/application_controller.rb
97
+ - app/controllers/rails_admin_content/develop/manages_controller.rb
98
+ - app/views/layouts/rails_admin_content/admin.html.slim
99
+ - app/views/rails_admin_content/develop/manages/_content.html.slim
100
+ - app/views/rails_admin_content/develop/manages/_filter.html.slim
101
+ - app/views/rails_admin_content/develop/manages/_form.html.slim
102
+ - app/views/rails_admin_content/develop/manages/_menv.html.slim
103
+ - app/views/rails_admin_content/develop/manages/_navbar.html.slim
104
+ - app/views/rails_admin_content/develop/manages/details.html.slim
105
+ - app/views/rails_admin_content/develop/manages/edit.html.slim
106
+ - app/views/rails_admin_content/develop/manages/edit_column.html.slim
107
+ - app/views/rails_admin_content/develop/manages/index.html.slim
108
+ - app/views/rails_admin_content/develop/manages/new.html.slim
109
+ - app/views/rails_admin_content/develop/manages/query.html.slim
110
+ - app/views/rails_admin_content/develop/manages/show.html.slim
111
+ - config/routes.rb
112
+ - lib/assets/codemirror/charisma-app.css
113
+ - lib/assets/codemirror/codemirror.css
114
+ - lib/assets/codemirror/codemirror.js
115
+ - lib/assets/codemirror/javascript.js
116
+ - lib/assets/codemirror/matchbrackets.js
117
+ - lib/assets/codemirror/midnight.css
118
+ - lib/assets/codemirror/solarized.css
119
+ - lib/assets/codemirror/sql.js
120
+ - lib/assets/codemirror/twilight.css
121
+ - lib/assets/images/add.png
122
+ - lib/assets/images/column.png
123
+ - lib/assets/images/content.png
124
+ - lib/assets/images/details.png
125
+ - lib/assets/images/file.png
126
+ - lib/assets/images/home.png
127
+ - lib/assets/images/search.png
128
+ - lib/assets/images/setting.png
129
+ - lib/assets/images/user.png
130
+ - lib/assets/javascripts/bootstrap/bootstrap-alert.js
131
+ - lib/assets/javascripts/jquery/dyndatetime/calendar_zh.js
132
+ - lib/assets/javascripts/jquery/dyndatetime/dynDateTime.js
133
+ - lib/assets/javascripts/jquery/editable.js
134
+ - lib/assets/javascripts/jquery/jquery.jeditable.js
135
+ - lib/assets/stylesheets/bootstrap/bootstrap-app.css
136
+ - lib/assets/stylesheets/dyndatetime/calendar-system.css
137
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/active-bg.gif
138
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/dark-bg.gif
139
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/hover-bg.gif
140
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/menuarrow.gif
141
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/normal-bg.gif
142
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/rowhover-bg.gif
143
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/status-bg.gif
144
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/theme.css
145
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/title-bg.gif
146
+ - lib/assets/stylesheets/dyndatetime/skins/aqua/today-bg.gif
147
+ - lib/rails_admin_content/client.rb
148
+ - lib/rails_admin_content/engine.rb
149
+ - lib/rails_admin_content/helper.rb
150
+ - lib/rails_admin_content/mysql/adapters/client.rb
151
+ - lib/rails_admin_content/paginate.rb
152
+ - lib/rails_admin_content/version.rb
153
+ - lib/rails_admin_content.rb
154
+ - Rakefile
155
+ - README.md
156
+ homepage: http://github.com/tonglijia/rails_admin_content
157
+ licenses: []
158
+ metadata: {}
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ requirements: []
174
+ rubyforge_project:
175
+ rubygems_version: 2.0.3
176
+ signing_key:
177
+ specification_version: 4
178
+ summary: Can be used in the development process, often a tool to modify the database
179
+ contents
180
+ test_files: []