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,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
|