feat: migrate from Foundation to Fomantic-UI
Swap foundation-rails for fomantic-ui-sass across the gem's own layout/menu/alerts partials and all 11 generic scaffold resources (pages, news, faqs, quotes, images, directories, keywords, yml_files, contact_forms, newsletter_subscriptions, users). Foundation grid/button classes replaced with Fomantic ui.form/ui.button/ui.table conventions; legacy Foundation mixins in the custom component sass (panel, button, grid-row/grid-column) rewritten as plain CSS since they no longer exist once foundation_and_overrides.scss is gone. Also fixes a real bug found along the way: boolean_text used `.present?` on values, but SimplyCouch stores booleans as the strings "0"/"1" — and "0".present? is true in Ruby, so it always rendered "Yes" regardless of actual value. Now uses ActiveModel::Type::Boolean. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
#= require jquery
|
#= require jquery
|
||||||
#= require jquery_ujs
|
#= require jquery_ujs
|
||||||
#= require foundation
|
#= require semantic-ui
|
||||||
#= require ace/ace
|
#= require ace/ace
|
||||||
#= require moment
|
#= require moment
|
||||||
#= require ace/theme-monokai
|
#= require ace/theme-monokai
|
||||||
@@ -19,7 +19,9 @@
|
|||||||
#= require_self
|
#= require_self
|
||||||
|
|
||||||
$ ->
|
$ ->
|
||||||
$(document).foundation()
|
$('.ui.dropdown').dropdown()
|
||||||
|
$('.ui.checkbox').checkbox()
|
||||||
|
$('.message .close.icon').on 'click', -> $(@).closest('.message').transition('fade')
|
||||||
collapsible.setup()
|
collapsible.setup()
|
||||||
html_edit.setup()
|
html_edit.setup()
|
||||||
yml_edit.setup()
|
yml_edit.setup()
|
||||||
@@ -38,7 +40,7 @@ $ ->
|
|||||||
layout: $('#page_layout').val()
|
layout: $('#page_layout').val()
|
||||||
$.post url, page: params, (response)->
|
$.post url, page: params, (response)->
|
||||||
iframe.attr 'src', url
|
iframe.attr 'src', url
|
||||||
$('#preview-modal').foundation('reveal', 'open')
|
$('#preview-modal').modal('show')
|
||||||
false
|
false
|
||||||
|
|
||||||
$("[data-time]").each ->
|
$("[data-time]").each ->
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
//= require pickadate/default
|
//= require pickadate/default
|
||||||
//= require pickadate/default.date
|
//= require pickadate/default.date
|
||||||
//= require pickadate/default.time
|
//= require pickadate/default.time
|
||||||
@import font-awesome
|
@import semantic-ui
|
||||||
@import ./foundation_and_overrides
|
|
||||||
@import ./structure
|
@import ./structure
|
||||||
@import ./components/*
|
@import ./components/*
|
||||||
@import ./locale
|
@import ./locale
|
||||||
|
|||||||
@@ -1,12 +1,25 @@
|
|||||||
|
// Legacy button hooks kept for cmtool scaffold views not yet converted to
|
||||||
|
// Fomantic `ui button` classes. Colors match Fomantic's default palette.
|
||||||
|
=legacy-button($bg: #1b1c1d)
|
||||||
|
display: inline-block
|
||||||
|
padding: 0.78571429em 1.5em
|
||||||
|
background: $bg
|
||||||
|
color: white
|
||||||
|
border: none
|
||||||
|
border-radius: 0.28571429rem
|
||||||
|
cursor: pointer
|
||||||
|
&:hover
|
||||||
|
opacity: 0.85
|
||||||
|
|
||||||
.to-index-button
|
.to-index-button
|
||||||
+button($bg: $secondary-color)
|
+legacy-button($bg: #767676)
|
||||||
.record-show-button
|
.record-show-button
|
||||||
+button($bg: $info-color)
|
+legacy-button($bg: #31ccec)
|
||||||
.record-new-button
|
.record-new-button
|
||||||
+button
|
+legacy-button
|
||||||
.record-edit-button
|
.record-edit-button
|
||||||
+button($bg: $warning-color)
|
+legacy-button($bg: #fbbd08)
|
||||||
.record-destroy-button
|
.record-destroy-button
|
||||||
+button($bg: $alert-color)
|
+legacy-button($bg: #db2828)
|
||||||
.form-submit-button
|
.form-submit-button
|
||||||
+button
|
+legacy-button
|
||||||
|
|||||||
@@ -4,10 +4,13 @@
|
|||||||
font-weight: bold
|
font-weight: bold
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
span
|
span
|
||||||
@extend .fa, .fa-arrow-down
|
&:before
|
||||||
|
content: "\25BC"
|
||||||
|
margin-right: 0.5em
|
||||||
&.collapsed
|
&.collapsed
|
||||||
.collapsible-title
|
.collapsible-title
|
||||||
span
|
span
|
||||||
@extend .fa, .fa-arrow-right
|
&:before
|
||||||
|
content: "\25B6"
|
||||||
.collapsible-content
|
.collapsible-content
|
||||||
display: none
|
display: none
|
||||||
|
|||||||
@@ -1,30 +1,20 @@
|
|||||||
.form-row
|
.form-row
|
||||||
+grid-row
|
display: flex
|
||||||
|
flex-wrap: wrap
|
||||||
|
align-items: flex-start
|
||||||
|
gap: 1em
|
||||||
|
margin-bottom: 0.5em
|
||||||
.form-label
|
.form-label
|
||||||
@media #{$small-only}
|
flex: 0 0 200px
|
||||||
+grid-column($columns:10, $center:true)
|
max-width: 100%
|
||||||
@media #{$medium-only}
|
padding-top: 0.5em
|
||||||
+grid-column($columns:4, $offset:1)
|
|
||||||
@media #{$large-up}
|
|
||||||
+grid-column(3)
|
|
||||||
&.half
|
|
||||||
+grid-column(6)
|
|
||||||
.form-field
|
.form-field
|
||||||
@media #{$small-only}
|
flex: 1 1 300px
|
||||||
+grid-column($columns:10, $center:true, $last-column:true)
|
max-width: 100%
|
||||||
@media #{$medium-only}
|
|
||||||
+grid-column($columns:4, $last-column:true)
|
|
||||||
@media #{$large-up}
|
|
||||||
+grid-column($columns: 3, $last-column:true)
|
|
||||||
&.full
|
&.full
|
||||||
@media #{$small-only}
|
flex-basis: 100%
|
||||||
+grid-column($columns:10, $center:true, $last-column:true)
|
|
||||||
@media #{$medium-only}
|
|
||||||
+grid-column($columns:6, $last-column:true)
|
|
||||||
@media #{$large-up}
|
|
||||||
+grid-column($columns: 9, $last-column:true)
|
|
||||||
&.half
|
&.half
|
||||||
+grid-column(6)
|
flex-basis: 45%
|
||||||
&.form-actions
|
&.form-actions
|
||||||
padding-top: 12px
|
padding-top: 12px
|
||||||
body
|
body
|
||||||
@@ -37,9 +27,17 @@ body
|
|||||||
width: 60px
|
width: 60px
|
||||||
display: inline-block
|
display: inline-block
|
||||||
.apply-filter
|
.apply-filter
|
||||||
+button($bg: $primary-color, $padding: $button-tny)
|
display: inline-block
|
||||||
|
padding: 0.5em 1em
|
||||||
|
background: #2185d0
|
||||||
|
color: white
|
||||||
|
border: none
|
||||||
|
border-radius: 0.28571429rem
|
||||||
|
cursor: pointer
|
||||||
|
&:hover
|
||||||
|
opacity: 0.85
|
||||||
.error
|
.error
|
||||||
input, textarea
|
input, textarea
|
||||||
border-color: $alert-color
|
border-color: #db2828
|
||||||
input[type="number"]
|
input[type="number"]
|
||||||
text-align: right
|
text-align: right
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,25 @@
|
|||||||
.clear
|
.clear
|
||||||
clear: both
|
clear: both
|
||||||
|
|
||||||
|
// Generic scaffold show pages: `.show_field > strong + value`
|
||||||
|
.show_field
|
||||||
|
padding: 0.5em 0
|
||||||
|
border-bottom: 1px solid rgba(34, 36, 38, 0.1)
|
||||||
|
strong
|
||||||
|
display: inline-block
|
||||||
|
min-width: 160px
|
||||||
|
margin-right: 1em
|
||||||
|
|
||||||
#sub-navigation-container
|
#sub-navigation-container
|
||||||
margin-top: 20px
|
margin-top: 20px
|
||||||
+panel()
|
padding: 1em
|
||||||
+clearfix()
|
background: #f8f8f8
|
||||||
|
border: 1px solid rgba(34, 36, 38, 0.15)
|
||||||
|
border-radius: 0.28571429rem
|
||||||
|
&:after
|
||||||
|
content: ""
|
||||||
|
display: table
|
||||||
|
clear: both
|
||||||
ul
|
ul
|
||||||
list-style: none
|
list-style: none
|
||||||
margin: 0
|
margin: 0
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ module Cmtool
|
|||||||
end
|
end
|
||||||
|
|
||||||
def boolean_text(yes)
|
def boolean_text(yes)
|
||||||
yes.present? ? t('cmtool.general.yes') : t('cmtool.general.no')
|
ActiveModel::Type::Boolean.new.cast(yes) ? t('cmtool.general.yes') : t('cmtool.general.no')
|
||||||
end
|
end
|
||||||
def empty_result(model)
|
def empty_result(model)
|
||||||
t('cmtool.general.empty_result', models: model.model_name.human_plural.downcase )
|
t('cmtool.general.empty_result', models: model.model_name.human_plural.downcase )
|
||||||
@@ -132,6 +132,30 @@ module Cmtool
|
|||||||
controller.respond_to?(:cmtool_user) ? controller.send(:cmtool_user) :nil
|
controller.respond_to?(:cmtool_user) ? controller.send(:cmtool_user) :nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Path prefixes matching how the consuming app's translations.js.coffee.erb
|
||||||
|
# builds $translations: each top-level JS key is sourced from a different
|
||||||
|
# Rails i18n scope. Keep in sync with that file.
|
||||||
|
TSPAN_NAMESPACE_PREFIXES = {
|
||||||
|
'models' => 'activemodel.models',
|
||||||
|
'attributes' => 'activemodel.attributes',
|
||||||
|
'helpers' => 'helpers',
|
||||||
|
'pagination' => 'views.pagination',
|
||||||
|
'errors' => 'errors',
|
||||||
|
}.freeze
|
||||||
|
|
||||||
|
# Client-resolved translation span, mirroring the JS `tspan` helper in
|
||||||
|
# translations.js.coffee.erb. Renders the raw (possibly ${...}-templated)
|
||||||
|
# server-side translation as initial content, tagged with data-t so the
|
||||||
|
# page's on-load JS can resolve nested ${...} references client-side.
|
||||||
|
# tspan 'attributes.supplier.name' # => <span data-t="attributes.supplier.name" class="translation">${models.supplier} name</span>
|
||||||
|
def tspan(path, vars = {})
|
||||||
|
namespace, rest = path.split('.', 2)
|
||||||
|
prefix = TSPAN_NAMESPACE_PREFIXES.fetch(namespace, namespace)
|
||||||
|
full_key = rest ? "#{prefix}.#{rest}" : prefix
|
||||||
|
text = I18n.t(full_key, **vars)
|
||||||
|
content_tag(:span, text, class: 'translation', data: { t: path, t_attributes: vars.to_json })
|
||||||
|
end
|
||||||
|
|
||||||
def edit_td(obj, options = {})
|
def edit_td(obj, options = {})
|
||||||
path = options[:path] || case obj
|
path = options[:path] || case obj
|
||||||
when Array then edit_polymorphic_path(obj)
|
when Array then edit_polymorphic_path(obj)
|
||||||
@@ -140,7 +164,7 @@ module Cmtool
|
|||||||
end
|
end
|
||||||
content_tag(
|
content_tag(
|
||||||
:td,
|
:td,
|
||||||
link_to((content_tag(:span, '', class: [:edit, 'fa fa-lg fa-pencil'])), path, class: 'tiny warning button'),
|
link_to(content_tag(:i, nil, class: 'write icon'), path, class: 'edit ui mini basic yellow icon button'),
|
||||||
class: [:action, :edit]
|
class: [:action, :edit]
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
@@ -154,7 +178,7 @@ module Cmtool
|
|||||||
|
|
||||||
content_tag(
|
content_tag(
|
||||||
:td,
|
:td,
|
||||||
link_to(content_tag(:span, '', class: [:destroy, 'fa fa-lg fa-trash']), path, method: :delete, class: 'tiny alert button', data: {confirm: are_you_sure(obj) }),
|
link_to(content_tag(:i, nil, class: 'trash icon'), path, method: :delete, class: 'destroy ui mini negative icon button', data: {confirm: are_you_sure(obj) }),
|
||||||
class: [:action, :destroy]
|
class: [:action, :destroy]
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
- if flash[:alert].present?
|
- if flash[:alert].present?
|
||||||
.row: .small-12.columns.alert-box.alert data-alert=true
|
.ui.negative.message
|
||||||
|
i.close.icon
|
||||||
= flash[:alert]
|
= flash[:alert]
|
||||||
a.close href="" ×
|
|
||||||
- if flash[:notice].present?
|
- if flash[:notice].present?
|
||||||
.row: .small-12.columns.alert-box.info data-alert=true
|
.ui.positive.message
|
||||||
|
i.close.icon
|
||||||
= flash[:notice]
|
= flash[:notice]
|
||||||
a.close href="" ×
|
|
||||||
- if warnings.any?
|
- if warnings.any?
|
||||||
.row: .small-12.columns.alert-box.warning data-alert=true
|
.ui.warning.message
|
||||||
ul
|
i.close.icon
|
||||||
|
ul.list
|
||||||
- for warning in warnings
|
- for warning in warnings
|
||||||
- if warning.is_a?(Hash)
|
- if warning.is_a?(Hash)
|
||||||
li.warning= t("cmtool.warnings.#{warning.delete(:message)}", warning)
|
li= t("cmtool.warnings.#{warning.delete(:message)}", warning)
|
||||||
- else
|
- else
|
||||||
li.warning= t("cmtool.warnings.#{warning}")
|
li= t("cmtool.warnings.#{warning}")
|
||||||
|
|||||||
@@ -1,32 +1,25 @@
|
|||||||
- user = defined?(cmtool_user) ? cmtool_user : (defined?(current_user) ? current_user : nil)
|
- user = defined?(cmtool_user) ? cmtool_user : (defined?(current_user) ? current_user : nil)
|
||||||
.fixed
|
.ui.inverted.menu
|
||||||
nav.top-bar data-topbar="" role="navigation"
|
= link_to application_title, cmtool.root_path, class: 'header item'
|
||||||
ul.title-area
|
- Cmtool::Menu.items.each do |menu_item|
|
||||||
li.name
|
- if menu_item.group?
|
||||||
h1
|
.ui.dropdown.item class=(menu_item.controller_names.include?(controller_name) ? 'active' : nil)
|
||||||
a href=cmtool.root_path = application_title
|
= menu_item.title
|
||||||
li.toggle-topbar.menu-icon
|
i.dropdown.icon
|
||||||
a href="#"
|
.menu
|
||||||
span Menu
|
- menu_item.items.compact.each do |child_item|
|
||||||
section.top-bar-section
|
- if child_item.divider?
|
||||||
- if user.present?
|
.divider
|
||||||
ul.right
|
- else
|
||||||
li.has-dropdown
|
= link_to child_item.title, child_item.path, class: ['item', (controller_name == child_item.controller_name ? 'active' : nil)]
|
||||||
a href="#" = user.email
|
- elsif menu_item.resource_link?
|
||||||
ul.dropdown
|
= link_to menu_item.title, menu_item.path, class: ['item', (menu_item.controller_name == controller_name ? 'active' : nil)]
|
||||||
li.log-out= link_to t('helpers.links.logout'), main_app.root_path
|
- elsif menu_item.engine_link?
|
||||||
ul.left
|
= link_to menu_item.title, menu_item.path, class: 'item'
|
||||||
- Cmtool::Menu.items.each do |menu_item|
|
.right.menu
|
||||||
- if menu_item.group?
|
- if user.present?
|
||||||
li.has-dropdown class=(menu_item.controller_names.include?(controller_name) ? 'active' : '')
|
.ui.dropdown.item
|
||||||
a href="#" = menu_item.title
|
span= user.email
|
||||||
ul.dropdown
|
i.dropdown.icon
|
||||||
- menu_item.items.compact.each do |child_item|
|
.menu
|
||||||
- if child_item.divider?
|
= link_to t('helpers.links.logout'), main_app.root_path, class: 'item'
|
||||||
li.divider
|
|
||||||
- else
|
|
||||||
li class=(controller_name == child_item.controller_name ? 'active' : '') = link_to child_item.title, child_item.path
|
|
||||||
- elsif menu_item.resource_link?
|
|
||||||
li class=(menu_item.controller_name == controller_name ? 'active' : '') = link_to menu_item.title, menu_item.path
|
|
||||||
- elsif menu_item.engine_link?
|
|
||||||
li= link_to menu_item.title, menu_item.path
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @contact_form] do |f|
|
= form_for [cmtool, @contact_form], html: {class: 'ui form'} do |f|
|
||||||
= render 'error_messages', :target => @contact_form
|
= render 'error_messages', :target => @contact_form
|
||||||
|
|
||||||
.field
|
.field
|
||||||
@@ -17,4 +17,4 @@
|
|||||||
= f.label :body
|
= f.label :body
|
||||||
= f.text_area :body, class: :editor_full
|
= f.text_area :body, class: :editor_full
|
||||||
.actions
|
.actions
|
||||||
= f.submit @submit || update_button_text(@contact_form)
|
= f.submit @submit || update_button_text(@contact_form), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::ContactForm
|
- title :index, Cmtool::ContactForm
|
||||||
- if @contact_forms.any?
|
- if @contact_forms.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::ContactForm.human_attribute_name(:gender)
|
th= Cmtool::ContactForm.human_attribute_name(:gender)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @directory], :html => {:multipart => true} do |f|
|
= form_for [cmtool, @directory], :html => {:multipart => true, :class => 'ui form'} do |f|
|
||||||
= render 'error_messages', :target => @directory
|
= render 'error_messages', :target => @directory
|
||||||
.field
|
.field
|
||||||
= f.label :name
|
= f.label :name
|
||||||
@@ -7,4 +7,4 @@
|
|||||||
= f.label :parent_id, Cmtool::Directory.model_name.human
|
= f.label :parent_id, Cmtool::Directory.model_name.human
|
||||||
= f.select :parent_id, tree_options_for_select(Cmtool::Directory.full_tree, exclude: @directory.id, selected: @directory.parent_id), include_blank: ''
|
= f.select :parent_id, tree_options_for_select(Cmtool::Directory.full_tree, exclude: @directory.id, selected: @directory.parent_id), include_blank: ''
|
||||||
.actions
|
.actions
|
||||||
= f.submit @submit || update_button_text(@directory)
|
= f.submit @submit || update_button_text(@directory), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::Directory
|
- title :index, Cmtool::Directory
|
||||||
- if @directories.any?
|
- if @directories.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::Directory.human_attribute_name(:name)
|
th= Cmtool::Directory.human_attribute_name(:name)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @faq] do |f|
|
= form_for [cmtool, @faq], html: {class: 'ui form'} do |f|
|
||||||
= render 'error_messages', :target => @faq
|
= render 'error_messages', :target => @faq
|
||||||
|
|
||||||
.field
|
.field
|
||||||
@@ -8,4 +8,4 @@
|
|||||||
= f.label :answer
|
= f.label :answer
|
||||||
= f.text_area :answer, :rows => 6, :class => 'editor_basic'
|
= f.text_area :answer, :rows => 6, :class => 'editor_basic'
|
||||||
.actions
|
.actions
|
||||||
= f.submit @submit || update_button_text(@faq)
|
= f.submit @submit || update_button_text(@faq), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::Faq
|
- title :index, Cmtool::Faq
|
||||||
- if @faqs.any?
|
- if @faqs.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::Faq.human_attribute_name(:question)
|
th= Cmtool::Faq.human_attribute_name(:question)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @image], html: {multipart: true} do |f|
|
= form_for [cmtool, @image], html: {multipart: true, class: 'ui form'} do |f|
|
||||||
= render 'error_messages', target: @image
|
= render 'error_messages', target: @image
|
||||||
|
|
||||||
.field
|
.field
|
||||||
@@ -9,4 +9,4 @@
|
|||||||
= f.select :directory_id, Cmtool::Directory.all.map{|d| ["-"*d.tree_depth + ' ' + d.name.to_s, d.id]}
|
= f.select :directory_id, Cmtool::Directory.all.map{|d| ["-"*d.tree_depth + ' ' + d.name.to_s, d.id]}
|
||||||
|
|
||||||
.actions
|
.actions
|
||||||
= f.submit @submit || update_button_text(@image)
|
= f.submit @submit || update_button_text(@image), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::Image
|
- title :index, Cmtool::Image
|
||||||
- if @images.any?
|
- if @images.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::Image.model_name.human
|
th= Cmtool::Image.model_name.human
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
= form_for [cmtool, @keyword] do |f|
|
= form_for [cmtool, @keyword], html: {class: 'ui form'} do |f|
|
||||||
= render 'error_messages', :target => @keyword
|
= render 'error_messages', :target => @keyword
|
||||||
.form-row
|
.form-row
|
||||||
.form-label= f.label :name
|
.form-label= f.label :name
|
||||||
.form-field= f.text_field :name
|
.form-field= f.text_field :name
|
||||||
.form-row: .form-actions
|
.form-row: .form-actions
|
||||||
= f.submit @submit || update_button_text(@keyword), class: 'form-submit-button'
|
= f.submit @submit || update_button_text(@keyword), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::Keyword
|
- title :index, Cmtool::Keyword
|
||||||
- if @keywords.any?
|
- if @keywords.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::Keyword.human_attribute_name(:name)
|
th= Cmtool::Keyword.human_attribute_name(:name)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @news], html: {multipart: true} do |f|
|
= form_for [cmtool, @news], html: {multipart: true, class: 'ui form'} do |f|
|
||||||
= render 'error_messages', target: @news
|
= render 'error_messages', target: @news
|
||||||
.field
|
.field
|
||||||
= f.label :title
|
= f.label :title
|
||||||
@@ -19,4 +19,4 @@
|
|||||||
.field
|
.field
|
||||||
= render "cmtool/keywords/habtm", subject: @news
|
= render "cmtool/keywords/habtm", subject: @news
|
||||||
.actions
|
.actions
|
||||||
= f.submit @submit || update_button_text(@news)
|
= f.submit @submit || update_button_text(@news), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::News
|
- title :index, Cmtool::News
|
||||||
- if @news.any?
|
- if @news.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::News.human_attribute_name(:title)
|
th= Cmtool::News.human_attribute_name(:title)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @newsletter_subscription] do |f|
|
= form_for [cmtool, @newsletter_subscription], html: {class: 'ui form'} do |f|
|
||||||
= render 'error_messages', :target => @newsletter_subscription
|
= render 'error_messages', :target => @newsletter_subscription
|
||||||
|
|
||||||
.field
|
.field
|
||||||
@@ -8,4 +8,4 @@
|
|||||||
= f.label :active
|
= f.label :active
|
||||||
= f.check_box :active
|
= f.check_box :active
|
||||||
.actions
|
.actions
|
||||||
= f.submit @submit || update_button_text(@newsletter_subscription)
|
= f.submit @submit || update_button_text(@newsletter_subscription), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::NewsletterSubscription
|
- title :index, Cmtool::NewsletterSubscription
|
||||||
- if @newsletter_subscriptions.any?
|
- if @newsletter_subscriptions.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::NewsletterSubscription.human_attribute_name(:email)
|
th= Cmtool::NewsletterSubscription.human_attribute_name(:email)
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
javascript:
|
javascript:
|
||||||
page_vars = #{Cmtool::YmlFile.all_as_object.to_json.html_safe};
|
page_vars = #{Cmtool::YmlFile.all_as_object.to_json.html_safe};
|
||||||
#preview-modal.reveal-modal.large data-reveal=""
|
#preview-modal.ui.large.modal
|
||||||
iframe allowfullscreen="" frameborder="0" height="100%" src="about:blank" width="100%"
|
i.close.icon
|
||||||
a.close-reveal-modal ×
|
.content
|
||||||
= form_for [cmtool, @page] do |f|
|
iframe allowfullscreen="" frameborder="0" height="100%" src="about:blank" width="100%"
|
||||||
|
= form_for [cmtool, @page], html: {class: 'ui form'} do |f|
|
||||||
= render 'error_messages', target: @page
|
= render 'error_messages', target: @page
|
||||||
.form-row
|
.form-row
|
||||||
.form-label= f.label :name
|
.form-label= f.label :name
|
||||||
@@ -58,5 +59,5 @@ javascript:
|
|||||||
.field
|
.field
|
||||||
= render "cmtool/keywords/habtm", subject: @page
|
= render "cmtool/keywords/habtm", subject: @page
|
||||||
.form-row: .form-actions
|
.form-row: .form-actions
|
||||||
= f.submit @submit || update_button_text(f.object), class: 'button'
|
= f.submit @submit || update_button_text(f.object), class: 'ui primary button'
|
||||||
-#= button_tag 'Preview (unsupported)', onclick: %{$('form').attr('action', '/' + $('#page_name').val()).submit();}
|
-#= button_tag 'Preview (unsupported)', onclick: %{$('form').attr('action', '/' + $('#page_name').val()).submit();}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
- title :index, Page
|
- title :index, Page
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Page.human_attribute_name(:name)
|
th= Page.human_attribute_name(:name)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @quote], html: {multipart: true} do |f|
|
= form_for [cmtool, @quote], html: {multipart: true, class: 'ui form'} do |f|
|
||||||
= render 'error_messages', target: @quote
|
= render 'error_messages', target: @quote
|
||||||
.field
|
.field
|
||||||
= f.label :owner
|
= f.label :owner
|
||||||
@@ -19,4 +19,4 @@
|
|||||||
= f.label :active
|
= f.label :active
|
||||||
= f.check_box :active
|
= f.check_box :active
|
||||||
.actions
|
.actions
|
||||||
= f.submit @submit || update_button_text(@quote)
|
= f.submit @submit || update_button_text(@quote), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::Quote
|
- title :index, Cmtool::Quote
|
||||||
- if @quotes.any?
|
- if @quotes.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::Quote.human_attribute_name(:owner)
|
th= Cmtool::Quote.human_attribute_name(:owner)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @user] do |f|
|
= form_for [cmtool, @user], html: {class: 'ui form'} do |f|
|
||||||
= render 'error_messages', :target => @user
|
= render 'error_messages', :target => @user
|
||||||
|
|
||||||
.field
|
.field
|
||||||
@@ -24,4 +24,4 @@
|
|||||||
= f.label :admin
|
= f.label :admin
|
||||||
= f.check_box :admin
|
= f.check_box :admin
|
||||||
.actions
|
.actions
|
||||||
= f.submit @submit || update_button_text(@user)
|
= f.submit @submit || update_button_text(@user), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, User
|
- title :index, User
|
||||||
- if @users.any?
|
- if @users.any?
|
||||||
table.index-table
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= User.human_attribute_name(:email)
|
th= User.human_attribute_name(:email)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
= form_for [cmtool, @yml_file] do |f|
|
= form_for [cmtool, @yml_file], html: {class: 'ui form'} do |f|
|
||||||
= render 'error_messages', :target => @yml_file
|
= render 'error_messages', :target => @yml_file
|
||||||
.form-row
|
.form-row
|
||||||
.form-label= f.label :name
|
.form-label= f.label :name
|
||||||
@@ -6,4 +6,4 @@
|
|||||||
.form-row
|
.form-row
|
||||||
= f.text_area :body, class: 'yml-content'
|
= f.text_area :body, class: 'yml-content'
|
||||||
.form-row: .form-actions
|
.form-row: .form-actions
|
||||||
= f.submit @submit || update_button_text(@yml_file), class: 'form-submit-button'
|
= f.submit @submit || update_button_text(@yml_file), class: 'ui primary button'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- title :index, Cmtool::YmlFile
|
- title :index, Cmtool::YmlFile
|
||||||
- if @yml_files.any?
|
- if @yml_files.any?
|
||||||
table.index-table.table.table-striped.table-hover
|
table.ui.celled.table
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th= Cmtool::YmlFile.human_attribute_name(:name)
|
th= Cmtool::YmlFile.human_attribute_name(:name)
|
||||||
|
|||||||
@@ -24,23 +24,24 @@ html lang="en"
|
|||||||
|
|
||||||
body
|
body
|
||||||
= render 'cmtool/application/menu'
|
= render 'cmtool/application/menu'
|
||||||
= render 'cmtool/application/alerts'
|
.ui.container
|
||||||
.row
|
= render 'cmtool/application/alerts'
|
||||||
.small-12.large-9.columns
|
.ui.grid
|
||||||
h3= content_for?(:page_title) ? yield(:page_title) : application_title
|
.twelve.wide.column
|
||||||
= content_for?(:content) ? yield(:content) : yield
|
h3.ui.header= content_for?(:page_title) ? yield(:page_title) : application_title
|
||||||
- if content_for?(:page_links)
|
= content_for?(:content) ? yield(:content) : yield
|
||||||
#sub-navigation-container= yield(:page_links)
|
- if content_for?(:page_links)
|
||||||
.show-for-large-up.large-3.columns
|
#sub-navigation-container= yield(:page_links)
|
||||||
.panel
|
.four.wide.column
|
||||||
h4 Links
|
.ui.segment
|
||||||
ul.side-nav
|
h4.ui.header Links
|
||||||
li= link_to "Home", cmtool.root_path
|
.ui.link.list
|
||||||
li= link_to 'Wiki', 'https://github.com/bterkuile/cmtool/wiki', target: :_blank
|
a.item href=cmtool.root_path Home
|
||||||
= yield :sidebar
|
a.item href="https://github.com/bterkuile/cmtool/wiki" target="_blank" Wiki
|
||||||
footer
|
= yield :sidebar
|
||||||
p
|
footer.ui.footer
|
||||||
span © Cmtool
|
p
|
||||||
span= Date.today.year
|
span © Cmtool
|
||||||
= yield :footer
|
span= Date.today.year
|
||||||
|
= yield :footer
|
||||||
#hidden-html.hide= yield :hidden_html
|
#hidden-html.hide= yield :hidden_html
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|||||||
s.add_runtime_dependency "slim-rails", ">= 0"
|
s.add_runtime_dependency "slim-rails", ">= 0"
|
||||||
# s.add_runtime_dependency "tinymce-rails", ">= 0"
|
# s.add_runtime_dependency "tinymce-rails", ">= 0"
|
||||||
s.add_runtime_dependency "jquery-rails", ">= 0"
|
s.add_runtime_dependency "jquery-rails", ">= 0"
|
||||||
s.add_runtime_dependency "foundation-rails", ">= 0"
|
s.add_runtime_dependency "fomantic-ui-sass", ">= 0"
|
||||||
s.add_runtime_dependency "ace-rails-ap", ">= 0"
|
s.add_runtime_dependency "ace-rails-ap", ">= 0"
|
||||||
s.add_runtime_dependency "font-awesome-rails", ">= 0"
|
s.add_runtime_dependency "font-awesome-rails", ">= 0"
|
||||||
s.add_runtime_dependency "pickadate-rails", ">= 0"
|
s.add_runtime_dependency "pickadate-rails", ">= 0"
|
||||||
|
|||||||
Reference in New Issue
Block a user