character 0.1.0 → 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.
Files changed (173) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -1
  3. data/.rspec +1 -0
  4. data/README.md +185 -14
  5. data/Rakefile +8 -1
  6. data/app/assets/images/character/logo.jpg +0 -0
  7. data/app/assets/javascripts/character.coffee +134 -0
  8. data/app/assets/javascripts/character/dashboard/_visitors.coffee +27 -0
  9. data/app/assets/javascripts/character/dashboard/layout.coffee +156 -0
  10. data/app/assets/javascripts/character/dashboard/module.coffee +51 -0
  11. data/app/assets/javascripts/character/generic/details.coffee +233 -0
  12. data/app/assets/javascripts/character/generic/helpers/compact_object.coffee +7 -0
  13. data/app/assets/javascripts/character/generic/helpers/data_inputs.coffee +21 -0
  14. data/app/assets/javascripts/character/generic/helpers/date_select.coffee +45 -0
  15. data/app/assets/javascripts/character/generic/helpers/editor.coffee +11 -0
  16. data/app/assets/javascripts/character/generic/helpers/redactor.coffee +38 -0
  17. data/app/assets/javascripts/character/generic/helpers/reorder.coffee +36 -0
  18. data/app/assets/javascripts/character/generic/layout.coffee +40 -0
  19. data/app/assets/javascripts/character/generic/list.coffee +214 -0
  20. data/app/assets/javascripts/character/generic/model.coffee +135 -0
  21. data/app/assets/javascripts/character/generic/module.coffee +157 -0
  22. data/app/assets/javascripts/character/images/module.coffee +148 -0
  23. data/app/assets/javascripts/character/pages/module.coffee +43 -0
  24. data/app/assets/javascripts/character/posts/module.coffee +113 -0
  25. data/app/assets/javascripts/character/settings/_admins.coffee +61 -0
  26. data/app/assets/javascripts/character/settings/_authors.coffee +56 -0
  27. data/app/assets/javascripts/character/settings/_categories.coffee +61 -0
  28. data/app/assets/javascripts/character/settings/_layout.coffee +7 -0
  29. data/app/assets/javascripts/character/settings/_redirects.coffee +56 -0
  30. data/app/assets/javascripts/character/settings/_website.coffee +7 -0
  31. data/app/assets/javascripts/character/settings/details.coffee +16 -0
  32. data/app/assets/javascripts/character/settings/layout.coffee +46 -0
  33. data/app/assets/javascripts/character/settings/module.coffee +78 -0
  34. data/app/assets/stylesheets/character.scss +37 -0
  35. data/app/assets/stylesheets/character/_admins.scss +30 -0
  36. data/app/assets/stylesheets/character/_authors.scss +30 -0
  37. data/app/assets/stylesheets/character/_categories.scss +32 -0
  38. data/app/assets/stylesheets/character/_dashboard.scss +143 -0
  39. data/app/assets/stylesheets/character/_posts.scss +93 -0
  40. data/app/assets/stylesheets/character/_redirects.scss +35 -0
  41. data/app/assets/stylesheets/character/base.scss +967 -0
  42. data/app/assets/stylesheets/character/typography.scss +29 -0
  43. data/app/controllers/character/api_controller.rb +170 -0
  44. data/app/controllers/character/application_controller.rb +37 -0
  45. data/app/controllers/character/settings_controller.rb +72 -0
  46. data/app/controllers/concerns/character/auth_concern.rb +41 -0
  47. data/app/controllers/concerns/character/instance_concern.rb +31 -0
  48. data/app/controllers/concerns/character/json_object_concern.rb +32 -0
  49. data/app/controllers/concerns/character/model_class_concern.rb +28 -0
  50. data/app/controllers/concerns/character/params_concern.rb +33 -0
  51. data/app/controllers/concerns/character/templates_concern.rb +32 -0
  52. data/app/controllers/concerns/not_found.rb +18 -0
  53. data/app/controllers/concerns/website_settings.rb +18 -0
  54. data/app/controllers/pages_controller.rb +8 -0
  55. data/app/controllers/posts_controller.rb +43 -0
  56. data/app/helpers/character_helper.rb +8 -0
  57. data/app/helpers/page_helper.rb +67 -0
  58. data/app/inputs/foundation_string_input.rb +44 -0
  59. data/app/inputs/foundation_switch_input.rb +35 -0
  60. data/app/models/character/image.rb +12 -0
  61. data/app/models/character/page.rb +21 -0
  62. data/app/models/character/post.rb +32 -12
  63. data/app/models/character/post_author.rb +22 -0
  64. data/app/models/character/post_category.rb +21 -0
  65. data/app/models/character/redirect.rb +15 -0
  66. data/app/models/character/settings/variable.rb +23 -0
  67. data/app/models/character/sitemap/sitemap_generator_helper.rb +15 -0
  68. data/app/models/character/user.rb +29 -0
  69. data/app/models/concerns/created_ago.rb +12 -0
  70. data/app/models/concerns/hideable.rb +27 -0
  71. data/app/models/concerns/orderable.rb +8 -0
  72. data/app/models/concerns/report.rb +11 -0
  73. data/app/models/concerns/report_daily.rb +32 -0
  74. data/app/models/concerns/report_monthly.rb +18 -0
  75. data/app/models/concerns/report_weekly.rb +19 -0
  76. data/app/models/concerns/updated_ago.rb +12 -0
  77. data/app/models/reports/analytics_daily.rb +26 -0
  78. data/app/models/reports/analytics_monthly.rb +16 -0
  79. data/app/models/reports/analytics_weekly.rb +16 -0
  80. data/app/services/google_analytics.rb +43 -0
  81. data/app/uploaders/character/image_uploader.rb +22 -0
  82. data/app/uploaders/character/settings/file_uploader.rb +5 -0
  83. data/app/views/character/character.html.erb +67 -0
  84. data/app/views/character/generic/form.html.erb +8 -0
  85. data/app/views/character/pages/form.html.erb +28 -0
  86. data/app/views/character/posts/form.html.erb +38 -0
  87. data/app/views/character/settings/admins.html.erb +29 -0
  88. data/app/views/character/settings/post_authors.html.erb +28 -0
  89. data/app/views/character/settings/post_categories.html.erb +31 -0
  90. data/app/views/character/settings/redirects.html.erb +30 -0
  91. data/app/views/character/settings/settings_group.html.erb +67 -0
  92. data/app/views/errors/not_found.html.erb +157 -0
  93. data/app/views/pages/_default.html.erb +3 -0
  94. data/app/views/pages/_redactor.html.erb +3 -0
  95. data/app/views/pages/show.html.erb +5 -0
  96. data/app/views/posts/_post.html.erb +17 -0
  97. data/app/views/posts/author.html.erb +18 -0
  98. data/app/views/posts/category.html.erb +18 -0
  99. data/app/views/posts/index.html.erb +18 -0
  100. data/app/views/posts/rss.builder +19 -0
  101. data/app/views/posts/show.html.erb +14 -0
  102. data/app/views/shared/_google_analytics.html.erb +13 -0
  103. data/character.gemspec +48 -5
  104. data/doc/README_old.md +161 -0
  105. data/doc/generic_app.md +19 -0
  106. data/doc/img/demo-1.jpg +0 -0
  107. data/doc/img/demo-2.jpg +0 -0
  108. data/doc/img/demo-3.jpg +0 -0
  109. data/doc/img/demo-4.jpg +0 -0
  110. data/doc/img/demo-5.jpg +0 -0
  111. data/doc/instances.md +39 -0
  112. data/doc/settings.md +1 -0
  113. data/lib/character.rb +29 -1
  114. data/lib/character/engine.rb +33 -1
  115. data/lib/character/generators/bootstrap_generator.rb +51 -0
  116. data/lib/character/instance.rb +59 -0
  117. data/lib/character/routing.rb +42 -5
  118. data/lib/character/settings.rb +101 -0
  119. data/lib/character/templates/admin.coffee +15 -0
  120. data/lib/character/templates/admin.scss +3 -0
  121. data/lib/character/templates/application.html.erb +44 -0
  122. data/lib/character/templates/application.scss +12 -0
  123. data/lib/character/templates/assets.rb +1 -0
  124. data/lib/character/templates/initializer.rb +5 -0
  125. data/lib/character/templates/settings.scss +11 -0
  126. data/lib/character/templates/settings.yml +67 -0
  127. data/lib/character/templates/typography.scss +13 -0
  128. data/lib/character/version.rb +2 -2
  129. data/lib/mongoid/carrierwave_serialization_patch.rb +9 -0
  130. data/lib/tasks/analytics.rake +52 -0
  131. data/test/config/application.rb +65 -0
  132. data/test/config/mongoid.yml +12 -0
  133. data/test/config/secrets.yml +22 -0
  134. data/test/controllers/character/api_controller_test.rb +94 -0
  135. data/test/factories/product_factory.rb +5 -0
  136. data/test/lib/character/engine_test.rb +33 -0
  137. data/test/lib/character/routing_test.rb +31 -0
  138. data/test/test_helper.rb +48 -0
  139. data/vendor/assets/javascripts/backbone.js +944 -794
  140. data/vendor/assets/javascripts/jquery.fileupload.js +1426 -0
  141. data/vendor/assets/javascripts/jquery.form.js +1278 -0
  142. data/vendor/assets/javascripts/jquery.iframe-transport.js +214 -0
  143. data/vendor/assets/javascripts/raphael.js +8117 -0
  144. data/vendor/assets/javascripts/raphael.morris.js +1885 -0
  145. data/vendor/assets/javascripts/underscore.inflection.js +177 -0
  146. data/vendor/assets/javascripts/underscore.string.js +1 -1
  147. data/vendor/assets/stylesheets/csspinner.css +361 -0
  148. data/vendor/assets/stylesheets/normalize.css +423 -0
  149. metadata +499 -49
  150. data/app/controllers/character/posts_controller.rb +0 -27
  151. data/lib/generators/character/install_generator.rb +0 -42
  152. data/lib/generators/character/templates/README +0 -1
  153. data/lib/generators/character/templates/admin/character.rb +0 -3
  154. data/vendor/assets/fonts/general_foundicons.eot +0 -0
  155. data/vendor/assets/fonts/general_foundicons.svg +0 -15
  156. data/vendor/assets/fonts/general_foundicons.ttf +0 -0
  157. data/vendor/assets/fonts/general_foundicons.woff +0 -0
  158. data/vendor/assets/javascripts/character/index.js.coffee +0 -53
  159. data/vendor/assets/javascripts/character/models/post.js.coffee +0 -39
  160. data/vendor/assets/javascripts/character/views/app.js.coffee +0 -81
  161. data/vendor/assets/javascripts/character/views/editor.js.coffee +0 -231
  162. data/vendor/assets/javascripts/character/views/editor_settings.js.coffee +0 -44
  163. data/vendor/assets/javascripts/character/views/index.js.coffee +0 -116
  164. data/vendor/assets/javascripts/character/views/preview.js.coffee +0 -49
  165. data/vendor/assets/javascripts/jquery.smartresize.js +0 -30
  166. data/vendor/assets/javascripts/lodash.js +0 -4258
  167. data/vendor/assets/javascripts/showdown.js +0 -62
  168. data/vendor/assets/stylesheets/character/_base.css.scss +0 -84
  169. data/vendor/assets/stylesheets/character/_icons.css.scss.erb +0 -96
  170. data/vendor/assets/stylesheets/character/_view_editor.css.scss +0 -115
  171. data/vendor/assets/stylesheets/character/_view_index.css.scss +0 -73
  172. data/vendor/assets/stylesheets/character/_view_preview.css.scss +0 -49
  173. data/vendor/assets/stylesheets/character/index.css.scss +0 -32
@@ -0,0 +1,51 @@
1
+ require 'rails/generators'
2
+
3
+ module Character
4
+ module Generators
5
+ class BootstrapGenerator < ::Rails::Generators::Base
6
+ desc "Setup posts, pages and admin."
7
+ source_root File.expand_path("../../templates", __FILE__)
8
+
9
+ def override_layout
10
+ copy_file 'application.html.erb', 'app/views/layouts/application.html.erb'
11
+ end
12
+
13
+ def copy_initializer_file
14
+ copy_file "initializer.rb", "config/initializers/character.rb"
15
+ end
16
+
17
+ def copy_settings_file
18
+ copy_file "settings.yml", "config/settings.yml"
19
+ end
20
+
21
+ def setup_assets
22
+ copy_file "admin.coffee", "app/assets/javascripts/admin.coffee"
23
+ copy_file "admin.scss", "app/assets/stylesheets/admin.scss"
24
+ copy_file "assets.rb", "config/initializers/assets.rb"
25
+ copy_file "application.scss", "app/assets/stylesheets/application.scss"
26
+
27
+ # TODO: remove application.css file
28
+ # TODO: create application folder
29
+
30
+ copy_file "typography.scss", "app/assets/stylesheets/application/typography.scss"
31
+ copy_file "settings.scss", "app/assets/stylesheets/application/settings.scss"
32
+ end
33
+
34
+ def add_routes
35
+ inject_into_file "config/routes.rb", before: " # The priority is based upon order of creation: first created -> highest priority.\n" do <<-'RUBY'
36
+ mount_character_instance 'admin'
37
+ mount_posts_at '/'
38
+ mount_pages_at '/'
39
+ RUBY
40
+ end
41
+ end
42
+
43
+ def remove_assets_require_tree
44
+ gsub_file 'app/assets/javascripts/application.js', "//= require_tree .\n", ''
45
+
46
+ # TODO: this file should be removed
47
+ # gsub_file 'app/assets/stylesheets/application.css', " *= require_tree .\n", ''
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,59 @@
1
+ module Character
2
+ class Instance
3
+ DEFAULT_NAME = 'admin'
4
+
5
+ attr_accessor :name,
6
+ :title,
7
+ :user_model,
8
+
9
+ :before_index,
10
+ :before_save,
11
+
12
+ :javascript_filename,
13
+ :stylesheet_filename,
14
+
15
+ :development_auto_login,
16
+ :force_ssl,
17
+
18
+ # defined in config/settings.yml
19
+ :settings,
20
+ :logo,
21
+ :login_background
22
+
23
+ def initialize(name = Instance::DEFAULT_NAME)
24
+ @name = name.gsub(' ', '-').downcase
25
+ @title = 'Character'
26
+ @user_model = 'Character::User'
27
+ @development_auto_login = false
28
+ @force_ssl = true
29
+ end
30
+
31
+ def title
32
+ @title || @name.humanize
33
+ end
34
+
35
+ def javascript_filename
36
+ @javascript_filename || @name
37
+ end
38
+
39
+ def stylesheet_filename
40
+ @stylesheet_filename || @name
41
+ end
42
+
43
+ def user_class
44
+ @user_class ||= @user_model.constantize
45
+ end
46
+
47
+ def settings
48
+ @settings ||= ::Settings.group(@name.capitalize)
49
+ end
50
+
51
+ def logo
52
+ @logo ||= settings['Logo'].value
53
+ end
54
+
55
+ def login_background
56
+ @login_background ||= settings['Login Background'].value
57
+ end
58
+ end
59
+ end
@@ -1,10 +1,47 @@
1
1
  module ActionDispatch::Routing
2
2
  class Mapper
3
- def mount_character
4
- scope '/admin', :module => "Character" do
5
- scope 'character' do
6
- resources :posts, only: [:index, :create, :update, :destroy]
7
- end
3
+ def mount_character_instance(name='admin')
4
+ scope "/#{ name }", :module => "character" do
5
+ get '/', to: 'application#index'
6
+ match '/login', to: 'application#login', via: [ :post, :get ]
7
+ match '/logout', to: 'application#logout', via: [ :post, :get ]
8
+
9
+ # settings api
10
+ get '/settings/:template_name(.:format)', to: 'settings#show'
11
+ post '/settings/:template_name(.:format)', to: 'settings#update'
12
+
13
+ # generic api
14
+ get '/:model_slug(.:format)', to: 'api#index'
15
+ get '/:model_slug/new(.:format)', to: 'api#new'
16
+ get '/:model_slug/:id(.:format)', to: 'api#show'
17
+ get '/:model_slug/:id/edit(.:format)', to: 'api#edit'
18
+ match '/:model_slug(.:format)', to: 'api#create', via: [ :post, :put, :patch ]
19
+ post '/:model_slug/:id(.:format)', to: 'api#update'
20
+
21
+ # workaround for test environment, "patch" not working
22
+ # Maxim
23
+ patch '/:model_slug/:id(.:format)', to: 'api#patch'
24
+ # Alex: I guess we need patch here
25
+ #put '/:model_slug/:id(.:format)', to: 'api#patch'
26
+
27
+
28
+ delete '/:model_slug/:id(.:format)', to: 'api#destroy'
29
+ end
30
+ end
31
+
32
+ def mount_posts_at(mount_location)
33
+ scope mount_location do
34
+ get '/' => 'posts#index', as: :posts_index
35
+ get '/a/:slug' => 'posts#author', as: :posts_author
36
+ get '/c/:slug' => 'posts#category', as: :posts_category
37
+ get '/p/:slug' => 'posts#show', as: :posts_show
38
+ get '/rss(.:format)' => 'posts#rss', as: :posts_rss
39
+ end
40
+ end
41
+
42
+ def mount_pages_at(mount_location)
43
+ scope mount_location do
44
+ get '/:path' => 'pages#show', as: :pages_show, :constraints => {:path => /.*/}
8
45
  end
9
46
  end
10
47
  end
@@ -0,0 +1,101 @@
1
+ module Settings
2
+ # TODO: this module should be refactored
3
+ # - now we ping db to get every single value
4
+ # - need to cache all values in one request, so ping db once per request
5
+
6
+ mattr_accessor :settings_file
7
+ @@settings_file = "config/settings.yml"
8
+
9
+ def self.value(key)
10
+ group_name, value_name = key.split('::')
11
+ if groups.has_key? group_name and groups[group_name].has_key? value_name
12
+ groups[group_name][value_name].value
13
+ else
14
+ ''
15
+ end
16
+ end
17
+
18
+ def self.group(group_name)
19
+ groups[group_name]
20
+ end
21
+
22
+ def self.groups
23
+ unless @groups
24
+ @groups = {}
25
+ settings_from_yml.keys.each do |group_name|
26
+ @groups[group_name] = settings_from_yml[group_name].map do |name, attrs|
27
+ [ name, Variable.new(group_name, name, attrs) ]
28
+ end.to_h
29
+ end
30
+ end
31
+ @groups
32
+ end
33
+
34
+ def self.settings_from_yml
35
+ unless @settings_from_yml
36
+ settings_file = ::Rails.root.join(@@settings_file)
37
+ @settings_from_yml = {}
38
+
39
+ if File.exists?(settings_file)
40
+ data = YAML::load(ERB.new(IO.read(settings_file)).result)
41
+ @settings_from_yml = data if data
42
+ end
43
+ end
44
+ @settings_from_yml
45
+ end
46
+
47
+ def self.stored_variables
48
+ @stored_variables ||= Character::Settings::Variable.all
49
+ Character::Settings::Variable.all
50
+ end
51
+
52
+ class Variable
53
+ attr_accessor :group,
54
+ :name,
55
+ :type,
56
+ :description,
57
+ :default_value
58
+
59
+ def initialize(group, name, attrs)
60
+ @group = group
61
+ @name = name
62
+ @type = attrs['type'] || 'string'
63
+ @description = attrs['description'] || ''
64
+ @default_value = attrs['default_value'] || ''
65
+ end
66
+
67
+ def stored_object
68
+ Character::Settings::Variable.find_or_create_by(name: @name, group: @group)
69
+ end
70
+
71
+ def value
72
+ object = stored_object
73
+ value = object.value || @default_value
74
+
75
+ if @type == 'file'
76
+ if object.has_file_uploaded?
77
+ # return uploaded file
78
+ return object.file.to_s
79
+ elsif value.include? '//'
80
+ # return direct link to file
81
+ return value
82
+ elsif value.empty?
83
+ # return empty string
84
+ return value
85
+ else
86
+ # return rails asset
87
+ return ActionController::Base.helpers.asset_path(value)
88
+ end
89
+
90
+ elsif @type == 'integer'
91
+ return value.to_i
92
+
93
+ elsif @type == 'float'
94
+ return value.to_f
95
+
96
+ else # string
97
+ return value
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,15 @@
1
+ #= require character
2
+
3
+ # Modules =================================================
4
+
5
+ chr.dashboardModule()
6
+ chr.postsModule()
7
+ chr.pagesModule()
8
+
9
+ # Settings Modules ========================================
10
+
11
+ chr.settingsWebsite()
12
+ chr.settingsLayout()
13
+ chr.settingsRedirects()
14
+ chr.settingsPostCategories()
15
+ chr.settingsAdmins()
@@ -0,0 +1,3 @@
1
+ @import "character";
2
+
3
+ .post, .page { @import "application/typography"; letter-spacing: 0; }
@@ -0,0 +1,44 @@
1
+ <!doctype html>
2
+ <html class="no-js">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+
7
+ <%= display_meta_tags title: @title,
8
+ description: @description,
9
+ canonical: "http://#{ @domain }",
10
+ open_graph: { type: 'website',
11
+ title: @title,
12
+ description: @description,
13
+ url: "http://#{ @domain }" } %>
14
+
15
+ <link rel="alternate" type="application/rss+xml" title="RSS" href="http://<%= @domain %><%= posts_rss_path %>" />
16
+
17
+ <%= stylesheet_link_tag "application" %>
18
+ <%= javascript_include_tag :modernizr %>
19
+ <%= csrf_meta_tags %>
20
+ </head>
21
+
22
+ <body>
23
+ <!--[if lt IE 8]>
24
+ <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
25
+ <![endif]-->
26
+
27
+ <header class='header'>
28
+ <div class='container'>
29
+ <%= @header_html.html_safe %>
30
+ </div>
31
+ </header>
32
+
33
+ <%= yield %>
34
+
35
+ <footer class='footer'>
36
+ <div class='container'>
37
+ <%= @footer_html.html_safe %>
38
+ </div>
39
+ </footer>
40
+
41
+ <%= javascript_include_tag "application" %>
42
+ <%= render partial: 'shared/google_analytics' %>
43
+ </body>
44
+ </html>
@@ -0,0 +1,12 @@
1
+ //= require normalize
2
+
3
+ // http://www.paulirish.com/2012/box-sizing-border-box-ftw/
4
+ // apply a natural box layout model to all elements
5
+ *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
6
+
7
+ @import "application/settings";
8
+
9
+ html { // Make everything look a little nicer in webkit
10
+ -webkit-font-smoothing: antialiased;
11
+ @import "application/typography";
12
+ }
@@ -0,0 +1 @@
1
+ Rails.application.config.assets.precompile += %w( admin.css admin.js )
@@ -0,0 +1,5 @@
1
+ Character.configure do |config|
2
+ config.title = 'Website Admin'
3
+ # config.force_ssl = false
4
+ # config.development_auto_login = true
5
+ end
@@ -0,0 +1,11 @@
1
+
2
+ $baseColor: rgba(0,0,0,0.8);
3
+ $linkColor: #222;
4
+ $baseFontFamily: 'Georgia', serif;
5
+ $headerFontFamily: 'Myriad Pro', sans-serif;
6
+ $codeFontFamily: 'Monaco', monospace;
7
+ $baseFontSize: 20;
8
+ $baseLineHeight: 1.5;
9
+ $h1: 0.33 * 7.3;
10
+ $h2: 0.33 * 4.3;
11
+ $h3: 0.33 * 3.3;
@@ -0,0 +1,67 @@
1
+ # ================================================================================
2
+ # character_settings.yml ---configuration file v1.0---
3
+ # ================================================================================
4
+ # This file is used to store a list of character settings. Settings are split into
5
+ # groups like this:
6
+ #
7
+ # Group Name:
8
+ # Variable Title:
9
+ # type: string (default) / text / file / link
10
+ # description: setting one sentence description
11
+ # default_value: default value is used when setting value is blank
12
+ #
13
+ # PS: Link value format: (link title) http://link.url
14
+ # --------------------------------------------------------------------------------
15
+
16
+ # Default Settings
17
+
18
+ Admin:
19
+ Logo:
20
+ type: file
21
+ description: 'Company logo'
22
+ default_value: 'character/logo.jpg'
23
+
24
+ Login Background:
25
+ type: file
26
+ description: 'Background for login page'
27
+ default_value: ''
28
+
29
+ # END
30
+
31
+ # Website Settings
32
+
33
+ Website:
34
+ Domain:
35
+ type: string
36
+ description: 'Website domain is used in links.'
37
+ default_value: 'www.website.com'
38
+
39
+ Title:
40
+ type: string
41
+ description: 'Title for the website is used by search engines.'
42
+ default_value: 'Website'
43
+
44
+ Description:
45
+ type: text
46
+ description: 'What this website is about? This is used by search engines.'
47
+ default_value: 'This website is built with character.'
48
+
49
+ Google Analytics ID:
50
+ type: string
51
+ description: 'Something that looks like like: UA-38088276-3'
52
+ default_value: ''
53
+
54
+ # END
55
+
56
+ # Layout
57
+
58
+ Layout:
59
+ Header:
60
+ type: code
61
+ description: ''
62
+ default_value: "<h1>Project Title</h1><p><a href='/' title='Home'>Home</a></p>"
63
+
64
+ Footer:
65
+ type: code
66
+ description: ''
67
+ default_value: '<p>© Project™ 2014. All rights reserved.</p>'
@@ -0,0 +1,13 @@
1
+ @import "rhythm/typography";
2
+ @import "settings";
3
+
4
+ @include typography( $baseColor,
5
+ $linkColor,
6
+ $baseFontFamily,
7
+ $headerFontFamily,
8
+ $codeFontFamily,
9
+ $baseFontSize,
10
+ $baseLineHeight,
11
+ $h1,
12
+ $h2,
13
+ $h3 );