tkh_admin_panel 0.1.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
 
4
4
 
5
+ ## 0.2
6
+
7
+ * Added german locale and translations. Upgrader need to run the update task and run migrations
8
+ * Added a site settings scaffold to be used throughout the whole app
9
+ * Improved style of forms
10
+
11
+
5
12
  ## 0.1.1
6
13
 
7
14
  * Cleaned up CSS file
data/README.md CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
  This is a Rails engine with an admin panel layout, assets and basic functionality. Powered by Twitter Bootstrap + SASS for a modern responsive design.
4
4
 
5
- Primarily developed for Ten Thousand Hours but we are happy to share if anybody finds it useful.
6
-
7
- It's primarily developed to work in sync with the tkh_cms gem suite but over time more and more effort will be made to make it work in isolation.
5
+ Primarily developed for Ten Thousand Hours but we are happy to share if anybody finds it useful. It's primarily developed to work in sync with the tkh_cms gem suite but over time more and more effort will be made to make it work in isolation.
8
6
 
9
7
  Please note that this gem is still in its infancy. I'm just getting started.
10
8
 
@@ -21,6 +19,10 @@ And then execute:
21
19
  Install the admin_sidebar partial
22
20
 
23
21
  $ rake tkh_admin_panel:setup
22
+
23
+ Run the migrations
24
+
25
+ $ rake db:migrate
24
26
 
25
27
  Start or restart your server!
26
28
 
@@ -36,6 +38,10 @@ Update the gem:
36
38
  Update locale files.
37
39
 
38
40
  $ rake tkh_admin_panel:update
41
+
42
+ Run new migrations if any
43
+
44
+ $ rake db:migrate
39
45
 
40
46
  Start or restart your server!
41
47
 
@@ -12,4 +12,13 @@ input, textarea {
12
12
  .login-info {
13
13
  margin: 1em;
14
14
  text-align: left;
15
+ }
16
+
17
+ form {
18
+ margin: 2em .5em;
19
+ }
20
+
21
+ .form-horizontal .help-block {
22
+ color: #999;
23
+ margin-top: 1px;
15
24
  }
@@ -0,0 +1,24 @@
1
+ class SettingsController < ApplicationController
2
+
3
+ before_filter :authenticate
4
+ before_filter :authenticate_with_admin
5
+
6
+ def show
7
+ @setting = Setting.first
8
+ switch_to_admin_layout
9
+ end
10
+
11
+ def edit
12
+ @setting = Setting.first
13
+ switch_to_admin_layout
14
+ end
15
+
16
+ def update
17
+ @setting = Setting.first
18
+ if @setting.update_attributes(params[:setting])
19
+ redirect_to @setting, notice: 'Settings were successfully updated.'
20
+ else
21
+ render action: "edit", layout: 'admin'
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,12 @@
1
+ # this is needed for now to make mass assignment security compatible with the translation of globalize3
2
+ Globalize::ActiveRecord::Translation.class_eval do
3
+ attr_accessible :locale
4
+ end
5
+
6
+ class Setting < ActiveRecord::Base
7
+
8
+ attr_accessible :site_name, :site_tagline, :blog_name, :blog_tagline, :disable_blog, :enable_comments_in_pages, :enable_comments_in_blog
9
+
10
+ translates :site_name, :site_tagline, :blog_name, :blog_tagline
11
+
12
+ end
@@ -4,7 +4,9 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>
7
- <% if defined?(APP_SETTINGS) && APP_SETTINGS['site_name'] %>
7
+ <% if defined?(Setting) && !Setting.first.site_name.blank? %>
8
+ <%= t("admin_panel_for") + ' ' + Setting.first.site_name %>
9
+ <% elsif defined?(APP_SETTINGS) && APP_SETTINGS['site_name'] %>
8
10
  <%= t("admin_panel_for") + ' ' + APP_SETTINGS['site_name'] %>
9
11
  <% else %>
10
12
  <%= t 'admin_panel' %>
@@ -31,8 +33,10 @@
31
33
  <div class="span12">
32
34
  <%= render 'shared/login_info' %>
33
35
  <h1>
34
- <% if defined?(APP_SETTINGS) && APP_SETTINGS['site_name'] %>
35
- <%= (t("admin_panel_for") + ' ' + link_to(APP_SETTINGS['site_name'], root_path)).html_safe %>
36
+ <% if defined?(Setting) && !Setting.first.site_name.blank? %>
37
+ <%= (t("admin_panel_for") + ' ' + link_to(Setting.first.site_name, root_path)).html_safe %>
38
+ <% elsif defined?(APP_SETTINGS) && APP_SETTINGS['site_name'] %>
39
+ <%= t("admin_panel_for") + ' ' + APP_SETTINGS['site_name'] %>
36
40
  <% else %>
37
41
  <%= t 'admin_panel' %>
38
42
  <% end %>
@@ -0,0 +1,22 @@
1
+ <h1>Edit Settings</h1>
2
+
3
+ <%= simple_form_for @setting, :html => { class: 'form-horizontal' } do |f| %>
4
+ <%= f.error_notification %>
5
+
6
+ <div class="form-inputs">
7
+ <%= f.input :site_name %><br />
8
+ <%= f.input :site_tagline, hint: 'a small descriptive sentence' %><br />
9
+ <%= f.input :enable_comments_in_pages, as: :boolean, inline_label: true, label: false %><br />
10
+ <%= f.input :disable_blog, as: :boolean, inline_label: true, label: false, hint: 'should be checked if you do NOT want a blog' %><br />
11
+ <%= f.input :blog_name %><br />
12
+ <%= f.input :blog_tagline, hint: 'a small descriptive sentence' %><br />
13
+ <%= f.input :enable_comments_in_blog, as: :boolean, inline_label: true, label: false %>
14
+ </div>
15
+
16
+ <div class="form-actions">
17
+ <%= f.button :submit, :class => 'btn btn-primary' %>
18
+ </div>
19
+
20
+ <% end %>
21
+
22
+ <%= render 'shared/admin_sidebar' %>
@@ -0,0 +1,15 @@
1
+ <h1>Settings</h1>
2
+
3
+ <p>
4
+ <strong>Site name:</strong> <%= @setting.site_name %><br />
5
+ <strong>Site tagline:</strong> <%= @setting.site_tagline %><br />
6
+ <strong>Enable comments in pages?:</strong> <%= @setting.enable_comments_in_pages? ? "<span class=\"label label-success\">✓</span>".html_safe : "<span class=\"label label-important\">X</span>".html_safe %><br />
7
+ <strong>Blog enabled?:</strong> <%= @setting.disable_blog? ? "<span class=\"label label-important\">X</span>".html_safe : "<span class=\"label label-success\">✓</span>".html_safe %><br />
8
+ <strong>Blog name:</strong> <%= @setting.blog_name %><br />
9
+ <strong>Site name:</strong> <%= @setting.blog_tagline %><br />
10
+ <strong>Enable comments in blog?:</strong> <%= @setting.enable_comments_in_blog? ? "<span class=\"label label-success\">✓</span>".html_safe : "<span class=\"label label-important\">X</span>".html_safe %>
11
+ </p>
12
+
13
+ <%= link_to t('edit'), edit_setting_path(@setting), class: 'btn btn-primary' %>
14
+
15
+ <%= render 'shared/admin_sidebar' %>
@@ -1,7 +1,8 @@
1
1
  <% content_for :admin_sidebar do %>
2
2
  <h2>Sections</h2>
3
3
  <ul>
4
- <li>links go here</li>
4
+ <li><%= link_to 'site settings', setting_path(1) %></li>
5
+ <li>other links go here</li>
5
6
  </ul>
6
7
 
7
8
  <p>To override this, run "rake tkh_admin_panel:setup" and customize the new partial to your liking.</p>
@@ -1,7 +1,8 @@
1
1
  <% def full_language_name( lang = :en) %>
2
2
  <% list = { :en => 'English',
3
3
  :fr => 'Français',
4
- :es => 'Español'
4
+ :es => 'Español',
5
+ :de => 'Deutch'
5
6
  }
6
7
  %>
7
8
  <% list[lang] %>
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do
2
+ scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do
3
+ resources :settings
4
+ end
5
+ end
@@ -1,6 +1,7 @@
1
1
  <% content_for :admin_sidebar do %>
2
2
  <h2>Sections</h2>
3
3
  <ul>
4
+ <li><%= link_to 'site settings', setting_path(1) %></li>
4
5
  <li><%= link_to 'scaffold name', 'path' %></li>
5
6
  <li>for example ...</li>
6
7
  <li><%= link_to 'pages', pages_path %></li>
@@ -0,0 +1,3 @@
1
+ de:
2
+ admin_panel: 'Administrator-Schaltfläche'
3
+ admin_panel_for: "Administrator-Schaltfläche für"
@@ -0,0 +1,25 @@
1
+ require 'rails/generators/migration'
2
+
3
+ module TkhAdminPanel
4
+ module Generators
5
+ class CreateOrUpdateMigrationsGenerator < ::Rails::Generators::Base
6
+ include Rails::Generators::Migration
7
+ source_root File.expand_path('../templates', __FILE__)
8
+ desc "create or update setting migrations"
9
+ def self.next_migration_number(path)
10
+ unless @prev_migration_nr
11
+ @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
12
+ else
13
+ @prev_migration_nr += 1
14
+ end
15
+ @prev_migration_nr.to_s
16
+ end
17
+
18
+ def copy_migrations
19
+ puts 'creating or updating setting migrations'
20
+ migration_template "create_settings.rb", "db/migrate/create_settings.rb"
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ class CreateSettings < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :settings do |t|
5
+ t.string :site_name
6
+ t.string :site_tagline
7
+ t.boolean :enable_comments_in_pages, default: false
8
+ t.boolean :disable_blog, default: false
9
+ t.string :blog_name
10
+ t.string :blog_tagline
11
+ t.boolean :enable_comments_in_blog, default: true
12
+ t.timestamps
13
+ end
14
+ Setting.create_translation_table! :site_name => :string, :site_tagline => :string, :blog_name => :string, :blog_tagline => :string
15
+ # normally it's not a good idea to populate a table in the migration but I think this is an exception
16
+ Setting.create([
17
+ { site_name: 'Name of the web site',
18
+ site_tagline: 'A short descriptive sentence',
19
+ enable_comments_in_pages: false,
20
+ disable_blog: false,
21
+ blog_name: 'Name of the blog',
22
+ blog_tagline: "A short descriptive sentence",
23
+ enable_comments_in_blog: true
24
+ }
25
+ ])
26
+ end
27
+
28
+ def self.down
29
+ drop_table :settings
30
+ Setting.drop_translation_table!
31
+ end
32
+ end
@@ -4,11 +4,13 @@ namespace :tkh_admin_panel do
4
4
  task :setup do
5
5
  system 'rails g tkh_admin_panel:copy_files -f'
6
6
  system 'rails g tkh_admin_panel:create_or_update_locales -f'
7
+ system 'rails g tkh_admin_panel:create_or_update_migrations'
7
8
  end
8
9
 
9
10
  desc "Update locale and other files"
10
11
  task :update do
11
12
  system 'rails g tkh_admin_panel:copy_files -s'
12
13
  system 'rails g tkh_admin_panel:create_or_update_locales -f'
14
+ system 'rails g tkh_admin_panel:create_or_update_migrations -s'
13
15
  end
14
16
  end
@@ -1,3 +1,3 @@
1
1
  module TkhAdminPanel
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tkh_admin_panel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: '0.2'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-04 00:00:00.000000000 Z
12
+ date: 2012-09-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -77,15 +77,23 @@ files:
77
77
  - app/assets/javascripts/custom.js.coffee
78
78
  - app/assets/stylesheets/admin.css.scss
79
79
  - app/assets/stylesheets/bootstrap_and_overrides.css.scss
80
+ - app/controllers/settings_controller.rb
81
+ - app/models/setting.rb
80
82
  - app/views/layouts/admin.html.erb
83
+ - app/views/settings/edit.html.erb
84
+ - app/views/settings/show.html.erb
81
85
  - app/views/shared/_admin_sidebar.html.erb
82
86
  - app/views/shared/_language_switcher.html.erb
87
+ - config/routes.rb
83
88
  - lib/generators/tkh_admin_panel/copy_files/copy_files_generator.rb
84
89
  - lib/generators/tkh_admin_panel/copy_files/templates/_admin_sidebar.html.erb
85
90
  - lib/generators/tkh_admin_panel/create_or_update_locales/create_or_update_locales_generator.rb
91
+ - lib/generators/tkh_admin_panel/create_or_update_locales/templates/de.yml
86
92
  - lib/generators/tkh_admin_panel/create_or_update_locales/templates/en.yml
87
93
  - lib/generators/tkh_admin_panel/create_or_update_locales/templates/es.yml
88
94
  - lib/generators/tkh_admin_panel/create_or_update_locales/templates/fr.yml
95
+ - lib/generators/tkh_admin_panel/create_or_update_migrations/create_or_update_migrations_generator.rb
96
+ - lib/generators/tkh_admin_panel/create_or_update_migrations/templates/create_settings.rb
89
97
  - lib/tasks/tkh_admin_panel_tasks.rake
90
98
  - lib/tkh_admin_panel.rb
91
99
  - lib/tkh_admin_panel/tkh_admin_panel_action_controller_extension.rb