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,94 @@
|
|
1
|
+
div.wysiwyg { border: 1px solid #999; padding: 5px; background: #fff url('/assets/kublog/wysiwyg/images/jquery.wysiwyg.bg.png') repeat-x top; }
|
2
|
+
div.wysiwyg * { margin: 0; padding: 0; }
|
3
|
+
|
4
|
+
div.wysiwyg ul.toolbar li.jwysiwyg-custom-command { overflow: hidden; }
|
5
|
+
|
6
|
+
div.wysiwyg ul.toolbar { border-bottom: 1px solid #ccc; float: left; width: 100%; padding: 0; }
|
7
|
+
div.wysiwyg ul.toolbar li { list-style: none; float: left; margin: 1px 2px 3px 0; background: rgb(240, 240, 240); -moz-user-select: none; -webkit-user-select: none; user-select: none; clear: none; padding: 0 }
|
8
|
+
div.wysiwyg ul.toolbar li.separator { width: 1px; height: 16px; margin: 0 4px; border-left: 1px solid #ccc; }
|
9
|
+
div.wysiwyg ul.toolbar li { text-indent: -5000px; opacity: 0.85; filter: alpha(opacity=85); display: block; width: 16px; height: 16px; background: url('/assets/kublog/wysiwyg/images/jquery.wysiwyg.gif') no-repeat -64px -80px; border: 1px dotted rgb(240, 240, 240); cursor: pointer; margin: 0px; }
|
10
|
+
div.wysiwyg ul.toolbar li.wysiwyg-button-hover, div.wysiwyg ul.toolbar li.active { opacity: 1.00; filter:alpha(opacity=100); border: 1px outset rgb(224, 224, 224); }
|
11
|
+
div.wysiwyg ul.toolbar li.active { background-color: rgb(255, 255, 64); border: 1px solid rgb(208, 208, 208); border-left-color: #aaa; border-top-color: #aaa; margin: 0; }
|
12
|
+
|
13
|
+
div.wysiwyg ul.toolbar li.disabled, div.wysiwyg ul.toolbar li.wysiwyg-button-hover.disabled, div.wysiwyg ul.toolbar li.active.disabled { opacity: 0.5; filter:alpha(opacity=50); border: 0px none transparent; padding: 1px; cursor: auto; }
|
14
|
+
|
15
|
+
|
16
|
+
div.wysiwyg ul.toolbar li.bold { background-position: 0 -16px; }
|
17
|
+
div.wysiwyg ul.toolbar li.italic { background-position: -16px -16px; }
|
18
|
+
div.wysiwyg ul.toolbar li.strikeThrough { background-position: -32px -16px; }
|
19
|
+
div.wysiwyg ul.toolbar li.underline { background-position: -48px -16px; }
|
20
|
+
div.wysiwyg ul.toolbar li.highlight { background-position: -48px -96px; }
|
21
|
+
|
22
|
+
div.wysiwyg ul.toolbar li.justifyLeft { background-position: 0 0; }
|
23
|
+
div.wysiwyg ul.toolbar li.justifyCenter { background-position: -16px 0; }
|
24
|
+
div.wysiwyg ul.toolbar li.justifyRight { background-position: -32px 0; }
|
25
|
+
div.wysiwyg ul.toolbar li.justifyFull { background-position: -48px 0; }
|
26
|
+
|
27
|
+
div.wysiwyg ul.toolbar li.indent { background-position: -64px 0; }
|
28
|
+
div.wysiwyg ul.toolbar li.outdent { background-position: -80px 0; }
|
29
|
+
|
30
|
+
div.wysiwyg ul.toolbar li.subscript { background-position: -64px -16px; }
|
31
|
+
div.wysiwyg ul.toolbar li.superscript { background-position: -80px -16px; }
|
32
|
+
|
33
|
+
div.wysiwyg ul.toolbar li.undo { background-position: 0 -64px; }
|
34
|
+
div.wysiwyg ul.toolbar li.redo { background-position: -16px -64px; }
|
35
|
+
|
36
|
+
div.wysiwyg ul.toolbar li.insertOrderedList { background-position: -32px -48px; }
|
37
|
+
div.wysiwyg ul.toolbar li.insertUnorderedList { background-position: -16px -48px; }
|
38
|
+
div.wysiwyg ul.toolbar li.insertHorizontalRule { background-position: 0 -48px; }
|
39
|
+
|
40
|
+
div.wysiwyg ul.toolbar li.h1 { background-position: 0 -32px; }
|
41
|
+
div.wysiwyg ul.toolbar li.h2 { background-position: -16px -32px; }
|
42
|
+
div.wysiwyg ul.toolbar li.h3 { background-position: -32px -32px; }
|
43
|
+
div.wysiwyg ul.toolbar li.h4 { background-position: -48px -32px; }
|
44
|
+
div.wysiwyg ul.toolbar li.h5 { background-position: -64px -32px; }
|
45
|
+
div.wysiwyg ul.toolbar li.h6 { background-position: -80px -32px; }
|
46
|
+
|
47
|
+
div.wysiwyg ul.toolbar li.paragraph { background-position: 0px -96px; }
|
48
|
+
div.wysiwyg ul.toolbar li.colorpicker { background-position: -16px -96px; }
|
49
|
+
div.wysiwyg ul.toolbar li.fullscreen { background-position: -32px -96px; }
|
50
|
+
|
51
|
+
div.wysiwyg ul.toolbar li.cut { background-position: -32px -64px; }
|
52
|
+
div.wysiwyg ul.toolbar li.copy { background-position: -48px -64px; }
|
53
|
+
div.wysiwyg ul.toolbar li.paste { background-position: -64px -64px; }
|
54
|
+
div.wysiwyg ul.toolbar li.insertTable { background-position: -64px -48px; }
|
55
|
+
|
56
|
+
div.wysiwyg ul.toolbar li.increaseFontSize { background-position: -16px -80px; }
|
57
|
+
div.wysiwyg ul.toolbar li.decreaseFontSize { background-position: -32px -80px; }
|
58
|
+
|
59
|
+
div.wysiwyg ul.toolbar li.createLink { background-position: -80px -48px; }
|
60
|
+
div.wysiwyg ul.toolbar li.insertImage { background-position: -80px -80px; }
|
61
|
+
|
62
|
+
div.wysiwyg ul.toolbar li.html { background-position: -48px -48px; }
|
63
|
+
div.wysiwyg ul.toolbar li.removeFormat { background-position: -80px -64px; }
|
64
|
+
|
65
|
+
div.wysiwyg ul.toolbar li.empty { background-position: -64px -80px; }
|
66
|
+
|
67
|
+
div.wysiwyg ul.toolbar li.code { background-position: -64px -96px; }
|
68
|
+
div.wysiwyg ul.toolbar li.cssWrap { background-position: -80px -96px; }
|
69
|
+
|
70
|
+
div.wysiwyg-dialogRow { float:left; width:100%; font-size: 16px; }
|
71
|
+
|
72
|
+
div.wysiwyg iframe { border: 1px solid #999; clear: left;
|
73
|
+
-moz-box-shadow :inset 0 0 10px rgba(0, 0, 0, 0.4);
|
74
|
+
-webkit-box-shadow :inset 0 0 10px rgba(0, 0, 0, 0.4);
|
75
|
+
box-shadow :inset 0 0 10px rgba(0, 0, 0, 0.4);
|
76
|
+
background-color:white; padding:0px; margin:0; display:block; width: 100%; }
|
77
|
+
|
78
|
+
/* dialog */
|
79
|
+
.wysiwyg-dialog { position:fixed; top:50px; left:50px; width:450px; height:300px; background:transparent; font:14px "Helvetic Neue", Helvetica,Arial,sans-serif; }
|
80
|
+
.wysiwyg-dialog .wysiwyg-dialog-topbar { background:#333; border:1px #111 solid; color:white; padding:10px; position:relative; }
|
81
|
+
.wysiwyg-dialog .wysiwyg-dialog-topbar .wysiwyg-dialog-close-wrapper .wysiwyg-dialog-close-button { color:white; text-decoration:none; display:block; padding:6px 10px; position:absolute; right:12px; top:50%; height:14px; margin-top:-12px; }
|
82
|
+
.wysiwyg-dialog .wysiwyg-dialog-topbar .wysiwyg-dialog-close-wrapper a.wysiwyg-dialog-close-button:hover { background:#666; }
|
83
|
+
.wysiwyg-dialog .wysiwyg-dialog-topbar .wysiwyg-dialog-title { font-size:20px; font-weight:bold; padding:5px; }
|
84
|
+
.wysiwyg-dialog .wysiwyg-dialog-content { border:1px #ccc solid; border-top:0; padding:15px; background:white; }
|
85
|
+
.wysiwyg-dialog-modal-div { position:absolute; top:0px; left:0px; width:100%; height:100%; background-color:rgb(255,255,255); background-color:rgba(0,0,0,0.5); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); -ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";}
|
86
|
+
.wysiwyg-dialog-content form.wysiwyg fieldset { border:1px #ccc solid; }
|
87
|
+
.wysiwyg-dialog-content form.wysiwyg legend { padding:7px; }
|
88
|
+
.wysiwyg-dialog-content form.wysiwyg .form-row { clear:both; padding:4px 0; }
|
89
|
+
.wysiwyg-dialog-content form.wysiwyg .form-row label, .wysiwyg-dialog form.wysiwyg .form-row .form-row-key { display:block; float:left; width:35%; text-align:right; padding:4px 5px; }
|
90
|
+
.wysiwyg-dialog-content form.wysiwyg .form-row .form-row-value { display:block; float:left; width:55%; }
|
91
|
+
.wysiwyg-dialog-content form.wysiwyg .form-row input.width-auto { width:auto; }
|
92
|
+
.wysiwyg-dialog-content form.wysiwyg input.width-small { width:50px; min-width:50px; max-width:50px; }
|
93
|
+
.wysiwyg-dialog-content form.wysiwyg input, .wysiwyg-dialog form.wysiwyg select { padding:2px; width:100%; margin:2px; }
|
94
|
+
.wysiwyg-dialog-content form.wysiwyg input[type=submit], .wysiwyg-dialog form.wysiwyg input[type=reset] { padding:2px 7px; width:auto; }
|
@@ -0,0 +1,9 @@
|
|
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_directory ../../plugins/kublog/wysiwyg/stylesheets
|
7
|
+
*= require_directory ../../plugins/kublog/fancybox/stylesheets
|
8
|
+
*= require_tree .
|
9
|
+
*/
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/*
|
2
|
+
Place all the styles related to the matching controller here.
|
3
|
+
They will automatically be included in application.css.
|
4
|
+
*/
|
5
|
+
|
6
|
+
#kublog #image-upload h2{
|
7
|
+
margin-top:0px;
|
8
|
+
}
|
9
|
+
|
10
|
+
#kublog #image-upload small{
|
11
|
+
display:block;
|
12
|
+
margin-top:5px;
|
13
|
+
}
|
14
|
+
|
15
|
+
#kublog .image-file .container{
|
16
|
+
display: table-cell;
|
17
|
+
text-align: center;
|
18
|
+
vertical-align: middle;
|
19
|
+
width:150px;
|
20
|
+
height:150px;
|
21
|
+
border:1px solid #ccc;
|
22
|
+
}
|
23
|
+
|
24
|
+
#kublog .image-file .container * {
|
25
|
+
vertical-align: middle;
|
26
|
+
}
|
27
|
+
|
28
|
+
/*\*//*/
|
29
|
+
#kublog .image-file .container {
|
30
|
+
display: block;
|
31
|
+
}
|
32
|
+
#kublog .image-file .container span {
|
33
|
+
display: inline-block;
|
34
|
+
height: 100%;
|
35
|
+
width: 1px;
|
36
|
+
}
|
37
|
+
/**/
|
38
|
+
|
39
|
+
#kublog #image-upload{
|
40
|
+
padding:5px;
|
41
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/*
|
2
|
+
Place all the styles related to the matching controller here.
|
3
|
+
They will automatically be included in application.css.
|
4
|
+
*/
|
5
|
+
|
6
|
+
#kublog textarea#post_body{
|
7
|
+
width:550px;
|
8
|
+
}
|
9
|
+
|
10
|
+
#kublog div.optional{
|
11
|
+
display:none;
|
12
|
+
}
|
13
|
+
|
14
|
+
#kublog textarea.small{
|
15
|
+
width:250px;
|
16
|
+
display:block;
|
17
|
+
}
|
18
|
+
|
19
|
+
#kublog .field{
|
20
|
+
margin:10px 0px;
|
21
|
+
}
|
22
|
+
|
23
|
+
/* Sets up a little margin for Wysiwyg editor */
|
24
|
+
|
25
|
+
#kublog .toolbar li{
|
26
|
+
margin:0px 8px 3px 0px;
|
27
|
+
}
|
28
|
+
|
29
|
+
#kublog label.error{
|
30
|
+
color:#f00;
|
31
|
+
}
|
32
|
+
|
33
|
+
#kublog input.error,#kublog textarea.error{
|
34
|
+
border:1px solid red;
|
35
|
+
}
|
36
|
+
|
37
|
+
small.error_description{
|
38
|
+
margin-left:5px;
|
39
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Kublog
|
2
|
+
class CategoriesController < ApplicationController
|
3
|
+
|
4
|
+
skip_filter :require_admin, :only => [:show]
|
5
|
+
|
6
|
+
def show
|
7
|
+
@category = Category.find(params[:id])
|
8
|
+
@presenter = PostsPresenter.new(@category)
|
9
|
+
respond_to do |format|
|
10
|
+
format.atom { render "/kublog/posts/index", :layout => false }
|
11
|
+
format.rss { redirect_to category_path(@category, :format => :atom), :status => :moved_permanently }
|
12
|
+
format.html { render "/kublog/posts/index" }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def create
|
17
|
+
@category = Category.new(params[:category])
|
18
|
+
respond_to do |format|
|
19
|
+
if @category.save
|
20
|
+
format.json { render :json => @category }
|
21
|
+
else
|
22
|
+
format.json { render :json => @category.errors.messages, :status => 'unprocessable_entity' }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def update
|
28
|
+
@category = Category.find(params[:id])
|
29
|
+
respond_to do |format|
|
30
|
+
if @category.update_attributes(params[:category])
|
31
|
+
format.json { render :json => @category }
|
32
|
+
else
|
33
|
+
format.json { render :json => @category.errors.messages, :status => 'unprocessable_entity' }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def destroy
|
39
|
+
@category = Category.find(params[:id])
|
40
|
+
@category.destroy
|
41
|
+
respond_to do |format|
|
42
|
+
format.json{ render :json => @category }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Kublog
|
2
|
+
class CommentsController < ApplicationController
|
3
|
+
|
4
|
+
skip_filter :require_admin
|
5
|
+
before_filter :set_comment_user, :only => [:create]
|
6
|
+
|
7
|
+
def create
|
8
|
+
@post = Post.find(params[:post_id])
|
9
|
+
@comment = @post.comments.build(params[:comment])
|
10
|
+
respond_to do |format|
|
11
|
+
if @comment.save
|
12
|
+
format.json { render :json => @comment}
|
13
|
+
else
|
14
|
+
format.json { render :json => @comment.errors.to_json, :status => :unprocessable_entity }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def destroy
|
20
|
+
@post = Post.find(params[:post_id])
|
21
|
+
@comment = @post.comments.find(params[:id])
|
22
|
+
@comment.destroy
|
23
|
+
respond_to do |format|
|
24
|
+
format.json{ render :json => @comment }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def set_comment_user
|
31
|
+
if current_user
|
32
|
+
params[:comment].merge!({:user => current_user})
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Kublog
|
2
|
+
class ImagesController < ApplicationController
|
3
|
+
include XhrUpload::FileHelper
|
4
|
+
|
5
|
+
before_filter :set_image_file, :only => :create
|
6
|
+
|
7
|
+
def create
|
8
|
+
@image = Image.new(params[:image])
|
9
|
+
respond_to do |format|
|
10
|
+
if @image.save
|
11
|
+
format.json { render :json => @image }
|
12
|
+
else
|
13
|
+
format.json { render :json => @image.errors.messages, :status => :unprocessable_entity }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def update
|
19
|
+
@image = Image.find(params[:id])
|
20
|
+
respond_to do |format|
|
21
|
+
if @image.update_attributes(params[:image])
|
22
|
+
format.json { render :json => @image }
|
23
|
+
else
|
24
|
+
format.json { render :json => @image.errors.messages, :status => :unprocessable_entity }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def destroy
|
30
|
+
@image = Image.find(params[:id])
|
31
|
+
@image.destroy
|
32
|
+
respond_to do |format|
|
33
|
+
format.json{ render :json => @image }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def set_image_file
|
40
|
+
params[:image] ||= {:file => received_file}
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Kublog
|
2
|
+
class PostsController < ApplicationController
|
3
|
+
|
4
|
+
skip_filter :require_admin, :only => [:index, :show]
|
5
|
+
|
6
|
+
def index
|
7
|
+
@presenter = PostsPresenter.new
|
8
|
+
respond_to do |format|
|
9
|
+
format.atom { render :layout => false }
|
10
|
+
format.rss { redirect_to posts_path(:format => :atom), :status => :moved_permanently }
|
11
|
+
format.html { }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def new
|
16
|
+
@post = Post.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def show
|
20
|
+
post = Post.find(params[:id])
|
21
|
+
@presenter = PostPresenter.new(post)
|
22
|
+
end
|
23
|
+
|
24
|
+
#TODO: Figure out a proxy method to access User
|
25
|
+
def create
|
26
|
+
@post = current_user.posts.build(params[:post])
|
27
|
+
if @post.save
|
28
|
+
redirect_to @post
|
29
|
+
else
|
30
|
+
render 'new'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def edit
|
35
|
+
@post = Post.find(params[:id])
|
36
|
+
end
|
37
|
+
|
38
|
+
def update
|
39
|
+
@post = Post.find(params[:id])
|
40
|
+
if @post.update_attributes(params[:post])
|
41
|
+
redirect_to @post
|
42
|
+
else
|
43
|
+
render 'edit'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def destroy
|
48
|
+
@post = Post.find(params[:id])
|
49
|
+
@post.destroy
|
50
|
+
redirect_to posts_path
|
51
|
+
end
|
52
|
+
|
53
|
+
def check
|
54
|
+
@post = current_user.posts.build(params[:post])
|
55
|
+
respond_to do |format|
|
56
|
+
if @post.valid?
|
57
|
+
format.json { render :json => @post }
|
58
|
+
else
|
59
|
+
format.json { render :json => @post.errors.messages, :status => :unprocessable_entity }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Kublog
|
2
|
+
module PostsHelper
|
3
|
+
VERSIONS = [['',''],
|
4
|
+
['original', 'Insert Original'],
|
5
|
+
['small', 'Insert Small (140x140)'],
|
6
|
+
['thumb', 'Insert Thumbnail (54x54)']]
|
7
|
+
|
8
|
+
def size_options
|
9
|
+
@size_options ||= options_from_collection_for_select(VERSIONS, :first, :second)
|
10
|
+
end
|
11
|
+
|
12
|
+
def category_options(post)
|
13
|
+
categories = Kublog::Category.all
|
14
|
+
category_options = options_from_collection_for_select(categories, :id, :name, post.category.try(:id))
|
15
|
+
options = "<option value='' class='blank'></option>"
|
16
|
+
options += category_options
|
17
|
+
options += "<option value='create_new_category'>New category...</option>"
|
18
|
+
options
|
19
|
+
end
|
20
|
+
|
21
|
+
def user_kinds
|
22
|
+
Kublog.user_kinds
|
23
|
+
end
|
24
|
+
|
25
|
+
def missing_image_url
|
26
|
+
Kublog::FileUploader.new.default_url
|
27
|
+
end
|
28
|
+
|
29
|
+
def display?(should)
|
30
|
+
should ? 'display:block' : 'display:none'
|
31
|
+
end
|
32
|
+
|
33
|
+
def admin_comment?(comment)
|
34
|
+
comment.admin? ? 'admin' : ''
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|