postablr 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.
- data/MIT-LICENSE +20 -0
- data/README.md +22 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/postablr/application.js +15 -0
- data/app/assets/javascripts/postablr/blog.js +2 -0
- data/app/assets/javascripts/postablr/entries.js +2 -0
- data/app/assets/stylesheets/postablr/application.css +13 -0
- data/app/assets/stylesheets/postablr/blog.css +4 -0
- data/app/assets/stylesheets/postablr/entries.css +4 -0
- data/app/controllers/postablr/application_controller.rb +4 -0
- data/app/controllers/postablr/blog_controller.rb +21 -0
- data/app/controllers/postablr/entries_controller.rb +43 -0
- data/app/helpers/postablr/application_helper.rb +4 -0
- data/app/helpers/postablr/blog_helper.rb +27 -0
- data/app/helpers/postablr/entries_helper.rb +4 -0
- data/app/helpers/postablr/truncate_html_helper.rb +52 -0
- data/app/models/postablr/ar_publish.rb +172 -0
- data/app/models/postablr/entry.rb +37 -0
- data/app/models/postablr/entry/audio.rb +23 -0
- data/app/models/postablr/entry/image.rb +17 -0
- data/app/models/postablr/entry/link.rb +8 -0
- data/app/models/postablr/entry/post.rb +8 -0
- data/app/models/postablr/entry/quote.rb +7 -0
- data/app/models/postablr/entry/video.rb +29 -0
- data/app/uploaders/entry_audio_uploader.rb +55 -0
- data/app/uploaders/entry_photo_uploader.rb +42 -0
- data/app/views/layouts/postablr/application.html.erb +14 -0
- data/app/views/postablr/blog/_entry_display.haml +3 -0
- data/app/views/postablr/blog/comments/_comment.haml +10 -0
- data/app/views/postablr/blog/comments/_form.haml +6 -0
- data/app/views/postablr/blog/comments/create.js.haml +5 -0
- data/app/views/postablr/blog/comments/new.html.haml +0 -0
- data/app/views/postablr/blog/comments/new.js.haml +2 -0
- data/app/views/postablr/blog/entries/show.haml +39 -0
- data/app/views/postablr/blog/show.html.haml +46 -0
- data/app/views/postablr/blog/show/_aside.haml +19 -0
- data/app/views/postablr/blog/show/_audio.haml +13 -0
- data/app/views/postablr/blog/show/_image.haml +13 -0
- data/app/views/postablr/blog/show/_link.haml +11 -0
- data/app/views/postablr/blog/show/_post.haml +14 -0
- data/app/views/postablr/blog/show/_quote.haml +12 -0
- data/app/views/postablr/blog/show/_video.haml +16 -0
- data/app/views/postablr/entries/_entries_menu.haml +14 -0
- data/app/views/postablr/entries/_entry.haml +4 -0
- data/app/views/postablr/entries/_form.haml +58 -0
- data/app/views/postablr/entries/edit.haml +1 -0
- data/app/views/postablr/entries/fields/_audio.haml +4 -0
- data/app/views/postablr/entries/fields/_image.haml +2 -0
- data/app/views/postablr/entries/fields/_link.haml +3 -0
- data/app/views/postablr/entries/fields/_post.haml +3 -0
- data/app/views/postablr/entries/fields/_quote.haml +3 -0
- data/app/views/postablr/entries/fields/_video.haml +2 -0
- data/app/views/postablr/entries/index.html.haml +11 -0
- data/app/views/postablr/entries/index.js.haml +2 -0
- data/app/views/postablr/entries/list/_audio.haml +14 -0
- data/app/views/postablr/entries/list/_image.haml +12 -0
- data/app/views/postablr/entries/list/_link.haml +11 -0
- data/app/views/postablr/entries/list/_post.haml +14 -0
- data/app/views/postablr/entries/list/_quote.haml +11 -0
- data/app/views/postablr/entries/list/_video.haml +17 -0
- data/app/views/postablr/entries/new.html.haml +2 -0
- data/app/views/postablr/entries/show.html.haml +5 -0
- data/config/routes.rb +20 -0
- data/db/migrate/20121222195404_create_postablr_entries.rb +18 -0
- data/db/migrate/20121222195417_create_postablr_entry_videos.rb +16 -0
- data/db/migrate/20121222200141_create_postablr_entry_quotes.rb +10 -0
- data/db/migrate/20121222200237_create_postablr_entry_posts.rb +10 -0
- data/db/migrate/20121222200303_create_postablr_entry_links.rb +10 -0
- data/db/migrate/20121222200402_create_postablr_entry_images.rb +12 -0
- data/db/migrate/20121222200810_create_postablr_entry_audios.rb +12 -0
- data/lib/postablr.rb +4 -0
- data/lib/postablr/engine.rb +11 -0
- data/lib/postablr/version.rb +3 -0
- data/lib/tasks/postablr_tasks.rake +4 -0
- data/test/factories/postablr_entries.rb +16 -0
- data/test/factories/postablr_entry_audios.rb +9 -0
- data/test/factories/postablr_entry_images.rb +10 -0
- data/test/factories/postablr_entry_links.rb +8 -0
- data/test/factories/postablr_entry_posts.rb +9 -0
- data/test/factories/postablr_entry_quotes.rb +8 -0
- data/test/factories/postablr_entry_videos.rb +14 -0
- metadata +358 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Postablr
|
|
2
|
+
class Entry < ActiveRecord::Base
|
|
3
|
+
attr_accessible :comments_enabled, :content_source, :highlight,
|
|
4
|
+
:is_published, :postable_id, :postable_type, :publish_at, :slug,
|
|
5
|
+
:unpublish_at, :user_id, :postable_attributes
|
|
6
|
+
|
|
7
|
+
belongs_to :user
|
|
8
|
+
belongs_to :postable, :polymorphic => true , :dependent=>:destroy , :touch => true
|
|
9
|
+
|
|
10
|
+
#has_many :comments, :as=>:commentable , :class_name=>Forum::Comment
|
|
11
|
+
|
|
12
|
+
accepts_nested_attributes_for :postable, :reject_if => :all_blank, :allow_destroy => true
|
|
13
|
+
|
|
14
|
+
after_initialize :defaults
|
|
15
|
+
|
|
16
|
+
acts_as_taggable
|
|
17
|
+
|
|
18
|
+
include Postablr::ArPublish
|
|
19
|
+
publish_control :publish_by_default => false
|
|
20
|
+
|
|
21
|
+
def categories_list
|
|
22
|
+
categories.map(&:name).join(", ")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def defaults
|
|
26
|
+
return unless new_record?
|
|
27
|
+
self.comments_enabled = true
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def postable_name
|
|
32
|
+
postable.class.table_name.split("_")[2].singularize
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Postablr
|
|
2
|
+
class Entry::Audio < ActiveRecord::Base
|
|
3
|
+
attr_accessible :file, :file_content_type, :file_size
|
|
4
|
+
has_one :entry, :as => :postable
|
|
5
|
+
mount_uploader :file, EntryAudioUploader
|
|
6
|
+
validates_presence_of :file
|
|
7
|
+
attr_accessor :content_type, :filename, :size
|
|
8
|
+
|
|
9
|
+
#validates_presence_of :title
|
|
10
|
+
|
|
11
|
+
def path=(value)
|
|
12
|
+
logger.info value
|
|
13
|
+
uploaded_file = CarrierWave::SanitizedFile.new :tempfile => value,
|
|
14
|
+
:filename => filename,
|
|
15
|
+
:content_type => content_type
|
|
16
|
+
self.file = uploaded_file
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def audio_title
|
|
20
|
+
title.blank? ? File.basename( file.url ) : title
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Postablr
|
|
2
|
+
class Entry::Image < ActiveRecord::Base
|
|
3
|
+
attr_accessible :body, :photo, :photo_content_type, :photo_size
|
|
4
|
+
has_one :entry, :as => :postable
|
|
5
|
+
mount_uploader :photo, EntryPhotoUploader
|
|
6
|
+
validates_presence_of :photo
|
|
7
|
+
attr_accessor :filename
|
|
8
|
+
|
|
9
|
+
def path=(value)
|
|
10
|
+
uploaded_file = CarrierWave::SanitizedFile.new :tempfile => value,
|
|
11
|
+
:filename => filename,
|
|
12
|
+
:content_type => photo_content_type
|
|
13
|
+
self.photo = uploaded_file
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Postablr
|
|
2
|
+
class Entry::Video < ActiveRecord::Base
|
|
3
|
+
attr_accessible :download_url, :duration,
|
|
4
|
+
:embed_url, :flv, :service,
|
|
5
|
+
:thumbnail, :title, :embed_html,
|
|
6
|
+
:url
|
|
7
|
+
|
|
8
|
+
has_one :entry, :as => :postable
|
|
9
|
+
attr_accessor :url
|
|
10
|
+
before_save :check_video
|
|
11
|
+
|
|
12
|
+
def check_video
|
|
13
|
+
v = UnvlogIt.new(self.url)
|
|
14
|
+
self.title = v.title
|
|
15
|
+
self.thumbnail = v.thumbnail
|
|
16
|
+
self.embed_url = v.embed_url
|
|
17
|
+
self.duration = v.duration
|
|
18
|
+
self.download_url = v.download_url
|
|
19
|
+
self.embed_html = v.embed_html("100%", "600")
|
|
20
|
+
self.flv = v.flv
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def embed(width, height, options={})
|
|
24
|
+
embed_html(width=425, height=344, options={})
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
class EntryAudioUploader < CarrierWave::Uploader::Base
|
|
4
|
+
|
|
5
|
+
# Include RMagick or MiniMagick support:
|
|
6
|
+
# include CarrierWave::RMagick
|
|
7
|
+
include CarrierWave::MiniMagick
|
|
8
|
+
|
|
9
|
+
# Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
|
|
10
|
+
# include Sprockets::Helpers::RailsHelper
|
|
11
|
+
# include Sprockets::Helpers::IsolatedHelper
|
|
12
|
+
|
|
13
|
+
# Choose what kind of storage to use for this uploader:
|
|
14
|
+
storage :file
|
|
15
|
+
# storage :fog
|
|
16
|
+
|
|
17
|
+
# Override the directory where uploaded files will be stored.
|
|
18
|
+
# This is a sensible default for uploaders that are meant to be mounted:
|
|
19
|
+
def store_dir
|
|
20
|
+
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Provide a default URL as a default if there hasn't been a file uploaded:
|
|
24
|
+
# def default_url
|
|
25
|
+
# # For Rails 3.1+ asset pipeline compatibility:
|
|
26
|
+
# # asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
|
|
27
|
+
#
|
|
28
|
+
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
|
29
|
+
# end
|
|
30
|
+
|
|
31
|
+
# Process files as they are uploaded:
|
|
32
|
+
# process :scale => [200, 300]
|
|
33
|
+
#
|
|
34
|
+
# def scale(width, height)
|
|
35
|
+
# # do something
|
|
36
|
+
# end
|
|
37
|
+
|
|
38
|
+
# Create different versions of your uploaded files:
|
|
39
|
+
# version :thumb do
|
|
40
|
+
# process :scale => [50, 50]
|
|
41
|
+
# end
|
|
42
|
+
|
|
43
|
+
# Add a white list of extensions which are allowed to be uploaded.
|
|
44
|
+
# For images you might use something like this:
|
|
45
|
+
def extension_white_list
|
|
46
|
+
%w(mp3)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Override the filename of the uploaded files:
|
|
50
|
+
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
|
51
|
+
# def filename
|
|
52
|
+
# "something.jpg" if original_filename
|
|
53
|
+
# end
|
|
54
|
+
|
|
55
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
class EntryPhotoUploader < CarrierWave::Uploader::Base
|
|
4
|
+
|
|
5
|
+
# Include RMagick or MiniMagick support:
|
|
6
|
+
# include CarrierWave::RMagick
|
|
7
|
+
include CarrierWave::MiniMagick
|
|
8
|
+
|
|
9
|
+
# Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
|
|
10
|
+
# include Sprockets::Helpers::RailsHelper
|
|
11
|
+
# include Sprockets::Helpers::IsolatedHelper
|
|
12
|
+
|
|
13
|
+
# Choose what kind of storage to use for this uploader:
|
|
14
|
+
storage :file
|
|
15
|
+
# storage :fog
|
|
16
|
+
|
|
17
|
+
# Override the directory where uploaded files will be stored.
|
|
18
|
+
# This is a sensible default for uploaders that are meant to be mounted:
|
|
19
|
+
def store_dir
|
|
20
|
+
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Create different versions of your uploaded files:
|
|
24
|
+
version :square do
|
|
25
|
+
process :resize_to_fill => [50, 50]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
version :thumb_large do
|
|
29
|
+
process :resize_to_fill => [216, 144]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
version :large do
|
|
33
|
+
process :resize_to_fit => [620, 360]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Add a white list of extensions which are allowed to be uploaded.
|
|
37
|
+
# For images you might use something like this:
|
|
38
|
+
def extension_white_list
|
|
39
|
+
%w(jpg jpeg gif png)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>Postablr</title>
|
|
5
|
+
<%= stylesheet_link_tag "postablr/application", :media => "all" %>
|
|
6
|
+
<%= javascript_include_tag "postablr/application" %>
|
|
7
|
+
<%= csrf_meta_tags %>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
|
|
11
|
+
<%= yield %>
|
|
12
|
+
|
|
13
|
+
</body>
|
|
14
|
+
</html>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
- cache("CommentPartial-#{comment.id}") do
|
|
2
|
+
%li{:id=>"entry-comment-#{comment.id}"}
|
|
3
|
+
= image_tag comment.user.profile.avatar.url(:thumb)
|
|
4
|
+
.comment_data
|
|
5
|
+
%h5
|
|
6
|
+
= comment.user.name
|
|
7
|
+
%span.metadata
|
|
8
|
+
= l( comment.created_at, :format=>:short)
|
|
9
|
+
.comment
|
|
10
|
+
= comment.body
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
%section.publications
|
|
2
|
+
- unless @entry.postable.blank?
|
|
3
|
+
-#= link_to "Edit", edit_entry_path(@entry)
|
|
4
|
+
-#= link_to "Delete", entry_path(@entry), :method=>:delete, :confirm=>"Are you sure?"
|
|
5
|
+
|
|
6
|
+
= render "blog/show/#{@entry.postable.class.to_s.underscore.split('/')[1]}", :postable => @entry.postable
|
|
7
|
+
|
|
8
|
+
.tags
|
|
9
|
+
Tags:
|
|
10
|
+
= raw @entry.tags.collect{|o| link_to o.name, blog_tag_path(o.name)}.join(", ")
|
|
11
|
+
|
|
12
|
+
.col_system.col.fluid.comments_system
|
|
13
|
+
.col.medium
|
|
14
|
+
%h2
|
|
15
|
+
Comentarios
|
|
16
|
+
%span#comments_count= @entry.comments.size
|
|
17
|
+
|
|
18
|
+
%ul#entry_comments
|
|
19
|
+
= render :partial=>'blog/comments/comment', :collection=>@entry.comments , :as=>:comment
|
|
20
|
+
#comment_form
|
|
21
|
+
- if @entry.comments_enabled?
|
|
22
|
+
= render 'blog/comments/form'
|
|
23
|
+
- else
|
|
24
|
+
= t("comments_disabled")
|
|
25
|
+
.col.small.help
|
|
26
|
+
%h4
|
|
27
|
+
Ayuda
|
|
28
|
+
.help.guideline
|
|
29
|
+
%p
|
|
30
|
+
Este es un espacio para la sana convivencia, por favor respeta los lineamientos de la comunidad al momento de participar.
|
|
31
|
+
%p
|
|
32
|
+
Puedes utilizar algo de HTML para enriquecer tus comentarios
|
|
33
|
+
%aside
|
|
34
|
+
|
|
35
|
+
- unless @relateds
|
|
36
|
+
.hentry_related
|
|
37
|
+
%h2 Related
|
|
38
|
+
- @relateds.each do |entry|
|
|
39
|
+
= link_to entry.postable.title , blog_entry_path( entry ), :class=>"pjax"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
.page_header
|
|
2
|
+
%h1 Publicaciones
|
|
3
|
+
%p
|
|
4
|
+
Blog
|
|
5
|
+
%span.icons.mini ▻
|
|
6
|
+
|
|
7
|
+
%div.col_system.col.fluid
|
|
8
|
+
%div.col.medium
|
|
9
|
+
|
|
10
|
+
%section.publications
|
|
11
|
+
%ul#masonry_reload.publication_stream.wide
|
|
12
|
+
= render :partial=> 'postablr/blog/entry_display', :collection=> @entries, :as=> :entry
|
|
13
|
+
|
|
14
|
+
%nav.pagination.publication_paginator
|
|
15
|
+
= paginate @entries #, :remote => true
|
|
16
|
+
|
|
17
|
+
%div.col.small.help
|
|
18
|
+
%h4
|
|
19
|
+
%span.icons.mini.circle.magenta 
|
|
20
|
+
Most used Tags
|
|
21
|
+
%ul.topics
|
|
22
|
+
- cache("BlogPopularTags", :expires_in=>1.hour) do
|
|
23
|
+
- Postablr::Entry.tag_counts_on(:tags).limit(16).each do |tag|
|
|
24
|
+
%li
|
|
25
|
+
%span.icons.small 
|
|
26
|
+
= link_to("#{tag.name} (#{tag.count})", blog_tag_path(tag.name), :class=>"pjax")
|
|
27
|
+
|
|
28
|
+
%h4
|
|
29
|
+
%span.icons.mini.circle.magenta 
|
|
30
|
+
Filter publications
|
|
31
|
+
%ul
|
|
32
|
+
%li
|
|
33
|
+
Published types
|
|
34
|
+
%ul
|
|
35
|
+
%li
|
|
36
|
+
= link_to "Texto", filter_blog_path("post")
|
|
37
|
+
%li
|
|
38
|
+
= link_to "Imagen", filter_blog_path("image")
|
|
39
|
+
%li
|
|
40
|
+
= link_to "Cita", filter_blog_path("quote")
|
|
41
|
+
%li
|
|
42
|
+
= link_to "Libro", filter_blog_path("ebook")
|
|
43
|
+
%li
|
|
44
|
+
= link_to "Audio", filter_blog_path("audio")
|
|
45
|
+
%li
|
|
46
|
+
= link_to "Video", filter_blog_path("video")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
%div.col.small.help
|
|
2
|
+
%aside
|
|
3
|
+
%h4
|
|
4
|
+
Sobre el autor
|
|
5
|
+
.hentry_metadata
|
|
6
|
+
-#= image_tag( postable.entry.user.profile.avatar.url(:thumb), :style=>"width:50px" )
|
|
7
|
+
%h5
|
|
8
|
+
-#= postable.entry.user.name
|
|
9
|
+
.bio
|
|
10
|
+
-#= postable.entry.user.profile.bio
|
|
11
|
+
%h4
|
|
12
|
+
Comparte esto
|
|
13
|
+
.addthis_toolbox.addthis_default_style
|
|
14
|
+
%a.addthis_button_facebook_like{"fb:like:layout" => "button_count"}
|
|
15
|
+
%a.addthis_button_tweet
|
|
16
|
+
%a.addthis_counter.addthis_pill_style
|
|
17
|
+
%script{:src => "http://s7.addthis.com/js/250/addthis_widget.js#pubid=panchoavila", :type => "text/javascript"}
|
|
18
|
+
|
|
19
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
%li.article.video
|
|
2
|
+
.article_video
|
|
3
|
+
= raw postable.body
|
|
4
|
+
.article_meta
|
|
5
|
+
%span.meta.kind Audio
|
|
6
|
+
%ul.playlist
|
|
7
|
+
%li
|
|
8
|
+
%a{ :href=>"#{postable.file.url}"}= postable.audio_title
|
|
9
|
+
%span.meta.author
|
|
10
|
+
= postable.entry.user.name
|
|
11
|
+
|
|
12
|
+
= render :partial=>'postablr/blog/show/aside', :locals=>{:postable=>postable}
|
|
13
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
%li.article.photo
|
|
2
|
+
= image_tag postable.photo.url(:large)
|
|
3
|
+
.article_meta
|
|
4
|
+
%span.meta.kind Imagen
|
|
5
|
+
%h3
|
|
6
|
+
= raw clean_html( postable.body )
|
|
7
|
+
%span.meta.author
|
|
8
|
+
Por
|
|
9
|
+
= postable.entry.user.name
|
|
10
|
+
|
|
11
|
+
.article_text
|
|
12
|
+
%p= raw sanitize_relaxed(postable.body)
|
|
13
|
+
= render :partial=>'postablr/blog/show/aside', :locals=>{:postable=>postable}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
%li.article.link
|
|
2
|
+
.article_meta
|
|
3
|
+
%span.meta.kind Enlace
|
|
4
|
+
%h3
|
|
5
|
+
%a{:href => "#{postable.url}"}="#{postable.title} →"
|
|
6
|
+
%span.meta.author
|
|
7
|
+
Por
|
|
8
|
+
= postable.entry.user.name
|
|
9
|
+
|
|
10
|
+
= render :partial=>'postablr/blog/show/aside', :locals=>{:postable=>postable}
|
|
11
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
%div.col_system.col.fluid
|
|
2
|
+
%div.col.medium
|
|
3
|
+
%article.hentry
|
|
4
|
+
%h2.entry-title
|
|
5
|
+
= postable.title
|
|
6
|
+
%p.byline.author.vcard
|
|
7
|
+
%span.meta.kind Post
|
|
8
|
+
By
|
|
9
|
+
%span.fn
|
|
10
|
+
= postable.entry.user.name
|
|
11
|
+
.entry-content
|
|
12
|
+
= raw sanitize_relaxed( postable.body )
|
|
13
|
+
|
|
14
|
+
= render :partial=>'postablr/blog/show/aside', :locals=>{:postable=>postable}
|