blogo 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +97 -0
- data/Rakefile +24 -0
- data/app/assets/images/blogo/background.png +0 -0
- data/app/assets/images/blogo/github-icon-active.png +0 -0
- data/app/assets/images/blogo/github-icon.png +0 -0
- data/app/assets/images/blogo/rss-icon-active.png +0 -0
- data/app/assets/images/blogo/rss-icon.png +0 -0
- data/app/assets/images/blogo/twitter-icon-active.png +0 -0
- data/app/assets/images/blogo/twitter-icon.png +0 -0
- data/app/assets/javascripts/blogo/admin/application.js +13 -0
- data/app/assets/javascripts/blogo/admin/ckeditor.js +2 -0
- data/app/assets/javascripts/blogo/admin/helpers/post_preview.js.coffee +41 -0
- data/app/assets/javascripts/blogo/admin/helpers/title_to_url.js.coffee +19 -0
- data/app/assets/javascripts/blogo/ckeditor/ckeditor_basepath.js.erb +6 -0
- data/app/assets/javascripts/blogo/ckeditor/config.js.erb +41 -0
- data/app/assets/stylesheets/blogo/admin.sass +105 -0
- data/app/assets/stylesheets/blogo/blog.sass +198 -0
- data/app/controllers/blogo/admin/base_controller.rb +19 -0
- data/app/controllers/blogo/admin/comments_controller.rb +7 -0
- data/app/controllers/blogo/admin/images_controller.rb +44 -0
- data/app/controllers/blogo/admin/posts_controller.rb +64 -0
- data/app/controllers/blogo/admin/sessions_controller.rb +24 -0
- data/app/controllers/blogo/application_controller.rb +2 -0
- data/app/controllers/blogo/posts_controller.rb +82 -0
- data/app/form_builders/blogo/form_builder.rb +17 -0
- data/app/helpers/blogo/admin/base_helper.rb +10 -0
- data/app/helpers/blogo/application_helper.rb +40 -0
- data/app/models/blogo/post.rb +59 -0
- data/app/models/blogo/tag.rb +10 -0
- data/app/models/blogo/tagging.rb +4 -0
- data/app/models/blogo/user.rb +9 -0
- data/app/services/blogo/base_post_service.rb +51 -0
- data/app/services/blogo/create_post_service.rb +27 -0
- data/app/services/blogo/destroy_post_service.rb +13 -0
- data/app/services/blogo/preview_post_service.rb +20 -0
- data/app/services/blogo/update_post_service.rb +24 -0
- data/app/views/blogo/admin/comments/index.html.erb +5 -0
- data/app/views/blogo/admin/images/create.erb +6 -0
- data/app/views/blogo/admin/posts/_form.html.erb +57 -0
- data/app/views/blogo/admin/posts/_post_li.html.erb +14 -0
- data/app/views/blogo/admin/posts/edit.html.erb +5 -0
- data/app/views/blogo/admin/posts/index.html.erb +18 -0
- data/app/views/blogo/admin/posts/new.html.erb +5 -0
- data/app/views/blogo/admin/sessions/new.html.erb +14 -0
- data/app/views/blogo/admin/shared/_nav_bar.html.erb +10 -0
- data/app/views/blogo/posts/_icons.html.erb +11 -0
- data/app/views/blogo/posts/_meta.html.erb +33 -0
- data/app/views/blogo/posts/_paginator.html.erb +20 -0
- data/app/views/blogo/posts/_post_header.html.erb +20 -0
- data/app/views/blogo/posts/_post_overview.html.erb +9 -0
- data/app/views/blogo/posts/feed.atom.builder +18 -0
- data/app/views/blogo/posts/index.html.erb +6 -0
- data/app/views/blogo/posts/show.html.erb +4 -0
- data/app/views/blogo/shared/_aside.html.erb +24 -0
- data/app/views/blogo/shared/_disqus_comments.html.erb +20 -0
- data/app/views/blogo/shared/_google_analytics.html.erb +16 -0
- data/app/views/blogo/shared/_post.html.erb +7 -0
- data/app/views/layouts/blogo/admin.html.erb +29 -0
- data/app/views/layouts/blogo/blog.html.erb +41 -0
- data/config/routes.rb +27 -0
- data/db/migrate/20140218134508_create_blogo_users.rb +15 -0
- data/db/migrate/20140218134512_create_blogo_tags.rb +13 -0
- data/db/migrate/20140218134550_create_blogo_posts.rb +29 -0
- data/db/migrate/20140218134620_create_blogo_taggings.rb +12 -0
- data/lib/blogo.rb +25 -0
- data/lib/blogo/config.rb +46 -0
- data/lib/blogo/engine.rb +20 -0
- data/lib/blogo/errors.rb +5 -0
- data/lib/blogo/paginator.rb +111 -0
- data/lib/blogo/renderer.rb +29 -0
- data/lib/blogo/renderer/base.rb +48 -0
- data/lib/blogo/renderer/html.rb +10 -0
- data/lib/blogo/renderer/markdown.rb +14 -0
- data/lib/blogo/version.rb +3 -0
- data/lib/tasks/blogo_tasks.rake +25 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/fakeobjects/images/spacer.gif +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/icons.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/icons_hidpi.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/image/images/noimage.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/link/images/anchor.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/magicline/images/hidpi/icon.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/plugins/magicline/images/icon.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/icons.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/icons_hidpi.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/arrow.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/close.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/hidpi/close.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/hidpi/lock-open.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/hidpi/lock.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/hidpi/refresh.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/lock-open.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/lock.png +0 -0
- data/vendor/assets/images/blogo/ckeditor/skins/moono/images/refresh.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/ckeditor.js +902 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/af.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ar.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/bg.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/bn.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/bs.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ca.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/cs.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/cy.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/da.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/de.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/el.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/en-au.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/en-ca.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/en-gb.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/en.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/eo.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/es.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/et.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/eu.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/fa.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/fi.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/fo.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/fr-ca.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/fr.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/gl.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/gu.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/he.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/hi.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/hr.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/hu.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/id.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/is.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/it.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ja.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ka.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/km.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ko.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ku.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/lt.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/lv.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/mk.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/mn.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ms.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/nb.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/nl.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/no.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/pl.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/pt-br.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/pt.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ro.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ru.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/si.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/sk.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/sl.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/sq.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/sr-latn.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/sr.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/sv.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/th.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/tr.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/ug.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/uk.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/vi.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/zh-cn.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/lang/zh.js +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +10 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/id.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +9 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/si.js +10 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +9 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +10 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/about/dialogs/about.js +7 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/clipboard/dialogs/paste.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/image/dialogs/image.js +43 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/link/dialogs/anchor.js +8 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/link/dialogs/link.js +37 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/link/images/anchor.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/pastefromword/filter/default.js +31 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/scayt/dialogs/options.js +20 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/ar.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/bg.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/ca.js +14 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/cs.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/cy.js +14 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/de.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/el.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/en.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/eo.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/es.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/et.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/fa.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/fi.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js +10 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/fr.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/gl.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/he.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/hr.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/hu.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/id.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/it.js +14 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/ja.js +9 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/km.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/ku.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/lv.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/nb.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/nl.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/no.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/pl.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/pt.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/ru.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/si.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/sk.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/sl.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/sq.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/sv.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/th.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/tr.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/ug.js +13 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/uk.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/vi.js +14 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +9 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/lang/zh.js +12 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/specialchar/dialogs/specialchar.js +14 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/table/dialogs/table.js +21 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/tabletools/dialogs/tableCell.js +16 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wpmore/demo.html +67 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wpmore/images/more.gif +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wpmore/images/more_bug.gif +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wpmore/images/page.gif +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wpmore/plugin.js +179 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wsc/dialogs/ciframe.html +66 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wsc/dialogs/tmp.html +118 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wsc/dialogs/wsc.css +82 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wsc/dialogs/wsc.js +67 -0
- data/vendor/assets/javascripts/blogo/ckeditor/plugins/wsc/dialogs/wsc_ie.js +11 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/dialog.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/dialog_ie.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/dialog_ie7.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/dialog_ie8.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/dialog_iequirks.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/dialog_opera.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/editor.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/editor_gecko.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/editor_ie.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/editor_ie7.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/editor_ie8.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/editor_iequirks.css +5 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/icons.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/icons_hidpi.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/arrow.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/close.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/hidpi/close.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/hidpi/lock-open.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/hidpi/lock.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/hidpi/refresh.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/lock-open.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/lock.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/skins/moono/images/refresh.png +0 -0
- data/vendor/assets/javascripts/blogo/ckeditor/styles.js +111 -0
- data/vendor/assets/javascripts/blogo/modal.js +315 -0
- data/vendor/assets/javascripts/blogo/moment.js +6 -0
- data/vendor/assets/javascripts/blogo/pikaday.js +920 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/contents.css +123 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/plugins/scayt/dialogs/toolbar.css +71 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/plugins/wsc/dialogs/wsc.css +82 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/dialog.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/dialog_ie.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/dialog_ie7.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/dialog_ie8.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/dialog_iequirks.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/dialog_opera.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/editor.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/editor_gecko.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/editor_ie.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/editor_ie7.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/editor_ie8.css +5 -0
- data/vendor/assets/stylesheets/blogo/ckeditor/skins/moono/editor_iequirks.css +5 -0
- data/vendor/assets/stylesheets/blogo/modal.scss +326 -0
- data/vendor/assets/stylesheets/blogo/pikaday.css +170 -0
- data/vendor/assets/stylesheets/blogo/pure-min.css +11 -0
- metadata +418 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
module Blogo::Admin
|
2
|
+
class BaseController < Blogo::ApplicationController
|
3
|
+
before_filter :ensure_authenticated!
|
4
|
+
|
5
|
+
layout 'blogo/admin'
|
6
|
+
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def ensure_authenticated!
|
11
|
+
redirect_to admin_login_path unless blogo_current_user
|
12
|
+
end
|
13
|
+
|
14
|
+
def blogo_current_user
|
15
|
+
@blogo_current_user ||= Blogo::User.find(session[:blogo_user_id]) if session[:blogo_user_id]
|
16
|
+
end
|
17
|
+
helper_method :blogo_current_user
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Blogo::Admin
|
2
|
+
# Handles image upload with CKeditor.
|
3
|
+
class ImagesController < BaseController
|
4
|
+
skip_before_filter :verify_authenticity_token
|
5
|
+
|
6
|
+
layout false
|
7
|
+
|
8
|
+
# Directory in public with blog images
|
9
|
+
IMAGE_DIRECTORY = 'blog/images'
|
10
|
+
|
11
|
+
# POST /admin/images
|
12
|
+
#
|
13
|
+
# Upload image.
|
14
|
+
def create
|
15
|
+
upload_io = params[:upload]
|
16
|
+
|
17
|
+
image_name = upload_io.original_filename
|
18
|
+
file_path = Rails.root.join('public', image_directory, image_name)
|
19
|
+
|
20
|
+
if File.exists?(file_path)
|
21
|
+
@error = "Image with name \"#{image_name}\" already exists"
|
22
|
+
else
|
23
|
+
dir = File.dirname(file_path)
|
24
|
+
FileUtils.mkdir_p(dir) unless File.exists?(dir)
|
25
|
+
File.binwrite(file_path, upload_io.read)
|
26
|
+
end
|
27
|
+
|
28
|
+
@image_path = File.join('/', image_directory, image_name)
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
# Image directory with year/month subdirectories.
|
35
|
+
#
|
36
|
+
# @return [String]
|
37
|
+
def image_directory
|
38
|
+
@image_directory ||= begin
|
39
|
+
date_dir = Time.now.strftime('%Y/%m')
|
40
|
+
File.join(IMAGE_DIRECTORY, date_dir)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Blogo::Admin
|
2
|
+
class PostsController < BaseController
|
3
|
+
|
4
|
+
def index
|
5
|
+
@posts = Blogo::Post.all
|
6
|
+
end
|
7
|
+
|
8
|
+
def new
|
9
|
+
@post = Blogo::Post.new(published: true)
|
10
|
+
end
|
11
|
+
|
12
|
+
def create
|
13
|
+
service = Blogo::CreatePostService.new(blogo_current_user, post_params)
|
14
|
+
|
15
|
+
if service.create!
|
16
|
+
@post = service.post
|
17
|
+
flash[:notice] = "The post is created"
|
18
|
+
redirect_to admin_posts_path
|
19
|
+
else
|
20
|
+
@post = service.post
|
21
|
+
render 'new'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def edit
|
26
|
+
@post = Blogo::Post.find(params[:id])
|
27
|
+
end
|
28
|
+
|
29
|
+
def update
|
30
|
+
@post = Blogo::Post.find(params[:id])
|
31
|
+
service = Blogo::UpdatePostService.new(@post, post_params)
|
32
|
+
|
33
|
+
if service.update!
|
34
|
+
flash[:notice] = "The post is updated"
|
35
|
+
redirect_to admin_posts_path
|
36
|
+
else
|
37
|
+
render 'edit'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def destroy
|
42
|
+
post = Blogo::Post.find(params[:id])
|
43
|
+
Blogo::DestroyPostService.new(post).destroy!
|
44
|
+
|
45
|
+
flash[:notice] = "The post is removed"
|
46
|
+
redirect_to admin_posts_path
|
47
|
+
end
|
48
|
+
|
49
|
+
def preview
|
50
|
+
@post = Blogo::PreviewPostService.new(blogo_current_user, post_params).preview
|
51
|
+
|
52
|
+
@meta = {title: @post.title }
|
53
|
+
@tags = Blogo::Tag.all
|
54
|
+
render 'blogo/posts/show', layout: 'blogo/blog'
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def post_params
|
61
|
+
params.require(:post).permit(:title, :permalink, :published_at, :raw_content, :published, :tags_string)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Blogo::Admin
|
2
|
+
class SessionsController < BaseController
|
3
|
+
skip_before_filter :ensure_authenticated!
|
4
|
+
|
5
|
+
def new
|
6
|
+
end
|
7
|
+
|
8
|
+
def create
|
9
|
+
user = Blogo::User.find_by_email(params[:email])
|
10
|
+
if user && user.authenticate(params[:password])
|
11
|
+
session[:blogo_user_id] = user.id
|
12
|
+
redirect_to admin_url, notice: "You have logged in"
|
13
|
+
else
|
14
|
+
flash.now.alert = "Incorrect email or password"
|
15
|
+
render "new"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def destroy
|
20
|
+
session[:blogo_user_id] = nil
|
21
|
+
redirect_to admin_url, notice: "You have logged out"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module Blogo
|
2
|
+
class PostsController < ApplicationController
|
3
|
+
layout 'blogo/blog'
|
4
|
+
|
5
|
+
# Number of posts shown in feed.
|
6
|
+
FEED_POSTS_LIMIT = 20
|
7
|
+
|
8
|
+
def index
|
9
|
+
@tag = params[:tag]
|
10
|
+
set_vars
|
11
|
+
set_paginator
|
12
|
+
|
13
|
+
@meta = {}
|
14
|
+
@meta[:title] = "#{Blogo.config.site_title} - #{Blogo.config.site_subtitle}"
|
15
|
+
@meta[:site_name] = Blogo.config.site_title
|
16
|
+
@meta[:keywords] = Blogo.config.keywords
|
17
|
+
@meta[:type] = 'website'
|
18
|
+
end
|
19
|
+
|
20
|
+
def show
|
21
|
+
@post = Post.published.where(:permalink => params[:permalink]).first!
|
22
|
+
set_vars
|
23
|
+
|
24
|
+
@meta = {}
|
25
|
+
@meta[:title] = "#{@post.title} - #{Blogo.config.site_title}"
|
26
|
+
@meta[:description] = @post.meta_description
|
27
|
+
@meta[:keywords] = [@post.tags_string, Blogo.config.keywords].flatten.join(", ")
|
28
|
+
@meta[:url] = request.url
|
29
|
+
@meta[:image] = meta_image
|
30
|
+
@meta[:type] = 'article'
|
31
|
+
@meta[:site_name] = Blogo.config.site_title
|
32
|
+
end
|
33
|
+
|
34
|
+
def feed
|
35
|
+
@posts = published_posts.limit(FEED_POSTS_LIMIT)
|
36
|
+
@updated = @posts.first.try(:updated_at)
|
37
|
+
|
38
|
+
render 'feed', layout: false
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def set_paginator
|
45
|
+
posts = published_posts
|
46
|
+
posts = posts.joins(:tags).where("#{Tag.table_name}.name = ?", @tag) if @tag
|
47
|
+
|
48
|
+
@paginator = Paginator.new(
|
49
|
+
posts,
|
50
|
+
:page => (params[:page] || 1),
|
51
|
+
:per_page => conf.posts_per_page,
|
52
|
+
:size => conf.paginator_size)
|
53
|
+
end
|
54
|
+
|
55
|
+
def set_vars
|
56
|
+
@recent_posts = published_posts.limit(conf.recent_posts) if conf.recent_posts
|
57
|
+
@tags = Tag.all
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
def published_posts
|
62
|
+
Post.published
|
63
|
+
end
|
64
|
+
|
65
|
+
# Engine configuration. Method +config+ is already used by Rails.
|
66
|
+
#
|
67
|
+
# @return [Blogo::Config]
|
68
|
+
def conf
|
69
|
+
Blogo.config
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
def meta_image
|
74
|
+
return nil unless @post.meta_image.present?
|
75
|
+
if @post.meta_image =~ /\Ahttp/
|
76
|
+
@post.meta_image
|
77
|
+
else
|
78
|
+
"#{request.protocol}#{request.host}#{@post.meta_image}"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Blogo::FormBuilder < ActionView::Helpers::FormBuilder
|
2
|
+
include ActionView::Context
|
3
|
+
include ActionView::Helpers::TagHelper
|
4
|
+
|
5
|
+
def error_messages
|
6
|
+
return if object.errors.empty?
|
7
|
+
|
8
|
+
content_tag(:div, class: "alert alert-error") do
|
9
|
+
content_tag(:ul) do
|
10
|
+
object.errors.full_messages.map do |msg|
|
11
|
+
content_tag(:li, msg)
|
12
|
+
end.join.html_safe
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Blogo
|
2
|
+
# Note, +_path+ postfix is avoided to not mess helper methods and routes.
|
3
|
+
module ApplicationHelper
|
4
|
+
# Path to a post with year prefix.
|
5
|
+
#
|
6
|
+
# @param post [Blogo::Post]
|
7
|
+
#
|
8
|
+
# @return [String]
|
9
|
+
def path_to_post(post)
|
10
|
+
post_path(:permalink => post.permalink)
|
11
|
+
end
|
12
|
+
|
13
|
+
def url_to_post(post)
|
14
|
+
post_url(:permalink => post.permalink)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Path to a page or a page in scope of a particular tag.
|
18
|
+
#
|
19
|
+
# @param page [Integer]
|
20
|
+
# @param tag [String, nil]
|
21
|
+
#
|
22
|
+
# @retun [String]
|
23
|
+
def path_to_page(page, tag = nil)
|
24
|
+
if tag
|
25
|
+
tag_page_path(tag, page)
|
26
|
+
else
|
27
|
+
page_path(page)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Post overview.
|
32
|
+
#
|
33
|
+
# @param post [Blogo::Post]
|
34
|
+
#
|
35
|
+
# @return [String]
|
36
|
+
def post_overview(post)
|
37
|
+
post.html_overiew ? post.html_overiew : post.html_content
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
class Blogo::Post < ActiveRecord::Base
|
2
|
+
belongs_to :user
|
3
|
+
|
4
|
+
has_many :taggings
|
5
|
+
has_many :tags, through: :taggings, dependent: :destroy
|
6
|
+
|
7
|
+
|
8
|
+
validates :permalink, :title, :raw_content, presence: true
|
9
|
+
validates :permalink, uniqueness: true
|
10
|
+
|
11
|
+
scope :published, -> { where(published: true).where("published_at <= ?", Time.now) }
|
12
|
+
|
13
|
+
default_scope { order('published_at DESC') }
|
14
|
+
|
15
|
+
before_save :set_meta_description, :set_meta_image
|
16
|
+
|
17
|
+
def status
|
18
|
+
published? ? 'published' : 'draft'
|
19
|
+
end
|
20
|
+
|
21
|
+
# Array of tag names. Storing arrays in +tags_string+ we don't need to make
|
22
|
+
# many-to-many join with tags table to get tag names.
|
23
|
+
#
|
24
|
+
# @return [Array<String>]
|
25
|
+
def tag_names
|
26
|
+
if tags_string
|
27
|
+
tags_string.split(',').map(&:strip)
|
28
|
+
else
|
29
|
+
[]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
# Filter html content to get plain text and set first 200 characters as meta_description.
|
37
|
+
#
|
38
|
+
# @return [void]
|
39
|
+
def set_meta_description
|
40
|
+
html = html_overiew || html_content
|
41
|
+
|
42
|
+
self.meta_description =
|
43
|
+
html.gsub(/<\/?[^>]*>/, ' '). # replace HTML tags with spaces
|
44
|
+
gsub(/&\w{1,9};|"/, ''). # remove HTML special chars and double quotes
|
45
|
+
gsub(/\n+/, " "). # remove new lines
|
46
|
+
gsub(/\s+/, ' '). # remove duplicated spaces
|
47
|
+
strip[0..200] # strip spaces and get first 200 chars
|
48
|
+
end
|
49
|
+
|
50
|
+
# Find first img tag and in content and grab its source.
|
51
|
+
#
|
52
|
+
# @return [void]
|
53
|
+
def set_meta_image
|
54
|
+
regexp = /<img[^>]+src=["']([^"']*)/
|
55
|
+
if img_tag = html_content.match(regexp)
|
56
|
+
self.meta_image = img_tag[1]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Blogo
|
2
|
+
class BasePostService
|
3
|
+
JUMP_BREAK = '<!--more-->'
|
4
|
+
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
def assign_attributes
|
9
|
+
@post.assign_attributes(@post_attrs)
|
10
|
+
@post.published_at ||= Time.zone.now
|
11
|
+
@post.markup_lang = Blogo.config.markup_lang
|
12
|
+
render_and_set_content!
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def set_tags!(tags_string)
|
17
|
+
return unless tags_string.present?
|
18
|
+
|
19
|
+
tag_names = tags_string.split(',').map do |tag_name|
|
20
|
+
tag_name.strip.downcase
|
21
|
+
end
|
22
|
+
tag_names.reject!(&:blank?)
|
23
|
+
|
24
|
+
tag_names.each do |tag_name|
|
25
|
+
tag = Blogo::Tag.where(name: tag_name).first_or_create
|
26
|
+
@post.tags << tag unless @post.tags.include?(tag)
|
27
|
+
end
|
28
|
+
|
29
|
+
@post.tags_string = tag_names.join(", ")
|
30
|
+
end
|
31
|
+
|
32
|
+
def clear_tags!
|
33
|
+
@post.tags.destroy_all.each do |tag|
|
34
|
+
tag.destroy if tag.posts.count.zero?
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def render_and_set_content!
|
39
|
+
renderer = Blogo::Renderer.get(Blogo.config.markup_lang)
|
40
|
+
|
41
|
+
overview, rest = @post.raw_content.split(JUMP_BREAK, 2)
|
42
|
+
if rest.present?
|
43
|
+
@post.html_overiew = renderer.render(overview)
|
44
|
+
@post.html_content = renderer.render(overview + rest)
|
45
|
+
else
|
46
|
+
@post.html_overiew = nil
|
47
|
+
@post.html_content = renderer.render(@post.raw_content)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|