adminsite 2.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.
- checksums.yaml +7 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +209 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +122 -0
- data/Rakefile +14 -0
- data/USAGE +18 -0
- data/VERSION +1 -0
- data/app/admin_configs/adminsite/adminsite_admin_user_admin_config.rb +43 -0
- data/app/admin_configs/adminsite/adminsite_file_asset_admin_config.rb +32 -0
- data/app/admin_configs/adminsite/adminsite_page_admin_config.rb +46 -0
- data/app/admin_configs/adminsite/adminsite_page_layout_admin_config.rb +31 -0
- data/app/assets/images/adminsite/admin/accept.png +0 -0
- data/app/assets/images/adminsite/admin/add.png +0 -0
- data/app/assets/images/adminsite/admin/arrow_left.png +0 -0
- data/app/assets/images/adminsite/admin/arrow_refresh.png +0 -0
- data/app/assets/images/adminsite/admin/arrow_up.png +0 -0
- data/app/assets/images/adminsite/admin/cross.png +0 -0
- data/app/assets/images/adminsite/admin/logo.gif +0 -0
- data/app/assets/images/adminsite/admin/logo.png +0 -0
- data/app/assets/images/adminsite/admin/magnifier.png +0 -0
- data/app/assets/images/adminsite/admin/newspaper_add.png +0 -0
- data/app/assets/images/adminsite/admin/newspaper_delete.png +0 -0
- data/app/assets/images/adminsite/admin/openid-icon-small.gif +0 -0
- data/app/assets/images/adminsite/admin/page_white_magnify.png +0 -0
- data/app/assets/images/adminsite/admin/pencil.png +0 -0
- data/app/assets/images/adminsite/admin/rails.png +0 -0
- data/app/assets/images/adminsite/admin/reorder.gif +0 -0
- data/app/assets/images/adminsite/admin/spinner.gif +0 -0
- data/app/assets/javascripts/adminsite/admin.js +13 -0
- data/app/assets/javascripts/adminsite/admin/code_editor.js.coffee +40 -0
- data/app/assets/javascripts/adminsite/admin/hide_and_show.js +26 -0
- data/app/assets/stylesheets/adminsite/admin.scss +16 -0
- data/app/assets/stylesheets/adminsite/admin/base.scss +521 -0
- data/app/assets/stylesheets/adminsite/admin/code_editor.scss +29 -0
- data/app/assets/stylesheets/adminsite/admin/pagination.scss +28 -0
- data/app/controllers/adminsite/admin/adminsite_admin_users_controller.rb +21 -0
- data/app/controllers/adminsite/admin/adminsite_file_assets_controller.rb +57 -0
- data/app/controllers/adminsite/admin/adminsite_page_layouts_controller.rb +41 -0
- data/app/controllers/adminsite/admin/adminsite_pages_controller.rb +40 -0
- data/app/controllers/adminsite/admin/base_controller.rb +16 -0
- data/app/controllers/adminsite/admin/crud_controller.rb +27 -0
- data/app/controllers/adminsite/admin/iframe_controller.rb +28 -0
- data/app/controllers/adminsite/admin/resources_controller.rb +148 -0
- data/app/controllers/adminsite/admin_application_controller.rb +9 -0
- data/app/controllers/adminsite/admin_user_sessions_controller.rb +5 -0
- data/app/controllers/adminsite/contents_controller.rb +88 -0
- data/app/helpers/admin/adminsite_application_helper.rb +174 -0
- data/app/helpers/admin_application_helper.rb +3 -0
- data/app/models/adminsite/admin_config/base.rb +100 -0
- data/app/models/adminsite/admin_user.rb +10 -0
- data/app/models/adminsite/file_asset.rb +22 -0
- data/app/models/adminsite/page.rb +59 -0
- data/app/models/adminsite/page_layout.rb +9 -0
- data/app/views/adminsite/admin/adminsite_file_assets/index.html.haml +39 -0
- data/app/views/adminsite/admin/adminsite_page_layouts/edit.html.haml +5 -0
- data/app/views/adminsite/admin/adminsite_page_layouts/index.html.haml +9 -0
- data/app/views/adminsite/admin/adminsite_page_layouts/new.html.haml +5 -0
- data/app/views/adminsite/admin/adminsite_pages/edit.html.haml +5 -0
- data/app/views/adminsite/admin/adminsite_pages/index.html.haml +16 -0
- data/app/views/adminsite/admin/adminsite_pages/new.html.haml +5 -0
- data/app/views/adminsite/admin/crud/index.html.haml +4 -0
- data/app/views/adminsite/admin/crud/show.html.haml +15 -0
- data/app/views/adminsite/admin/iframe/index.haml +14 -0
- data/app/views/adminsite/admin/resources/_form.haml +6 -0
- data/app/views/adminsite/admin/resources/_list.haml +18 -0
- data/app/views/adminsite/admin/resources/_search_form.html.haml +41 -0
- data/app/views/adminsite/admin/resources/edit.haml +13 -0
- data/app/views/adminsite/admin/resources/index.haml +13 -0
- data/app/views/adminsite/admin/resources/new.haml +14 -0
- data/app/views/adminsite/admin/resources/show.haml +15 -0
- data/app/views/adminsite/admin/shared/_admin_menu.html.haml +6 -0
- data/app/views/adminsite/admin/shared/_content_menu.html.haml +4 -0
- data/app/views/adminsite/admin/shared/_page_assets_list.html.haml +6 -0
- data/app/views/adminsite/admin/shared/_syntax_help.html.haml +24 -0
- data/app/views/adminsite/admin_user_sessions/new.html.haml +14 -0
- data/app/views/layouts/adminsite/admin.html.haml +31 -0
- data/config/initializers/adminsite_constants.rb +2 -0
- data/config/initializers/assets.rb +7 -0
- data/config/initializers/devise.rb +265 -0
- data/config/initializers/filter_parameter_logging.rb +4 -0
- data/config/initializers/paperclip.rb +15 -0
- data/config/initializers/time_formats.rb +1 -0
- data/config/locales/da.devise.yaml +57 -0
- data/config/locales/da.yaml +199 -0
- data/config/locales/en.devise.yaml +60 -0
- data/config/locales/en.yaml +205 -0
- data/config/routes.rb +17 -0
- data/db/migrate/20101007000000_create_admin.rb +59 -0
- data/db/migrate/20101007000001_create_cms_tables.rb +39 -0
- data/lib/adminsite.rb +28 -0
- data/lib/adminsite/configuration.rb +15 -0
- data/lib/adminsite/engine.rb +30 -0
- data/lib/adminsite/liquid/tags/asset.rb +70 -0
- data/lib/adminsite/version.rb +3 -0
- data/lib/generators/adminsite/add_dashboard/add_dashboard_generator.rb +34 -0
- data/lib/generators/adminsite/add_dashboard/templates/controllers/admin_dashboard_controller.rb +13 -0
- data/lib/generators/adminsite/add_dashboard/templates/views/index.html.haml +6 -0
- data/lib/generators/adminsite/add_iframe/add_iframe_generator.rb +42 -0
- data/lib/generators/adminsite/add_iframe/templates/controllers/admin_iframe_controller.rb +16 -0
- data/lib/generators/adminsite/add_resource/USAGE +0 -0
- data/lib/generators/adminsite/add_resource/add_resource_generator.rb +40 -0
- data/lib/generators/adminsite/add_resource/templates/admin_configs/resource_admin_config.rb +47 -0
- data/lib/generators/adminsite/add_resource/templates/controllers/admin_resource_controller.rb +19 -0
- data/lib/generators/adminsite/install/USAGE +13 -0
- data/lib/generators/adminsite/install/install_generator.rb +51 -0
- data/lib/generators/adminsite/install/templates/assets/adminsite.js +17 -0
- data/lib/generators/adminsite/install/templates/assets/adminsite.scss +14 -0
- data/lib/generators/adminsite/install/templates/config/locales/adminsite.da.yml +4 -0
- data/lib/generators/adminsite/install/templates/config/locales/adminsite.en.yml +6 -0
- data/lib/generators/adminsite/install/templates/recipes/application.rb +18 -0
- data/lib/generators/adminsite/install/templates/views/_admin_menu.html.haml +8 -0
- data/lib/recipes/adminsite.rb +82 -0
- data/lib/tasks/adminsite.rake +147 -0
- metadata +384 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
@import "codemirror";
|
|
2
|
+
// @import "codemirror/themes/night";
|
|
3
|
+
|
|
4
|
+
body.adminsite {
|
|
5
|
+
.CodeMirror {
|
|
6
|
+
border: 1px solid #C9D0D6;
|
|
7
|
+
border-radius: 3px;
|
|
8
|
+
font-family: Helvetica,Arial,sans-serif;
|
|
9
|
+
font-size: 0.95em;
|
|
10
|
+
outline: medium none;
|
|
11
|
+
width: 72%;
|
|
12
|
+
// height: 103px;
|
|
13
|
+
line-height: 15px;
|
|
14
|
+
padding: 0;
|
|
15
|
+
|
|
16
|
+
.CodeMirror-lines {
|
|
17
|
+
padding: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
pre {
|
|
21
|
+
padding: 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
textarea {
|
|
25
|
+
border: 0;
|
|
26
|
+
line-height: 15px;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
$position : left ;
|
|
2
|
+
$primary-color: #efefef;
|
|
3
|
+
$secondary-color: #BBB;
|
|
4
|
+
.pagination
|
|
5
|
+
{
|
|
6
|
+
text-align: $position ;
|
|
7
|
+
color: #666;
|
|
8
|
+
}
|
|
9
|
+
.pagination a {
|
|
10
|
+
border-radius: 2px;
|
|
11
|
+
padding: 0.5em 0.7em;
|
|
12
|
+
border-color: #aaa;
|
|
13
|
+
border-style: solid;
|
|
14
|
+
background-color: #efefef;
|
|
15
|
+
background-color: $primary-color;
|
|
16
|
+
border-top: 2px solid $secondary-color ;
|
|
17
|
+
border: 1px solid $secondary-color ;
|
|
18
|
+
text-decoration: none;
|
|
19
|
+
font-size: smaller;
|
|
20
|
+
}
|
|
21
|
+
.pagination a:hover , .pagination a:focus
|
|
22
|
+
{
|
|
23
|
+
background-image: -webkit-linear-gradient(top, #cfcfcf, #cfcfcf);
|
|
24
|
+
}
|
|
25
|
+
.pagination a.more {
|
|
26
|
+
box-shadow: 0 0 0 0 transparent;
|
|
27
|
+
background: transparent;
|
|
28
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Adminsite
|
|
2
|
+
class Admin::AdminsiteAdminUsersController < Adminsite::Admin::ResourcesController
|
|
3
|
+
|
|
4
|
+
protected
|
|
5
|
+
|
|
6
|
+
def self.resource_class
|
|
7
|
+
Adminsite::AdminUser
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def order_params
|
|
11
|
+
'email ASC'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def resource_admin_config
|
|
15
|
+
# Adminsite::AdminConfig::Base.admin_config_of_class(resource_class)
|
|
16
|
+
# -> Result: "Adminsite::AdminConfig::#{config_class_name.gsub('::','')}" || Adminsite::AdminConfig::Base
|
|
17
|
+
super
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
class Adminsite::Admin::AdminsiteFileAssetsController < Adminsite::Admin::ResourcesController
|
|
2
|
+
|
|
3
|
+
def index
|
|
4
|
+
@file_asset = Adminsite::FileAsset.new
|
|
5
|
+
super
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def create
|
|
9
|
+
success_files = []
|
|
10
|
+
failure_files = []
|
|
11
|
+
|
|
12
|
+
if params[:file_asset].present?
|
|
13
|
+
Array(permitted_params[:file_asset][:attachment]).each do |file|
|
|
14
|
+
filename = file.original_filename
|
|
15
|
+
|
|
16
|
+
# "Overwrite" existing by removing them
|
|
17
|
+
Adminsite::FileAsset.find_by_attachment_file_name(filename).try(:destroy)
|
|
18
|
+
|
|
19
|
+
file_asset = Adminsite::FileAsset.new('attachment' => file)
|
|
20
|
+
if file_asset.save!
|
|
21
|
+
success_files << "'#{filename}'"
|
|
22
|
+
else
|
|
23
|
+
failure_files << "'#{filename}'"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
flash[:notice] = "File(s) #{success_files.join(', ')} were successfully uploaded." if success_files.any?
|
|
29
|
+
flash[:errors] = "File(s) #{failure_files.join(', ')} were not uploaded." if failure_files.any?
|
|
30
|
+
|
|
31
|
+
Adminsite::Page.cleanup_all_cached
|
|
32
|
+
redirect_to admin_adminsite_file_assets_path
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def destroy
|
|
36
|
+
super
|
|
37
|
+
Adminsite::Page.cleanup_all_cached
|
|
38
|
+
# redirect_to admin_adminsite_file_assets_path
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
protected
|
|
42
|
+
|
|
43
|
+
def order_params
|
|
44
|
+
'attachment_file_name ASC'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def resource_admin_config
|
|
48
|
+
# Adminsite::AdminConfig::Base.admin_config_of_class(resource_class)
|
|
49
|
+
# -> Result: "Adminsite::AdminConfig::#{config_class_name.gsub('::','')}" || Adminsite::AdminConfig::Base
|
|
50
|
+
super
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.resource_class
|
|
54
|
+
Adminsite::FileAsset
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
class Adminsite::Admin::AdminsitePageLayoutsController < Adminsite::Admin::ResourcesController
|
|
2
|
+
|
|
3
|
+
def new
|
|
4
|
+
@resource = resource_class.new(:body => "{{content_for_template}}")
|
|
5
|
+
@file_assets = Adminsite::FileAsset.all
|
|
6
|
+
super
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def edit
|
|
10
|
+
@file_assets = Adminsite::FileAsset.all
|
|
11
|
+
super
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def update
|
|
15
|
+
@file_assets = Adminsite::FileAsset.all
|
|
16
|
+
super
|
|
17
|
+
Adminsite::Page.cleanup_all_cached
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def destroy
|
|
21
|
+
Adminsite::Page.cleanup_all_cached
|
|
22
|
+
super
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
protected
|
|
26
|
+
|
|
27
|
+
def self.resource_class
|
|
28
|
+
Adminsite::PageLayout
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def order_params
|
|
32
|
+
'title ASC'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def resource_admin_config
|
|
36
|
+
# Adminsite::AdminConfig::Base.admin_config_of_class(resource_class)
|
|
37
|
+
# -> Result: "Adminsite::AdminConfig::#{config_class_name.gsub('::','')}" || Adminsite::AdminConfig::Base
|
|
38
|
+
super
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
class Adminsite::Admin::AdminsitePagesController < Adminsite::Admin::ResourcesController
|
|
2
|
+
|
|
3
|
+
def new
|
|
4
|
+
@file_assets = Adminsite::FileAsset.all
|
|
5
|
+
super
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def edit
|
|
9
|
+
@file_assets = Adminsite::FileAsset.all
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def update
|
|
14
|
+
@file_assets = Adminsite::FileAsset.all
|
|
15
|
+
super
|
|
16
|
+
@resource.cleanup_cached
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def destroy
|
|
20
|
+
@resource.cleanup_cached
|
|
21
|
+
super
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
protected
|
|
25
|
+
|
|
26
|
+
def order_params
|
|
27
|
+
'title ASC'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def resource_admin_config
|
|
31
|
+
# Adminsite::AdminConfig::Base.admin_config_of_class(resource_class)
|
|
32
|
+
# -> Result: "Adminsite::AdminConfig::#{config_class_name.gsub('::','')}" || Adminsite::AdminConfig::Base
|
|
33
|
+
super
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.resource_class
|
|
37
|
+
Adminsite::Page
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Adminsite::Admin::BaseController < Adminsite::AdminApplicationController
|
|
2
|
+
layout 'adminsite/admin'
|
|
3
|
+
|
|
4
|
+
newrelic_ignore if defined?(NewRelic)
|
|
5
|
+
|
|
6
|
+
protected
|
|
7
|
+
|
|
8
|
+
def self.content_menu_label
|
|
9
|
+
name.demodulize.sub(/Controller$/, '')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def permitted_params
|
|
13
|
+
params.permit!
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
class Adminsite::Admin::CrudController < Adminsite::Admin::BaseController
|
|
2
|
+
|
|
3
|
+
def index
|
|
4
|
+
#
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
protected
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
|
|
11
|
+
def defined_controller_actions
|
|
12
|
+
[:new, :create, :show, :edit, :update, :index, :destroy].select{|a| new.respond_to?(a) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def register_routes(rails_router)
|
|
16
|
+
return if self == Adminsite::Admin::CrudController
|
|
17
|
+
rails_router.instance_exec controller_name, defined_controller_actions do |controller_name, actions|
|
|
18
|
+
resources controller_name, controller: controller_name, only: actions do
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class Adminsite::Admin::IframeController < Adminsite::Admin::CrudController
|
|
2
|
+
|
|
3
|
+
def index
|
|
4
|
+
@iframe_name = self.class.iframe_name
|
|
5
|
+
@iframe_url = self.class.iframe_url
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
|
|
11
|
+
def iframe_name
|
|
12
|
+
raise NotImplementedError.new('Define iframe_name in subclass')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def iframe_url
|
|
16
|
+
raise NotImplementedError.new('Define iframe_url in subclass')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def register_routes(rails_router)
|
|
20
|
+
return if self == Adminsite::Admin::IframeController
|
|
21
|
+
super(rails_router)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
class Adminsite::Admin::ResourcesController < Adminsite::Admin::CrudController
|
|
2
|
+
before_filter :find_resource, :except => [:new, :create, :index]
|
|
3
|
+
|
|
4
|
+
helper_method :admin_resource_path, :resource_class_underscore,
|
|
5
|
+
:resource_class, :resource_admin_config
|
|
6
|
+
|
|
7
|
+
respond_to :html, :json
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def new
|
|
11
|
+
@resource ||= self.class.resource_class.new
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def create
|
|
15
|
+
@resource ||= self.class.resource_class.new(resource_params)
|
|
16
|
+
|
|
17
|
+
if @resource.save
|
|
18
|
+
flash_notice_success('created')
|
|
19
|
+
if api_call?
|
|
20
|
+
render :json => @resource
|
|
21
|
+
else
|
|
22
|
+
redirect_to admin_resource_path(@resource.id)
|
|
23
|
+
end
|
|
24
|
+
else
|
|
25
|
+
render :action => "new"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def edit
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def show
|
|
33
|
+
render :json => @resource if api_call?
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def update
|
|
37
|
+
if @resource.update_attributes(resource_params)
|
|
38
|
+
flash_notice_success('updated')
|
|
39
|
+
if api_call?
|
|
40
|
+
render :json => @resource
|
|
41
|
+
else
|
|
42
|
+
redirect_to admin_resource_path(@resource.id, :edit)
|
|
43
|
+
end
|
|
44
|
+
else
|
|
45
|
+
render :action => "edit"
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def index
|
|
50
|
+
@q = resources.order(order_params).ransack(params[:q])
|
|
51
|
+
@resources = @q.result.page(params[:page])
|
|
52
|
+
@ransack_params = ransack_params
|
|
53
|
+
render :json => @resources if api_call?
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def destroy
|
|
57
|
+
@resource.destroy
|
|
58
|
+
redirect_to admin_resource_path
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def resource_class
|
|
62
|
+
self.class.resource_class
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def resource_class_underscore
|
|
66
|
+
@resource_class_underscore ||= resource_class.to_s.underscore.gsub('/','_')
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def ransack_params
|
|
70
|
+
params.slice(:q, :p).each{|k,v| v.delete_if {|key, value| value.blank? }}
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def current_admin_menu
|
|
74
|
+
@current_admin_menu ||= params[:admin_menu]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def admin_resource_path(id = nil, action = nil)
|
|
78
|
+
path = self.class.remove_namespace(params[:controller], ['adminsite'])
|
|
79
|
+
path = path.gsub('/','_')
|
|
80
|
+
path = path.singularize if (action || id).present? && action.to_s != 'search'
|
|
81
|
+
path = "#{action}_#{path}" if action.present?
|
|
82
|
+
send("#{path}_path", id, admin_menu: current_admin_menu)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
protected
|
|
86
|
+
|
|
87
|
+
def self.content_menu_label
|
|
88
|
+
pattern = "^#{resource_class.to_s.deconstantize.split('::').join('|^')}"
|
|
89
|
+
super.gsub(/#{pattern}/,'')
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def api_call?
|
|
93
|
+
request.xhr? || request.format.to_sym == :json
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def find_resource
|
|
97
|
+
@resource ||= resources.find(params[:id])
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def resources
|
|
101
|
+
if filter_scopes.present?
|
|
102
|
+
eval("resource_class.#{filter_scopes.join('.')}")
|
|
103
|
+
else
|
|
104
|
+
self.class.resource_class.all
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def resource_params
|
|
109
|
+
permitted_params[resource_class_underscore]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def flash_notice_success(action)
|
|
113
|
+
flash[:notice] = "#{resource_class.name} was successfully #{action}."
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def filter_scopes
|
|
117
|
+
return [] if params[:scope].blank?
|
|
118
|
+
resource_admin_config.scopes & params[:scope].split(',').collect{|s| s.to_sym }
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def order_params
|
|
122
|
+
'ID DESC'
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def resource_admin_config
|
|
126
|
+
return @resource_admin_config if @resource_admin_config.present?
|
|
127
|
+
@resource_admin_config = Adminsite::AdminConfig::Base.admin_config_of_class(resource_class)
|
|
128
|
+
@resource_admin_config
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class << self
|
|
133
|
+
|
|
134
|
+
def remove_namespace(string, namespaces)
|
|
135
|
+
(string.split('/') - namespaces).join('/')
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def register_routes(rails_router)
|
|
139
|
+
return if self == Adminsite::Admin::ResourcesController
|
|
140
|
+
super(rails_router)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def resource_class
|
|
144
|
+
raise NotImplementedError.new('Define resource_class in subclass')
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
end
|