rails_admin_content 0.2.1 → 0.2.2
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/develop/manages.js.coffee +14 -9
- data/app/controllers/rails_admin_content/develop/application_controller.rb +1 -1
- data/app/controllers/rails_admin_content/develop/manages_controller.rb +78 -73
- data/app/views/rails_admin_content/develop/manages/_form.html.slim +1 -1
- data/app/views/rails_admin_content/develop/manages/edit_column.html.slim +5 -2
- data/app/views/rails_admin_content/develop/manages/index.html.slim +4 -2
- data/config/routes.rb +1 -0
- data/lib/assets/stylesheets/common.css.sass +1 -0
- data/lib/rails_admin_content/client.rb +105 -95
- data/lib/rails_admin_content/engine.rb +3 -3
- data/lib/rails_admin_content/helper.rb +54 -54
- data/lib/rails_admin_content/mysql/adapters/client.rb +16 -14
- data/lib/rails_admin_content/paginate.rb +45 -45
- data/lib/rails_admin_content/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e1c68eeec42e8eece237bcb1de6a29c1ddd6596
|
4
|
+
data.tar.gz: a6ad4aa205dea3456d75f33670388c38fe4a0f9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90a0bc1806ab164cb7bef7daf5ba24d38bd3d04f14bb46203c6c7bc1db26e269191ff204b271763fb88c202488dff78b29df4d7b7abf00e21642a50a533fd7e4
|
7
|
+
data.tar.gz: 554c571bbfb19d62ecc7fbd25614a6342c207294e72d6a003df3bcbece67915586b35cb0984daa9e4f36957c49c45af59c62080895d907fe1237a98933f49605
|
@@ -20,16 +20,21 @@ search_input_change = ->
|
|
20
20
|
return $(li).show() if $.trim($('#seaerch-T').val()).length == 0
|
21
21
|
if RegExp($('#seaerch-T').val().toLocaleLowerCase()).test($(li).attr('data-field')) then $(li).show() else $(li).hide()
|
22
22
|
|
23
|
+
initialize_textarea_sql = (id) ->
|
24
|
+
if var_id = document.getElementById(id)
|
25
|
+
editor = CodeMirror.fromTextArea var_id,
|
26
|
+
mode: "text/x-sql",
|
27
|
+
tabMode: "indent",
|
28
|
+
smartIndent: true,
|
29
|
+
lineNumbers: true,
|
30
|
+
matchBrackets: true,
|
31
|
+
indentUnit: 2
|
32
|
+
|
33
|
+
|
23
34
|
$(document).ready ->
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
tabMode: "indent",
|
28
|
-
smartIndent: true,
|
29
|
-
lineNumbers: true,
|
30
|
-
matchBrackets: true,
|
31
|
-
indentUnit: 2
|
32
|
-
});
|
35
|
+
initialize_textarea_sql 'search-textarea'
|
36
|
+
initialize_textarea_sql 'show-sql-textarea'
|
37
|
+
|
33
38
|
|
34
39
|
$('span.edit_datepicker').on 'click', 'textarea', -> $(this).dynDateTime()
|
35
40
|
$('.formitem .datetime').on 'click', -> $(this).dynDateTime()
|
@@ -1,77 +1,82 @@
|
|
1
1
|
class RailsAdminContent::Develop::ManagesController < RailsAdminContent::Develop::ApplicationController
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
3
|
+
before_filter :find_params, except: %w(update create new)
|
4
|
+
|
5
|
+
def index
|
6
|
+
@version = RailsAdminContent::Client.conn.origin_query("SELECT VERSION() as version").each
|
7
|
+
end
|
8
|
+
|
9
|
+
def query
|
10
|
+
@entries = RailsAdminContent::Client.query(session[:query_str],@page, @per).each if session[:query_str]
|
11
|
+
rescue Exception => e
|
12
|
+
flash[:errors] = e.message
|
13
|
+
end
|
14
|
+
|
15
|
+
def filter
|
16
|
+
session[:query_str] = params[:q]
|
17
|
+
redirect_to action: :query
|
18
|
+
end
|
19
|
+
|
20
|
+
def show
|
21
|
+
@query_str = "SELECT * FROM #{params[:id]} ORDER BY id DESC"
|
22
|
+
@query_str = RailsAdminContent::Client.compose(params) if params[:field].present?
|
23
|
+
@fields = RailsAdminContent::Client.desc_table params[:id]
|
24
|
+
@entries = RailsAdminContent::Client.query(@query_str,@page, @per)
|
25
|
+
rescue Exception => e
|
26
|
+
flash[:errors] = e.message
|
27
|
+
end
|
28
|
+
|
29
|
+
def new;end
|
30
|
+
|
31
|
+
def edit; end
|
32
|
+
|
33
|
+
def edit_column
|
34
|
+
@fields = RailsAdminContent::Client.desc_table params[:id]
|
35
|
+
@sql = RailsAdminContent::Client.show_create_sql params[:id]
|
36
|
+
end
|
37
|
+
|
38
|
+
def details
|
39
|
+
@details = RailsAdminContent::Client.conn.origin_query("SHOW TABLE STATUS LIKE '#{params[:id]}'").each
|
40
|
+
end
|
41
|
+
|
42
|
+
def create
|
43
|
+
RailsAdminContent::Client.insert(params[:table_name], params[:field])
|
44
|
+
flash[:success] = "成功添加#{params[:table_name]}一条数据。"
|
45
|
+
rescue Exception => e
|
46
|
+
flash[:errors] = e.message
|
47
|
+
ensure
|
48
|
+
redirect_to develop_manage_path(params[:table_name])
|
49
|
+
end
|
50
|
+
|
51
|
+
def update
|
52
|
+
RailsAdminContent::Client.update(params[:table_name], params[:id], params[:field])
|
53
|
+
flash[:success] = "更新#{params[:id]}内容成功。"
|
54
|
+
rescue Exception => e
|
55
|
+
flash[:errors] = e.message
|
56
|
+
ensure
|
57
|
+
redirect_to develop_manage_path(params[:table_name])
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
def update_field
|
62
|
+
RailsAdminContent::Client.conn.origin_query("UPDATE #{params[:table]} SET #{params[:field]} = REPLACE(REPLACE(REPLACE('#{params[:value]}', '&','&'), '>', '>'), '<', '<') WHERE id = #{params[:id]}")
|
63
|
+
render text: 'success'
|
64
|
+
end
|
65
|
+
|
66
|
+
def destroy
|
67
|
+
RailsAdminContent::Client.delete(params[:id], params[:edit_id]) if params[:edit_id].present?
|
68
|
+
render json: params[:edit_id]
|
69
|
+
end
|
70
|
+
|
71
|
+
def modify_default_value
|
72
|
+
RailsAdminContent::Client.modify_table_column_default_value(params[:table], params[:field], params[:value], params[:field_type])
|
73
|
+
render json: params[:edit_id]
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def find_params
|
79
|
+
@page, @per = (params[:page] || 1).to_i, (params[:per] || 100).to_i
|
80
|
+
end
|
76
81
|
|
77
82
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
= form_tag filter_develop_manages_path, method: :post
|
2
2
|
#search_area
|
3
|
-
textarea rows="2" cols="140" id="search-textarea" style="height:100px" name="q" #{
|
3
|
+
textarea rows="2" cols="140" id="search-textarea" style="height:100px" name="q" #{session[:query_str]||""}
|
4
4
|
.nav
|
5
5
|
input type="submit" value="Run" calss="btn btn-primary"
|
@@ -25,6 +25,9 @@ hr
|
|
25
25
|
td
|
26
26
|
= field["key"]
|
27
27
|
td
|
28
|
-
= field["Default"]
|
28
|
+
span class="editable #{'edit_datepicker' if field["Type"] == 'datetime'}" data-field="#{field["Field"]}" data-table="#{params[:id]}" data-title="#{field["Default"]}" data-url="#{modify_default_value_develop_manages_path(field_type: field["Type"])}"
|
29
|
+
= field["Default"]
|
29
30
|
td
|
30
|
-
= field["extra"]
|
31
|
+
= field["extra"]
|
32
|
+
|
33
|
+
textarea rows="2" cols="140" id="show-sql-textarea" #{@sql[0]["Create Table"]||""}
|
data/config/routes.rb
CHANGED
@@ -1,97 +1,107 @@
|
|
1
1
|
class RailsAdminContent::Client < Mysql2::Client
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
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]}', '&','&'), '>', '>'), '<', '<')")
|
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
|
+
def self.show_create_sql(table_name)
|
93
|
+
conn.origin_query("SHOW CREATE TABLE #{table_name}").each
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.modify_table_column_default_value(table_name, column, value, field_type)
|
97
|
+
default_value = case field_type.gsub(/\(.*?\)/,'')
|
98
|
+
when "tinyint" then value.present?
|
99
|
+
when "datetime" then value.to_time.to_s(:db)
|
100
|
+
when "int" then value.to_i
|
101
|
+
else
|
102
|
+
value.to_s
|
103
|
+
end
|
104
|
+
conn.origin_query("ALTER TABLE #{table_name} ALTER COLUMN #{column} SET DEFAULT '#{default_value}'")
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
@@ -6,7 +6,7 @@ require 'rails_admin_content/client'
|
|
6
6
|
require 'rails_admin_content/helper'
|
7
7
|
|
8
8
|
module RailsAdminContent
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
class Engine < ::Rails::Engine
|
10
|
+
isolate_namespace RailsAdminContent
|
11
|
+
end
|
12
12
|
end
|
@@ -1,65 +1,65 @@
|
|
1
1
|
module ActionView
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
25
|
|
26
|
-
|
27
|
-
|
26
|
+
html_options = convert_options_to_data_attributes(options, html_options)
|
27
|
+
url = url_for(options)
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
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
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
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
62
|
|
63
|
-
|
64
|
-
|
63
|
+
end
|
64
|
+
end
|
65
65
|
end
|
@@ -1,16 +1,18 @@
|
|
1
1
|
module RailsAdminContent
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
module Mysql
|
3
|
+
module Adapters
|
4
|
+
class Client
|
5
|
+
def initialize
|
6
|
+
@client ||= Mysql2::Client.new ActiveRecord::Base.connection_config
|
7
|
+
end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
9
|
+
def query(sql)
|
10
|
+
@client.query(sql).each
|
11
|
+
rescue
|
12
|
+
[]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,53 +1,53 @@
|
|
1
1
|
module RailsAdminContent
|
2
|
-
|
2
|
+
class Paginate
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
def initialize(scope, options = {})
|
5
|
+
@scope, @options = scope, options
|
6
|
+
end
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
38
|
|
39
|
-
|
39
|
+
end
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
def helpers
|
49
|
+
ActionController::Base.helpers
|
50
|
+
end
|
51
51
|
|
52
|
-
|
52
|
+
end
|
53
53
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_admin_content
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Terry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: mysql2
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.3.13
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.3.13
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: compass
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|