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
@@ -0,0 +1 @@
|
|
1
|
+
# Install hook code here
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module TinyMCE
|
2
|
+
module ClassMethods
|
3
|
+
def uses_tiny_mce(options = {})
|
4
|
+
tiny_mce_options = options.delete(:options) || nil
|
5
|
+
proc = Proc.new do |c|
|
6
|
+
c.instance_variable_set(:@tiny_mce_options, tiny_mce_options)
|
7
|
+
c.instance_variable_set(:@uses_tiny_mce, true)
|
8
|
+
end
|
9
|
+
before_filter(proc, options)
|
10
|
+
end
|
11
|
+
alias uses_text_editor uses_tiny_mce
|
12
|
+
end
|
13
|
+
|
14
|
+
module OptionValidator
|
15
|
+
class << self
|
16
|
+
cattr_accessor :plugins
|
17
|
+
|
18
|
+
def load
|
19
|
+
@@valid_options = File.open(File.dirname(__FILE__) + "/../tiny_mce_options.yml") { |f| YAML.load(f.read) }
|
20
|
+
end
|
21
|
+
|
22
|
+
def valid?(option)
|
23
|
+
@@valid_options.include?(option.to_s) || (plugins && plugins.include?(option.to_s.split('_')[0])) || option.to_s =~ /theme_advanced_container_/
|
24
|
+
end
|
25
|
+
|
26
|
+
def options
|
27
|
+
@@valid_options
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.included(base)
|
33
|
+
base.extend(ClassMethods)
|
34
|
+
base.helper TinyMCEHelper
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module TinyMCEHelper
|
2
|
+
class InvalidOption < Exception
|
3
|
+
end
|
4
|
+
|
5
|
+
def using_tiny_mce?
|
6
|
+
!@uses_tiny_mce.nil?
|
7
|
+
end
|
8
|
+
|
9
|
+
def tiny_mce_init(options = @tiny_mce_options)
|
10
|
+
options ||= {}
|
11
|
+
default_options = {:mode => 'textareas',
|
12
|
+
:theme => 'simple'}
|
13
|
+
options = default_options.merge(options)
|
14
|
+
TinyMCE::OptionValidator.plugins = options[:plugins]
|
15
|
+
tinymce_js = "tinyMCE.init({\n"
|
16
|
+
i = 0
|
17
|
+
options.stringify_keys.sort.each do |pair|
|
18
|
+
key, value = pair[0], pair[1]
|
19
|
+
raise InvalidOption.new("Invalid option #{key} passed to tinymce") unless TinyMCE::OptionValidator.valid?(key)
|
20
|
+
tinymce_js += "#{key} : "
|
21
|
+
case value
|
22
|
+
when String, Symbol, Fixnum
|
23
|
+
tinymce_js += "'#{value}'"
|
24
|
+
when Array
|
25
|
+
tinymce_js += '"' + value.join(',') + '"'
|
26
|
+
when TrueClass
|
27
|
+
tinymce_js += 'true'
|
28
|
+
when FalseClass
|
29
|
+
tinymce_js += 'false'
|
30
|
+
else
|
31
|
+
raise InvalidOption.new("Invalid value of type #{value.class} passed for TinyMCE option #{key}")
|
32
|
+
end
|
33
|
+
(i < options.size - 1) ? tinymce_js += ",\n" : "\n"
|
34
|
+
i += 1
|
35
|
+
end
|
36
|
+
tinymce_js += "\n});"
|
37
|
+
javascript_tag tinymce_js
|
38
|
+
end
|
39
|
+
alias tiny_mce tiny_mce_init
|
40
|
+
|
41
|
+
def javascript_include_tiny_mce
|
42
|
+
javascript_include_tag RAILS_ENV == 'development' ? "tiny_mce/tiny_mce_src" : "tiny_mce/tiny_mce"
|
43
|
+
end
|
44
|
+
|
45
|
+
def javascript_include_tiny_mce_if_used
|
46
|
+
javascript_include_tiny_mce if @uses_tiny_mce
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
VERSION = '2.0.6.1'
|
2
|
+
|
3
|
+
namespace :tiny_mce do
|
4
|
+
namespace :scripts do
|
5
|
+
desc 'Install the TinyMCE scripts into the public/javascripts directory of this application'
|
6
|
+
task :install do
|
7
|
+
require 'fileutils'
|
8
|
+
dest = RAILS_ROOT + '/public/javascripts/tiny_mce'
|
9
|
+
if File.exists?(dest)
|
10
|
+
puts "Error : destination directory #{dest} already exists, perhaps you need to update instead?"
|
11
|
+
exit 1
|
12
|
+
else
|
13
|
+
puts "Creating directory #{dest}..."
|
14
|
+
FileUtils.mkdir dest
|
15
|
+
puts "** Installing TinyMCE version #{VERSION} to #{dest}..."
|
16
|
+
recursively_copy File.expand_path(File.dirname(__FILE__) + '/../public/javascripts/tiny_mce'), dest
|
17
|
+
puts "** Successfully installed TinyMCE version #{VERSION}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
task :update do
|
22
|
+
puts "Not yet implemented."
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def recursively_copy(source, dest)
|
28
|
+
Dir.chdir(source)
|
29
|
+
Dir.foreach(source) do |entry|
|
30
|
+
next if entry =~ /^\./
|
31
|
+
if File.directory?(File.join(source, entry))
|
32
|
+
puts "Creating directory #{entry}..."
|
33
|
+
FileUtils.mkdir File.join(dest, entry)#, :noop => true#, :verbose => true
|
34
|
+
recursively_copy File.join(source, entry), File.join(dest, entry)
|
35
|
+
else
|
36
|
+
puts " Installing file #{entry}..."
|
37
|
+
FileUtils.cp File.join(source, entry), File.join(dest, entry)#, :noop => true#, :verbose => true
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# TODO Add this to your test_helper.rb
|
2
|
+
#require File.expand_path(File.dirname(__FILE__) + '/helper_testcase')
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class StubController < ApplicationController
|
6
|
+
def rescue_action(e) raise e end;
|
7
|
+
attr_accessor :request, :url
|
8
|
+
end
|
9
|
+
|
10
|
+
class HelperTestCase < Test::Unit::TestCase
|
11
|
+
|
12
|
+
# Add other helpers here if you need them
|
13
|
+
include ActionView::Helpers::ActiveRecordHelper
|
14
|
+
include ActionView::Helpers::TagHelper
|
15
|
+
include ActionView::Helpers::FormTagHelper
|
16
|
+
include ActionView::Helpers::FormOptionsHelper
|
17
|
+
include ActionView::Helpers::FormHelper
|
18
|
+
include ActionView::Helpers::UrlHelper
|
19
|
+
include ActionView::Helpers::AssetTagHelper
|
20
|
+
include ActionView::Helpers::PrototypeHelper
|
21
|
+
|
22
|
+
def setup
|
23
|
+
super
|
24
|
+
|
25
|
+
@request = ActionController::TestRequest.new
|
26
|
+
@controller = StubController.new
|
27
|
+
@controller.request = @request
|
28
|
+
|
29
|
+
# Fake url rewriter so we can test url_for
|
30
|
+
@controller.url = ActionController::UrlRewriter.new @request, {}
|
31
|
+
|
32
|
+
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_dummy
|
36
|
+
# do nothing - required by test/unit
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../test/test_helper'
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/helper_testcase')
|
3
|
+
|
4
|
+
class TinyMceHelperTest < HelperTestCase
|
5
|
+
include TinyMCEHelper
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@uses_tiny_mce = nil
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_javascript_include_tiny_mce
|
13
|
+
assert_match /\/javascripts\/tiny_mce\/tiny_mce.js/, javascript_include_tiny_mce
|
14
|
+
# We don't match the full string because asset timestamping gets in the way...
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_javascript_include_tiny_mce_if_used
|
18
|
+
assert_nil javascript_include_tiny_mce_if_used
|
19
|
+
@uses_tiny_mce = true
|
20
|
+
assert_match /\/javascripts\/tiny_mce\/tiny_mce.js/, javascript_include_tiny_mce_if_used
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_tiny_mce_alias_is_available_for_helper
|
24
|
+
assert respond_to?(:tiny_mce)
|
25
|
+
assert_equal tiny_mce_init, tiny_mce
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_tiny_mce_with_default_options_produces_tiny_mce_with_simple_theme_in_textareas_mode
|
29
|
+
assert_equal "<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.init({\nmode : 'textareas',\ntheme : 'simple'\n});\n//]]>\n</script>", tiny_mce
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_tiny_mce_with_array_of_plugins_produces_comma_separated_values
|
33
|
+
assert_equal "<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.init({\nmode : 'textareas',\nplugins : \"table,contextmenu,paste,-externalplugin\",\ntheme : 'simple'\n});\n//]]>\n</script>",
|
34
|
+
tiny_mce_init(:plugins => %w{table contextmenu paste -externalplugin})
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_tiny_mce_with_true_value_for_debug_produces_true_literal
|
38
|
+
assert_equal "<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.init({\ndebug : true,\nmode : 'textareas',\ntheme : 'simple'\n});\n//]]>\n</script>",
|
39
|
+
tiny_mce_init('debug' => true)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_tiny_mce_with_false_value_for_debug_produces_false_literal
|
43
|
+
assert_equal "<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.init({\ndebug : false,\nmode : 'textareas',\ntheme : 'simple'\n});\n//]]>\n</script>",
|
44
|
+
tiny_mce_init(:debug => false)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_tiny_mce_overriding_default_values
|
48
|
+
assert_equal "<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.init({\nmode : 'specific_textareas',\ntheme : 'advanced'\n});\n//]]>\n</script>",
|
49
|
+
tiny_mce_init(:theme => 'advanced', :mode => 'specific_textareas')
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_tiny_mce_with_numeric_value_for_width_produces_string
|
53
|
+
assert_equal "<script type=\"text/javascript\">\n//<![CDATA[\ntinyMCE.init({\nmode : 'textareas',\ntheme : 'simple',\nwidth : '50'\n});\n//]]>\n</script>",
|
54
|
+
tiny_mce_init(:width => 50)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_tiny_mce_raises_exception
|
58
|
+
assert_raise(TinyMCEHelper::InvalidOption) {tiny_mce(:invalid_option => true)}
|
59
|
+
assert_raise(TinyMCEHelper::InvalidOption) {tiny_mce(:mode => Class)}
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_using_tiny_mce_eh
|
63
|
+
assert !using_tiny_mce?
|
64
|
+
@uses_tiny_mce = true
|
65
|
+
assert using_tiny_mce?
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../test/test_helper'
|
2
|
+
require 'tiny_mce'
|
3
|
+
|
4
|
+
class TestController
|
5
|
+
def self.helper(s) s; end
|
6
|
+
end
|
7
|
+
|
8
|
+
class TinyMCEController < ApplicationController
|
9
|
+
uses_tiny_mce :only => [:new, :edit],
|
10
|
+
:options => {:mode => 'advanced'}
|
11
|
+
|
12
|
+
def new
|
13
|
+
render :nothing => true
|
14
|
+
end
|
15
|
+
|
16
|
+
def edit
|
17
|
+
render :nothing => true
|
18
|
+
end
|
19
|
+
|
20
|
+
def show
|
21
|
+
render :nothing => true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class TinyMceTest < Test::Unit::TestCase
|
26
|
+
def setup
|
27
|
+
@controller = TinyMCEController.new
|
28
|
+
@request = ActionController::TestRequest.new
|
29
|
+
@response = ActionController::TestResponse.new
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_include_exposes_tinymce_methods
|
33
|
+
@controller = TestController.new
|
34
|
+
assert !@controller.class.respond_to?(:uses_tiny_mce)
|
35
|
+
assert !TestController.respond_to?(:uses_tiny_mce)
|
36
|
+
TestController.send(:include, TinyMCE)
|
37
|
+
assert TestController.respond_to?(:uses_tiny_mce)
|
38
|
+
assert @controller.class.respond_to?(:uses_tiny_mce)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_plugin_includes_tiny_mce_module_on_action_controller
|
42
|
+
assert ApplicationController.respond_to?(:uses_tiny_mce)
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_uses_text_editor_is_available_as_alias
|
46
|
+
assert ApplicationController.respond_to?(:uses_text_editor)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_uses_tiny_mce_with_only_options_sets_instance_variable_to_true_for_new
|
50
|
+
get :new, :context => 'www'
|
51
|
+
assert_response :success
|
52
|
+
assert assigns(:uses_tiny_mce)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_uses_tiny_mce_with_options_sets_instance_variable_to_hash_for_new
|
56
|
+
get :new, :context => 'www'
|
57
|
+
assert_response :success
|
58
|
+
assert assigns(:tiny_mce_options)
|
59
|
+
assert assigns(:tiny_mce_options).kind_of?(Hash)
|
60
|
+
assert assigns(:tiny_mce_options).include?(:mode)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_uses_tiny_mce_with_only_options_does_not_set_instance_variable_for_show
|
64
|
+
get :show, :context => 'www'
|
65
|
+
assert_response :success
|
66
|
+
assert_nil assigns(:uses_tiny_mce)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_tiny_mce_option_validator
|
70
|
+
assert_equal 121, TinyMCE::OptionValidator.options.size
|
71
|
+
assert TinyMCE::OptionValidator.options.include?('mode')
|
72
|
+
assert TinyMCE::OptionValidator.options.include?('theme')
|
73
|
+
assert TinyMCE::OptionValidator.valid?(:submit_patch)
|
74
|
+
assert TinyMCE::OptionValidator.valid?('submit_patch')
|
75
|
+
assert TinyMCE::OptionValidator.valid?('theme_advanced_disable')
|
76
|
+
assert !TinyMCE::OptionValidator.valid?('a_fake_option')
|
77
|
+
assert !TinyMCE::OptionValidator.valid?(:wrong_again)
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_tiny_mce_option_validator_for_plugin_options
|
81
|
+
assert !TinyMCE::OptionValidator.valid?(:paste_auto_cleanup_on_paste)
|
82
|
+
TinyMCE::OptionValidator.plugins = %w{paste}
|
83
|
+
assert TinyMCE::OptionValidator.valid?(:paste_auto_cleanup_on_paste)
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
- mode
|
2
|
+
- theme
|
3
|
+
- plugins
|
4
|
+
- language
|
5
|
+
- ask
|
6
|
+
- textarea_trigger
|
7
|
+
- editor_selector
|
8
|
+
- editor_deselector
|
9
|
+
- elements
|
10
|
+
- docs_language
|
11
|
+
- debug
|
12
|
+
- focus_alert
|
13
|
+
- directionality
|
14
|
+
- auto_reset_designmode
|
15
|
+
- auto_focus
|
16
|
+
- nowrap
|
17
|
+
- button_tile_map
|
18
|
+
- auto_resize
|
19
|
+
- browsers
|
20
|
+
- dialog_type
|
21
|
+
- accessibility_warnings
|
22
|
+
- accessibility_focus
|
23
|
+
- event_elements
|
24
|
+
- table_inline_editing
|
25
|
+
- object_resizing
|
26
|
+
- custom_shortcuts
|
27
|
+
- strict_loading_mode
|
28
|
+
- cleanup
|
29
|
+
- valid_elements
|
30
|
+
- extended_valid_elements
|
31
|
+
- invalid_elements
|
32
|
+
- verify_css_classes
|
33
|
+
- verify_html
|
34
|
+
- preformatted
|
35
|
+
- encoding
|
36
|
+
- cleanup_on_startup
|
37
|
+
- fix_content_duplication
|
38
|
+
- inline_styles
|
39
|
+
- convert_newlines_to_brs
|
40
|
+
- force_br_newlines
|
41
|
+
- force_p_newlines
|
42
|
+
- entities
|
43
|
+
- entity_encoding
|
44
|
+
- remove_linebreaks
|
45
|
+
- convert_fonts_to_spans
|
46
|
+
- font_size_classes
|
47
|
+
- font_size_style_values
|
48
|
+
- merge_styles_invalid_parents
|
49
|
+
- force_hex_style_colors
|
50
|
+
- apply_source_formatting
|
51
|
+
- trim_span_elements
|
52
|
+
- doctype
|
53
|
+
- fix_list_elements
|
54
|
+
- fix_table_elements
|
55
|
+
- convert_urls
|
56
|
+
- relative_urls
|
57
|
+
- remove_script_host
|
58
|
+
- document_base_url
|
59
|
+
- urlconverter_callback
|
60
|
+
- insertlink_callback
|
61
|
+
- insertimage_callback
|
62
|
+
- setupcontent_callback
|
63
|
+
- save_callback
|
64
|
+
- onchange_callback
|
65
|
+
- init_instance_callback
|
66
|
+
- file_browser_callback
|
67
|
+
- cleanup_callback
|
68
|
+
- handle_event_callback
|
69
|
+
- execcommand_callback
|
70
|
+
- oninit
|
71
|
+
- onpageload
|
72
|
+
- content_css
|
73
|
+
- popups_css
|
74
|
+
- editor_css
|
75
|
+
- width
|
76
|
+
- height
|
77
|
+
- visual
|
78
|
+
- visual_table_class
|
79
|
+
- custom_undo_redo
|
80
|
+
- custom_undo_redo_levels
|
81
|
+
- custom_undo_redo_keyboard_shortcuts
|
82
|
+
- custom_undo_redo_restore_selection
|
83
|
+
- external_link_list_url
|
84
|
+
- external_image_list_url
|
85
|
+
- display_tab_class
|
86
|
+
- hidden_tab_class
|
87
|
+
- add_form_submit_trigger
|
88
|
+
- add_unload_trigger
|
89
|
+
- submit_patch
|
90
|
+
- theme_advanced_layout_manager
|
91
|
+
- theme_advanced_blockformats
|
92
|
+
- theme_advanced_styles
|
93
|
+
- theme_advanced_source_editor_width
|
94
|
+
- theme_advanced_source_editor_height
|
95
|
+
- theme_advanced_source_editor_wrap
|
96
|
+
- theme_advanced_toolbar_location
|
97
|
+
- theme_advanced_toolbar_align
|
98
|
+
- theme_advanced_statusbar_location
|
99
|
+
- theme_advanced_buttons1
|
100
|
+
- theme_advanced_buttons1_add
|
101
|
+
- theme_advanced_buttons1_add_before
|
102
|
+
- theme_advanced_buttons2
|
103
|
+
- theme_advanced_buttons2_add
|
104
|
+
- theme_advanced_buttons2_add_before
|
105
|
+
- theme_advanced_buttons3
|
106
|
+
- theme_advanced_buttons3_add
|
107
|
+
- theme_advanced_buttons3_add_before
|
108
|
+
- theme_advanced_disable
|
109
|
+
- theme_advanced_containers
|
110
|
+
- theme_advanced_containers_default_class
|
111
|
+
- theme_advanced_containers_default_align
|
112
|
+
- theme_advanced_container_<container>
|
113
|
+
- theme_advanced_container_<container>_class
|
114
|
+
- theme_advanced_container_<container>_align
|
115
|
+
- theme_advanced_custom_layout
|
116
|
+
- theme_advanced_link_targets
|
117
|
+
- theme_advanced_resizing
|
118
|
+
- theme_advanced_resizing_use_cookie
|
119
|
+
- theme_advanced_resize_horizontal
|
120
|
+
- theme_advanced_path
|
121
|
+
- theme_advanced_fonts
|
@@ -0,0 +1,26 @@
|
|
1
|
+
This is a list of Typo maintainers. If you have a commit bit, please add your
|
2
|
+
name and contact details to the list.
|
3
|
+
|
4
|
+
Original Author
|
5
|
+
|
6
|
+
Tobias Luetke <tobi@leetsoft.com>
|
7
|
+
blog: http://blog.leetsoft.com/
|
8
|
+
irc: xal
|
9
|
+
|
10
|
+
Peons
|
11
|
+
|
12
|
+
Scott Laird <scott@sigkill.org>
|
13
|
+
blog: http://scottstuff.net/
|
14
|
+
irc: slaird
|
15
|
+
|
16
|
+
Piers Cawley <pdcawley@bofh.org.uk>
|
17
|
+
blog: http://www.bofh.org.uk/
|
18
|
+
irc: pdcawley
|
19
|
+
|
20
|
+
Kevin Ballard <kevin@sb.org>
|
21
|
+
blog: http://kevin.sb.org
|
22
|
+
irc: Eridius
|
23
|
+
|
24
|
+
Frédéric de Villamil <frederic@de-villamil.com>
|
25
|
+
blog: http://fredericdevillamil.com
|
26
|
+
irc: neuro`
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2005 Tobias Luetke
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
What is it?
|
2
|
+
===========
|
3
|
+
|
4
|
+
This is a Xbox Live sidebar plugin for typo blogging engine.
|
5
|
+
|
6
|
+
Requirements
|
7
|
+
============
|
8
|
+
|
9
|
+
Currently you need all of those things to get typo to run:
|
10
|
+
|
11
|
+
* Typo 1.4.1 or higer
|
12
|
+
* Rails 1.2.x
|
13
|
+
|
14
|
+
Installation
|
15
|
+
============
|
16
|
+
|
17
|
+
When in Typo root directory, just run
|
18
|
+
./script/plugin install http://svn.typosphere.org/typo/plugins/audioscrobbler_sidebar/
|
19
|
+
|
20
|
+
Usage
|
21
|
+
======
|
22
|
+
|
23
|
+
Typo's administrative interface is available at http://your.domain.com/admin.
|
24
|
+
To activate the plugin, drag and drop it in the sidebar and fill the config.
|
25
|
+
|
26
|
+
Enjoy,
|
27
|
+
Your typo team
|
@@ -1,12 +1,12 @@
|
|
1
|
-
<h3
|
1
|
+
<h3><%= _("Syndicate")%></h3>
|
2
2
|
<ul>
|
3
3
|
<% if articles -%>
|
4
|
-
<li><a href="<%= url_for :controller=>'xml', :action=>'feed', :format => format, :type => 'feed' %>" title="Articles feed"
|
4
|
+
<li><a href="<%= url_for :controller=>'xml', :action=>'feed', :format => format, :type => 'feed' %>" title="Articles feed"><%= _("Articles")%></a></li>
|
5
5
|
<% end %>
|
6
6
|
<% if comments -%>
|
7
|
-
<li><a href="<%= url_for :controller=>'xml', :action=>'feed', :format => format, :type => 'comments' %>" title="Comments feed"
|
7
|
+
<li><a href="<%= url_for :controller=>'xml', :action=>'feed', :format => format, :type => 'comments' %>" title="Comments feed"><%= _("Comments")%></a></li>
|
8
8
|
<% end %>
|
9
9
|
<% if trackbacks -%>
|
10
|
-
<li><a href="<%= url_for :controller=>'xml', :action=>'feed', :format => format, :type => 'trackbacks' %>" title="Trackbacks feed"
|
10
|
+
<li><a href="<%= url_for :controller=>'xml', :action=>'feed', :format => format, :type => 'trackbacks' %>" title="Trackbacks feed"><%= _("Trackbacks")%></a></li>
|
11
11
|
<% end %>
|
12
12
|
</ul>
|