rails_admin_content 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []