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.
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