alchemy_cms 4.1.0.rc1 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of alchemy_cms might be problematic. Click here for more details.

Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -6
  3. data/README.md +10 -8
  4. data/alchemy_cms.gemspec +1 -1
  5. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +2 -4
  6. data/app/assets/stylesheets/alchemy/_extends.scss +1 -1
  7. data/app/assets/stylesheets/alchemy/_mixins.scss +8 -15
  8. data/app/assets/stylesheets/alchemy/_variables.scss +22 -15
  9. data/app/assets/stylesheets/alchemy/admin.scss +1 -0
  10. data/app/assets/stylesheets/alchemy/archive.scss +1 -2
  11. data/app/assets/stylesheets/alchemy/base.scss +12 -59
  12. data/app/assets/stylesheets/alchemy/buttons.scss +9 -4
  13. data/app/assets/stylesheets/alchemy/elements.scss +2 -1
  14. data/app/assets/stylesheets/alchemy/forms.scss +0 -4
  15. data/app/assets/stylesheets/alchemy/frame.scss +1 -10
  16. data/app/assets/stylesheets/alchemy/jquery.datetimepicker.scss +1 -0
  17. data/app/assets/stylesheets/alchemy/lists.scss +10 -0
  18. data/app/assets/stylesheets/alchemy/menubar.scss +1 -0
  19. data/app/assets/stylesheets/alchemy/notices.scss +5 -7
  20. data/app/assets/stylesheets/alchemy/pagination.scss +12 -7
  21. data/app/assets/stylesheets/alchemy/resource_info.scss +0 -4
  22. data/app/assets/stylesheets/alchemy/search.scss +5 -2
  23. data/app/assets/stylesheets/alchemy/selects.scss +4 -2
  24. data/app/assets/stylesheets/alchemy/sitemap.scss +0 -10
  25. data/app/assets/stylesheets/alchemy/tables.scss +23 -0
  26. data/app/assets/stylesheets/alchemy/typography.scss +55 -0
  27. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +6 -3
  28. data/app/controllers/alchemy/admin/attachments_controller.rb +1 -1
  29. data/app/controllers/alchemy/admin/base_controller.rb +2 -1
  30. data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
  31. data/app/controllers/alchemy/admin/pictures_controller.rb +28 -7
  32. data/app/controllers/alchemy/admin/resources_controller.rb +18 -4
  33. data/app/controllers/alchemy/admin/styleguide_controller.rb +7 -0
  34. data/app/controllers/alchemy/admin/tags_controller.rb +1 -1
  35. data/app/views/alchemy/admin/attachments/_filter_bar.html.erb +1 -1
  36. data/app/views/alchemy/admin/attachments/_tag_list.html.erb +1 -1
  37. data/app/views/alchemy/admin/attachments/index.html.erb +1 -1
  38. data/app/views/alchemy/admin/dashboard/_users.html.erb +1 -1
  39. data/app/views/alchemy/admin/dashboard/index.html.erb +2 -1
  40. data/app/views/alchemy/admin/languages/index.html.erb +1 -1
  41. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +2 -2
  42. data/app/views/alchemy/admin/pages/_external_link.html.erb +1 -1
  43. data/app/views/alchemy/admin/pages/_file_link.html.erb +1 -1
  44. data/app/views/alchemy/admin/pages/_form.html.erb +0 -2
  45. data/app/views/alchemy/admin/pages/_internal_link.html.erb +1 -1
  46. data/app/views/alchemy/admin/pages/configure_external.html.erb +0 -1
  47. data/app/views/alchemy/admin/pages/index.html.erb +5 -1
  48. data/app/views/alchemy/admin/pictures/_archive.html.erb +3 -2
  49. data/app/views/alchemy/admin/pictures/_filter_bar.html.erb +1 -1
  50. data/app/views/alchemy/admin/pictures/_form.html.erb +0 -1
  51. data/app/views/alchemy/admin/pictures/_infos.html.erb +3 -2
  52. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +1 -1
  53. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  54. data/app/views/alchemy/admin/pictures/index.html.erb +8 -6
  55. data/app/views/alchemy/admin/resources/_filter_bar.html.erb +1 -1
  56. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +20 -0
  57. data/app/views/alchemy/admin/resources/_table_header.html.erb +5 -0
  58. data/app/views/alchemy/admin/resources/_tag_list.html.erb +1 -1
  59. data/app/views/alchemy/admin/resources/index.html.erb +1 -1
  60. data/app/views/alchemy/admin/sites/index.html.erb +1 -1
  61. data/app/views/alchemy/admin/styleguide/index.html.erb +238 -0
  62. data/app/views/alchemy/admin/tags/edit.html.erb +4 -4
  63. data/app/views/alchemy/admin/tags/index.html.erb +1 -4
  64. data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
  65. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +2 -1
  66. data/app/views/kaminari/alchemy/_paginator.html.erb +8 -5
  67. data/config/alchemy/config.yml +5 -0
  68. data/config/locales/alchemy.en.yml +1 -0
  69. data/config/routes.rb +2 -0
  70. data/lib/alchemy/permissions.rb +1 -1
  71. data/lib/alchemy/resources_helper.rb +2 -1
  72. data/lib/alchemy/version.rb +1 -1
  73. metadata +12 -7
@@ -12,7 +12,8 @@ module Alchemy
12
12
  include Alchemy::ResourcesHelper
13
13
 
14
14
  helper Alchemy::ResourcesHelper, TagsHelper
15
- helper_method :resource_handler, :search_filter_params
15
+ helper_method :resource_handler, :search_filter_params,
16
+ :items_per_page, :items_per_page_options
16
17
 
17
18
  before_action :load_resource,
18
19
  only: [:show, :edit, :update, :destroy]
@@ -37,7 +38,7 @@ module Alchemy
37
38
 
38
39
  respond_to do |format|
39
40
  format.html {
40
- items = items.page(params[:page] || 1).per(per_page_value_for_screen_size)
41
+ items = items.page(params[:page] || 1).per(items_per_page)
41
42
  instance_variable_set("@#{resource_handler.resources_name}", items)
42
43
  }
43
44
  format.csv {
@@ -144,12 +145,25 @@ module Alchemy
144
145
  [
145
146
  # contrary to Rails' documentation passing an empty hash to permit all keys does not work
146
147
  {options: options_from_params.keys},
147
- {q: resource_handler.search_field_name},
148
+ {q: [
149
+ resource_handler.search_field_name,
150
+ :s
151
+ ]},
148
152
  :tagged_with,
149
153
  :filter,
150
- :page
154
+ :page,
155
+ :per_page
151
156
  ].freeze
152
157
  end
158
+
159
+ def items_per_page
160
+ cookies[:alchemy_items_per_page] = params[:per_page] || cookies[:alchemy_items_per_page] || Alchemy::Config.get(:items_per_page)
161
+ end
162
+
163
+ def items_per_page_options
164
+ per_page = Alchemy::Config.get(:items_per_page)
165
+ [per_page, per_page * 2, per_page * 4]
166
+ end
153
167
  end
154
168
  end
155
169
  end
@@ -0,0 +1,7 @@
1
+ module Alchemy
2
+ module Admin
3
+ class StyleguideController < BaseController
4
+ authorize_resource class: :alchemy_admin_styleguide
5
+ end
6
+ end
7
+ end
@@ -10,7 +10,7 @@ module Alchemy
10
10
  @tags = @query
11
11
  .result
12
12
  .page(params[:page] || 1)
13
- .per(per_page_value_for_screen_size)
13
+ .per(items_per_page)
14
14
  .order("name ASC")
15
15
  end
16
16
 
@@ -1,5 +1,5 @@
1
1
  <div id="filter_bar">
2
- <h2><%= Alchemy.t('Filter') %></h2>
2
+ <h3><%= Alchemy.t('Filter') %></h3>
3
3
  <%= select_tag(
4
4
  'file_type_filter',
5
5
  options_for_select(
@@ -1,5 +1,5 @@
1
1
  <% if Alchemy::Attachment.tag_counts.any? %>
2
- <h2><%= Alchemy.t("Filter by tag") %></h2>
2
+ <h3><%= Alchemy.t("Filter by tag") %></h3>
3
3
  <%= js_filter_field '.tag-list li' %>
4
4
  <ul>
5
5
  <%= render_tag_list('Alchemy::Attachment') %>
@@ -12,7 +12,7 @@
12
12
  <% end %>
13
13
 
14
14
  <div id="archive_all" class="with_tag_filter resources-table-wrapper">
15
- <%= resources_header %>
15
+ <%= render 'alchemy/admin/resources/table_header' %>
16
16
  <%= render 'files_list' %>
17
17
 
18
18
  <div id="library_sidebar">
@@ -1,4 +1,4 @@
1
- <div class="widget">
1
+ <div class="widget users">
2
2
  <table class="list">
3
3
  <tr>
4
4
  <th colspan="2"><%= Alchemy.t('Who else is online') %></th>
@@ -34,9 +34,10 @@
34
34
  <%= render 'recent_pages' %>
35
35
  </div>
36
36
  <div class="column right">
37
- <% if @online_users.any? %>
37
+ <% if @online_users.try(:any?) %>
38
38
  <%= render 'users' %>
39
39
  <% end %>
40
+
40
41
  <% if multi_site? %>
41
42
  <%= render 'sites' %>
42
43
  <% end %>
@@ -18,6 +18,6 @@
18
18
  <% end %>
19
19
 
20
20
  <div id="archive_all" class="resources-table-wrapper">
21
- <%= resources_header %>
21
+ <%= render 'alchemy/admin/resources/table_header' %>
22
22
  <%= render 'table' %>
23
23
  </div>
@@ -1,7 +1,7 @@
1
1
  <% if root = Alchemy::Page.rootpage %>
2
- <div id="create_language_tree_form">
2
+ <div class="panel">
3
3
  <%= render_message do %>
4
- <h2><%= Alchemy.t(:language_does_not_exist) %></h2>
4
+ <p><%= Alchemy.t(:language_does_not_exist) %></p>
5
5
  <% end %>
6
6
  <%- if @language -%>
7
7
 
@@ -1,6 +1,6 @@
1
1
  <%= form_tag do %>
2
2
  <%= render_message do %>
3
- <h2><%= Alchemy.t(:enter_external_link) %></h2>
3
+ <h3><%= Alchemy.t(:enter_external_link) %></h3>
4
4
  <p><%= Alchemy.t(:external_link_notice_1) %></p>
5
5
  <p><%= Alchemy.t(:external_link_notice_2) %></p>
6
6
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <%= form_tag do %>
2
2
  <%= render_message do %>
3
- <h2><%= Alchemy.t(:choose_file_to_link) %></h2>
3
+ <h3><%= Alchemy.t(:choose_file_to_link) %></h3>
4
4
  <% end %>
5
5
  <div class="input select">
6
6
  <label for="public_filename" class="control-label">
@@ -17,13 +17,11 @@
17
17
  </div>
18
18
  </div>
19
19
 
20
- <h2><%= Alchemy.t(:names) %></h2>
21
20
  <%= f.input :name, autofocus: true %>
22
21
  <%= f.input :urlname, as: 'string', input_html: {value: @page.slug} %>
23
22
  <%= f.input :title,
24
23
  input_html: {'data-alchemy-char-counter' => 60} %>
25
24
 
26
- <h2><%= Alchemy.t(:meta_data) %></h2>
27
25
  <div class="input check_boxes">
28
26
  <label class="control-label"><%= Alchemy.t(:search_engines) %></label>
29
27
  <div class="control_group">
@@ -1,6 +1,6 @@
1
1
  <%= form_tag do %>
2
2
  <%= render_message do %>
3
- <h2><%= Alchemy.t(:internal_link_headline) %></h2>
3
+ <h3><%= Alchemy.t(:internal_link_headline) %></h3>
4
4
  <p><%= Alchemy.t(:internal_link_page_elements_explanation) %></p>
5
5
  <p><%= Alchemy.t(:internal_link_page_anchors_explanation) %></p>
6
6
  <% end %>
@@ -19,7 +19,6 @@
19
19
  <% end %>
20
20
  </div>
21
21
  </div>
22
- <h2><%= Alchemy.t(:names) %></h2>
23
22
  <%= f.input :name, autofocus: true %>
24
23
  <%= f.input :urlname, as: 'string' %>
25
24
  <%= f.input :title %>
@@ -1,3 +1,7 @@
1
+ <% content_for :javascript_includes do %>
2
+ <meta name="turbolinks-cache-control" content="no-cache">
3
+ <% end %>
4
+
1
5
  <% content_for :toolbar do %>
2
6
  <div class="toolbar_buttons">
3
7
  <%= render 'alchemy/admin/partials/site_select' %>
@@ -56,7 +60,7 @@
56
60
 
57
61
  <div id="archive_all">
58
62
  <% if @page_root %>
59
- <h1 id="page_filter_result"></h1>
63
+ <h2 id="page_filter_result"></h2>
60
64
 
61
65
  <%= render 'sitemap', page_partial: 'page', full: !!@sorting %>
62
66
 
@@ -10,7 +10,7 @@
10
10
 
11
11
  <%= form_tag delete_multiple_admin_pictures_path, method: :delete do %>
12
12
  <div class="selected_item_tools">
13
- <h2><%= Alchemy.t(:edit_selected_pictures) %></h2>
13
+ <h3><%= Alchemy.t(:edit_selected_pictures) %></h3>
14
14
  <%= link_to(
15
15
  render_icon(:edit, size: 'xs') + Alchemy.t("Edit"),
16
16
  edit_multiple_admin_pictures_path,
@@ -49,7 +49,8 @@
49
49
  <% end %>
50
50
  <% else %>
51
51
  <%= render partial: 'picture', collection: @pictures %>
52
- <%= paginate @pictures, theme: 'alchemy' %>
53
52
  <% end %>
54
53
  </div>
55
54
  <% end %>
55
+
56
+ <%= paginate @pictures, theme: 'alchemy' %>
@@ -1,5 +1,5 @@
1
1
  <div id="filter_bar">
2
- <h2><%= Alchemy.t('Filter') %></h2>
2
+ <h3><%= Alchemy.t('Filter') %></h3>
3
3
  <%= select_tag(
4
4
  'picture_filter',
5
5
  options_for_select([
@@ -1,5 +1,4 @@
1
1
  <%= alchemy_form_for [:admin, @picture] do |f| %>
2
- <h2><%= Alchemy.t('Edit image') %></h2>
3
2
  <%= f.input :name %>
4
3
  <div class="input tag_list">
5
4
  <%= f.label :tag_list %>
@@ -1,6 +1,5 @@
1
1
  <div class="resource_info">
2
2
  <div class="picture-file-infos">
3
- <h2><%= Alchemy.t('Picture infos') %></h2>
4
3
  <div class="value">
5
4
  <label><%= Alchemy::Picture.human_attribute_name(:image_file_name) %></label>
6
5
  <p><%= @picture.image_file_name %></p>
@@ -17,7 +16,9 @@
17
16
  </div>
18
17
 
19
18
  <div class="picture-usage-info resource_info">
20
- <h2><%= Alchemy.t(:this_picture_is_used_on_these_pages) %></h2>
19
+ <h3>
20
+ <%= Alchemy.t(:this_picture_is_used_on_these_pages) %>
21
+ </h3>
21
22
  <div id="pictures_page_list">
22
23
  <% if @assignments.any? %>
23
24
  <ul>
@@ -6,5 +6,5 @@
6
6
  <%= render partial: 'picture_to_assign',
7
7
  collection: @pictures,
8
8
  locals: {options: options_from_params, size: @size} %>
9
- <%= paginate @pictures, theme: 'alchemy', remote: true %>
9
+ <%= paginate @pictures, theme: 'alchemy', remote: true, hide_per_page_select: true %>
10
10
  <% end %>
@@ -1,5 +1,5 @@
1
1
  <% if Alchemy::Picture.tag_counts.any? %>
2
- <h2><%= Alchemy.t("Filter by tag") %></h2>
2
+ <h3><%= Alchemy.t("Filter by tag") %></h3>
3
3
  <%= js_filter_field '.tag-list li' %>
4
4
  <ul>
5
5
  <%= render_tag_list('Alchemy::Picture') %>
@@ -55,12 +55,14 @@
55
55
  additional_params: [:filter, :tagged_with, :size] %>
56
56
  <% end %>
57
57
 
58
- <div id="picture_archive">
59
- <h1>
60
- <%= @pictures.total_count %>
61
- <%= Alchemy::Picture.model_name.human(count: @pictures.total_count) %>
62
- <%= Alchemy.t("picture_library.filter.#{search_filter_params[:filter]}") if search_filter_params[:filter].present? %>
63
- </h1>
58
+ <div id="picture_archive" class="resources-table-wrapper">
59
+ <div class="resources-header">
60
+ <h2>
61
+ <%= @pictures.total_count %>
62
+ <%= Alchemy::Picture.model_name.human(count: @pictures.total_count) %>
63
+ <%= Alchemy.t("picture_library.filter.#{search_filter_params[:filter]}") if search_filter_params[:filter].present? %>
64
+ </h2>
65
+ </div>
64
66
  <%= render 'archive' %>
65
67
  </div>
66
68
 
@@ -1,5 +1,5 @@
1
1
  <div id="filter_bar">
2
- <h2><%= Alchemy.t('Filter') %></h2>
2
+ <h3><%= Alchemy.t('Filter') %></h3>
3
3
  <%= select_tag(
4
4
  'resource_filter',
5
5
  options_for_select(
@@ -0,0 +1,20 @@
1
+ <%= form_tag url_for, method: :get, class: 'per-page-select-form' do |f| %>
2
+ <% search_filter_params.reject { |k, _| k == 'page' || k == 'per_page' }.each do |key, value| %>
3
+ <% if value.is_a? Hash %>
4
+ <% value.each do |k, v| %>
5
+ <%= hidden_field_tag "#{key}[#{k}]", v %>
6
+ <% end %>
7
+ <% else %>
8
+ <%= hidden_field_tag key, value %>
9
+ <% end %>
10
+ <% end %>
11
+ <label>
12
+ <%= Alchemy.t(:items_per_page, model_name: resource_model.model_name.human(count: 2)) %>
13
+ <%= select_tag :per_page,
14
+ options_for_select(
15
+ items_per_page_options,
16
+ items_per_page
17
+ ),
18
+ onchange: 'this.form.submit()' %>
19
+ </label>
20
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <div class="resources-header">
2
+ <h2>
3
+ <%= pluralize resources_instance_variable.total_count, resource_model.model_name.human %>
4
+ </h2>
5
+ </div>
@@ -1,5 +1,5 @@
1
1
  <div class="tag-list<%= ' with_filter_bar' if resource_has_filters %><%= ' filtered' if search_filter_params[:tagged_with].present? %>">
2
- <h2><%= Alchemy.t("Filter by tag") %></h2>
2
+ <h3><%= Alchemy.t("Filter by tag") %></h3>
3
3
  <%= js_filter_field '.tag-list li' %>
4
4
  <ul>
5
5
  <%= render_tag_list(resource_model.name) %>
@@ -26,7 +26,7 @@
26
26
  ) %>
27
27
 
28
28
  <div id="archive_all" class="resources-table-wrapper<%= ' with_tag_filter' if resource_has_tags || resource_has_filters %>">
29
- <%= resources_header %>
29
+ <%= render 'alchemy/admin/resources/table_header' %>
30
30
  <%= render 'table' %>
31
31
 
32
32
  <% if resource_has_tags || resource_has_filters %>
@@ -18,6 +18,6 @@
18
18
  ) %>
19
19
 
20
20
  <div id="archive_all" class="resources-table-wrapper">
21
- <%= resources_header %>
21
+ <%= render 'alchemy/admin/resources/table_header' %>
22
22
  <%= render 'table' %>
23
23
  </div>
@@ -0,0 +1,238 @@
1
+ <% content_for :title do %>
2
+ <%= "Styleguide" %>
3
+ <% end %>
4
+
5
+ <% content_for :javascript_includes do %>
6
+ <meta name="turbolinks-cache-control" content="no-cache">
7
+ <% end %>
8
+
9
+ <% content_for(:toolbar) do %>
10
+ <%= toolbar_button(
11
+ icon: :info,
12
+ label: 'Info',
13
+ url: alchemy.dashboard_info_path,
14
+ title: 'Info',
15
+ hotkey: 'alt+i',
16
+ dialog_options: {
17
+ title: 'Info',
18
+ size: "430x400"
19
+ },
20
+ if_permitted_to: [:index, :alchemy_admin_styleguide]
21
+ ) %>
22
+ <% end %>
23
+
24
+ <h1>AlchemyCMS Styleguide</h1>
25
+
26
+ <h2>Typography</h2>
27
+
28
+ <h1>Heading 1</h1>
29
+ <h2>Heading 2</h2>
30
+ <h3>Heading 3</h3>
31
+ <h4>Heading 4</h4>
32
+ <h5>Heading 5</h5>
33
+
34
+ <p>This is a paragraph, with <a href="#">a link</a>, a <kbd>keyboard shortcut</kbd> and an <code>inline code snippet</code>.</p>
35
+
36
+ <h2>Messages</h2>
37
+
38
+ <h3>Info Message</h3>
39
+
40
+ <%= render_message do %>
41
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
42
+ <% end %>
43
+
44
+ <h3>Warning Message</h3>
45
+
46
+ <%= render_message :warning do %>
47
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
48
+ <% end %>
49
+
50
+ <h3>Error Message</h3>
51
+
52
+ <%= render_message :error do %>
53
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
54
+ <% end %>
55
+
56
+ <h2>Forms</h2>
57
+
58
+ <div class="panel">
59
+ <%= render_message do %>
60
+ <p>This form is inside a <code>.panel</code> component.</p>
61
+ <% end %>
62
+
63
+ <form class="simple_form alchemy" action="#" accept-charset="UTF-8" method="post">
64
+ <div class="input select">
65
+ <label class="select control-label" for="select">Select</label>
66
+ <select class="select alchemy_selectbox" id="select">
67
+ <option value="">Please choose</option>
68
+ <option value="1">Option 1</option>
69
+ <option selected="selected" value="2">Option 2</option>
70
+ <option value="3">Option 3</option>
71
+ </select>
72
+ </div>
73
+
74
+ <div class="input">
75
+ <label class="control-label" for="datetime_picker">Date Time Picker</label>
76
+ <input type="text" data-datepicker-type="datetime" id="datetime_picker">
77
+ </div>
78
+
79
+ <div class="input">
80
+ <label class="control-label">Date & Time Pickers</label>
81
+ <div class="control_group">
82
+ <div class="input-row">
83
+ <div class="input-column">
84
+ <input type="text" data-datepicker-type="date" id="date_picker">
85
+ </div>
86
+ <div class="input-column">
87
+ <input type="text" data-datepicker-type="time" id="time_picker">
88
+ </div>
89
+ </div>
90
+ </div>
91
+ </div>
92
+
93
+ <div class="input">
94
+ <label class="control-label" for="optional_string">String</label>
95
+ <input type="text" id="optional_string">
96
+ </div>
97
+ <div class="input required">
98
+ <label class="required control-label" for="required_string">
99
+ Required String<abbr title="required">*</abbr>
100
+ </label>
101
+ <input type="text" id="required_string">
102
+ </div>
103
+ <div class="input field_with_errors">
104
+ <label class="control-label" for="string_with_error">String with error</label>
105
+ <input type="text" id="string_with_error">
106
+ <small class="error">Error message</small>
107
+ </div>
108
+ <div class="input">
109
+ <label class="control-label" for="string_with_counter">String with char counter</label>
110
+ <input data-alchemy-char-counter="60" type="text" id="string_with_counter">
111
+ </div>
112
+
113
+ <div class="input check_boxes">
114
+ <label class="control-label">Check Boxes</label>
115
+ <div class="control_group">
116
+ <label class="checkbox">
117
+ <input type="checkbox" value="1" checked="checked">
118
+ Checked
119
+ </label>
120
+ <label class="checkbox">
121
+ <input type="checkbox" value="1">
122
+ Unchecked
123
+ </label>
124
+ </div>
125
+ </div>
126
+
127
+ <div class="input text">
128
+ <label class="text control-label" for="textarea_with_counter">Textarea with char counter</label>
129
+ <textarea data-alchemy-char-counter="160" class="text" id="textarea_with_counter"></textarea>
130
+ </div>
131
+
132
+ <div class="input text">
133
+ <label class="text control-label" for="textarea">Textarea</label>
134
+ <textarea class="text" id="textarea"></textarea>
135
+ <small class="hint">With hint</small>
136
+ </div>
137
+
138
+ <div class="input text tinymce_container">
139
+ <label class="text control-label" for="tinymce_1">Richtext editor</label>
140
+ <textarea class="text" id="tinymce_1"></textarea>
141
+ </div>
142
+
143
+ <div class="submit">
144
+ <button class="secondary">Secondary</button>
145
+ <button data-alchemy-button>Primary Submit</button>
146
+ </div>
147
+ </form>
148
+ </div>
149
+
150
+ <h2>Tables</h2>
151
+
152
+ <h3>Normal Table</h3>
153
+
154
+ <table class="list">
155
+ <tr>
156
+ <th>Table Heading 1</th>
157
+ <th>Table Heading 2</th>
158
+ <th>Table Heading 3</th>
159
+ </tr>
160
+ <tr class="even">
161
+ <td>Even table cell 1</td>
162
+ <td>Even table cell 2</td>
163
+ <td>Even table cell 3</td>
164
+ </tr>
165
+ <tr class="odd">
166
+ <td>Odd table cell 1</td>
167
+ <td>Odd table cell 2</td>
168
+ <td>Odd table cell 3</td>
169
+ </tr>
170
+ </table>
171
+
172
+ <h3>Table with icons</h3>
173
+
174
+ <table class="list">
175
+ <tr>
176
+ <th class="icon"></th>
177
+ <th>Table Heading 1</th>
178
+ <th>Table Heading 2</th>
179
+ <th>Table Heading 3</th>
180
+ <th class="tools"></th>
181
+ </tr>
182
+ <tr class="even">
183
+ <td class="icon">
184
+ <i class="icon fa-fw fas fa-user"></i>
185
+ </td>
186
+ <td>Even table cell 1</td>
187
+ <td>Even table cell 2</td>
188
+ <td>Even table cell 3</td>
189
+ <td class="tools">
190
+ <a href="#" class="icon_button">
191
+ <i class="icon fa-fw fas fa-minus"></i>
192
+ </a>
193
+ <a href="#" class="icon_button">
194
+ <i class="icon fa-fw fas fa-edit"></i>
195
+ </a>
196
+ </td>
197
+ </tr>
198
+ <tr class="odd">
199
+ <td class="icon">
200
+ <i class="icon fa-fw fas fa-user"></i>
201
+ </td>
202
+ <td>Odd table cell 1</td>
203
+ <td>Odd table cell 2</td>
204
+ <td>Odd table cell 3</td>
205
+ <td class="tools">
206
+ <a href="#" class="icon_button">
207
+ <i class="icon fa-fw fas fa-minus"></i>
208
+ </a>
209
+ <a href="#" class="icon_button">
210
+ <i class="icon fa-fw fas fa-edit"></i>
211
+ </a>
212
+ </td>
213
+ </tr>
214
+ </table>
215
+
216
+ <h2>Lists</h2>
217
+
218
+ <h3>Unordered List</h3>
219
+
220
+ <ul>
221
+ <li>List item</li>
222
+ <li>List item</li>
223
+ <li>List item</li>
224
+ </ul>
225
+
226
+ <h3>Ordered List</h3>
227
+
228
+ <ol>
229
+ <li>List item</li>
230
+ <li>List item</li>
231
+ <li>List item</li>
232
+ </ol>
233
+
234
+ <%= content_for :javascripts do %>
235
+ <script>
236
+ Alchemy.Tinymce.init([1])
237
+ </script>
238
+ <% end %>