typo 4.1 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/TODO-4.2 +14 -0
- data/TODO.MULTIUSERS +45 -0
- data/app/controllers/admin/base_controller.rb +18 -0
- data/app/controllers/admin/general_controller.rb +14 -0
- data/app/controllers/application.rb +2 -1
- data/app/controllers/articles_controller.rb +18 -21
- data/app/helpers/admin/base_helper.rb +4 -4
- data/app/helpers/admin/feedback_helper.rb +3 -3
- data/app/helpers/application_helper.rb +2 -6
- data/app/helpers/sidebar_helper.rb +2 -2
- data/app/models/blog.rb +9 -1
- data/app/models/category.rb +9 -9
- data/app/models/comment.rb +1 -1
- data/app/models/content_state/presumed_ham.rb +2 -2
- data/app/models/resource.rb +2 -0
- data/app/views/admin/categories/_categories.rhtml +10 -6
- data/app/views/admin/categories/edit.rhtml +3 -1
- data/app/views/admin/comments/_form.rhtml +3 -3
- data/app/views/admin/comments/list.rhtml +7 -5
- data/app/views/admin/comments/new.rhtml +3 -1
- data/app/views/admin/comments/show.rhtml +3 -1
- data/app/views/admin/content/_articles.rhtml +1 -1
- data/app/views/admin/content/_form.rhtml +4 -2
- data/app/views/admin/content/new.rhtml +1 -0
- data/app/views/admin/content/preview.rhtml +8 -8
- data/app/views/admin/feedback/_item.rhtml +3 -1
- data/app/views/admin/feedback/list.rhtml +4 -4
- data/app/views/admin/general/index.rhtml +14 -1
- data/app/views/admin/pages/_form.rhtml +1 -1
- data/app/views/admin/pages/destroy.rhtml +1 -1
- data/app/views/admin/pages/new.rhtml +1 -0
- data/app/views/admin/shared/_edit.rhtml +2 -2
- data/app/views/layouts/administration.rhtml +5 -2
- data/app/views/layouts/minimal.rhtml +134 -2
- data/config/boot.rb +1 -1
- data/config/environment.rb +11 -3
- data/config/environments/test.rb +0 -7
- data/config/routes.rb +3 -0
- data/db/migrate/004_add_sidebars.rb +21 -3
- data/db/migrate/056_create_notifications.rb +1 -1
- data/db/migrate/062_add_sitealizer_plugin.rb +18 -0
- data/db/schema.mysql-v3.sql +217 -0
- data/db/schema.mysql.sql +31 -5
- data/db/schema.postgresql.sql +31 -6
- data/db/schema.rb +17 -7
- data/db/schema.sqlite.sql +31 -6
- data/db/schema.sqlserver.sql +32 -6
- data/db/schema_version +1 -1
- data/lang/de_DE.rb +493 -0
- data/lang/fr_FR.rb +28 -4
- data/lang/ro_RO.rb +554 -0
- data/lib/tasks/release.rake +7 -7
- data/lib/typo_version.rb +1 -1
- data/public/images/sitealizer/bar.gif +0 -0
- data/public/images/sitealizer/uv.png +0 -0
- data/public/images/sitealizer/vh.png +0 -0
- data/public/javascripts/tiny_mce/blank.htm +9 -0
- data/public/javascripts/tiny_mce/langs/en.js +41 -0
- data/public/javascripts/tiny_mce/license.txt +504 -0
- data/public/javascripts/tiny_mce/themes/advanced/about.htm +52 -0
- data/public/javascripts/tiny_mce/themes/advanced/anchor.htm +33 -0
- data/public/javascripts/tiny_mce/themes/advanced/charmap.htm +53 -0
- data/public/javascripts/tiny_mce/themes/advanced/color_picker.htm +13 -0
- data/public/javascripts/tiny_mce/themes/advanced/css/editor_content.css +58 -0
- data/public/javascripts/tiny_mce/themes/advanced/css/editor_popup.css +331 -0
- data/public/javascripts/tiny_mce/themes/advanced/css/editor_ui.css +97 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/about.htm +31 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm +162 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm +45 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/index.htm +27 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm +32 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm +65 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm +33 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm +71 -0
- data/public/javascripts/tiny_mce/themes/advanced/docs/en/style.css +28 -0
- data/public/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -0
- data/public/javascripts/tiny_mce/themes/advanced/editor_template_src.js +1534 -0
- data/public/javascripts/tiny_mce/themes/advanced/image.htm +100 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/anchor.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/anchor_symbol.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/backcolor.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/bold.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/bold_de_se.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/bold_es.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/bold_fr.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/bold_ru.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/bold_tw.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/browse.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/bullist.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/button_menu.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/buttons.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/charmap.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/cleanup.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/close.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/code.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/color.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/copy.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/custom_1.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/cut.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/forecolor.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/help.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/hr.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/image.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/indent.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/insert_button_bg.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/italic.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/italic_de_se.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/italic_es.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/italic_ru.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/italic_tw.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/justifycenter.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/justifyfull.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/justifyleft.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/justifyright.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/link.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/menu_check.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/newdocument.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/numlist.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/opacity.png +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/outdent.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/paste.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/redo.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/removeformat.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/separator.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/spacer.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/statusbar_resize.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/strikethrough.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/sub.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/sup.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/underline.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/underline_es.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/underline_fr.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/underline_ru.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/underline_tw.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/undo.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/unlink.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/visualaid.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_end.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif +0 -0
- data/public/javascripts/tiny_mce/themes/advanced/jscripts/about.js +75 -0
- data/public/javascripts/tiny_mce/themes/advanced/jscripts/anchor.js +74 -0
- data/public/javascripts/tiny_mce/themes/advanced/jscripts/charmap.js +326 -0
- data/public/javascripts/tiny_mce/themes/advanced/jscripts/color_picker.js +108 -0
- data/public/javascripts/tiny_mce/themes/advanced/jscripts/image.js +81 -0
- data/public/javascripts/tiny_mce/themes/advanced/jscripts/link.js +70 -0
- data/public/javascripts/tiny_mce/themes/advanced/jscripts/source_editor.js +60 -0
- data/public/javascripts/tiny_mce/themes/advanced/langs/en.js +82 -0
- data/public/javascripts/tiny_mce/themes/advanced/link.htm +100 -0
- data/public/javascripts/tiny_mce/themes/advanced/source_editor.htm +32 -0
- data/public/javascripts/tiny_mce/tiny_mce.js +1 -0
- data/public/javascripts/tiny_mce/tiny_mce_popup.js +288 -0
- data/public/javascripts/tiny_mce/tiny_mce_src.js +7284 -0
- data/public/javascripts/tiny_mce/utils/editable_selects.js +61 -0
- data/public/javascripts/tiny_mce/utils/form_utils.js +210 -0
- data/public/javascripts/tiny_mce/utils/mclayer.js +210 -0
- data/public/javascripts/tiny_mce/utils/mctabs.js +74 -0
- data/public/javascripts/tiny_mce/utils/validate.js +219 -0
- data/public/stylesheets/administration.css +5 -1
- data/public/stylesheets/minimal.css +1 -0
- data/test/functional/admin/categories_controller_test.rb +2 -2
- data/test/functional/xml_controller_test.rb +72 -40
- data/test/test_helper.rb +1 -17
- data/test/unit/article_test.rb +1 -1
- data/test/unit/trigger_test.rb +1 -1
- data/themes/scribbish/views/articles/_comment.rhtml +13 -17
- data/themes/scribbish/views/articles/_comment_form.rhtml +7 -5
- data/themes/scribbish/views/articles/_comment_list.rhtml +7 -0
- data/themes/scribbish/views/articles/read.rhtml +1 -1
- data/vendor/plugins/aimpresence_sidebar/views/content.rhtml +1 -1
- data/vendor/plugins/archives_sidebar/views/content.rhtml +1 -1
- data/vendor/plugins/audioscrobbler_sidebar/MAINTAINERS +26 -0
- data/vendor/plugins/audioscrobbler_sidebar/MIT-LICENSE +21 -0
- data/vendor/plugins/audioscrobbler_sidebar/README +27 -0
- data/vendor/plugins/backpack_sidebar/MAINTAINERS +26 -0
- data/vendor/plugins/backpack_sidebar/MIT-LICENSE +21 -0
- data/vendor/plugins/backpack_sidebar/README +27 -0
- data/vendor/plugins/category_sidebar/views/content.rhtml +1 -1
- data/vendor/plugins/sitealizer/CHANGELOG +6 -0
- data/vendor/plugins/sitealizer/LICENSE +22 -0
- data/vendor/plugins/sitealizer/README +82 -0
- data/vendor/plugins/sitealizer/Rakefile +22 -0
- data/vendor/plugins/sitealizer/init.rb +24 -0
- data/vendor/plugins/sitealizer/install.rb +22 -0
- data/vendor/plugins/sitealizer/lib/app/assets/images/bar.gif +0 -0
- data/vendor/plugins/sitealizer/lib/app/assets/images/uv.png +0 -0
- data/vendor/plugins/sitealizer/lib/app/assets/images/vh.png +0 -0
- data/vendor/plugins/sitealizer/lib/app/controllers/sitealizer_controller.rb +118 -0
- data/vendor/plugins/sitealizer/lib/app/models/site_tracker.rb +145 -0
- data/vendor/plugins/sitealizer/lib/app/views/layouts/sitealizer.rhtml +66 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_browsers.rhtml +23 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_daily_stats.rhtml +67 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_hits_summary.rhtml +0 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_hosts.rhtml +21 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_keywords.rhtml +19 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_languages.rhtml +21 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_main_frame.rhtml +84 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_monthly_hits.rhtml +67 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_page_urls.rhtml +20 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_platforms.rhtml +21 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_referers.rhtml +22 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_robots.rhtml +19 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_search_engines.rhtml +19 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/hourly_stats.rhtml +39 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/index.rhtml +8 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/login.rhtml +20 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/menu.rhtml +74 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/referrer_stats.rhtml +20 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/search_stats.rhtml +25 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/summary.rhtml +22 -0
- data/vendor/plugins/sitealizer/lib/app/views/sitealizer/visitor_info.rhtml +30 -0
- data/vendor/plugins/sitealizer/lib/config.yml +18 -0
- data/vendor/plugins/sitealizer/lib/sitealizer/parser.rb +347 -0
- data/vendor/plugins/sitealizer/lib/sitealizer.rb +78 -0
- data/vendor/plugins/sitealizer/lib/tasks/sitealizer.rake +36 -0
- data/vendor/plugins/sitealizer/test/fixtures/sitealizer.yml +89 -0
- data/vendor/plugins/sitealizer/test/sitealizer_controller_test.rb +208 -0
- data/vendor/plugins/sitealizer/test/sitealizer_parser_test.rb +169 -0
- data/vendor/plugins/sitealizer/test/test_helper.rb +7 -0
- data/vendor/plugins/tada_sidebar/MAINTAINERS +26 -0
- data/vendor/plugins/tada_sidebar/MIT-LICENSE +21 -0
- data/vendor/plugins/tada_sidebar/README +27 -0
- data/vendor/plugins/tag_sidebar/views/content.rhtml +1 -1
- data/vendor/plugins/tiny_mce/README +10 -0
- data/vendor/plugins/tiny_mce/Rakefile +22 -0
- data/vendor/plugins/tiny_mce/TODO +2 -0
- data/vendor/plugins/tiny_mce/changelog +1017 -0
- data/vendor/plugins/tiny_mce/init.rb +3 -0
- data/vendor/plugins/tiny_mce/install.rb +1 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce.rb +36 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce_helper.rb +48 -0
- data/vendor/plugins/tiny_mce/tasks/tiny_mce.rake +40 -0
- data/vendor/plugins/tiny_mce/test/helper_testcase.rb +38 -0
- data/vendor/plugins/tiny_mce/test/tiny_mce_helper_test.rb +67 -0
- data/vendor/plugins/tiny_mce/test/tiny_mce_test.rb +85 -0
- data/vendor/plugins/tiny_mce/tiny_mce_options.yml +121 -0
- data/vendor/plugins/xbox_sidebar/MAINTAINERS +26 -0
- data/vendor/plugins/xbox_sidebar/MIT-LICENSE +21 -0
- data/vendor/plugins/xbox_sidebar/README +27 -0
- data/vendor/plugins/xml_sidebar/lib/xml_sidebar.rb +1 -1
- data/vendor/plugins/xml_sidebar/views/content.rhtml +4 -4
- metadata +220 -4
- data/TODO-4.1 +0 -16
data/Rakefile
CHANGED
data/TODO-4.2
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Short Term To-Do for 4.2
|
2
|
+
------------------------
|
3
|
+
|
4
|
+
– Fix bugs
|
5
|
+
– Finish admin ergonomic revamping
|
6
|
+
– Change admin theme
|
7
|
+
– Change default theme for something more modern
|
8
|
+
– Convert submited patches as plugins (see on the trac)
|
9
|
+
– Add users contributed translations (ES, JP, BR...)
|
10
|
+
|
11
|
+
If I have the time :
|
12
|
+
– Real mutiple users roles
|
13
|
+
– Multi blogs
|
14
|
+
– Go to the grocery and buy more beer
|
data/TODO.MULTIUSERS
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
This documents aims at describing what I plan for Typo to go multiusers
|
2
|
+
|
3
|
+
A profile :
|
4
|
+
has many right
|
5
|
+
|
6
|
+
A user :
|
7
|
+
has one profile
|
8
|
+
has many rights
|
9
|
+
|
10
|
+
When a user is created, he's given a profile. His profile is marked as "clean"
|
11
|
+
The administrator can assign specific rights to that user. His profile is marked as "tainted"
|
12
|
+
When a profile is modified, changes are made on users who have a "clean" profile.
|
13
|
+
|
14
|
+
Here are the profiles and rights :
|
15
|
+
|
16
|
+
Administrator
|
17
|
+
- admin the blog
|
18
|
+
- create, edit, delete users
|
19
|
+
- create, edit, delete roles
|
20
|
+
- write, edit, publish, unpublish, delete drafts
|
21
|
+
- write, edit, publish, unpublish, delete posts
|
22
|
+
- write comments
|
23
|
+
- edit / delete his own comments
|
24
|
+
- edit / delete other people's comments
|
25
|
+
- moderate comments marked as spam
|
26
|
+
|
27
|
+
Publisher
|
28
|
+
- write, edit, publish, unpublish, delete drafts
|
29
|
+
- write, edit, publish, unpublish, delete posts
|
30
|
+
- write comments
|
31
|
+
- edit / delete his own comments
|
32
|
+
- moderate comments marked as spam
|
33
|
+
|
34
|
+
Writer
|
35
|
+
- write, edit, publish, unpublish, delete drafts
|
36
|
+
- write comments
|
37
|
+
|
38
|
+
Moderator
|
39
|
+
- write comments
|
40
|
+
- edit / delete his own comments
|
41
|
+
- edit / delete other people's comments
|
42
|
+
- moderate comments marked as spam
|
43
|
+
|
44
|
+
Subscriber
|
45
|
+
- write comments
|
@@ -1,6 +1,24 @@
|
|
1
1
|
class Admin::BaseController < ApplicationController
|
2
2
|
cattr_accessor :look_for_migrations
|
3
3
|
@@look_for_migrations = true
|
4
|
+
if Blog.default && Blog.default.editor == 2
|
5
|
+
uses_tiny_mce(
|
6
|
+
:options => {
|
7
|
+
:theme => 'advanced',
|
8
|
+
:theme_advanced_toolbar_location => "top",
|
9
|
+
:theme_advanced_toolbar_align => "left",
|
10
|
+
:theme_advanced_resizing => true,
|
11
|
+
:theme_advanced_resize_horizontal => false,
|
12
|
+
:paste_auto_cleanup_on_paste => true,
|
13
|
+
:theme_advanced_buttons1 => %w{formatselect bold italic underline strikethrough
|
14
|
+
separator justifyleft justifycenter justifyright
|
15
|
+
separator bullist numlist forecolor backcolor
|
16
|
+
separator link unlink image},
|
17
|
+
:theme_advanced_buttons2 => [],
|
18
|
+
:theme_advanced_buttons3 => [],
|
19
|
+
:plugins => %w{contextmenu paste}},
|
20
|
+
:only => [:new, :edit])
|
21
|
+
end
|
4
22
|
|
5
23
|
layout 'administration'
|
6
24
|
before_filter :login_required, :except => [ :login, :signup ]
|
@@ -1,4 +1,7 @@
|
|
1
1
|
class Admin::GeneralController < Admin::BaseController
|
2
|
+
# Deprecation warning for plugins removal
|
3
|
+
before_filter :deprecation_warning
|
4
|
+
|
2
5
|
def index
|
3
6
|
if this_blog.base_url.blank?
|
4
7
|
this_blog.base_url = blog_base_url
|
@@ -38,5 +41,16 @@ class Admin::GeneralController < Admin::BaseController
|
|
38
41
|
end
|
39
42
|
end
|
40
43
|
|
44
|
+
# Deprecation warning for plugins removal
|
45
|
+
def deprecation_warning
|
46
|
+
if this_blog.deprecation_warning == 1
|
47
|
+
Blog.transaction do
|
48
|
+
this_blog.deprecation_warning = 0
|
49
|
+
this_blog.save
|
50
|
+
end
|
51
|
+
flash[:notice] = "Deprecation warning: please, notice that most plugins are going to be removed from the main engine in the next version. <a href='http://blog.typosphere.org/articles/2007/04/15/the-futur-of-typo-sidebar-plugins'>Read more on the official Typo blog</a>"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
41
55
|
private
|
42
56
|
end
|
@@ -2,7 +2,8 @@
|
|
2
2
|
# Likewise will all the methods added be available for all controllers.
|
3
3
|
class ApplicationController < ActionController::Base
|
4
4
|
include LoginSystem
|
5
|
-
|
5
|
+
include Sitealizer
|
6
|
+
before_filter :use_sitealizer, :reset_local_cache, :fire_triggers
|
6
7
|
after_filter :reset_local_cache
|
7
8
|
|
8
9
|
|
@@ -89,33 +89,30 @@ class ArticlesController < ContentController
|
|
89
89
|
end
|
90
90
|
|
91
91
|
if request.post?
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
render :partial => "comment", :object => @comment
|
108
|
-
rescue ActiveRecord::RecordInvalid
|
109
|
-
STDERR.puts @comment.errors.inspect
|
110
|
-
render_error(@comment)
|
111
|
-
end
|
92
|
+
@article = this_blog.published_articles.find(params[:id])
|
93
|
+
params[:comment].merge!({:ip => request.remote_ip,
|
94
|
+
:published => true,
|
95
|
+
:user => session[:user],
|
96
|
+
:user_agent => request.env['HTTP_USER_AGENT'],
|
97
|
+
:referrer => request.env['HTTP_REFERER'],
|
98
|
+
:permalink => @article.permalink_url})
|
99
|
+
@comment = @article.comments.build(params[:comment])
|
100
|
+
@comment.author ||= 'Anonymous'
|
101
|
+
@comment.save
|
102
|
+
add_to_cookies(:author, @comment.author)
|
103
|
+
add_to_cookies(:url, @comment.url)
|
104
|
+
|
105
|
+
set_headers
|
106
|
+
render :partial => "comment", :object => @comment
|
112
107
|
end
|
113
108
|
end
|
114
109
|
|
115
110
|
# Receive trackbacks linked to articles
|
116
111
|
def trackback
|
117
112
|
@error_message = catch(:error) do
|
118
|
-
if
|
113
|
+
if this_blog.global_pings_disable
|
114
|
+
throw :error, "Trackback not saved"
|
115
|
+
elsif params[:__mode] == "rss"
|
119
116
|
# Part of the trackback spec... will implement later
|
120
117
|
# XXX. Should this throw an error?
|
121
118
|
elsif !(params.has_key?(:url) && params.has_key?(:id))
|
@@ -29,7 +29,7 @@ module Admin::BaseHelper
|
|
29
29
|
unless session[:user]
|
30
30
|
link_to "log in", :controller => "/accounts", :action=>"login"
|
31
31
|
else
|
32
|
-
link_to "log out", :controller => "/accounts", :action=>"logout"
|
32
|
+
link_to _("log out"), :controller => "/accounts", :action=>"logout"
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -42,7 +42,7 @@ module Admin::BaseHelper
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def cancel(url = {:action => 'list'})
|
45
|
-
link_to "Cancel", url
|
45
|
+
link_to _("Cancel"), url
|
46
46
|
end
|
47
47
|
|
48
48
|
def save(val = "Store")
|
@@ -54,7 +54,7 @@ module Admin::BaseHelper
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def link_to_show(record)
|
57
|
-
link_to image_tag('
|
57
|
+
link_to image_tag('show.png'), :action => 'show', :id => record.id
|
58
58
|
end
|
59
59
|
|
60
60
|
def link_to_edit(record)
|
@@ -88,7 +88,7 @@ module Admin::BaseHelper
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def task_overview
|
91
|
-
task('Back to overview', 'list')
|
91
|
+
task(_('Back to overview'), 'list')
|
92
92
|
end
|
93
93
|
|
94
94
|
def task_new(title)
|
@@ -3,10 +3,10 @@ module Admin::FeedbackHelper
|
|
3
3
|
link_to truncate(article.title, 60), :controller => '/admin/content', :action => 'edit', :id => article.id
|
4
4
|
end
|
5
5
|
|
6
|
-
def task_showmod(title)
|
6
|
+
def task_showmod(title, action)
|
7
7
|
content_tag :li,
|
8
|
-
link_to(title, :published => (
|
9
|
-
:confirmed => (
|
8
|
+
link_to(title, :published => (action =~ /spam/ ? 'f' : ''),
|
9
|
+
:confirmed => (action =~ /unconfirmed/ ? 'f' : ''),
|
10
10
|
:search => params[:search])
|
11
11
|
end
|
12
12
|
end
|
@@ -46,12 +46,8 @@ module ApplicationHelper
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def js_distance_of_time_in_words_to_now(date)
|
49
|
-
|
50
|
-
|
51
|
-
else
|
52
|
-
time = Time.now
|
53
|
-
end
|
54
|
-
"<span class=\"typo_date\" title=\"#{time}\">#{time}</span>"
|
49
|
+
time = date.utc.strftime("%a, %d %b %Y %H:%M:%S GMT")
|
50
|
+
"<span class=\"typo_date\" title=\"#{time}\">#{time}</span>"
|
55
51
|
end
|
56
52
|
|
57
53
|
def meta_tag(name, value)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module SidebarHelper
|
2
|
-
def render_sidebars
|
3
|
-
this_blog.sidebars.inject('') do |acc, sb|
|
2
|
+
def render_sidebars(*sidebars)
|
3
|
+
(sidebars.blank? ? this_blog.sidebars : sidebars).inject('') do |acc, sb|
|
4
4
|
@sidebar = sb
|
5
5
|
sb.parse_request(contents, params)
|
6
6
|
controller.response.lifetime = sb.lifetime if sb.lifetime
|
data/app/models/blog.rb
CHANGED
@@ -78,11 +78,15 @@ class Blog < CachedModel
|
|
78
78
|
setting :ping_urls, :string, "http://rpc.technorati.com/rpc/ping\nhttp://ping.blo.gs/\nhttp://rpc.weblogs.com/RPC2"
|
79
79
|
setting :send_outbound_pings, :boolean, true
|
80
80
|
setting :email_from, :string, 'typo@example.com'
|
81
|
+
setting :editor, :integer, 1
|
81
82
|
|
82
83
|
# Jabber config
|
83
84
|
setting :jabber_address, :string, ''
|
84
85
|
setting :jabber_password, :string, ''
|
85
86
|
|
87
|
+
#deprecation warning for plugins removal
|
88
|
+
setting :deprecation_warning, :integer, 1
|
89
|
+
|
86
90
|
def initialize(*args)
|
87
91
|
super
|
88
92
|
# Yes, this is weird - PDC
|
@@ -109,7 +113,11 @@ class Blog < CachedModel
|
|
109
113
|
settings[:blog_id] = self.id
|
110
114
|
article_id = settings[:id]
|
111
115
|
settings.delete(:id)
|
112
|
-
|
116
|
+
article = published_articles.find(article_id)
|
117
|
+
unless article.allow_pings?
|
118
|
+
throw :error, "Trackback not saved"
|
119
|
+
end
|
120
|
+
article.trackbacks.create!(settings)
|
113
121
|
end
|
114
122
|
|
115
123
|
# Check that all required blog settings have a value.
|
data/app/models/category.rb
CHANGED
@@ -5,15 +5,15 @@ class Category < ActiveRecord::Base
|
|
5
5
|
:order => "published_at DESC, created_at DESC"
|
6
6
|
|
7
7
|
def self.find_all_with_article_counters(maxcount=nil)
|
8
|
-
self.find_by_sql([%{
|
9
|
-
SELECT categories.id, categories.name, categories.permalink, categories.position, COUNT(articles.id) AS article_counter
|
10
|
-
FROM #{Category.table_name} categories
|
11
|
-
LEFT OUTER JOIN #{Category.table_name_prefix}categorizations#{Category.table_name_suffix} articles_categories
|
12
|
-
ON articles_categories.category_id = categories.id
|
13
|
-
LEFT OUTER JOIN #{Article.table_name} articles
|
14
|
-
ON (articles_categories.article_id = articles.id AND articles.published = ?)
|
15
|
-
GROUP BY categories.id, categories.name, categories.position, categories.permalink
|
16
|
-
ORDER BY position
|
8
|
+
self.find_by_sql([%{
|
9
|
+
SELECT categories.id, categories.name, categories.permalink, categories.position, COUNT(articles.id) AS article_counter
|
10
|
+
FROM #{Category.table_name} categories
|
11
|
+
LEFT OUTER JOIN #{Category.table_name_prefix}categorizations#{Category.table_name_suffix} articles_categories
|
12
|
+
ON articles_categories.category_id = categories.id
|
13
|
+
LEFT OUTER JOIN #{Article.table_name} articles
|
14
|
+
ON (articles_categories.article_id = articles.id AND articles.published = ?)
|
15
|
+
GROUP BY categories.id, categories.name, categories.position, categories.permalink
|
16
|
+
ORDER BY position
|
17
17
|
}, true]).each {|item| item.article_counter = item.article_counter.to_i }
|
18
18
|
end
|
19
19
|
|
data/app/models/comment.rb
CHANGED
@@ -21,7 +21,7 @@ class Comment < Feedback
|
|
21
21
|
def notify_user_via_jabber(user)
|
22
22
|
if user.notify_via_jabber?
|
23
23
|
JabberNotify.send_message(user, "New comment", "A new comment was posted to '#{article.title}' on #{blog.blog_name} by #{author}:
|
24
|
-
#{body}
|
24
|
+
#{body}", self.html(:body))
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -29,9 +29,9 @@ module ContentState
|
|
29
29
|
'Ham?'
|
30
30
|
end
|
31
31
|
|
32
|
-
def send_notifications(content
|
32
|
+
def send_notifications(content)
|
33
33
|
content.interested_users.each do |user|
|
34
|
-
content.send_notification_to_user(
|
34
|
+
content.send_notification_to_user(user)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
data/app/models/resource.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
<table>
|
2
2
|
<tr>
|
3
|
-
<th><%= _("Category title")%></th>
|
4
|
-
<th><%= _("Articles")%></th>
|
5
|
-
<th><%= _("
|
3
|
+
<th><%= _("Category title") %></th>
|
4
|
+
<th><%= _("Articles") %></th>
|
5
|
+
<th><%= _("Status") %></th>
|
6
|
+
<th colspan="3"><%= _("Action") %></th>
|
6
7
|
</tr>
|
7
8
|
<% for category in @categories -%>
|
8
9
|
<tr <%= alternate_class -%> id="category_<%= category.id -%>">
|
9
|
-
<td><%=
|
10
|
-
<td><%=
|
11
|
-
<td class="operation"><%=
|
10
|
+
<td><%= category.name %></td>
|
11
|
+
<td><%= pluralize(category.articles.size, 'article') %></td>
|
12
|
+
<td class="operation"><%= image_tag 'checked.png' %></td>
|
13
|
+
<td class="operation"><%= link_to_show category %></td>
|
14
|
+
<td class="operation"><%= link_to_edit category %></td>
|
15
|
+
<td class="operation"><%= link_to_destroy category %></td>
|
12
16
|
</tr>
|
13
17
|
<% end -%>
|
14
18
|
</table>
|
@@ -2,15 +2,15 @@
|
|
2
2
|
<!--[form:comment]-->
|
3
3
|
<p>
|
4
4
|
<label for="comment_author"><%= _("Author")%>:</label><br/>
|
5
|
-
<%= text_field 'comment', 'author'
|
5
|
+
<%= text_field 'comment', 'author', "value" => (session[:user][:name] if controller.action_name == "new") %>
|
6
6
|
</p>
|
7
7
|
<p>
|
8
8
|
<label for="comment_url"><%= _("Url") %>:</label><br/>
|
9
|
-
<%= text_field 'comment', 'url' %>
|
9
|
+
<%= text_field 'comment', 'url', "value" => (this_blog.base_url if controller.action_name == "new") %>
|
10
10
|
</p>
|
11
11
|
<p>
|
12
12
|
<label for="comment_email"><%= _("Email")%>:</label><br/>
|
13
|
-
<%= text_field 'comment', 'email'
|
13
|
+
<%= text_field 'comment', 'email', "value" => (session[:user][:email] if controller.action_name == "new") %>
|
14
14
|
</p>
|
15
15
|
<p>
|
16
16
|
<label for="comment_body"><%= _("Body")%>:</label><br/>
|
@@ -13,16 +13,18 @@
|
|
13
13
|
<th><%= _("Body")%></th>
|
14
14
|
<th><%= _("IP")%></th>
|
15
15
|
<th><%= _("Posted date")%></th>
|
16
|
-
|
17
|
-
|
16
|
+
<th><%= _("Status")%></th>
|
17
|
+
<th colspan="3"><%= _("Action") %></th>
|
18
18
|
</tr>
|
19
19
|
<% for comment in @comments -%>
|
20
20
|
<tr>
|
21
|
-
<td class="field"
|
21
|
+
<td class="field"> <%=link_to_unless comment.url.blank?, h(comment.author), comment.url %></td>
|
22
22
|
<td class="field"><%=h comment.email %></td>
|
23
|
-
<td class="field"><%=
|
23
|
+
<td class="field"><%= link_to_permalink comment, truncate((comment.body).strip_html) %></td>
|
24
24
|
<td class="field"><%=h comment.ip %></td>
|
25
|
-
<td class="field"><%=
|
25
|
+
<td class="field"><%=comment.created_at.strftime("%d/%m/%Y at %H:%M") %></td>
|
26
|
+
<td class="operation"><%= image_tag 'checked.png' %></td>
|
27
|
+
<td class="operation"><%= link_to_show comment %></td>
|
26
28
|
<td class="operation"><%= link_to_edit comment %></td>
|
27
29
|
<td class="operation"><%= link_to_destroy comment %></td>
|
28
30
|
</tr>
|
@@ -1,5 +1,7 @@
|
|
1
1
|
<% @page_heading = _("Comments for") + " #{ link_to h(@article.title), :controller => '/admin/content', :action => 'show', :id => @article }" %>
|
2
|
-
|
2
|
+
<% content_for('tasks') do %>
|
3
|
+
<%= task_overview %>
|
4
|
+
<% end %>
|
3
5
|
<h3><%= _("Creating comment")%></h3>
|
4
6
|
|
5
7
|
<% form_tag :action=>"new" do %>
|
@@ -1,5 +1,7 @@
|
|
1
1
|
<% @page_heading = _("Comments for") + " #{ link_to h(@article.title), :controller => '/admin/content', :action => 'show', :id => @article }" %>
|
2
|
-
|
2
|
+
<% content_for('tasks') do %>
|
3
|
+
<%= task_overview %>
|
4
|
+
<% end %>
|
3
5
|
<div class="form">
|
4
6
|
<label><%= _("Author")%>:</label> <span class="static"><%=h @comment.author %></span><br/>
|
5
7
|
<label><%= _("URL")%>:</label> <span class="static"><%=h @comment.url %></span><br/>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<% for article in @articles %>
|
11
11
|
<tr <%= alternate_class %>>
|
12
12
|
<td> <%= link_to_permalink article, h(article.title) %></td>
|
13
|
-
<td><%= article.published_at.strftime("%d/%m/%Y at %H:%M")%></td>
|
13
|
+
<td><%= article.published_at.strftime("%d/%m/%Y at %H:%M") %></td>
|
14
14
|
<td><%= link_to _(pluralize(article.comments.size, 'comment')), :controller => '/admin/comments', :article_id => article, :action => 'list' %></td>
|
15
15
|
<td><%= link_to _(pluralize(article.trackbacks.size, 'trackback')), :controller => '/admin/trackbacks', :article_id => article, :action => 'list' %></td>
|
16
16
|
<td class="operation"><%= (article.published?) ? image_tag('checked.png', :alt => "online", :title => _("Online")) : image_tag('cancel.png', :alt => "offline", :title => _("Offline")) %></td>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<fieldset class="set admin" style="display: block">
|
4
4
|
<legend><%=_("Article Body")%></legend>
|
5
5
|
<iframe id="preview" class="post" style="display: none;"></iframe>
|
6
|
-
<div style="width: 48%; float: left;"
|
6
|
+
<div <%='style="width: 48%; float: left;"' if this_blog.editor == 1 %>>
|
7
7
|
<ul>
|
8
8
|
<li>
|
9
9
|
<label for="article_title" class="block">Title:</label>
|
@@ -14,10 +14,12 @@
|
|
14
14
|
<%= markup_help_popup @article.text_filter, image_tag('help.png', :alt => "markup help", :title => "Markup Help") %>
|
15
15
|
<%= text_area 'article', 'body', :rows => 25, :style => 'width: 100%;' %>
|
16
16
|
</li>
|
17
|
+
<li>
|
18
|
+
<%= link_to_function _("Toggle Extended Content") + " (+/-)",update_page { |page| page.visual_effect(:toggle_blind, "extended", :duration => 0.5) } %>
|
19
|
+
</li>
|
17
20
|
<li id="extended"<%- if @article.extended.blank? -%> style="display:none;"<%- end -%>>
|
18
21
|
<label for="article_extended"><%= _("Extended Content")%>:</label>
|
19
22
|
<%= text_area 'article', 'extended', :rows => 30, :style => 'width: 100%;' %>
|
20
|
-
<%= link_to_function "Toggle Extended Content (+/-)",update_page { |page| page.visual_effect(:toggle_blind, "extended", :duration => 0.5) } %>
|
21
23
|
</li>
|
22
24
|
<li>
|
23
25
|
<label for="categories" class="block"><%= _("Categories")%>:</label>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<div class="post">
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
<h2><%= @article[:title] %></h2>
|
3
|
+
<p class="auth">
|
4
|
+
<%_("Posted by")%>
|
5
|
+
<%= author_link(@article) %>
|
6
|
+
<%= js_distance_of_time_in_words_to_now(@article[:published_at] || Time.now) %>
|
7
|
+
</p>
|
8
8
|
|
9
|
-
|
10
|
-
</div>
|
9
|
+
<%= @article.html %>
|
10
|
+
</div>
|
@@ -12,6 +12,8 @@
|
|
12
12
|
</td>
|
13
13
|
<td class="field"><%=h truncate(item.body,80)%></td>
|
14
14
|
<td class="field"><%=h item.ip %></td>
|
15
|
-
<td class="field"><%=
|
15
|
+
<td class="field"><%=item.created_at.strftime("%d/%m/%Y at %H:%M")%></td>
|
16
|
+
<td class="operation"><%= link_to image_tag('show.png', :alt => "show", :title => "Show content"), :controller => 'comments', :article_id => item.article_id, :action => 'show', :id => item.id %></td>
|
17
|
+
<td class="operation"><%= link_to image_tag('edit.png', :alt => "edit", :title => "Edit content"), :controller => 'comments', :article_id => item.article_id, :action => 'edit', :id => item.id %></td>
|
16
18
|
<td class="operation"><%= link_to image_tag('delete.png'), {:action => 'delete', :id => item.id, :search => params[:search], :page => params[:page] }, :confirm => "Are you sure?", :method => :post %></td>
|
17
19
|
</tr>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<% @page_heading = _("Comments and Trackbacks for") + " #{ this_blog.settings['blog_name'] }" %>
|
2
2
|
|
3
3
|
<% content_for('tasks') do %>
|
4
|
-
<%= task_showmod
|
5
|
-
<%= task_showmod
|
6
|
-
<%= task_showmod
|
4
|
+
<%= task_showmod(_('Limit to spam'), "Limit to spam") %>
|
5
|
+
<%= task_showmod(_("Limit to unconfirmed"), "Limit to unconfirmed") %>
|
6
|
+
<%= task_showmod(_("Limit to unconfirmed spam"), "Limit to unconfirmed spam") %>
|
7
7
|
<%= tab _("Blacklist"), :controller=>"blacklist", :action=>"index"%>
|
8
8
|
<% end %>
|
9
9
|
|
@@ -34,7 +34,7 @@
|
|
34
34
|
<th><%= _("Body")%></th>
|
35
35
|
<th><%= _("IP")%></th>
|
36
36
|
<th><%= _("Posted date")%></th>
|
37
|
-
<th><%= _("
|
37
|
+
<th colspan="3"><%= _("Action") %></th>
|
38
38
|
</tr>
|
39
39
|
<%= render :partial => 'item', :collection => @feedback %>
|
40
40
|
</table>
|
@@ -81,8 +81,21 @@
|
|
81
81
|
|
82
82
|
<fieldset id="write" class="set">
|
83
83
|
<legend><%= _("Write")%></legend>
|
84
|
-
|
85
84
|
<ul>
|
85
|
+
<li>
|
86
|
+
<label class="float"><%= _("Editor")%>:</label>
|
87
|
+
<input type="radio" name="setting[editor]" value="2" id="editor_2" <%= 'checked="checked"' if this_blog.editor == 2 %>/>
|
88
|
+
<label for="editor_2"><%= _("Use visual rich editor")%></label>
|
89
|
+
<span class="float">
|
90
|
+
<input type="radio" name="setting[editor]" value="1" id="editor_1" <%= 'checked="checked"' if this_blog.editor == 1 %>/>
|
91
|
+
<label for="editor_1"><%= _("Use simple editor with live preview (default)")%></label>
|
92
|
+
</span>
|
93
|
+
<span class="float">
|
94
|
+
<input type="radio" name="setting[editor]" value="0" id="editor_0" <%= 'checked="checked"' if this_blog.editor == 0 %>/>
|
95
|
+
<label for="editor_0"><%= _("Use simple editor without live preview")%></label>
|
96
|
+
</span>
|
97
|
+
</li>
|
98
|
+
|
86
99
|
<li>
|
87
100
|
<label class="float" for="text_filter"><%= _("Article filter")%>:</label>
|
88
101
|
<select name="setting[text_filter]" id="text_filter">
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<fieldset class="set admin" style="display: block">
|
4
4
|
<legend><%= _("Page Body")%></legend>
|
5
5
|
<iframe id="preview" class="post" style="display: none;"></iframe>
|
6
|
-
<div style="width: 48%; float: left;"
|
6
|
+
<div <%='style="width: 48%; float: left;"' if this_blog.editor == 1 %>>
|
7
7
|
<ul>
|
8
8
|
<li>
|
9
9
|
<label for="page_title" class="block"><%= _("Title")%>:</label>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<%= render :partial => "form" %>
|
7
7
|
|
8
8
|
<div id="operations" class="tasks">
|
9
|
-
<p class="r"><%= save(_("Save")) %> or <%= cancel %></p>
|
9
|
+
<p class="r"><%= save(_("Save")) %> <%= _("or") %> <%= cancel %></p>
|
10
10
|
</div>
|
11
11
|
|
12
12
|
<% end %>
|
@@ -14,4 +14,4 @@
|
|
14
14
|
<%= observe_form "#{form_type}_form",
|
15
15
|
:frequency => 2,
|
16
16
|
:complete => "$('preview').src = request.responseText; Element.show('preview');",
|
17
|
-
:url => { :action => "preview" } %>
|
17
|
+
:url => { :action => "preview" } if this_blog.editor == 1 %>
|