zencms 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +34 -0
- data/app/assets/javascripts/zencms/application.js.coffee +19 -0
- data/app/assets/stylesheets/zencms/application.css.sass +6 -0
- data/app/controllers/zencms/application_controller.rb +4 -0
- data/app/controllers/zencms/backend/posts_controller.rb +37 -0
- data/app/controllers/zencms/posts_controller.rb +34 -0
- data/app/helpers/zencms/application_helper.rb +25 -0
- data/app/helpers/zencms/menu_items_helper.rb +15 -0
- data/app/helpers/zencms/posts_helper.rb +41 -0
- data/app/models/zencms/asset.rb +14 -0
- data/app/models/zencms/menu_item.rb +11 -0
- data/app/models/zencms/post.rb +48 -0
- data/app/models/zencms/post/audio.rb +8 -0
- data/app/models/zencms/post/image.rb +8 -0
- data/app/models/zencms/post_type.rb +5 -0
- data/app/views/layouts/zencms/application.html.haml +35 -0
- data/app/views/zencms/backend/posts/_audio_fields.html.haml +14 -0
- data/app/views/zencms/backend/posts/_form.html.haml +53 -0
- data/app/views/zencms/backend/posts/_image_fields.html.haml +14 -0
- data/app/views/zencms/backend/posts/edit.html.haml +1 -0
- data/app/views/zencms/backend/posts/index.html.haml +26 -0
- data/app/views/zencms/backend/posts/new.html.haml +1 -0
- data/app/views/zencms/posts/_post.html.haml +17 -0
- data/app/views/zencms/posts/_post_grid.html.haml +6 -0
- data/app/views/zencms/posts/_post_teaser.html.haml +6 -0
- data/app/views/zencms/posts/index.html.haml +6 -0
- data/app/views/zencms/posts/show.html.haml +1 -0
- data/app/views/zencms/shared/_block_archive.html.haml +6 -0
- data/app/views/zencms/shared/_block_categories.html.haml +6 -0
- data/app/views/zencms/shared/_block_tags.html.haml +7 -0
- data/app/views/zencms/shared/_images_carousel.html.haml +12 -0
- data/config/initializers/act_as_taggable_on.rb +10 -0
- data/config/initializers/friendly_id.rb +88 -0
- data/config/initializers/paperclip_defaults.rb +4 -0
- data/config/initializers/simple_form.rb +145 -0
- data/config/initializers/simple_form_bootstrap.rb +85 -0
- data/config/locales/simple_form.en.yml +26 -0
- data/config/routes.rb +17 -0
- data/db/migrate/20131222153742_create_zencms_posts.rb +15 -0
- data/db/migrate/20131222153810_create_zencms_assets.rb +13 -0
- data/db/migrate/20131222153844_acts_as_taggable_on_migration.rb +31 -0
- data/db/migrate/20131222154013_translate_posts.rb +14 -0
- data/db/migrate/20131222154211_create_friendly_id_slugs.rb +15 -0
- data/db/migrate/20131222161551_create_zencms_post_types.rb +11 -0
- data/db/migrate/20131223090443_create_zencms_menu_items.rb +13 -0
- data/lib/tasks/zencms_tasks.rake +4 -0
- data/lib/templates/erb/scaffold/_form.html.erb +13 -0
- data/lib/zencms.rb +4 -0
- data/lib/zencms/engine.rb +31 -0
- data/lib/zencms/version.rb +3 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20131222160046_create_zencms_posts.zencms.rb +16 -0
- data/test/dummy/db/migrate/20131222160047_create_zencms_assets.zencms.rb +14 -0
- data/test/dummy/db/migrate/20131222160048_acts_as_taggable_on_migration.zencms.rb +31 -0
- data/test/dummy/db/migrate/20131222160049_translate_posts.zencms.rb +15 -0
- data/test/dummy/db/migrate/20131222160050_create_friendly_id_slugs.zencms.rb +16 -0
- data/test/dummy/db/schema.rb +88 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +48 -0
- data/test/dummy/log/test.log +5 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/zencms/assets.yml +11 -0
- data/test/fixtures/zencms/menu_items.yml +11 -0
- data/test/fixtures/zencms/post_types.yml +11 -0
- data/test/fixtures/zencms/posts.yml +11 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/models/zencms/assets_test.rb +9 -0
- data/test/models/zencms/menu_item_test.rb +9 -0
- data/test/models/zencms/post_test.rb +9 -0
- data/test/models/zencms/post_type_test.rb +9 -0
- data/test/test_helper.rb +15 -0
- data/test/zencms_test.rb +7 -0
- metadata +478 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1887e2a32a471969c13c24bda9b4ec221d7b4f2e
|
4
|
+
data.tar.gz: 361b6bf13bc76ba77f6aea8510641b6a0bb3448f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8ba50212fbd29537760df447555fd32d500d98dafc9a906fc07e67ee2a61bdd20b1d7ca95db515abd35216c14578206f09d27d183e5370da31199d7ef1bb00a1
|
7
|
+
data.tar.gz: 6f1aee3518b50987571d52778b7cf4e4885fd3fe09b7874c8a62795e500fa6281c536db6d3b68181d2453a1f09adc55ed727072ee3c790194a319a5b924cac7f
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2013 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Zencms'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
24
|
+
require 'rake/testtask'
|
25
|
+
|
26
|
+
Rake::TestTask.new(:test) do |t|
|
27
|
+
t.libs << 'lib'
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
task default: :test
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# = require jquery
|
2
|
+
# = require jquery_ujs
|
3
|
+
# = require bootstrap
|
4
|
+
# = require soundmanager2/script/soundmanager2-nodebug-jsmin
|
5
|
+
# = require soundmanager2/demo/play-mp3-links/script/inlineplayer
|
6
|
+
# = require ckeditor/ckeditor
|
7
|
+
# = require_tree .
|
8
|
+
|
9
|
+
$('form').on 'click', '.add_fields', (event) ->
|
10
|
+
console.log 'd'
|
11
|
+
event.preventDefault()
|
12
|
+
time = new Date().getTime()
|
13
|
+
regexp = new RegExp($(this).data('id'), 'g')
|
14
|
+
$(this).closest('table').find('tbody').append($(this).data('fields').replace(regexp, time))
|
15
|
+
|
16
|
+
$('form').on 'click', '.remove_fields', (event) ->
|
17
|
+
event.preventDefault()
|
18
|
+
$(this).prev('input[type=hidden]').val('1')
|
19
|
+
$(this).closest('tr').hide()
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_dependency "zencms/application_controller"
|
2
|
+
|
3
|
+
module Zencms
|
4
|
+
module Backend
|
5
|
+
class PostsController < ApplicationController
|
6
|
+
inherit_resources
|
7
|
+
respond_to :html
|
8
|
+
# belongs_to :post_type, :optional => true, :parent_class => PostType
|
9
|
+
has_scope :sticky, :type => :boolean, :default => true
|
10
|
+
has_scope :page, :default => 1
|
11
|
+
# before_filter :authenticate_user!
|
12
|
+
# load_and_authorize_resource
|
13
|
+
|
14
|
+
def update
|
15
|
+
update! do |success, failure|
|
16
|
+
success.html{ redirect_to post_path(resource) }
|
17
|
+
failure.html{ render action: "edit" }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def create
|
22
|
+
@post = build_resource
|
23
|
+
@post.user = current_user
|
24
|
+
create! do |success, failure|
|
25
|
+
success.html{ redirect_to post_path(@post) }
|
26
|
+
failure.html{ render action: "new" }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
def permitted_params
|
32
|
+
params.permit!
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_dependency "zencms/application_controller"
|
2
|
+
|
3
|
+
module Zencms
|
4
|
+
class PostsController < ApplicationController
|
5
|
+
inherit_resources
|
6
|
+
before_action :set_posts_by_month, only: [:index, :show, :archive, :tag, :category]
|
7
|
+
has_scope :published, :type => :boolean, :default => true
|
8
|
+
respond_to :html
|
9
|
+
|
10
|
+
|
11
|
+
def category
|
12
|
+
@category = ActsAsTaggableOn::Tag.friendly.find(params[:category])
|
13
|
+
@posts ||= end_of_association_chain.tagged_with(@category, on: :categories)
|
14
|
+
render :action => 'index'
|
15
|
+
end
|
16
|
+
|
17
|
+
def tag
|
18
|
+
@tag = ActsAsTaggableOn::Tag.friendly.find(params[:tag])
|
19
|
+
@posts ||= end_of_association_chain.tagged_with(@tag, on: :tags)
|
20
|
+
render :action => 'index'
|
21
|
+
end
|
22
|
+
|
23
|
+
def archive
|
24
|
+
@posts ||= end_of_association_chain.from_month(Time.parse "#{params[:month]}/#{params[:year]}").published
|
25
|
+
render :action => 'index'
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def set_posts_by_month
|
30
|
+
@posts_by_month = Post.published.group_by { |t| t.created_at.beginning_of_month}
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Zencms
|
2
|
+
module ApplicationHelper
|
3
|
+
|
4
|
+
def link_to_add_fields(name, f, association)
|
5
|
+
new_object = f.object.send(association).klass.new
|
6
|
+
id = new_object.object_id
|
7
|
+
fields = f.fields_for(association, new_object, child_index: id) do |builder|
|
8
|
+
render(association.to_s.singularize + "_fields", f: builder)
|
9
|
+
end
|
10
|
+
link_to(name, '#', class: "add_fields btn btn-default", data: {id: id, fields: fields.gsub("\n", "")})
|
11
|
+
end
|
12
|
+
|
13
|
+
def main_column_class
|
14
|
+
if content_for? :sidebar_first
|
15
|
+
'col-md-9'
|
16
|
+
else
|
17
|
+
'col-md-12'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def active_class(path)
|
22
|
+
"active" if current_page?(path)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Zencms
|
2
|
+
module MenuItemsHelper
|
3
|
+
|
4
|
+
def menu_link(menu_item)
|
5
|
+
if menu_item.menuable.present?
|
6
|
+
link_to menu_item.name, menu_item.menuable, title: "Link to #{menu_item.name}"
|
7
|
+
elsif menu_item.url?
|
8
|
+
link_to menu_item.name, menu_item.url, title: "Link to #{menu_item.name}"
|
9
|
+
else
|
10
|
+
link_to menu_item.name, '#', title: "Link to #{menu_item.name}"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Zencms
|
2
|
+
module PostsHelper
|
3
|
+
|
4
|
+
def post_teaser(post, length)
|
5
|
+
truncate_html(post.body, :length => length, :omission => link_to(' [...]', post, :title => "read more"))
|
6
|
+
end
|
7
|
+
|
8
|
+
def post_grid_images(post)
|
9
|
+
content_tag :div, class: 'row', :'data-clearing' => true do
|
10
|
+
content_tag_for :div, post.images, class: 'col-md-3' do |image|
|
11
|
+
concat link_to(image_tag(image.url(:small), :'data-caption' => image.title), image.url(:original), class: 'thumbnail')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def post_audios(post)
|
17
|
+
content_tag :ul, class: 'flat' do
|
18
|
+
content_tag_for :li, post.audios do |audio|
|
19
|
+
concat link_to audio.title, audio.url, class: 'sm2_link'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def post_categories(post)
|
25
|
+
content_tag :ul, class: 'list-inline' do
|
26
|
+
content_tag_for :li, post.categories do |category|
|
27
|
+
concat link_to category, category_posts_path(category), class: 'label label-info'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def post_tags(post)
|
33
|
+
content_tag :ul, class: 'list-inline' do
|
34
|
+
content_tag_for :li, post.tags do |tag|
|
35
|
+
concat link_to tag, tag_posts_path(tag), class: 'label label-default'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Zencms
|
2
|
+
class Asset < ActiveRecord::Base
|
3
|
+
# Associations
|
4
|
+
belongs_to :assetable, :polymorphic => true
|
5
|
+
delegate :url, :to => :attachment
|
6
|
+
# Callbacks
|
7
|
+
before_create :default_title
|
8
|
+
|
9
|
+
def default_title
|
10
|
+
self.title ||= File.basename(attachment_file_name, '.*').titleize if attachment
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Zencms
|
2
|
+
class Post < ActiveRecord::Base
|
3
|
+
# Scopes
|
4
|
+
default_scope { order('created_at DESC') }
|
5
|
+
scope :sticky, -> { order('sticky DESC') }
|
6
|
+
scope :published, -> { where(:published => true) }
|
7
|
+
scope :frontpage, -> { where(frontpage: true) }
|
8
|
+
scope :from_month, lambda { |month| where(:created_at => month..(month + 1.month)) }
|
9
|
+
scope :next, lambda {|id| where("id > ?",id).order("id ASC") }
|
10
|
+
scope :previous, lambda {|id| where("id < ?",id).order("id DESC") }
|
11
|
+
|
12
|
+
# Associations
|
13
|
+
belongs_to :post_type
|
14
|
+
belongs_to :user
|
15
|
+
has_one :menu_item, as: :menuable, dependent: :destroy
|
16
|
+
has_many :images, as: :assetable, class_name: "Post::Image", dependent: :destroy
|
17
|
+
has_many :audios, as: :assetable, class_name: "Post::Audio", dependent: :destroy
|
18
|
+
|
19
|
+
accepts_nested_attributes_for :images, allow_destroy: true, :reject_if => proc { |attributes| attributes['attachment'].blank? }
|
20
|
+
accepts_nested_attributes_for :audios, allow_destroy: true, :reject_if => proc { |attributes| attributes['attachment'].blank? }
|
21
|
+
accepts_nested_attributes_for :menu_item, allow_destroy: true, :reject_if => proc { |attributes| attributes['name'].blank? }
|
22
|
+
|
23
|
+
# Delegation
|
24
|
+
delegate :username, :to => :user
|
25
|
+
|
26
|
+
# Validations
|
27
|
+
validates :title, presence: true
|
28
|
+
|
29
|
+
# Gem
|
30
|
+
paginates_per 12
|
31
|
+
acts_as_taggable_on :tags, :categories
|
32
|
+
translates :title, :body
|
33
|
+
|
34
|
+
def to_param
|
35
|
+
"#{id}-#{title}".parameterize
|
36
|
+
end
|
37
|
+
|
38
|
+
def next
|
39
|
+
Post.next(self.id).first
|
40
|
+
end
|
41
|
+
|
42
|
+
def previous
|
43
|
+
Post.previous(self.id).first
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module Zencms
|
2
|
+
class Post::Audio < Asset
|
3
|
+
has_attached_file :attachment
|
4
|
+
|
5
|
+
validates_attachment_size :attachment, :less_than => 20.megabytes
|
6
|
+
validates_attachment_content_type :attachment, :content_type => [ 'application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3', 'audio/aiff', 'audio/wav', 'audio/x-wav' ]
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module Zencms
|
2
|
+
class Post::Image < Asset
|
3
|
+
has_attached_file :attachment,
|
4
|
+
:styles => { :large => "1024x1024>", :medium => "480x320>", :small => "320x240#", :thumb => "48x48#"}
|
5
|
+
validates_attachment_size :attachment, :less_than => 2.megabytes
|
6
|
+
validates_attachment_content_type :attachment, :content_type => ['image/jpeg', 'image/png', 'image/gif']
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
!!!
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%meta{:charset => "utf-8"}
|
5
|
+
%meta{:content => "IE=edge", "http-equiv" => "X-UA-Compatible"}
|
6
|
+
%title
|
7
|
+
%meta{:content => "", :name => "description"}
|
8
|
+
%meta{:content => "width=device-width, initial-scale=1", :name => "viewport"}
|
9
|
+
= csrf_meta_tags
|
10
|
+
= stylesheet_link_tag "zencms/application", media: "all", "data-turbolinks-track" => true
|
11
|
+
%body
|
12
|
+
#page
|
13
|
+
%header#header{:role => 'banner'}
|
14
|
+
%nav.navbar.navbar-inverse.navbar-static-top{role: 'navigation'}
|
15
|
+
.navbar-header
|
16
|
+
=link_to 'Rails4 Blog engine', zencms.root_path, class: 'navbar-brand'
|
17
|
+
.collapse.navbar-collapse
|
18
|
+
%ul.nav.navbar-nav
|
19
|
+
- Zencms::MenuItem.all.where(menu: 'Primary').includes(:menuable).each do |menu_item|
|
20
|
+
%li= menu_link(menu_item)
|
21
|
+
|
22
|
+
#main
|
23
|
+
#main-inner.container
|
24
|
+
= content_tag(:div, flash.notice, :class => "alert alert-info") if flash.notice
|
25
|
+
= content_tag(:div, flash.alert, :class => "alert alert-danger") if flash.alert
|
26
|
+
= content_tag(:h1, yield(:page_title), id: 'page-title', class: 'page-header') if content_for? :page_title
|
27
|
+
.row
|
28
|
+
= content_tag(:section, yield, :role => 'main', id: 'main-content', class: main_column_class)
|
29
|
+
= content_tag(:section, yield(:sidebar_first), id: 'sidebar-second', class: 'col-md-3') if content_for? :sidebar_first
|
30
|
+
|
31
|
+
%footer#footer{:role => 'contentinfo'}
|
32
|
+
#footer-inner.container
|
33
|
+
%p © 2014 Exakat
|
34
|
+
|
35
|
+
= javascript_include_tag "zencms/application", "data-turbolinks-track" => true
|
@@ -0,0 +1,14 @@
|
|
1
|
+
%tr
|
2
|
+
- unless f.object.new_record?
|
3
|
+
%td
|
4
|
+
= link_to f.object.attachment_file_name, f.object.url
|
5
|
+
%td
|
6
|
+
= f.hidden_field :id
|
7
|
+
= f.input :title, label_html: {class: 'hidden'}
|
8
|
+
%td
|
9
|
+
= f.hidden_field :_destroy
|
10
|
+
= link_to raw("<i class='fa fa-trash-o'></i> Remove"), '#', class: "remove_fields btn btn-danger"
|
11
|
+
- else
|
12
|
+
%td{colspan: 3}
|
13
|
+
= f.hidden_field :id
|
14
|
+
= f.input :attachment
|
@@ -0,0 +1,53 @@
|
|
1
|
+
= simple_form_for [:backend, resource] do |f|
|
2
|
+
= f.error_notification
|
3
|
+
.row
|
4
|
+
.col-md-9
|
5
|
+
= f.input :title
|
6
|
+
= f.input :body, input_html: {class: 'ckeditor'}
|
7
|
+
|
8
|
+
%table.table.table-bordered.table-condensed
|
9
|
+
%thead
|
10
|
+
%tr
|
11
|
+
%th Thumbnail
|
12
|
+
%th Image caption
|
13
|
+
%th Operation
|
14
|
+
%tbody
|
15
|
+
= f.simple_fields_for :images do |builder|
|
16
|
+
= render 'image_fields', f: builder
|
17
|
+
%tfoot
|
18
|
+
%tr
|
19
|
+
%th.align-left{colspan: 3}= link_to_add_fields "Add Image", f, :images
|
20
|
+
|
21
|
+
%table.table.table-bordered.table-condensed
|
22
|
+
%thead
|
23
|
+
%tr
|
24
|
+
%th Audio
|
25
|
+
%th Audio title
|
26
|
+
%th Operation
|
27
|
+
%tbody
|
28
|
+
= f.simple_fields_for :audios do |builder|
|
29
|
+
= render 'audio_fields', f: builder
|
30
|
+
%tfoot
|
31
|
+
%tr
|
32
|
+
%th.align-left{colspan: 3}= link_to_add_fields "Add Audio", f, :audios
|
33
|
+
|
34
|
+
.col-md-3
|
35
|
+
%fieldset
|
36
|
+
%legend Vocabularies
|
37
|
+
= f.input :category_list, label: 'Categories'
|
38
|
+
= f.input :tag_list, label: 'Tags'
|
39
|
+
|
40
|
+
%fieldset
|
41
|
+
%legend Promotion options
|
42
|
+
= f.input :published
|
43
|
+
= f.input :frontpage
|
44
|
+
= f.input :sticky
|
45
|
+
|
46
|
+
%fieldset
|
47
|
+
%legend Menu option
|
48
|
+
-resource.build_menu_item if resource.menu_item.blank?
|
49
|
+
= f.simple_fields_for :menu_item do |menu_item|
|
50
|
+
= menu_item.input :menu, collection: Zencms::MenuItem::MENUS, include_blank: false
|
51
|
+
= menu_item.input :name
|
52
|
+
|
53
|
+
= f.button :submit
|