kublog 0.0.1.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/.gitignore +9 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +177 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +102 -0
- data/Rakefile +39 -0
- data/app/assets/images/kublog/.gitkeep +0 -0
- data/app/assets/images/kublog/missing_image.png +0 -0
- data/app/assets/javascripts/kublog/application.js +13 -0
- data/app/assets/javascripts/kublog/categories.js.coffee +48 -0
- data/app/assets/javascripts/kublog/comments.js.coffee +30 -0
- data/app/assets/javascripts/kublog/email.js.coffee +32 -0
- data/app/assets/javascripts/kublog/images.js.coffee +77 -0
- data/app/assets/javascripts/kublog/posts.js.coffee +44 -0
- data/app/assets/javascripts/kublog/shared.js.coffee.erb +19 -0
- data/app/assets/javascripts/kublog/wysiwyg.controls.js.coffee +68 -0
- data/app/assets/plugins/kublog/ajaxyupload/images/ajax-loader.gif +0 -0
- data/app/assets/plugins/kublog/ajaxyupload/javascripts/jquery.ajaxyupload.js +126 -0
- data/app/assets/plugins/kublog/fancybox/images/blank.gif +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_close.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_loading.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_nav_left.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_nav_right.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_shadow_e.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_shadow_n.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_shadow_ne.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_shadow_nw.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_shadow_s.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_shadow_se.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_shadow_sw.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_shadow_w.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_title_left.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_title_main.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_title_over.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancy_title_right.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancybox-x.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancybox-y.png +0 -0
- data/app/assets/plugins/kublog/fancybox/images/fancybox.png +0 -0
- data/app/assets/plugins/kublog/fancybox/javascripts/fancybox-1.3.4.js +46 -0
- data/app/assets/plugins/kublog/fancybox/stylesheets/fancybox-1.3.4.css +359 -0
- data/app/assets/plugins/kublog/livequery/javascripts/jquery.livequery.js +250 -0
- data/app/assets/plugins/kublog/wysiwyg/images/ajax-loader.gif +0 -0
- data/app/assets/plugins/kublog/wysiwyg/images/jquery.wysiwyg.bg.png +0 -0
- data/app/assets/plugins/kublog/wysiwyg/images/jquery.wysiwyg.gif +0 -0
- data/app/assets/plugins/kublog/wysiwyg/images/jquery.wysiwyg.jpg +0 -0
- data/app/assets/plugins/kublog/wysiwyg/images/jquery.wysiwyg.no-alpha.gif +0 -0
- data/app/assets/plugins/kublog/wysiwyg/javascripts/jquery.wysiwyg.js +2377 -0
- data/app/assets/plugins/kublog/wysiwyg/javascripts/wysiwyg.image.js +284 -0
- data/app/assets/plugins/kublog/wysiwyg/javascripts/wysiwyg.link.js +249 -0
- data/app/assets/plugins/kublog/wysiwyg/stylesheets/jquery.wysiwyg.css +94 -0
- data/app/assets/stylesheets/kublog/application.css +9 -0
- data/app/assets/stylesheets/kublog/categories.css +4 -0
- data/app/assets/stylesheets/kublog/comments.css +4 -0
- data/app/assets/stylesheets/kublog/email.css +7 -0
- data/app/assets/stylesheets/kublog/images.css +41 -0
- data/app/assets/stylesheets/kublog/posts.css +39 -0
- data/app/controllers/kublog/application_controller.rb +12 -0
- data/app/controllers/kublog/categories_controller.rb +47 -0
- data/app/controllers/kublog/comments_controller.rb +37 -0
- data/app/controllers/kublog/images_controller.rb +44 -0
- data/app/controllers/kublog/posts_controller.rb +66 -0
- data/app/helpers/kublog/application_helper.rb +4 -0
- data/app/helpers/kublog/posts_helper.rb +38 -0
- data/app/mailers/kublog/post_mailer.rb +11 -0
- data/app/models/kublog/category.rb +26 -0
- data/app/models/kublog/comment.rb +46 -0
- data/app/models/kublog/image.rb +23 -0
- data/app/models/kublog/post.rb +51 -0
- data/app/presenters/kublog/post_presenter.rb +23 -0
- data/app/presenters/kublog/posts_presenter.rb +29 -0
- data/app/uploaders/kublog/file_uploader.rb +56 -0
- data/app/views/kublog/post_mailer/new_post.html.erb +1 -0
- data/app/views/kublog/post_mailer/new_post.liquid.html.erb +7 -0
- data/app/views/kublog/posts/_email_form.html.erb +13 -0
- data/app/views/kublog/posts/_form.html.erb +71 -0
- data/app/views/kublog/posts/_image_form.html.erb +26 -0
- data/app/views/kublog/posts/edit.html.erb +3 -0
- data/app/views/kublog/posts/index.atom.builder +15 -0
- data/app/views/kublog/posts/index.html.erb +36 -0
- data/app/views/kublog/posts/new.html.erb +3 -0
- data/app/views/kublog/posts/show.html.erb +46 -0
- data/app/views/layouts/kublog/application.html.erb +14 -0
- data/config/locales/kublog/en.yml +54 -0
- data/config/routes.rb +13 -0
- data/db/migrate/20110816211552_create_kublog_posts.rb +27 -0
- data/db/migrate/20110817215828_create_kublog_images.rb +11 -0
- data/db/migrate/20110818181434_create_kublog_categories.rb +11 -0
- data/db/migrate/20110822194341_create_kublog_comments.rb +14 -0
- data/kublog.gemspec +39 -0
- data/lib/kublog.rb +92 -0
- data/lib/kublog/author.rb +13 -0
- data/lib/kublog/engine.rb +5 -0
- data/lib/kublog/notifiable.rb +26 -0
- data/lib/kublog/notification/email.rb +86 -0
- data/lib/kublog/notification/email_job.rb +14 -0
- data/lib/kublog/notification/fb_post.rb +43 -0
- data/lib/kublog/notification/fb_post_job.rb +16 -0
- data/lib/kublog/notification/tweet.rb +68 -0
- data/lib/kublog/notification/tweet_job.rb +16 -0
- data/lib/kublog/user_integration/common.rb +31 -0
- data/lib/kublog/user_integration/devise.rb +23 -0
- data/lib/kublog/version.rb +3 -0
- data/lib/kublog/xhr_upload/file_helper.rb +36 -0
- data/lib/tasks/kublog_tasks.rake +4 -0
- data/script/rails +6 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +9 -0
- data/test/dummy/app/assets/javascripts/sessions.js +2 -0
- data/test/dummy/app/assets/javascripts/users.js +2 -0
- data/test/dummy/app/assets/stylesheets/application.css +157 -0
- data/test/dummy/app/assets/stylesheets/sessions.css +4 -0
- data/test/dummy/app/assets/stylesheets/users.css +4 -0
- data/test/dummy/app/controllers/application_controller.rb +19 -0
- data/test/dummy/app/controllers/sessions_controller.rb +22 -0
- data/test/dummy/app/controllers/users_controller.rb +17 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/error_messages_helper.rb +23 -0
- data/test/dummy/app/helpers/layout_helper.rb +22 -0
- data/test/dummy/app/helpers/sessions_helper.rb +2 -0
- data/test/dummy/app/helpers/users_helper.rb +2 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/models/ability.rb +2 -0
- data/test/dummy/app/models/user.rb +25 -0
- data/test/dummy/app/views/layouts/_account.html.erb +8 -0
- data/test/dummy/app/views/layouts/application.html.erb +29 -0
- data/test/dummy/app/views/layouts/kublog/application.html.erb +31 -0
- data/test/dummy/app/views/sessions/new.html.erb +15 -0
- data/test/dummy/app/views/users/new.html.erb +28 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +42 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +38 -0
- data/test/dummy/config/environments/production.rb +51 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +12 -0
- data/test/dummy/config/locales/en.yml +54 -0
- data/test/dummy/config/routes.rb +13 -0
- data/test/dummy/db/migrate/20110816225222_create_users.rb +11 -0
- data/test/dummy/db/migrate/20110819135547_create_delayed_jobs.rb +21 -0
- data/test/dummy/db/schema.rb +96 -0
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/delayed_job +5 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/fixtures/users.yml +9 -0
- data/test/dummy/test/functional/sessions_controller_test.rb +7 -0
- data/test/dummy/test/functional/users_controller_test.rb +7 -0
- data/test/dummy/test/unit/helpers/sessions_helper_test.rb +4 -0
- data/test/dummy/test/unit/helpers/users_helper_test.rb +4 -0
- data/test/dummy/test/unit/user_test.rb +7 -0
- data/test/factories.rb +9 -0
- data/test/fixtures/kublog/categories.yml +7 -0
- data/test/fixtures/kublog/comments.yml +7 -0
- data/test/fixtures/kublog/images.yml +9 -0
- data/test/fixtures/kublog/posts.yml +9 -0
- data/test/functional/kublog/categories_controller_test.rb +9 -0
- data/test/functional/kublog/comments_controller_test.rb +9 -0
- data/test/functional/kublog/images_controller_test.rb +9 -0
- data/test/functional/kublog/post_mailer_test.rb +9 -0
- data/test/functional/kublog/posts_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/kublog_test.rb +7 -0
- data/test/test_helper.rb +12 -0
- data/test/unit/helpers/kublog/categories_helper_test.rb +6 -0
- data/test/unit/helpers/kublog/comments_helper_test.rb +6 -0
- data/test/unit/helpers/kublog/images_helper_test.rb +6 -0
- data/test/unit/helpers/kublog/posts_helper_test.rb +6 -0
- data/test/unit/kublog/category_test.rb +9 -0
- data/test/unit/kublog/comment_test.rb +9 -0
- data/test/unit/kublog/image_test.rb +9 -0
- data/test/unit/kublog/post_test.rb +19 -0
- metadata +439 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Kublog
|
|
2
|
+
class Category < ActiveRecord::Base
|
|
3
|
+
extend FriendlyId
|
|
4
|
+
|
|
5
|
+
has_many :posts, :dependent => :nullify
|
|
6
|
+
|
|
7
|
+
validates_presence_of :name
|
|
8
|
+
validates_uniqueness_of :name
|
|
9
|
+
|
|
10
|
+
friendly_id :name, :use => :slugged
|
|
11
|
+
|
|
12
|
+
def to_s
|
|
13
|
+
self.name.titleize
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Site access to the category
|
|
17
|
+
def path
|
|
18
|
+
Engine.routes.url_helpers.category_path(self)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def as_json(params={})
|
|
22
|
+
super params.merge({:methods => [:path]})
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Kublog
|
|
2
|
+
class Comment < ActiveRecord::Base
|
|
3
|
+
belongs_to :user
|
|
4
|
+
belongs_to :post
|
|
5
|
+
|
|
6
|
+
validates_presence_of :body
|
|
7
|
+
validate :has_user_details
|
|
8
|
+
|
|
9
|
+
default_scope order('kublog_comments.created_at ASC')
|
|
10
|
+
|
|
11
|
+
delegate :admin?, :to => :user, :allow_nil => true
|
|
12
|
+
|
|
13
|
+
def author
|
|
14
|
+
return self.author_name if self.user.nil?
|
|
15
|
+
return self.user.to_s
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Site access to the category
|
|
19
|
+
def path
|
|
20
|
+
Engine.routes.url_helpers.post_comment_path(self.post, self)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def as_json(options={})
|
|
24
|
+
super(options.merge({:methods => [:path, :author, :ftime, :admin?]}))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def ftime
|
|
28
|
+
I18n.l(self.created_at, :format => :short)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def has_user_details
|
|
34
|
+
if self.user.nil?
|
|
35
|
+
errors.add(:author_name, :blank) if author_name.blank?
|
|
36
|
+
errors.add(:author_email, :blank) if author_email.blank?
|
|
37
|
+
errors.add(:author_email, :invalid) if !valid_author_email?
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def valid_author_email?
|
|
42
|
+
self.author_email.to_s.match(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Kublog
|
|
2
|
+
class Image < ActiveRecord::Base
|
|
3
|
+
|
|
4
|
+
validates_presence_of :file
|
|
5
|
+
|
|
6
|
+
mount_uploader :file, FileUploader
|
|
7
|
+
attr_accessible :file, :alt
|
|
8
|
+
|
|
9
|
+
before_create :set_default_alt
|
|
10
|
+
before_validation :get_dimensions
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def set_default_alt
|
|
15
|
+
self.alt = file_url.match(/([\w|\b|\s\-]+)\.[png|jpg|gif|jpeg]+/)[1]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_dimensions
|
|
19
|
+
self.file_width, self.file_height = `identify -format "%wx %h" #{self.file.path}`.split(/x/)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Kublog
|
|
3
|
+
class Post < ActiveRecord::Base
|
|
4
|
+
extend FriendlyId
|
|
5
|
+
include Notification::Email, Notification::Tweet, Notification::FbPost
|
|
6
|
+
|
|
7
|
+
#Associations
|
|
8
|
+
belongs_to :user, :class_name => Kublog.author_class
|
|
9
|
+
belongs_to :category
|
|
10
|
+
has_many :comments, :dependent => :destroy
|
|
11
|
+
|
|
12
|
+
validates_presence_of :title, :body, :user
|
|
13
|
+
validate :body_with_content
|
|
14
|
+
|
|
15
|
+
#Special Attributes
|
|
16
|
+
serialize :intended_for, Array
|
|
17
|
+
friendly_id :title, :use => :slugged
|
|
18
|
+
|
|
19
|
+
#Scopes
|
|
20
|
+
default_scope order('kublog_posts.created_at DESC')
|
|
21
|
+
|
|
22
|
+
def author
|
|
23
|
+
user.to_s
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def to_s
|
|
27
|
+
title
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Public Access to the Post
|
|
31
|
+
def url
|
|
32
|
+
Engine.routes.url_helpers.quickie_url(self, :host => Kublog.default_url_options[:host])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def related_posts
|
|
36
|
+
self.category.posts.where('id != ?', self.id) unless self.category.nil?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def body_with_content
|
|
42
|
+
errors.add(:body, :blank) if blank_body?
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Weird regex identifies generated blank chars
|
|
46
|
+
def blank_body?
|
|
47
|
+
Sanitize.clean(self.body).gsub(/[ | ]/, '').blank?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Kublog
|
|
2
|
+
class PostPresenter
|
|
3
|
+
|
|
4
|
+
attr_accessor :post
|
|
5
|
+
|
|
6
|
+
def initialize(post=nil)
|
|
7
|
+
@post = post
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def comment_count
|
|
11
|
+
@comment_count ||= comments.count
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def comments
|
|
15
|
+
@comments ||= @post.comments
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def related_posts
|
|
19
|
+
@related_posts ||= @post.related_posts.try(:limit, 5) || []
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Kublog
|
|
2
|
+
class PostsPresenter
|
|
3
|
+
|
|
4
|
+
def initialize(category=nil)
|
|
5
|
+
@category = category
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def categories
|
|
9
|
+
@categories ||= Category.all
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def posts
|
|
13
|
+
@posts ||= @category ? @category.posts : Post.all
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def title
|
|
17
|
+
@title ||= @category.nil? ? Kublog.blog_name : "#{@category.name} :: #{Kublog.blog_name}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def updated
|
|
21
|
+
self.posts.first.try(:updated_at)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def ftime(updated)
|
|
25
|
+
updated.strftime("%Y-%m-%dT%H:%M:%SZ")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module Kublog
|
|
4
|
+
class FileUploader < CarrierWave::Uploader::Base
|
|
5
|
+
|
|
6
|
+
# Include RMagick or ImageScience support:
|
|
7
|
+
include CarrierWave::RMagick
|
|
8
|
+
# include CarrierWave::MiniMagick
|
|
9
|
+
# include CarrierWave::ImageScience
|
|
10
|
+
|
|
11
|
+
# Choose what kind of storage to use for this uploader:
|
|
12
|
+
storage Kublog.image_storage
|
|
13
|
+
# storage :fog
|
|
14
|
+
|
|
15
|
+
# Override the directory where uploaded files will be stored.
|
|
16
|
+
# This is a sensible default for uploaders that are meant to be mounted:
|
|
17
|
+
def store_dir
|
|
18
|
+
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Provide a default URL as a default if there hasn't been a file uploaded:
|
|
22
|
+
def default_url
|
|
23
|
+
'/assets/kublog/missing_image.png' # + [version_name, "default.png"].compact.join('_')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Process files as they are uploaded:
|
|
27
|
+
# process :scale => [200, 300]
|
|
28
|
+
#
|
|
29
|
+
# def scale(width, height)
|
|
30
|
+
# # do something
|
|
31
|
+
# end
|
|
32
|
+
|
|
33
|
+
# Create different versions of your uploaded files:
|
|
34
|
+
|
|
35
|
+
version :thumb do
|
|
36
|
+
process :resize_to_limit => [54, 54]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
version :small do
|
|
40
|
+
process :resize_to_limit => [140, 140]
|
|
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(jpg jpeg gif png)
|
|
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
|
|
56
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= Liquid::Template.parse(@post.email_body).render('user' => @user.to_s).html_safe %>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div style='display:none'>
|
|
2
|
+
<%= link_to '#', '#email-template', :class => 'submit_fancybox', :id => 'link-to-email-template' %>
|
|
3
|
+
<div id="email-template">
|
|
4
|
+
<h2><%= t('.format_email') %></h2>
|
|
5
|
+
<div class='field'>
|
|
6
|
+
<%= f.text_area :email_body %>
|
|
7
|
+
</div>
|
|
8
|
+
<div class='field'>
|
|
9
|
+
<%= f.submit :id => 'email_submit' %> <%= t('.or') %>
|
|
10
|
+
<%= link_to t('.cancel'), '#', :id => 'email_cancel' %>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<%= form_for post, :html => {:class => 'post_form'} do |f| %>
|
|
2
|
+
|
|
3
|
+
<div class="main-attributes">
|
|
4
|
+
|
|
5
|
+
<div class='field'>
|
|
6
|
+
<%= f.label :body %><br />
|
|
7
|
+
<%= f.text_area :body, :class => 'editor' %>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class='field'>
|
|
11
|
+
<%= f.label :title %> <br />
|
|
12
|
+
<%= f.text_field :title, :class => 'original' %>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div class='field'>
|
|
16
|
+
<%= f.label :category_id %> <br />
|
|
17
|
+
<%= select_tag 'post[category_id]', category_options(post).html_safe %>
|
|
18
|
+
</div>
|
|
19
|
+
<%= render "email_form", :f => f %>
|
|
20
|
+
<%= render 'image_form' %>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class='sharing-attributes'>
|
|
24
|
+
|
|
25
|
+
<div class='field'>
|
|
26
|
+
<%= f.check_box :twitter_notify, :class => 'trigger-optional', :checked => post.new_record? %>
|
|
27
|
+
<%= f.label :twitter_notify %>
|
|
28
|
+
<div class='optional' style='<%= display? post.new_record? %>'>
|
|
29
|
+
<span class='chars_left'>129</span>
|
|
30
|
+
<%= f.text_area :tweet_text, :rows => 5, :cols => 10, :maxlength => 129, :value => '',
|
|
31
|
+
:disabled => !post.new_record?, :class => 'small mimic' %>
|
|
32
|
+
<small><%= t('.link_to_tweet') %></small>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div class='field'>
|
|
37
|
+
<%= f.check_box :facebook_notify, :class => 'trigger-optional',
|
|
38
|
+
:checked => post.new_record? %>
|
|
39
|
+
<%= f.label :facebook_notify %>
|
|
40
|
+
<div class='optional' style='<%= display? post.new_record? %>'>
|
|
41
|
+
<%= f.text_area :facebook_text, :rows => 5, :cols => 10, :value => '',
|
|
42
|
+
:disabled => !post.new_record?, :class => 'small mimic' %>
|
|
43
|
+
<small><%= t('.link_to_facebook') %></small>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div class='field'>
|
|
48
|
+
<%= f.check_box :email_notify, :class => 'trigger-optional', :checked => false %>
|
|
49
|
+
<%= f.label :email_notify %>
|
|
50
|
+
<% unless user_kinds.empty? %>
|
|
51
|
+
<div class='optional'>
|
|
52
|
+
<ul>
|
|
53
|
+
<% user_kinds.each do |user_kind|%>
|
|
54
|
+
<li>
|
|
55
|
+
<%= check_box_tag "post[intended_for][]", user_kind, nil,
|
|
56
|
+
:id => "post_intended_for_#{user_kind}" %>
|
|
57
|
+
<%= label_tag "post_intended_for_#{user_kind}", user_kind.titleize %>
|
|
58
|
+
</li>
|
|
59
|
+
<% end %>
|
|
60
|
+
</ul>
|
|
61
|
+
</div>
|
|
62
|
+
<% end %>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class='submit field'>
|
|
68
|
+
<%= f.submit :id => 'create_post_button' %>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<% end %>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<div style='display:none'>
|
|
2
|
+
<%= link_to '#', '#image-upload', :class => 'fancybox', :id => 'link-to-upload' %>
|
|
3
|
+
<div id="image-upload">
|
|
4
|
+
<h2><%= t('.insert_image') %></h2>
|
|
5
|
+
<%= hidden_field_tag :image_id %>
|
|
6
|
+
<div class='image-file field'>
|
|
7
|
+
<%= file_field_tag :image, :class => 'upload' %><br /><br />
|
|
8
|
+
<div class='container'>
|
|
9
|
+
<span></span>
|
|
10
|
+
<%= image_tag missing_image_url, :id => 'uploaded-file-placeholder' %>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<div class='image-alt field'>
|
|
14
|
+
<%= label_tag :image_alt, t('.alt') %><br />
|
|
15
|
+
<%= text_field_tag :image_alt, '', :disabled => true %>
|
|
16
|
+
</div>
|
|
17
|
+
<div class='image-size field'>
|
|
18
|
+
<%= label_tag :insert_size, t('.insert_size') %><br />
|
|
19
|
+
<%= select_tag :insert_size, size_options, :disabled => true %>
|
|
20
|
+
</div>
|
|
21
|
+
<div class='field'>
|
|
22
|
+
<%= submit_tag t('.insert_image'), :disabled => true %>
|
|
23
|
+
<%= t('.or') %> <%= link_to t('.cancel'), '#', :id => 'cancel-upload' %>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
atom_feed do |feed|
|
|
2
|
+
feed.title @presenter.title
|
|
3
|
+
feed.updated @presenter.updated
|
|
4
|
+
@presenter.posts.each do |post|
|
|
5
|
+
feed.entry(post) do |entry|
|
|
6
|
+
entry.url post.url
|
|
7
|
+
entry.title post.title
|
|
8
|
+
entry.content post.body, :type => 'html'
|
|
9
|
+
entry.updated_at @presenter.ftime(post.updated_at)
|
|
10
|
+
entry.author do |author|
|
|
11
|
+
author.name post.user.to_s
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<div class='post-actions'>
|
|
2
|
+
<% if is_admin? %>
|
|
3
|
+
<h2><%= t('.actions') %></h2>
|
|
4
|
+
<ul>
|
|
5
|
+
<li><%= link_to 'New Post', new_post_path %></li>
|
|
6
|
+
</ul>
|
|
7
|
+
<% end %>
|
|
8
|
+
<% unless @presenter.categories.empty? %>
|
|
9
|
+
<h2><%= t('.categories') %></h2>
|
|
10
|
+
<ul id='categories'>
|
|
11
|
+
<% @presenter.categories.each do |category|%>
|
|
12
|
+
<li>
|
|
13
|
+
<%= link_to category, category %>
|
|
14
|
+
<% if is_admin? %>
|
|
15
|
+
<small>
|
|
16
|
+
(<%= link_to t('.edit'), '#', :class => 'edit', 'data-prompt' => t('.edit_category_prompt') %> |
|
|
17
|
+
<%= link_to t('.delete'), '#', :class=> 'delete', 'data-confirm' => t('.category_delete_confirm')%>)
|
|
18
|
+
</small>
|
|
19
|
+
<% end %>
|
|
20
|
+
</li>
|
|
21
|
+
<% end %>
|
|
22
|
+
</ul>
|
|
23
|
+
<% end %>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<% @presenter.posts.each do |post| %>
|
|
27
|
+
<div class='post'>
|
|
28
|
+
<%= link_to content_tag(:h2, post.title), quickie_path(post), :class => 'post-title' %>
|
|
29
|
+
<span class='published-at'>
|
|
30
|
+
<%= l post.updated_at, :format => :short %>
|
|
31
|
+
</span>
|
|
32
|
+
<div class='post-body'>
|
|
33
|
+
<%= post.body.html_safe %>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
<% end %>
|