admin_data 1.0.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.
- data/History.txt +221 -0
- data/README.textile +21 -0
- data/Rakefile +46 -0
- data/app/controllers/admin_data/base_controller.rb +114 -0
- data/app/controllers/admin_data/diagnostic_controller.rb +28 -0
- data/app/controllers/admin_data/feed_controller.rb +17 -0
- data/app/controllers/admin_data/main_controller.rb +132 -0
- data/app/controllers/admin_data/migration_controller.rb +19 -0
- data/app/controllers/admin_data/search_controller.rb +125 -0
- data/app/controllers/admin_data/validate_model_controller.rb +106 -0
- data/app/views/admin_data/diagnostic/index.html.erb +17 -0
- data/app/views/admin_data/diagnostic/missing_index.html.erb +26 -0
- data/app/views/admin_data/feed/index.rss.builder +24 -0
- data/app/views/admin_data/main/all_models.html.erb +22 -0
- data/app/views/admin_data/main/association/_association_info.html.erb +10 -0
- data/app/views/admin_data/main/association/_belongs_to_info.html.erb +7 -0
- data/app/views/admin_data/main/association/_has_many_info.html.erb +7 -0
- data/app/views/admin_data/main/association/_has_one_info.html.erb +6 -0
- data/app/views/admin_data/main/edit.html.erb +38 -0
- data/app/views/admin_data/main/misc/_form.html.erb +25 -0
- data/app/views/admin_data/main/misc/_modify_record.html.erb +22 -0
- data/app/views/admin_data/main/new.html.erb +23 -0
- data/app/views/admin_data/main/show.html.erb +41 -0
- data/app/views/admin_data/main/table_structure.html.erb +55 -0
- data/app/views/admin_data/migration/index.html.erb +18 -0
- data/app/views/admin_data/migration/jstest.html.erb +51 -0
- data/app/views/admin_data/search/_search_base.html.erb +34 -0
- data/app/views/admin_data/search/advance_search.html.erb +3 -0
- data/app/views/admin_data/search/quick_search.html.erb +6 -0
- data/app/views/admin_data/search/search/_advance_search_form.html.erb +48 -0
- data/app/views/admin_data/search/search/_errors.html.erb +5 -0
- data/app/views/admin_data/search/search/_listing.html.erb +40 -0
- data/app/views/admin_data/search/search/_search_form.html.erb +28 -0
- data/app/views/admin_data/search/search/_sortby.html.erb +18 -0
- data/app/views/admin_data/search/search/_title.html.erb +34 -0
- data/app/views/admin_data/shared/_breadcrum.html.erb +10 -0
- data/app/views/admin_data/shared/_drop_down_klasses.html.erb +4 -0
- data/app/views/admin_data/shared/_flash_message.html.erb +13 -0
- data/app/views/admin_data/shared/_header.html.erb +23 -0
- data/app/views/admin_data/shared/_powered_by.html.erb +23 -0
- data/app/views/admin_data/shared/_secondary_navigation.html.erb +28 -0
- data/app/views/admin_data/validate_model/_bad.html.erb +1 -0
- data/app/views/admin_data/validate_model/tid.html.erb +2 -0
- data/app/views/admin_data/validate_model/validate.html.erb +67 -0
- data/app/views/layouts/admin_data.html.erb +60 -0
- data/config/routes.rb +34 -0
- data/init.rb +1 -0
- data/lib/admin_data.rb +34 -0
- data/lib/admin_data/chelper.rb +37 -0
- data/lib/admin_data/compatibility.rb +7 -0
- data/lib/admin_data/helpers.rb +222 -0
- data/lib/admin_data/railtie.rb +21 -0
- data/lib/admin_data/search.rb +186 -0
- data/lib/admin_data/settings.rb +72 -0
- data/lib/admin_data/util.rb +237 -0
- data/lib/admin_data/version.rb +3 -0
- data/lib/admin_data_date_validation.rb +79 -0
- data/lib/css/app.css +224 -0
- data/lib/css/base.css +1071 -0
- data/lib/css/header.css +65 -0
- data/lib/css/rounded.css +18 -0
- data/lib/css/themes/drastic-dark/style.css +374 -0
- data/lib/css/umbrella.css +34 -0
- data/lib/css/vendor/images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png +0 -0
- data/lib/css/vendor/images/ui-bg_dots-small_65_a6a6a6_2x2.png +0 -0
- data/lib/css/vendor/images/ui-bg_flat_0_333333_40x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_flat_65_ffffff_40x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_glass_55_fbf8ee_1x400.png +0 -0
- data/lib/css/vendor/images/ui-bg_highlight-hard_100_eeeeee_1x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_highlight-hard_100_f6f6f6_1x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_highlight-soft_15_cc0000_1x100.png +0 -0
- data/lib/css/vendor/images/ui-icons_004276_256x240.png +0 -0
- data/lib/css/vendor/images/ui-icons_cc0000_256x240.png +0 -0
- data/lib/css/vendor/images/ui-icons_ffffff_256x240.png +0 -0
- data/lib/css/vendor/jquery-ui-1.7.2.custom.css +406 -0
- data/lib/css/vendor/qunit.css +119 -0
- data/lib/js/advance_search/act_on_result.js +47 -0
- data/lib/js/advance_search/adv_search.js +46 -0
- data/lib/js/advance_search/advance_search.js +60 -0
- data/lib/js/advance_search/advance_search_structure.js +79 -0
- data/lib/js/advance_search/ajaxify_advance_search.js +28 -0
- data/lib/js/advance_search/build_first_row.js +12 -0
- data/lib/js/advance_search/event_bindings.js +87 -0
- data/lib/js/advance_search/global_ajax_setting.js +10 -0
- data/lib/js/advance_search/trigger_submit_on_domready.js +6 -0
- data/lib/js/misc/drop_down_change.js +8 -0
- data/lib/js/misc/js_util.js +42 -0
- data/lib/js/misc/quick_search_input_focus.js +6 -0
- data/lib/js/test/act_on_result.js +120 -0
- data/lib/js/test/advance_search.js +80 -0
- data/lib/js/test/ajaxify_advance_search.js +29 -0
- data/lib/js/test/build_first_row.js +10 -0
- data/lib/js/test/event_bindings.js +100 -0
- data/lib/js/validate_model/ajaxify_form.js +66 -0
- data/lib/js/validate_model/select_all.js +15 -0
- data/lib/js/vendor/jack.js +903 -0
- data/lib/js/vendor/jquery-1.4.1.js +6078 -0
- data/lib/js/vendor/jquery-ui-1.7.2.custom.min.js +298 -0
- data/lib/js/vendor/jquery.ba-isjquery.js +21 -0
- data/lib/js/vendor/jquery.form.js +814 -0
- data/lib/js/vendor/jquery.lint.js +604 -0
- data/lib/js/vendor/log.js +9 -0
- data/lib/js/vendor/qunit.js +1043 -0
- data/lib/tasks/admin_data_tasks.rake +7 -0
- data/lib/tasks/validate_models_bg.rake +23 -0
- data/test/factories/article.rb +9 -0
- data/test/factories/car.rb +4 -0
- data/test/factories/city.rb +4 -0
- data/test/factories/comment.rb +6 -0
- data/test/factories/door.rb +4 -0
- data/test/factories/engine.rb +4 -0
- data/test/functional/base_controller_test.rb +5 -0
- data/test/functional/feed_controller_test.rb +34 -0
- data/test/functional/main_controller_test.rb +421 -0
- data/test/functional/migration_controller_test.rb +30 -0
- data/test/functional/routes_test.rb +61 -0
- data/test/functional/search_controller_test.rb +814 -0
- data/test/helper/view_helper_test.rb +177 -0
- data/test/misc_tests/date_validation_test.rb +32 -0
- data/test/misc_tests/settings_test.rb +29 -0
- data/test/misc_tests/util_test.rb +83 -0
- data/test/rails_root/Gemfile +22 -0
- data/test/rails_root/Gemfile.lock +101 -0
- data/test/rails_root/Rakefile +7 -0
- data/test/rails_root/app/controllers/application_controller.rb +3 -0
- data/test/rails_root/app/helpers/application_helper.rb +2 -0
- data/test/rails_root/app/models/article.rb +25 -0
- data/test/rails_root/app/models/city.rb +15 -0
- data/test/rails_root/app/models/comment.rb +13 -0
- data/test/rails_root/app/models/tech_magazine.rb +2 -0
- data/test/rails_root/app/models/vehicle/car.rb +4 -0
- data/test/rails_root/app/models/vehicle/door.rb +3 -0
- data/test/rails_root/app/models/vehicle/engine.rb +3 -0
- data/test/rails_root/app/views/layouts/application.html.erb +14 -0
- data/test/rails_root/config.ru +4 -0
- data/test/rails_root/config/application.rb +42 -0
- data/test/rails_root/config/boot.rb +13 -0
- data/test/rails_root/config/database.yml +22 -0
- data/test/rails_root/config/environment.rb +5 -0
- data/test/rails_root/config/environments/development.rb +22 -0
- data/test/rails_root/config/environments/production.rb +49 -0
- data/test/rails_root/config/environments/test.rb +35 -0
- data/test/rails_root/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_root/config/initializers/inflections.rb +10 -0
- data/test/rails_root/config/initializers/mime_types.rb +5 -0
- data/test/rails_root/config/initializers/secret_token.rb +7 -0
- data/test/rails_root/config/initializers/session_store.rb +8 -0
- data/test/rails_root/config/locales/en.yml +5 -0
- data/test/rails_root/config/routes.rb +58 -0
- data/test/rails_root/db/migrate/20090809061114_create_tables.rb +70 -0
- data/test/rails_root/db/schema.rb +74 -0
- data/test/rails_root/db/seeds.rb +7 -0
- data/test/rails_root/script/rails +6 -0
- data/test/rails_root/test/performance/browsing_test.rb +0 -0
- data/test/rails_root/test/test_helper.rb +13 -0
- data/test/support/assertions.rb +20 -0
- data/test/test_helper.rb +74 -0
- metadata +321 -0
data/History.txt
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
=== 2010-04-14
|
|
2
|
+
|
|
3
|
+
* JavaScript code refactoring
|
|
4
|
+
* More JavaScript code test
|
|
5
|
+
* Moved functionalities from layout to helper
|
|
6
|
+
|
|
7
|
+
=== 0.0.37 2010-01-28
|
|
8
|
+
|
|
9
|
+
* refactored the code to take inline style out to style section
|
|
10
|
+
* moves a lot of ruby code from view to helpers and controllers
|
|
11
|
+
* better indentation
|
|
12
|
+
|
|
13
|
+
=== 0.0.36 2010-01-05
|
|
14
|
+
|
|
15
|
+
* Fixing the online validation of models that have primary key not id
|
|
16
|
+
|
|
17
|
+
=== 0.0.35 2010-01-05
|
|
18
|
+
|
|
19
|
+
* If invalid children value is passed in apply rescue
|
|
20
|
+
|
|
21
|
+
=== 0.0.34 2010-01-04
|
|
22
|
+
|
|
23
|
+
* updated README
|
|
24
|
+
|
|
25
|
+
=== 0.0.33 2009-12-27
|
|
26
|
+
|
|
27
|
+
* added authentication for feed
|
|
28
|
+
|
|
29
|
+
=== 0.0.32 2009-12-23
|
|
30
|
+
|
|
31
|
+
* the default search result for advance search should be primary key des
|
|
32
|
+
* changed the layout for quick search
|
|
33
|
+
|
|
34
|
+
=== 0.0.31 2009-12-15
|
|
35
|
+
|
|
36
|
+
* association information is rescued so that show method works even if association info throws error
|
|
37
|
+
* association info is displayed with belongs_to or has_many name instead of class name
|
|
38
|
+
* debugging variable $debug_admin_data
|
|
39
|
+
|
|
40
|
+
=== 0.0.30 2009-12-02
|
|
41
|
+
|
|
42
|
+
* RSS feed for all the models
|
|
43
|
+
|
|
44
|
+
=== 0.0.29 2009-11-18
|
|
45
|
+
|
|
46
|
+
* rake task to validate all the models
|
|
47
|
+
* ability to validate all the models using browser
|
|
48
|
+
* increased the font size of overall app
|
|
49
|
+
|
|
50
|
+
=== 0.0.28 2009-11-12
|
|
51
|
+
|
|
52
|
+
* has_many association_info were too close to each other
|
|
53
|
+
* fixing the issue where a class is used as a hash key. It breaks in development
|
|
54
|
+
|
|
55
|
+
=== 0.0.28 2009-11-11
|
|
56
|
+
|
|
57
|
+
* better link color
|
|
58
|
+
|
|
59
|
+
=== 0.0.28 2009-11-11
|
|
60
|
+
|
|
61
|
+
* refactored the way advance search JavaScript code
|
|
62
|
+
* for pretty urls like /42-SEO-friendly-title the show method should pickup 42 as id
|
|
63
|
+
|
|
64
|
+
=== 0.0.27 2009-11-04
|
|
65
|
+
|
|
66
|
+
* test for has_one association
|
|
67
|
+
|
|
68
|
+
=== 0.0.26 2009-11-04
|
|
69
|
+
|
|
70
|
+
* cleaning up History.txt file
|
|
71
|
+
|
|
72
|
+
=== 0.0.25 2009-11-03
|
|
73
|
+
|
|
74
|
+
* fix for issue #14 so that not like will also include records which are null
|
|
75
|
+
|
|
76
|
+
=== 0.0.24 2009-11-03
|
|
77
|
+
|
|
78
|
+
* advance search refactoring
|
|
79
|
+
|
|
80
|
+
=== 0.0.23 2009-10-29
|
|
81
|
+
|
|
82
|
+
* advance search bug fix
|
|
83
|
+
|
|
84
|
+
=== 0.0.22 2009-10-26
|
|
85
|
+
|
|
86
|
+
* fixed adding rows on advanced search
|
|
87
|
+
* consistenly use model_id for search and association parent objects
|
|
88
|
+
* datetime/date/time fixes on edit and advanced search pages
|
|
89
|
+
* added configuration to not use admin_data layout and use application one instead
|
|
90
|
+
|
|
91
|
+
=== 0.0.21 2009-10-26
|
|
92
|
+
|
|
93
|
+
* fixed the formatting issue while displaying missing index in diagnostic section
|
|
94
|
+
* by passing additional parameter called 'attr' editing of a record would display
|
|
95
|
+
only one field to avoid any accidental change.
|
|
96
|
+
|
|
97
|
+
=== 0.0.20 2009-10-22
|
|
98
|
+
|
|
99
|
+
* warning message if JavaScript is disabled
|
|
100
|
+
|
|
101
|
+
=== 0.0.19 2009-10-20
|
|
102
|
+
|
|
103
|
+
* ability to pass :find_conditions to settings so that models with to_param method could
|
|
104
|
+
override the sql that is built by admin_data
|
|
105
|
+
|
|
106
|
+
=== 0.0.18 2009-10-16
|
|
107
|
+
|
|
108
|
+
* changed theme from warehouse to dark because the association info on the right
|
|
109
|
+
hand side was not appearing correctly
|
|
110
|
+
* homepage should have main tab selected
|
|
111
|
+
* changed urls to support models that override to_param to other than id
|
|
112
|
+
* fixed the sorting order. model a, model B and model A/Q was being sorted
|
|
113
|
+
as A,Q,B instead of A,B,Q.
|
|
114
|
+
|
|
115
|
+
=== 0.0.17 2009-10-08
|
|
116
|
+
|
|
117
|
+
* drop down of klasses is now available at the center of home page
|
|
118
|
+
* current model will be selected in the drop down
|
|
119
|
+
|
|
120
|
+
=== 0.0.16 2009-10-07
|
|
121
|
+
|
|
122
|
+
* form UI foreign keys are dropdown (display name attribute if it exists and id otherwise)
|
|
123
|
+
* form UI date fields use date_select (with free text year since we cannot guess a good range)
|
|
124
|
+
* form UI refactored to use form_for instead of form_tag and hadcoded html
|
|
125
|
+
|
|
126
|
+
=== 0.0.15 2009-10-06
|
|
127
|
+
|
|
128
|
+
* cache the list of models
|
|
129
|
+
* advance search refactoring
|
|
130
|
+
* jQuery UI datepicker for date field
|
|
131
|
+
* advance search now shows validation error for integer and date fields
|
|
132
|
+
* log.js for easy logging in JavaScript
|
|
133
|
+
|
|
134
|
+
=== 0.0.14 2009-10-05
|
|
135
|
+
|
|
136
|
+
* while editing match was being done for hard coded value id. Now it looks for klass.primary_key
|
|
137
|
+
|
|
138
|
+
=== 0.0.13 2009-10-04
|
|
139
|
+
|
|
140
|
+
* fixed IE7 bug
|
|
141
|
+
|
|
142
|
+
=== 0.0.12 2009-10-04
|
|
143
|
+
|
|
144
|
+
* fixed bug regarding integer values not appearning in listing
|
|
145
|
+
* better indentation
|
|
146
|
+
|
|
147
|
+
=== 0.0.11 2009-10-01
|
|
148
|
+
|
|
149
|
+
* Major contribution in this release by Alex Rothenberg. http://github.com/alexrothenberg
|
|
150
|
+
* this plugin now treats each model as a restful resource.
|
|
151
|
+
* security fix and test for it
|
|
152
|
+
* commented out offending code for has_one relationship
|
|
153
|
+
* has_one and habtm relationships along with test would be taken up in next release
|
|
154
|
+
|
|
155
|
+
=== 0.0.11 2009-09-28
|
|
156
|
+
|
|
157
|
+
* renamed quick search to search
|
|
158
|
+
* using jQuery theme to make drop down boxes jazzier
|
|
159
|
+
* more tests
|
|
160
|
+
* moved some inline css to external css file
|
|
161
|
+
|
|
162
|
+
=== 0.0.10 2009-09-18
|
|
163
|
+
|
|
164
|
+
* fixed listing and has_many association info for namespaced model
|
|
165
|
+
|
|
166
|
+
=== 0.0.9 2009-09-18
|
|
167
|
+
|
|
168
|
+
* fixed security issue
|
|
169
|
+
|
|
170
|
+
=== 0.0.8 2009-09-18
|
|
171
|
+
|
|
172
|
+
* do not assume that primary key is 'id' . Respect the primary key set by model.
|
|
173
|
+
|
|
174
|
+
* test for alternate primary key
|
|
175
|
+
|
|
176
|
+
=== 0.0.7 2009-09-17
|
|
177
|
+
|
|
178
|
+
* fixed test for Vehicle::Car
|
|
179
|
+
|
|
180
|
+
=== 0.0.6 2009-09-09
|
|
181
|
+
|
|
182
|
+
* more tests for the plugin. Now 151 tests and 229 assertions
|
|
183
|
+
|
|
184
|
+
* support for name spaced models like Vehicle::Car and Vehicle::Engine
|
|
185
|
+
|
|
186
|
+
* fixed a bug related to advance search
|
|
187
|
+
|
|
188
|
+
* refactored JavaScript code for advance search
|
|
189
|
+
|
|
190
|
+
=== 0.0.5 2009-09-04
|
|
191
|
+
|
|
192
|
+
* tests for the plugin
|
|
193
|
+
|
|
194
|
+
* changed the way security configiruation is passed to the plugin
|
|
195
|
+
|
|
196
|
+
* users can configure number of records in a page. Default is 50
|
|
197
|
+
|
|
198
|
+
* fixed bug associated with advance search
|
|
199
|
+
|
|
200
|
+
* added link to report bug in footer
|
|
201
|
+
|
|
202
|
+
* fixed bug in date parsing
|
|
203
|
+
|
|
204
|
+
=== 0.0.4 2009-08-28
|
|
205
|
+
|
|
206
|
+
* storing serialized array in string causing problem in truncate method. more at
|
|
207
|
+
http://github.com/neerajdotname/admin_data/issues#issue/3.
|
|
208
|
+
|
|
209
|
+
=== 0.0.3 2009-08-10
|
|
210
|
+
|
|
211
|
+
* not requiring rubygems
|
|
212
|
+
* if will_paginate is missing then not raising exception
|
|
213
|
+
|
|
214
|
+
=== 0.0.2 2009-07-06
|
|
215
|
+
|
|
216
|
+
* ability to sort records
|
|
217
|
+
* better visual clue that search is in progress
|
|
218
|
+
|
|
219
|
+
=== 0.0.1 2009-05-01
|
|
220
|
+
|
|
221
|
+
* Initial release
|
data/README.textile
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
h1. This plugin works with rails3. "More information is available here":http://neerajdotname.github.com/admin_data/#howtousethispluginwithrails3
|
|
2
|
+
|
|
3
|
+
h1. Live Demo
|
|
4
|
+
|
|
5
|
+
"http://demo.neeraj.name/admin_data":http://demo.neeraj.name/admin_data
|
|
6
|
+
|
|
7
|
+
h1. Documentation
|
|
8
|
+
|
|
9
|
+
"http://neerajdotname.github.com/admin_data":http://neerajdotname.github.com/admin_data
|
|
10
|
+
|
|
11
|
+
h1. JavaScript Unit tests live result
|
|
12
|
+
|
|
13
|
+
"http://demo.neeraj.name/admin_data/jstest":http://demo.neeraj.name/admin_data/jstest
|
|
14
|
+
|
|
15
|
+
h1. Source code
|
|
16
|
+
|
|
17
|
+
"http://github.com/neerajdotname/admin_data":http://github.com/neerajdotname/admin_data
|
|
18
|
+
|
|
19
|
+
h2. License
|
|
20
|
+
|
|
21
|
+
Dual licensed under the "MIT":http://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt and "GPL version 2":http://github.com/jquery/jquery/blob/master/GPL-LICENSE.txt licenses.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'rake/testtask'
|
|
3
|
+
require 'rake/rdoctask'
|
|
4
|
+
|
|
5
|
+
desc 'Default: run unit tests.'
|
|
6
|
+
task :default => :test
|
|
7
|
+
|
|
8
|
+
desc 'Test admin_data plugin.'
|
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
|
10
|
+
t.libs << 'lib' << 'test'
|
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
|
12
|
+
t.verbose = true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
desc 'Generate documentation for admin_data plugin.'
|
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
18
|
+
rdoc.title = 'AdminData'
|
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
20
|
+
rdoc.rdoc_files.include('README.textile')
|
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
begin
|
|
25
|
+
require 'jeweler'
|
|
26
|
+
require './lib/admin_data/version'
|
|
27
|
+
Jeweler::Tasks.new do |s|
|
|
28
|
+
s.name = "admin_data"
|
|
29
|
+
s.version = AdminData::VERSION
|
|
30
|
+
s.summary = s.description = "Manage database using browser"
|
|
31
|
+
s.email = "neerajdotname@gmail.com"
|
|
32
|
+
s.homepage = "http://github.com/neerajdotname/admin_data"
|
|
33
|
+
s.authors = ['Neeraj Singh']
|
|
34
|
+
s.files = FileList["[A-Z]*", "{app,config,lib,test}/**/*", 'init.rb']
|
|
35
|
+
|
|
36
|
+
s.add_dependency 'will_paginate'
|
|
37
|
+
|
|
38
|
+
s.add_development_dependency 'flexmock'
|
|
39
|
+
s.add_development_dependency 'shoulda'
|
|
40
|
+
s.add_development_dependency 'factory_girl'
|
|
41
|
+
s.add_development_dependency 'nokogiri'
|
|
42
|
+
end
|
|
43
|
+
Jeweler::GemcutterTasks.new
|
|
44
|
+
rescue LoadError => le
|
|
45
|
+
puts "Jeweler not available. Install it for jeweler-related tasks with: gem install jeweler: #{le.message}"
|
|
46
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
class AdminData::BaseController < ApplicationController
|
|
2
|
+
|
|
3
|
+
unloadable
|
|
4
|
+
|
|
5
|
+
helper_method :admin_data_is_allowed_to_update?
|
|
6
|
+
|
|
7
|
+
layout 'admin_data'
|
|
8
|
+
|
|
9
|
+
include AdminData::Chelper
|
|
10
|
+
|
|
11
|
+
before_filter :rails3_hack, :build_klasses, :build_drop_down_for_klasses, :check_page_parameter, :prepare_drop_down_klasses
|
|
12
|
+
|
|
13
|
+
attr_reader :klass
|
|
14
|
+
attr_reader :model
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def prepare_drop_down_klasses
|
|
19
|
+
k = params[:klass] || ''
|
|
20
|
+
@drop_down_url = "http://#{request.host_with_port}/admin_data/quick_search/#{CGI.escape(k)}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def ensure_is_allowed_to_view
|
|
24
|
+
render :text => '<h2>not authorized</h2>', :status => :unauthorized unless admin_data_is_allowed_to_view?
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def ensure_is_allowed_to_view_model
|
|
28
|
+
render :text => 'not authorized', :status => :unauthorized unless admin_data_is_allowed_to_view_model?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def ensure_is_allowed_to_update
|
|
32
|
+
render :text => 'not authorized', :status => :unauthorized unless admin_data_is_allowed_to_update?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def ensure_is_allowed_to_update_model
|
|
36
|
+
render :text => 'not authorized', :status => :unauthorized unless admin_data_is_allowed_to_update_model?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def ensure_is_allowed_to_view_feed
|
|
40
|
+
render :text => 'not authorized', :status => :unauthorized unless AdminData::Util.is_allowed_to_view_feed?(self)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def get_class_from_params
|
|
44
|
+
begin
|
|
45
|
+
@klass = AdminData::Util.camelize_constantize(params[:klass])
|
|
46
|
+
rescue TypeError => e # in case no params[:klass] is supplied
|
|
47
|
+
Rails.logger.debug 'no params[:klass] was supplied'
|
|
48
|
+
redirect_to admin_data_index_path
|
|
49
|
+
rescue NameError # in case wrong params[:klass] is supplied
|
|
50
|
+
Rails.logger.debug 'wrong params[:klass] was supplied'
|
|
51
|
+
redirect_to admin_data_index_path
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def build_klasses
|
|
56
|
+
unless defined? $admin_data_klasses
|
|
57
|
+
model_dir = File.join(Rails.root, 'app', 'models')
|
|
58
|
+
model_names = Dir.chdir(model_dir) { Dir["**/*.rb"] }
|
|
59
|
+
klasses = get_klass_names(model_names)
|
|
60
|
+
filtered_klasses = remove_klasses_without_table(klasses).sort_by {|r| r.name.underscore}
|
|
61
|
+
klasses_with_security_clearance = filtered_klasses.select do |klass_local|
|
|
62
|
+
@klass = klass_local
|
|
63
|
+
admin_data_is_allowed_to_view_model?
|
|
64
|
+
end
|
|
65
|
+
#TODO remove global constant. it is not thread safe
|
|
66
|
+
$admin_data_klasses = klasses_with_security_clearance
|
|
67
|
+
puts $admin_data_klasses.inspect
|
|
68
|
+
end
|
|
69
|
+
@klasses = $admin_data_klasses
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def remove_klasses_without_table(klasses)
|
|
73
|
+
klasses.select { |k| k.ancestors.include?(ActiveRecord::Base) &&
|
|
74
|
+
k.connection.table_exists?(k.table_name) }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def get_klass_names(model_names)
|
|
78
|
+
model_names.inject([]) do |output, model_name|
|
|
79
|
+
klass_name = model_name.sub(/\.rb$/,'').camelize
|
|
80
|
+
begin
|
|
81
|
+
output << AdminData::Util.constantize_klass(klass_name)
|
|
82
|
+
rescue Exception => e
|
|
83
|
+
Rails.logger.debug e.message
|
|
84
|
+
end
|
|
85
|
+
output
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def build_drop_down_for_klasses
|
|
90
|
+
@drop_down_for_klasses = @klasses.inject([]) do |result,klass|
|
|
91
|
+
#TODO FIXME for some weird reason tests fail if I don't do this
|
|
92
|
+
if Rails.env.test?
|
|
93
|
+
result
|
|
94
|
+
else
|
|
95
|
+
result << [klass.name.underscore, admin_data_search_url(:klass => klass.name.underscore)]
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def check_page_parameter
|
|
101
|
+
# Got hoptoad error because of url like http://localhost:3000/admin_data/User/advance_search?page=http://201.134.249.164/intranet/on.txt?
|
|
102
|
+
if params[:page].blank? || (params[:page] =~ /\A\d+\z/)
|
|
103
|
+
# proceed
|
|
104
|
+
else
|
|
105
|
+
render :text => 'Invalid params[:page]', :status => :unprocessable_entity
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def rails3_hack
|
|
110
|
+
#require_dependency File.join(Rails.root, 'vendor', 'plugins', 'admin_data', 'lib', 'admin_data', 'settings.rb')
|
|
111
|
+
#AdminData::Config.initialize_defaults
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class AdminData::DiagnosticController < AdminData::BaseController
|
|
2
|
+
|
|
3
|
+
unloadable
|
|
4
|
+
|
|
5
|
+
before_filter :ensure_is_allowed_to_view
|
|
6
|
+
|
|
7
|
+
def index
|
|
8
|
+
@page_title = 'diagnostic'
|
|
9
|
+
respond_to {|format| format.html}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def missing_index
|
|
13
|
+
@page_title = 'missing index'
|
|
14
|
+
@indexes = {}
|
|
15
|
+
conn = ActiveRecord::Base.connection
|
|
16
|
+
conn.tables.each do |table|
|
|
17
|
+
indexed_columns = conn.indexes(table).map { |i| i.columns }.flatten
|
|
18
|
+
conn.columns(table).each do |column|
|
|
19
|
+
if column.name.match(/_id/) && !indexed_columns.include?(column.name)
|
|
20
|
+
@indexes[table] ||= []
|
|
21
|
+
@indexes[table] << column.name
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
respond_to {|format| format.html}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class AdminData::FeedController < AdminData::BaseController
|
|
2
|
+
|
|
3
|
+
unloadable
|
|
4
|
+
|
|
5
|
+
before_filter :ensure_is_allowed_to_view_feed
|
|
6
|
+
|
|
7
|
+
def index
|
|
8
|
+
render :text => "usage: http://localhost:3000/admin_data/feed/user" and return if params[:klasss].blank?
|
|
9
|
+
|
|
10
|
+
begin
|
|
11
|
+
@klass = AdminData::Util.camelize_constantize(params[:klasss])
|
|
12
|
+
rescue NameError => e
|
|
13
|
+
render :text => "No constant was found with name #{params[:klasss]}" and return
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|