adminsite 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +12 -0
  3. data/Gemfile.lock +209 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.markdown +122 -0
  6. data/Rakefile +14 -0
  7. data/USAGE +18 -0
  8. data/VERSION +1 -0
  9. data/app/admin_configs/adminsite/adminsite_admin_user_admin_config.rb +43 -0
  10. data/app/admin_configs/adminsite/adminsite_file_asset_admin_config.rb +32 -0
  11. data/app/admin_configs/adminsite/adminsite_page_admin_config.rb +46 -0
  12. data/app/admin_configs/adminsite/adminsite_page_layout_admin_config.rb +31 -0
  13. data/app/assets/images/adminsite/admin/accept.png +0 -0
  14. data/app/assets/images/adminsite/admin/add.png +0 -0
  15. data/app/assets/images/adminsite/admin/arrow_left.png +0 -0
  16. data/app/assets/images/adminsite/admin/arrow_refresh.png +0 -0
  17. data/app/assets/images/adminsite/admin/arrow_up.png +0 -0
  18. data/app/assets/images/adminsite/admin/cross.png +0 -0
  19. data/app/assets/images/adminsite/admin/logo.gif +0 -0
  20. data/app/assets/images/adminsite/admin/logo.png +0 -0
  21. data/app/assets/images/adminsite/admin/magnifier.png +0 -0
  22. data/app/assets/images/adminsite/admin/newspaper_add.png +0 -0
  23. data/app/assets/images/adminsite/admin/newspaper_delete.png +0 -0
  24. data/app/assets/images/adminsite/admin/openid-icon-small.gif +0 -0
  25. data/app/assets/images/adminsite/admin/page_white_magnify.png +0 -0
  26. data/app/assets/images/adminsite/admin/pencil.png +0 -0
  27. data/app/assets/images/adminsite/admin/rails.png +0 -0
  28. data/app/assets/images/adminsite/admin/reorder.gif +0 -0
  29. data/app/assets/images/adminsite/admin/spinner.gif +0 -0
  30. data/app/assets/javascripts/adminsite/admin.js +13 -0
  31. data/app/assets/javascripts/adminsite/admin/code_editor.js.coffee +40 -0
  32. data/app/assets/javascripts/adminsite/admin/hide_and_show.js +26 -0
  33. data/app/assets/stylesheets/adminsite/admin.scss +16 -0
  34. data/app/assets/stylesheets/adminsite/admin/base.scss +521 -0
  35. data/app/assets/stylesheets/adminsite/admin/code_editor.scss +29 -0
  36. data/app/assets/stylesheets/adminsite/admin/pagination.scss +28 -0
  37. data/app/controllers/adminsite/admin/adminsite_admin_users_controller.rb +21 -0
  38. data/app/controllers/adminsite/admin/adminsite_file_assets_controller.rb +57 -0
  39. data/app/controllers/adminsite/admin/adminsite_page_layouts_controller.rb +41 -0
  40. data/app/controllers/adminsite/admin/adminsite_pages_controller.rb +40 -0
  41. data/app/controllers/adminsite/admin/base_controller.rb +16 -0
  42. data/app/controllers/adminsite/admin/crud_controller.rb +27 -0
  43. data/app/controllers/adminsite/admin/iframe_controller.rb +28 -0
  44. data/app/controllers/adminsite/admin/resources_controller.rb +148 -0
  45. data/app/controllers/adminsite/admin_application_controller.rb +9 -0
  46. data/app/controllers/adminsite/admin_user_sessions_controller.rb +5 -0
  47. data/app/controllers/adminsite/contents_controller.rb +88 -0
  48. data/app/helpers/admin/adminsite_application_helper.rb +174 -0
  49. data/app/helpers/admin_application_helper.rb +3 -0
  50. data/app/models/adminsite/admin_config/base.rb +100 -0
  51. data/app/models/adminsite/admin_user.rb +10 -0
  52. data/app/models/adminsite/file_asset.rb +22 -0
  53. data/app/models/adminsite/page.rb +59 -0
  54. data/app/models/adminsite/page_layout.rb +9 -0
  55. data/app/views/adminsite/admin/adminsite_file_assets/index.html.haml +39 -0
  56. data/app/views/adminsite/admin/adminsite_page_layouts/edit.html.haml +5 -0
  57. data/app/views/adminsite/admin/adminsite_page_layouts/index.html.haml +9 -0
  58. data/app/views/adminsite/admin/adminsite_page_layouts/new.html.haml +5 -0
  59. data/app/views/adminsite/admin/adminsite_pages/edit.html.haml +5 -0
  60. data/app/views/adminsite/admin/adminsite_pages/index.html.haml +16 -0
  61. data/app/views/adminsite/admin/adminsite_pages/new.html.haml +5 -0
  62. data/app/views/adminsite/admin/crud/index.html.haml +4 -0
  63. data/app/views/adminsite/admin/crud/show.html.haml +15 -0
  64. data/app/views/adminsite/admin/iframe/index.haml +14 -0
  65. data/app/views/adminsite/admin/resources/_form.haml +6 -0
  66. data/app/views/adminsite/admin/resources/_list.haml +18 -0
  67. data/app/views/adminsite/admin/resources/_search_form.html.haml +41 -0
  68. data/app/views/adminsite/admin/resources/edit.haml +13 -0
  69. data/app/views/adminsite/admin/resources/index.haml +13 -0
  70. data/app/views/adminsite/admin/resources/new.haml +14 -0
  71. data/app/views/adminsite/admin/resources/show.haml +15 -0
  72. data/app/views/adminsite/admin/shared/_admin_menu.html.haml +6 -0
  73. data/app/views/adminsite/admin/shared/_content_menu.html.haml +4 -0
  74. data/app/views/adminsite/admin/shared/_page_assets_list.html.haml +6 -0
  75. data/app/views/adminsite/admin/shared/_syntax_help.html.haml +24 -0
  76. data/app/views/adminsite/admin_user_sessions/new.html.haml +14 -0
  77. data/app/views/layouts/adminsite/admin.html.haml +31 -0
  78. data/config/initializers/adminsite_constants.rb +2 -0
  79. data/config/initializers/assets.rb +7 -0
  80. data/config/initializers/devise.rb +265 -0
  81. data/config/initializers/filter_parameter_logging.rb +4 -0
  82. data/config/initializers/paperclip.rb +15 -0
  83. data/config/initializers/time_formats.rb +1 -0
  84. data/config/locales/da.devise.yaml +57 -0
  85. data/config/locales/da.yaml +199 -0
  86. data/config/locales/en.devise.yaml +60 -0
  87. data/config/locales/en.yaml +205 -0
  88. data/config/routes.rb +17 -0
  89. data/db/migrate/20101007000000_create_admin.rb +59 -0
  90. data/db/migrate/20101007000001_create_cms_tables.rb +39 -0
  91. data/lib/adminsite.rb +28 -0
  92. data/lib/adminsite/configuration.rb +15 -0
  93. data/lib/adminsite/engine.rb +30 -0
  94. data/lib/adminsite/liquid/tags/asset.rb +70 -0
  95. data/lib/adminsite/version.rb +3 -0
  96. data/lib/generators/adminsite/add_dashboard/add_dashboard_generator.rb +34 -0
  97. data/lib/generators/adminsite/add_dashboard/templates/controllers/admin_dashboard_controller.rb +13 -0
  98. data/lib/generators/adminsite/add_dashboard/templates/views/index.html.haml +6 -0
  99. data/lib/generators/adminsite/add_iframe/add_iframe_generator.rb +42 -0
  100. data/lib/generators/adminsite/add_iframe/templates/controllers/admin_iframe_controller.rb +16 -0
  101. data/lib/generators/adminsite/add_resource/USAGE +0 -0
  102. data/lib/generators/adminsite/add_resource/add_resource_generator.rb +40 -0
  103. data/lib/generators/adminsite/add_resource/templates/admin_configs/resource_admin_config.rb +47 -0
  104. data/lib/generators/adminsite/add_resource/templates/controllers/admin_resource_controller.rb +19 -0
  105. data/lib/generators/adminsite/install/USAGE +13 -0
  106. data/lib/generators/adminsite/install/install_generator.rb +51 -0
  107. data/lib/generators/adminsite/install/templates/assets/adminsite.js +17 -0
  108. data/lib/generators/adminsite/install/templates/assets/adminsite.scss +14 -0
  109. data/lib/generators/adminsite/install/templates/config/locales/adminsite.da.yml +4 -0
  110. data/lib/generators/adminsite/install/templates/config/locales/adminsite.en.yml +6 -0
  111. data/lib/generators/adminsite/install/templates/recipes/application.rb +18 -0
  112. data/lib/generators/adminsite/install/templates/views/_admin_menu.html.haml +8 -0
  113. data/lib/recipes/adminsite.rb +82 -0
  114. data/lib/tasks/adminsite.rake +147 -0
  115. metadata +384 -0
data/config/routes.rb ADDED
@@ -0,0 +1,17 @@
1
+ Adminsite::Engine.routes.draw do
2
+ devise_for :adminsite_admin_user, class_name: 'Adminsite::AdminUser',
3
+ :controllers => { :sessions => "adminsite/admin_user_sessions" }
4
+
5
+ namespace Adminsite.config.admin_namespace, as: :admin, module: :admin do
6
+ Adminsite.register_routes(self)
7
+
8
+ root :to => 'adminsite_pages#index'
9
+ end
10
+
11
+ get '/:page_url(.:format)(/:id)' => 'contents#show',
12
+ :constraints => lambda { |req|
13
+ Adminsite::ContentsController.find_page_by_url(req.params[:page_url], req.params[:format]).present? &&
14
+ ( req.params[:id].nil? || req.params[:id].try(:match, /\A[0-9a-zA-Z]*\z/).present? )
15
+ }
16
+
17
+ end
@@ -0,0 +1,59 @@
1
+ class CreateAdmin < ActiveRecord::Migration
2
+ def self.up
3
+ create_table(:adminsite_admin_users) do |t|
4
+ ## Database authenticatable
5
+ t.string :name
6
+ t.string :email, :null => false, :default => ""
7
+ t.string :encrypted_password, :null => false, :default => ""
8
+
9
+ ## Recoverable
10
+ t.string :reset_password_token
11
+ t.datetime :reset_password_sent_at
12
+
13
+ ## Rememberable
14
+ t.datetime :remember_created_at
15
+
16
+ ## Trackable
17
+ t.integer :sign_in_count, :default => 0
18
+ t.datetime :current_sign_in_at
19
+ t.datetime :last_sign_in_at
20
+ t.string :current_sign_in_ip
21
+ t.string :last_sign_in_ip
22
+
23
+ ## Encryptable
24
+ # t.string :password_salt
25
+
26
+ ## Confirmable
27
+ # t.string :confirmation_token
28
+ # t.datetime :confirmed_at
29
+ # t.datetime :confirmation_sent_at
30
+ # t.string :unconfirmed_email # Only if using reconfirmable
31
+
32
+ ## Lockable
33
+ # t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
34
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
35
+ # t.datetime :locked_at
36
+
37
+ # Token authenticatable
38
+ # t.string :authentication_token
39
+
40
+ ## Invitable
41
+ # t.string :invitation_token
42
+
43
+ t.string :openid_identifier
44
+ t.timestamps
45
+ end
46
+
47
+ add_index :adminsite_admin_users, :email, :unique => true
48
+ add_index :adminsite_admin_users, :reset_password_token, :unique => true
49
+ # add_index :adminsite_admin_users, :confirmation_token, :unique => true
50
+ # add_index :adminsite_admin_users, :unlock_token, :unique => true
51
+ end
52
+
53
+ def self.down
54
+ # drop_table :open_id_authentication_associations
55
+ # drop_table :open_id_authentication_nonces
56
+ # drop_table :sessions
57
+ drop_table :adminsite_admin_users
58
+ end
59
+ end
@@ -0,0 +1,39 @@
1
+ class CreateCmsTables < ActiveRecord::Migration
2
+ def self.up
3
+
4
+ create_table :adminsite_file_assets do |t|
5
+ t.string :attachment_file_name
6
+ t.string :attachment_content_type
7
+ t.integer :attachment_file_size
8
+ t.datetime :attachment_updated_at
9
+ t.timestamps
10
+ end
11
+ add_index :adminsite_file_assets, :attachment_file_name
12
+
13
+
14
+ create_table :adminsite_pages do |t|
15
+ t.string :title
16
+ t.string :url
17
+ t.text :body
18
+ t.boolean :requires_login, :default => false
19
+ t.boolean :cacheable, :default => false
20
+ t.integer :page_layout_id
21
+ t.timestamps
22
+ end
23
+ add_index :adminsite_pages, :page_layout_id
24
+ add_index :adminsite_pages, :url
25
+
26
+
27
+ create_table :adminsite_page_layouts do |t|
28
+ t.string :title
29
+ t.text :body
30
+ t.timestamps
31
+ end
32
+ end
33
+
34
+ def self.down
35
+ drop_table :adminsite_page_layouts
36
+ drop_table :adminsite_pages
37
+ drop_table :adminsite_file_assets
38
+ end
39
+ end
data/lib/adminsite.rb ADDED
@@ -0,0 +1,28 @@
1
+ require "adminsite/engine"
2
+ require 'adminsite/configuration'
3
+
4
+ module Adminsite
5
+ class << self
6
+ def configure
7
+ yield configuration
8
+ end
9
+
10
+ # Accessor for Adminsite::Configuration
11
+ def configuration
12
+ @configuration ||= Configuration.new
13
+ end
14
+ alias :config :configuration
15
+
16
+ def register_routes(rails_router)
17
+ load_controllers if Adminsite::Admin::CrudController.descendants.blank?
18
+ Adminsite::Admin::CrudController.descendants.each{|d| d.register_routes(rails_router) }
19
+ rails_router
20
+ end
21
+
22
+ def load_controllers
23
+ Gem.find_files('../app/controllers/**/admin/**/*_controller.rb').each do |c|
24
+ load(c)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ module Adminsite
3
+ class Configuration
4
+
5
+ attr_accessor :admin_namespace # :admin
6
+
7
+ # Configuration defaults
8
+ def initialize
9
+ @admin_namespace = :admin
10
+ end
11
+
12
+ end
13
+ end
14
+
15
+
@@ -0,0 +1,30 @@
1
+ %w(rails action_controller/page_caching).each{|f| require f }
2
+ %w(paperclip liquid adminsite/liquid/tags/asset).each{|f| require f }
3
+ %w(devise haml formtastic codemirror-rails kaminari ransack).each{|f| require f }
4
+
5
+ module Adminsite
6
+ class Engine < Rails::Engine
7
+ isolate_namespace Adminsite
8
+
9
+ # config.generators.integration_tool :rspec
10
+ # config.generators.test_framework :rspec
11
+
12
+ initializer "adminsite.assets.precompile" do |app|
13
+ app.config.assets.precompile |= %w( adminsite.css adminsite.js )
14
+ end
15
+
16
+ initializer :adminsite do
17
+ Adminsite::Engine.config.action_controller.page_cache_directory = "#{Rails.root.to_s}/public"
18
+
19
+ # Make sure to load adminsite controllers to initalize adminsite resource routing
20
+ load_paths( [ Adminsite::Engine.root, Rails.root].collect{|r| "#{r}/app/controllers/**/adminsite/admin/**/*.*" } )
21
+ end
22
+
23
+ def load_paths(paths)
24
+ paths.each do |path|
25
+ Dir.glob(path).each{|f| require f }
26
+ end
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,70 @@
1
+ class Asset < Liquid::Tag
2
+ def initialize(tag_name, asset_name, tokens)
3
+ super
4
+ @asset_name = asset_name.strip
5
+ end
6
+
7
+ def render(context)
8
+ Adminsite::FileAsset.attachment_url_for(@asset_name)
9
+ end
10
+ end
11
+
12
+ module Adminsite
13
+ class LiquidTag < Liquid::Tag
14
+ protected
15
+
16
+ def controller
17
+ Adminsite::ContentsController
18
+ end
19
+
20
+ def helpers
21
+ @helpers ||= controller.helpers
22
+ end
23
+ end
24
+ end
25
+
26
+ class CsrfMetaTags < Adminsite::LiquidTag
27
+ include ActionView::Helpers::CsrfHelper
28
+ include ActionView::Helpers::FormTagHelper
29
+
30
+ def render(context)
31
+ @environment = context.environments.first
32
+ csrf_meta_tags
33
+ end
34
+
35
+ def protect_against_forgery?
36
+ true
37
+ end
38
+
39
+ def form_authenticity_token
40
+ @environment['authenticity_token']
41
+ end
42
+
43
+ def request_forgery_protection_token
44
+ @environment['authenticity_param']
45
+ end
46
+ end
47
+
48
+ class Adminsite::LiquidNameTag < Adminsite::LiquidTag
49
+ def initialize(tag_name, name, tokens)
50
+ super
51
+ @name = name.strip
52
+ end
53
+ end
54
+
55
+ class JavascriptIncludeTag < Adminsite::LiquidNameTag
56
+ def render(context)
57
+ helpers.javascript_include_tag @name
58
+ end
59
+ end
60
+
61
+ class StylesheetLinkTag < Adminsite::LiquidNameTag
62
+ def render(context)
63
+ helpers.stylesheet_link_tag @name
64
+ end
65
+ end
66
+
67
+ Liquid::Template.register_tag('asset', Asset)
68
+ Liquid::Template.register_tag('javascript_include_tag', JavascriptIncludeTag)
69
+ Liquid::Template.register_tag('stylesheet_link_tag', StylesheetLinkTag)
70
+ Liquid::Template.register_tag('csrf_meta_tags', CsrfMetaTags)
@@ -0,0 +1,3 @@
1
+ module Adminsite
2
+ VERSION = "2.0.0" unless defined?(Adminsite::VERSION)
3
+ end
@@ -0,0 +1,34 @@
1
+ module Adminsite
2
+ module Generators
3
+ class AddDashboardGenerator < Rails::Generators::Base
4
+ source_root File.expand_path("../templates", __FILE__)
5
+
6
+
7
+ def run_generation
8
+
9
+
10
+ @title = "Override Me !!!"
11
+
12
+
13
+ #puts "my first iframe for controller_name'#{@controller_name}' }'"
14
+ template "controllers/admin_dashboard_controller.rb", "app/controllers/adminsite/admin/dashbord_controller.rb"
15
+
16
+ template "views/index.html.haml", "app/views/adminsite/admin/dashboard/index.html.haml"
17
+
18
+ # Content-Menu
19
+ inject_into_file "app/views/adminsite/admin/shared/_admin_menu.html.haml", :after => /\= yield :admin_menu\n/ do\
20
+ # "\n = menu_item 'IFrameMgt', admin_#Dashboard_index_path, ['#{@file_name}']\n"
21
+ "\n = menu_item 'Dashboard', admin_dashboard_index_path "
22
+ end
23
+
24
+
25
+
26
+
27
+ end
28
+
29
+
30
+
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,13 @@
1
+ class Adminsite::Admin::DashboardController < Adminsite::Admin::CrudController
2
+
3
+ def index
4
+
5
+ end
6
+
7
+ private
8
+
9
+ class << self
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,6 @@
1
+ - content_for :header_left do
2
+ Dashboard
3
+
4
+
5
+ Override Me !!!
6
+ please override in '/app/views/adminsite/admin/#{controller_name}/index.html.haml'
@@ -0,0 +1,42 @@
1
+ require 'uri'
2
+ module Adminsite
3
+ module Generators
4
+ class AddIframeGenerator < Rails::Generators::Base
5
+ source_root File.expand_path("../templates", __FILE__)
6
+
7
+ argument :url,
8
+ :type => :string,
9
+ :desc => "The url ex: www.google.com",
10
+ :required => true
11
+
12
+ argument :controller_name,
13
+ :type => :string,
14
+ :desc => "ex : GoogleSearch ",
15
+ :required => false
16
+
17
+
18
+ def run_generation
19
+ require 'domainatrix'
20
+
21
+ url_parsed = Domainatrix.parse(url)
22
+ @url = url_parsed.url
23
+ @domain = url_parsed.domain
24
+ @controller_name = controller_name || "#{@domain}Iframe"
25
+
26
+ @file_name = @controller_name.underscore.gsub('/','_')
27
+ puts "file_name: '#{@file_name}'"
28
+
29
+ raise "Domain missing or not valid" if @domain.blank?
30
+
31
+ puts "my first iframe for domain: '#{@controller_name}' with url: '#{@url}'"
32
+ template "controllers/admin_iframe_controller.rb", "app/controllers/adminsite/admin/#{@file_name}_controller.rb"
33
+
34
+ # Content-Menu
35
+ inject_into_file "app/views/adminsite/admin/shared/_admin_menu.html.haml", :after => /\= yield :admin_menu\n/ do\
36
+ "\n = menu_item 'IFrameMgt', admin_#{@file_name}_index_path, ['#{@file_name}']\n"
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,16 @@
1
+ class Adminsite::Admin::<%= @controller_name.camelize.gsub('::','') %>Controller < Adminsite::Admin::IframeController
2
+
3
+ private
4
+
5
+ class << self
6
+
7
+ def iframe_url
8
+ '<%= @url %>'
9
+ end
10
+
11
+ def iframe_name
12
+ '<%= @controller_name %>'
13
+ end
14
+ end
15
+
16
+ end
File without changes
@@ -0,0 +1,40 @@
1
+ module Adminsite
2
+ module Generators
3
+ class AddResourceGenerator < Rails::Generators::NamedBase
4
+ source_root File.expand_path("../templates", __FILE__)
5
+
6
+ def table_name
7
+ class_name_underscore.pluralize
8
+ end
9
+
10
+ #def file_name
11
+ # super.underscore.gsub('/','_')
12
+ #end
13
+
14
+ def class_name_underscore
15
+ class_name.underscore.gsub('/','_')
16
+ end
17
+
18
+ def run_generation
19
+ puts "Setting up resource #{class_name.camelize} for Adminsite"
20
+ @resource_class = class_name.camelize
21
+
22
+ #puts "file_name: #{file_name}"
23
+ puts "table_name: #{table_name}"
24
+
25
+ # Controllers
26
+ template "controllers/admin_resource_controller.rb", "app/controllers/adminsite/admin/#{table_name}_controller.rb"
27
+
28
+ # Models
29
+ template "admin_configs/resource_admin_config.rb", "app/admin_configs/adminsite/#{class_name_underscore}_admin_config.rb"
30
+
31
+ # Content-Menu
32
+ inject_into_file "app/views/adminsite/admin/shared/_admin_menu.html.haml", :after => /\= yield :admin_menu\n/ do\
33
+ "\n = menu_item '#{class_name.camelize}Mngt', admin_#{table_name}_path, ['#{table_name}']\n"
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,47 @@
1
+ module Adminsite
2
+ class <%= @resource_class.gsub('::','') %>AdminConfig < Adminsite::AdminConfig::Base
3
+
4
+ # def ignore_columns
5
+ # ['created_at', 'updated_at', 'id']
6
+ # end
7
+
8
+ # def column_names
9
+ # @column_names ||= resource_class.column_names
10
+ # end
11
+
12
+ # def attributes_index
13
+ # column_names
14
+ # end
15
+
16
+ # def attributes_edit
17
+ # @attributes_edit ||= (column_names - ignore_columns)
18
+ # end
19
+
20
+ # def attributes_show
21
+ # attributes_edit
22
+ # end
23
+
24
+ # def default_member_actions
25
+ # [ :show,
26
+ # :edit,
27
+ # :destroy]
28
+ # end
29
+
30
+ # def actions_index
31
+ # [ :new ]
32
+ # end
33
+
34
+ # def attributes_search
35
+ # attributes_index
36
+ # end
37
+
38
+ # def label_attribute
39
+ # :title
40
+ # end
41
+
42
+ # def scopes
43
+ # [:all]
44
+ # end
45
+
46
+ end
47
+ end