zencms 0.0.1
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.
- 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
|