kublog 0.0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,43 @@
|
|
1
|
+
module Kublog
|
2
|
+
module Notification
|
3
|
+
module FbPost
|
4
|
+
|
5
|
+
def self.included(base)
|
6
|
+
base.send :include, InstanceMethods
|
7
|
+
|
8
|
+
base.send :include, case Kublog.notification_processing.try(:to_sym)
|
9
|
+
when :delayed_job then DelayedJob
|
10
|
+
else Immediate
|
11
|
+
end
|
12
|
+
|
13
|
+
base.send :after_create, :notify_facebook
|
14
|
+
base.send :validates_presence_of, :facebook_text, :if => :facebook_notify
|
15
|
+
end
|
16
|
+
|
17
|
+
module InstanceMethods
|
18
|
+
|
19
|
+
protected
|
20
|
+
|
21
|
+
def notify_facebook
|
22
|
+
if self.facebook_notify
|
23
|
+
wall_post_deliver(:link => self.url, :message => self.facebook_text)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
module DelayedJob
|
30
|
+
def wall_post_deliver(elements={})
|
31
|
+
Delayed::Job.enqueue(FbPostJob.new(elements))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module Immediate
|
36
|
+
def wall_post_deliver(elements={})
|
37
|
+
Kublog.facebook_client.link!(elements)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# Class configured to Notify via DelayedJob
|
2
|
+
module Kublog
|
3
|
+
module Notification
|
4
|
+
class FbPostJob
|
5
|
+
|
6
|
+
def initialize(elements={})
|
7
|
+
@elements = elements
|
8
|
+
end
|
9
|
+
|
10
|
+
def perform
|
11
|
+
Kublog.facebook_client.link!(@elements)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Includes functionality to send to twitter on after_create callback
|
2
|
+
|
3
|
+
module Kublog
|
4
|
+
module Notification
|
5
|
+
module Tweet
|
6
|
+
|
7
|
+
def self.included(base)
|
8
|
+
base.send :include, InstanceMethods
|
9
|
+
base.send :extend, ClassMethods
|
10
|
+
|
11
|
+
base.send :include, case Kublog.notification_processing.try(:to_sym)
|
12
|
+
when :delayed_job then DelayedJob
|
13
|
+
else Immediate
|
14
|
+
end
|
15
|
+
|
16
|
+
base.send :after_create, :notify_tweet
|
17
|
+
base.send :validates_presence_of, :tweet_text, :if => :twitter_notify
|
18
|
+
end
|
19
|
+
|
20
|
+
module InstanceMethods
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def notify_tweet
|
25
|
+
if self.twitter_notify
|
26
|
+
tweet_deliver([self.tweet_text, self.url].join(' '))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
module ClassMethods
|
34
|
+
|
35
|
+
# TODO Find out more about Twitter::NotFound()
|
36
|
+
# Configure whether or not to send errors
|
37
|
+
def safe_twitter_update(update, post)
|
38
|
+
begin
|
39
|
+
return Kublog.twitter_client.update(update)
|
40
|
+
rescue Twitter::NotFound
|
41
|
+
latest_tweet = Kublog.twitter_client.user_timeline.first
|
42
|
+
if latest_tweet.text.gsub(/ http:\/\/[^ ]\Z/, '') == post.tweet_text
|
43
|
+
return latest_tweet
|
44
|
+
else
|
45
|
+
return {:id => nil, :text => post.tweet_text}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
# Queues Process on DJ
|
53
|
+
module DelayedJob
|
54
|
+
def tweet_deliver(tweet)
|
55
|
+
Delayed::Job.enqueue(TweetJob.new(tweet, self))
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Delivers Immediately
|
60
|
+
module Immediate
|
61
|
+
def tweet_deliver(tweet)
|
62
|
+
response = safe_twitter_update(tweet, self)
|
63
|
+
self.update_attributes :tweet_id => response.id, :tweet_text => response.text
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# Class configured to Notify via DelayedJob
|
2
|
+
module Kublog
|
3
|
+
module Notification
|
4
|
+
class TweetJob
|
5
|
+
|
6
|
+
def initialize(tweet, post)
|
7
|
+
@tweet, @post = tweet, post
|
8
|
+
end
|
9
|
+
|
10
|
+
def perform
|
11
|
+
Post.safe_twitter_update(@tweet, @post)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Kublog
|
2
|
+
module UserIntegration
|
3
|
+
module Common
|
4
|
+
|
5
|
+
def self.included(base)
|
6
|
+
base.send :include, InstanceMethods
|
7
|
+
base.send :helper_method, :current_user, :is_admin?, :signed_in?
|
8
|
+
end
|
9
|
+
|
10
|
+
module InstanceMethods
|
11
|
+
# Uses session[:user_id] to get the user session
|
12
|
+
# should be able to change user for x name of model
|
13
|
+
def current_user
|
14
|
+
@current_user ||= User.find_by_id(session[:user_id])
|
15
|
+
end
|
16
|
+
|
17
|
+
# Tries admin? method for user to filter out publishing actions
|
18
|
+
def is_admin?
|
19
|
+
current_user && current_user.try(:admin?)
|
20
|
+
end
|
21
|
+
|
22
|
+
## Sign in helper method
|
23
|
+
def signed_in?
|
24
|
+
!!current_user
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Kublog
|
2
|
+
module UserIntegration
|
3
|
+
module Devise
|
4
|
+
|
5
|
+
def self.included(base)
|
6
|
+
base.send :include, InstanceMethods
|
7
|
+
base.send :helper_method,:is_admin?
|
8
|
+
end
|
9
|
+
|
10
|
+
module InstanceMethods
|
11
|
+
|
12
|
+
# Uses the already defined current_user method by Devise
|
13
|
+
# get the admin? value to filter out publishing actions
|
14
|
+
|
15
|
+
def is_admin?
|
16
|
+
current_user && current_user.try(:admin?)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Kublog
|
2
|
+
module XhrUpload
|
3
|
+
module FileHelper
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
# Gets the file received throug Rack Environment
|
8
|
+
def received_file
|
9
|
+
if env['rack.input']
|
10
|
+
make_tempfile(env['rack.input'], :filename => env['HTTP_X_FILE_NAME'], :type => env["CONTENT_TYPE"])
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Taken from rack. Follows the example of maca to create a TempFile
|
15
|
+
# via XHR Request. Used to asynchronously upload images
|
16
|
+
def make_tempfile(input, options = {})
|
17
|
+
tempfile = Tempfile.new('image-upload')
|
18
|
+
tempfile.set_encoding(Encoding::BINARY) if tempfile.respond_to?(:set_encoding)
|
19
|
+
tempfile.binmode
|
20
|
+
buffer = ""
|
21
|
+
while input.read(1024 * 4, buffer)
|
22
|
+
entire_buffer_written_out = false
|
23
|
+
while !entire_buffer_written_out
|
24
|
+
written = tempfile.write(buffer)
|
25
|
+
entire_buffer_written_out = written == Rack::Utils.bytesize(buffer)
|
26
|
+
if !entire_buffer_written_out
|
27
|
+
buffer.slice!(0 .. written - 1)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
tempfile.rewind
|
32
|
+
{:tempfile => tempfile}.merge(options)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/script/rails
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
4
|
+
|
5
|
+
ENGINE_PATH = File.expand_path('../..', __FILE__)
|
6
|
+
load File.expand_path('../../test/dummy/script/rails', __FILE__)
|
data/test/dummy/Rakefile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
3
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
4
|
+
|
5
|
+
require File.expand_path('../config/application', __FILE__)
|
6
|
+
|
7
|
+
Dummy::Application.load_tasks
|
@@ -0,0 +1,9 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
|
+
// the compiled file.
|
6
|
+
//
|
7
|
+
//= require jquery
|
8
|
+
//= require jquery_ujs
|
9
|
+
//= require_tree .
|
@@ -0,0 +1,157 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
5
|
+
*= require_self
|
6
|
+
*= require_tree .
|
7
|
+
*/
|
8
|
+
|
9
|
+
.main-attributes{
|
10
|
+
float:left;
|
11
|
+
}
|
12
|
+
|
13
|
+
.admin-actions{
|
14
|
+
margin-top:10px;
|
15
|
+
}
|
16
|
+
|
17
|
+
.field.submit{
|
18
|
+
clear:both;
|
19
|
+
}
|
20
|
+
|
21
|
+
hr{
|
22
|
+
clear:both;
|
23
|
+
height: 0;
|
24
|
+
overflow: hidden;
|
25
|
+
}
|
26
|
+
|
27
|
+
.post-actions, .sharing-attributes{
|
28
|
+
float:right;
|
29
|
+
width:300px;
|
30
|
+
border:1px solid #ddd;
|
31
|
+
margin-top:20px;
|
32
|
+
padding:10px;
|
33
|
+
}
|
34
|
+
|
35
|
+
.sharing-attributes .field{
|
36
|
+
width:250px;
|
37
|
+
}
|
38
|
+
|
39
|
+
.sharing-attributes textarea.small{
|
40
|
+
display:block;
|
41
|
+
}
|
42
|
+
|
43
|
+
.sharing-attributes span{
|
44
|
+
font-size:11px;
|
45
|
+
float:right;
|
46
|
+
}
|
47
|
+
|
48
|
+
.post-actions h2, .sharing-attributes h2{
|
49
|
+
margin-top:0px;
|
50
|
+
}
|
51
|
+
|
52
|
+
.sharing-attributes{
|
53
|
+
margin-top:25px;
|
54
|
+
}
|
55
|
+
|
56
|
+
.post-actions ul{
|
57
|
+
padding:0px;
|
58
|
+
}
|
59
|
+
|
60
|
+
.post-actions li{
|
61
|
+
list-style-type:none;
|
62
|
+
margin-bottom:10px;
|
63
|
+
}
|
64
|
+
|
65
|
+
#account{
|
66
|
+
margin-top:10px;
|
67
|
+
float:right;
|
68
|
+
}
|
69
|
+
|
70
|
+
#header h1{
|
71
|
+
float:left;
|
72
|
+
margin:0px;
|
73
|
+
}
|
74
|
+
|
75
|
+
.new-comment h2{
|
76
|
+
margin-bottom:0px;
|
77
|
+
}
|
78
|
+
|
79
|
+
html, body {
|
80
|
+
background-color: #4B7399;
|
81
|
+
font-family: Verdana, Helvetica, Arial;
|
82
|
+
font-size: 14px;
|
83
|
+
}
|
84
|
+
|
85
|
+
a img {
|
86
|
+
border: none;
|
87
|
+
}
|
88
|
+
|
89
|
+
a {
|
90
|
+
color: #0000FF;
|
91
|
+
}
|
92
|
+
|
93
|
+
.clear {
|
94
|
+
clear: both;
|
95
|
+
height: 0;
|
96
|
+
overflow: hidden;
|
97
|
+
}
|
98
|
+
|
99
|
+
#container {
|
100
|
+
width: 75%;
|
101
|
+
margin: 0 auto;
|
102
|
+
background-color: #FFF;
|
103
|
+
padding: 20px 40px;
|
104
|
+
border: solid 1px black;
|
105
|
+
margin-top: 20px;
|
106
|
+
}
|
107
|
+
|
108
|
+
#flash_notice, #flash_error, #flash_alert {
|
109
|
+
padding: 5px 8px;
|
110
|
+
margin: 10px 0;
|
111
|
+
}
|
112
|
+
|
113
|
+
#flash_notice {
|
114
|
+
background-color: #CFC;
|
115
|
+
border: solid 1px #6C6;
|
116
|
+
}
|
117
|
+
|
118
|
+
#flash_error, #flash_alert {
|
119
|
+
background-color: #FCC;
|
120
|
+
border: solid 1px #C66;
|
121
|
+
}
|
122
|
+
|
123
|
+
.error_messages {
|
124
|
+
width: 400px;
|
125
|
+
border: 2px solid #CF0000;
|
126
|
+
padding: 0px;
|
127
|
+
padding-bottom: 12px;
|
128
|
+
margin-bottom: 20px;
|
129
|
+
background-color: #f0f0f0;
|
130
|
+
font-size: 12px;
|
131
|
+
}
|
132
|
+
|
133
|
+
.error_messages h2 {
|
134
|
+
text-align: left;
|
135
|
+
font-weight: bold;
|
136
|
+
padding: 5px 10px;
|
137
|
+
font-size: 12px;
|
138
|
+
margin: 0;
|
139
|
+
background-color: #c00;
|
140
|
+
color: #fff;
|
141
|
+
}
|
142
|
+
|
143
|
+
.error_messages p {
|
144
|
+
margin: 8px 10px;
|
145
|
+
}
|
146
|
+
|
147
|
+
.error_messages ul {
|
148
|
+
margin: 0;
|
149
|
+
}
|
150
|
+
|
151
|
+
.field_with_errors {
|
152
|
+
display: inline;
|
153
|
+
}
|
154
|
+
|
155
|
+
form .field, form .actions {
|
156
|
+
margin: 10px 0;
|
157
|
+
}
|