zena 0.15.2 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +20 -0
- data/CREDITS +27 -0
- data/Capfile +3 -0
- data/DEVELOPERS +46 -0
- data/History.txt +15 -0
- data/MIT-LICENSE +19 -0
- data/Rakefile +44 -0
- data/TODO +24 -0
- data/TODO_ZENA_1_0 +23 -0
- data/app/controllers/application_controller.rb +3 -0
- data/app/controllers/documents_controller.rb +22 -56
- data/app/controllers/nodes_controller.rb +42 -27
- data/app/controllers/pings_controller.rb +19 -0
- data/app/controllers/relations_controller.rb +5 -1
- data/app/controllers/sites_controller.rb +1 -46
- data/app/controllers/user_sessions_controller.rb +47 -0
- data/app/controllers/users_controller.rb +1 -0
- data/app/controllers/versions_controller.rb +25 -7
- data/app/controllers/virtual_classes_controller.rb +1 -1
- data/app/helpers/application_helper.rb +1 -1
- data/app/models/comment.rb +2 -1
- data/app/models/contact_content.rb +2 -2
- data/app/models/data_entry.rb +5 -6
- data/app/models/document.rb +14 -10
- data/app/models/document_content.rb +4 -6
- data/app/models/iformat.rb +2 -2
- data/app/models/image_content.rb +6 -9
- data/app/models/node.rb +106 -164
- data/app/models/page.rb +0 -20
- data/app/models/site.rb +42 -12
- data/app/models/template.rb +3 -8
- data/app/models/template_content.rb +2 -0
- data/app/models/text_document.rb +13 -8
- data/app/models/user.rb +47 -100
- data/app/models/user_session.rb +4 -0
- data/app/models/version.rb +1 -1
- data/app/views/comments/create.rjs +3 -3
- data/app/views/comments/edit.rjs +1 -1
- data/app/views/comments/update.rjs +1 -1
- data/app/views/nodes/_import_results.rhtml +1 -1
- data/app/views/nodes/create.rjs +3 -3
- data/app/views/templates/document_create_tabs/_file.rhtml +1 -2
- data/app/views/templates/document_create_tabs/_import.rhtml +7 -2
- data/app/views/templates/edit_tabs/_document.rhtml +1 -3
- data/app/views/templates/edit_tabs/_image.rhtml +1 -3
- data/app/views/versions/_tr.rhtml +1 -1
- data/app/views/versions/edit.rhtml +2 -26
- data/bin/zena +6 -1
- data/bricks/delayed_job/README +18 -0
- data/bricks/delayed_job/migrate/20091104191643_create_delayed_jobs_table.rb +19 -0
- data/bricks/delayed_job/misc/init.rb +8 -0
- data/bricks/delayed_job/misc/tasks.rb +2 -0
- data/bricks/math/patch/application_helper.rb +1 -1
- data/bricks/sphinx/MIT-LICENSE +19 -0
- data/bricks/sphinx/README +19 -0
- data/bricks/sphinx/lib/use_sphinx.rb +78 -0
- data/bricks/sphinx/migrate/20091102171258_add_delta_for_sphinx.rb +9 -0
- data/bricks/sphinx/misc/deploy.rb +20 -0
- data/bricks/sphinx/misc/sphinx.yml +12 -0
- data/bricks/sphinx/misc/tasks.rb +21 -0
- data/bricks/sphinx/patch/node.rb +8 -0
- data/bricks/tags/lib/has_tags.rb +5 -3
- data/bricks/tags/test/zafu/tags.yml +13 -1
- data/config/bricks.yml +35 -0
- data/config/deploy.rb +8 -1
- data/config/environment.rb +1 -1
- data/config/environments/production.rb +1 -1
- data/config/gems.yml +28 -5
- data/config/sphinx.yml +12 -0
- data/db/init/base/skins/default/Node-+popupLayout.zafu +1 -16
- data/db/migrate/20091026161708_add_persistence_token.rb +13 -0
- data/db/migrate/20091101184952_add_session_table.rb +16 -0
- data/db/migrate/20091123175137_add_single_access_token.rb +9 -0
- data/db/migrate/20091124161608_rebuild_fullpath.rb +11 -0
- data/db/schema.rb +21 -8
- data/doc/README_FOR_APP +24 -0
- data/doc/fixtures.graffle +19568 -0
- data/doc/fixtures.pdf +0 -0
- data/doc/template/LICENSE +184 -0
- data/doc/template/README +37 -0
- data/doc/template/allison.css +283 -0
- data/doc/template/allison.js +307 -0
- data/doc/template/allison.rb +260 -0
- data/doc/template/cache/BODY +588 -0
- data/doc/template/cache/CLASS_INDEX +4 -0
- data/doc/template/cache/CLASS_PAGE +1 -0
- data/doc/template/cache/FILE_INDEX +4 -0
- data/doc/template/cache/FILE_PAGE +1 -0
- data/doc/template/cache/FONTS +1 -0
- data/doc/template/cache/FR_INDEX_BODY +1 -0
- data/doc/template/cache/IMGPATH +1 -0
- data/doc/template/cache/INDEX +1 -0
- data/doc/template/cache/JAVASCRIPT +307 -0
- data/doc/template/cache/METHOD_INDEX +4 -0
- data/doc/template/cache/METHOD_LIST +1 -0
- data/doc/template/cache/SRC_PAGE +1 -0
- data/doc/template/cache/STYLE +283 -0
- data/doc/template/cache/URL +1 -0
- data/doc/zafu_changes.yml +29 -0
- data/lib/base_additions.rb +1 -1
- data/lib/bricks.rb +9 -0
- data/lib/bricks/loader.rb +86 -0
- data/lib/bricks/requirements_validation.rb +71 -0
- data/lib/tasks/zena.rake +42 -4
- data/lib/zafu/action.rb +285 -0
- data/lib/zafu/ajax.rb +93 -0
- data/lib/zafu/attributes.rb +117 -0
- data/lib/zafu/calendar.rb +159 -0
- data/lib/zafu/context.rb +330 -0
- data/lib/zafu/core/html.rb +102 -0
- data/lib/zafu/core/move_to_parser.rb +167 -0
- data/lib/zafu/dates.rb +58 -0
- data/lib/zafu/display.rb +502 -0
- data/lib/zafu/eval.rb +66 -0
- data/lib/zafu/experimental.rb +66 -0
- data/lib/zafu/i18n.rb +64 -0
- data/lib/zafu/meta.rb +25 -0
- data/lib/zafu/refactor.rb +73 -0
- data/lib/zafu/support/context.rb +265 -0
- data/lib/zafu/support/dom.rb +145 -0
- data/lib/zafu/support/erb.rb +62 -0
- data/lib/zafu/support/flow.rb +401 -0
- data/lib/zafu/support/forms.rb +461 -0
- data/lib/zafu/support/links.rb +306 -0
- data/lib/zafu_parser.rb +26 -2
- data/lib/zena.rb +34 -15
- data/lib/zena/acts/multiversion.rb +2 -2
- data/lib/zena/acts/secure.rb +41 -30
- data/lib/zena/app.rb +7 -10
- data/lib/zena/controller/test_case.rb +12 -7
- data/lib/zena/crypto_provider/initial.rb +15 -0
- data/lib/zena/db.rb +6 -1
- data/lib/zena/deploy.rb +34 -6
- data/lib/zena/deploy/logrotate_app.rhtml +9 -0
- data/lib/zena/deploy/logrotate_host.rhtml +34 -0
- data/lib/zena/deploy/template.rb +1 -9
- data/lib/zena/foxy_parser.rb +1 -1
- data/lib/zena/info.rb +3 -1
- data/lib/zena/migrator.rb +1 -1
- data/lib/zena/parser.rb +12 -4
- data/lib/zena/parser/zazen_rules.rb +6 -6
- data/lib/zena/parser/zena_rules.rb +1 -7
- data/lib/zena/routes.rb +5 -5
- data/lib/zena/test_controller.rb +7 -2
- data/lib/zena/unit/test_case.rb +6 -8
- data/lib/zena/use/ajax.rb +10 -10
- data/lib/zena/use/authlogic.rb +93 -0
- data/lib/zena/use/dyn_attributes.rb +5 -0
- data/lib/zena/use/html_tags.rb +16 -34
- data/lib/zena/use/i18n.rb +4 -1
- data/lib/zena/use/node_query_finders.rb +8 -4
- data/lib/zena/use/refactor.rb +8 -20
- data/lib/zena/use/relations.rb +1 -0
- data/lib/zena/use/rendering.rb +4 -2
- data/lib/zena/use/search.rb +52 -0
- data/lib/zena/use/test_helper.rb +27 -28
- data/lib/zena/use/upload.rb +188 -0
- data/lib/zena/use/urls.rb +16 -14
- data/lib/zena/use/zafu.rb +16 -63
- data/lib/zena/use/zazen.rb +8 -8
- data/lib/zena/view/test_case.rb +8 -4
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +3 -3
- data/public/.htaccess +40 -0
- data/public/javascripts/upload-progress.js +17 -8
- data/public/javascripts/zena.js +8 -2
- data/public/stylesheets/popup.css +1 -0
- data/script/about +3 -0
- data/script/apache_logging +25 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/dbconsole +3 -0
- data/script/destroy +3 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/inspector +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/script/set_revision +29 -0
- data/spec/controllers/versions_controller_spec.rb +11 -0
- data/test/fixtures/files/Node-test.zafu +1 -1
- data/test/functional/nodes_controller_test.rb +25 -0
- data/test/functional/pings_controller_test.rb +8 -0
- data/test/functional/user_sessions_controller_test.rb +59 -0
- data/test/functional/users_controller_test.rb +81 -19
- data/test/helpers/node_query/filters.yml +5 -0
- data/test/helpers/node_query_test.rb +3 -3
- data/test/integration/multiple_hosts_test.rb +1 -1
- data/test/integration/navigation_test.rb +1 -1
- data/test/sites/complex/users.yml +1 -1
- data/test/sites/ocean/users.yml +3 -3
- data/test/sites/zena/users.yml +5 -4
- data/test/test_zena.rb +38 -38
- data/test/unit/cached_page_test.rb +2 -2
- data/test/unit/comment_test.rb +0 -1
- data/test/unit/document_test.rb +23 -11
- data/test/unit/helpers/ping_helper_test.rb +4 -0
- data/test/unit/multiversion_test.rb +24 -16
- data/test/unit/node_test.rb +32 -93
- data/test/unit/note_test.rb +9 -0
- data/test/unit/page_test.rb +2 -2
- data/test/unit/secure_test.rb +2 -12
- data/test/unit/site_test.rb +43 -24
- data/test/unit/template_test.rb +45 -3
- data/test/unit/text_document_test.rb +4 -3
- data/test/unit/user_test.rb +13 -33
- data/test/unit/zena/db_test.rb +8 -0
- data/test/unit/zena/parser/zazen.yml +4 -4
- data/test/unit/zena/use/dates_view_methods_test.rb +2 -1
- data/test/unit/zena/use/html_tags_test.rb +12 -4
- data/test/unit/zena/use/refactor_test.rb +4 -3
- data/test/unit/zena/use/rendering_test.rb +1 -0
- data/test/unit/zena/use/upload_test.rb +76 -0
- data/test/unit/zena/use/urls_test.rb +4 -0
- data/test/unit/zena/use/zafu_test.rb +8 -0
- data/test/unit/zena/workflow/status_version_test.rb +6 -0
- data/test/unit/zena/zena_tags/ajax.yml +4 -4
- data/test/unit/zena/zena_tags/basic.yml +21 -10
- data/test/unit/zena/zena_tags/relations.yml +0 -6
- data/test/unit/zena/zena_tags/rubyless.yml +35 -0
- data/test/unit/zena/zena_tags/zazen.yml +4 -4
- data/test/unit/zena/zena_tags_test.rb +36 -4
- data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +1 -1
- data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +2 -3
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +39 -0
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +102 -58
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +14 -0
- data/vendor/TextMate/Zena.tmbundle/info.plist +2 -0
- data/zena.gemspec +2085 -0
- metadata +265 -90
- data/app/controllers/sessions_controller.rb +0 -41
- data/app/views/sites/zena_up.html.erb +0 -11
- data/config/database.yml +0 -40
- data/db/production.sqlite3 +0 -0
- data/lib/bricks/patcher.rb +0 -68
- data/lib/zena/parser/zena_tags.rb +0 -3562
- data/lib/zena/use/authentification.rb +0 -120
- data/public/images/ext/contact_pv.png +0 -0
- data/public/images/ext/other_pv.png +0 -0
- data/public/images/ext/page_pv.png +0 -0
- data/public/images/ext/page_tiny.png +0 -0
- data/public/images/ext/pdf_pv.png +0 -0
- data/public/images/ext/post_pv.png +0 -0
- data/public/images/ext/post_tiny.png +0 -0
- data/public/images/ext/project_pv.png +0 -0
- data/public/images/ext/project_tiny.png +0 -0
- data/public/images/ext/tag_pv.png +0 -0
- data/public/images/ext/zip_pv.png +0 -0
- data/tasks/ann.rake +0 -80
- data/tasks/bones.rake +0 -20
- data/tasks/gem.rake +0 -201
- data/tasks/git.rake +0 -40
- data/tasks/notes.rake +0 -27
- data/tasks/post_load.rake +0 -34
- data/tasks/rdoc.rake +0 -51
- data/tasks/rubyforge.rake +0 -55
- data/tasks/setup.rb +0 -292
- data/tasks/spec.rake +0 -54
- data/tasks/svn.rake +0 -47
- data/tasks/test.rake +0 -40
- data/tasks/zentest.rake +0 -36
- data/test/fixtures/comments.yml +0 -126
- data/test/fixtures/contact_contents.yml +0 -132
- data/test/fixtures/data_entries.yml +0 -65
- data/test/fixtures/discussions.yml +0 -48
- data/test/fixtures/document_contents.yml +0 -108
- data/test/fixtures/dyn_attributes.yml +0 -66
- data/test/fixtures/groups.yml +0 -86
- data/test/fixtures/groups_users.yml +0 -81
- data/test/fixtures/iformats.yml +0 -29
- data/test/fixtures/links.yml +0 -313
- data/test/fixtures/nodes.yml +0 -2592
- data/test/fixtures/relations.yml +0 -126
- data/test/fixtures/sites.yml +0 -58
- data/test/fixtures/template_contents.yml +0 -172
- data/test/fixtures/users.yml +0 -167
- data/test/fixtures/versions.yml +0 -1911
- data/test/fixtures/virtual_classes.yml +0 -87
- data/test/fixtures/zips.yml +0 -15
- data/test/functional/sessions_controller_test.rb +0 -73
data/lib/zena/use/urls.rb
CHANGED
@@ -17,20 +17,22 @@ module Zena
|
|
17
17
|
|
18
18
|
return '#' unless node
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
sharp_value = "node#{node[:zip]}"
|
20
|
+
if anchor = options.delete(:anchor)
|
21
|
+
if anchor =~ /\[(.+)\]/
|
22
|
+
anchor_value = node.safe_read($1)
|
23
|
+
elsif anchor == 'true'
|
24
|
+
anchor_value = "node#{node[:zip]}"
|
26
25
|
else
|
27
|
-
|
26
|
+
fixed = true
|
27
|
+
anchor_value = anchor
|
28
28
|
end
|
29
|
-
if
|
30
|
-
|
31
|
-
return "#{zen_path(
|
29
|
+
if anchor_in = options.delete(:anchor_in)
|
30
|
+
anchor_node = anchor_in.kind_of?(Node) ? anchor_in : (node.find(:first, [anchor_in]) || node)
|
31
|
+
return "#{zen_path(anchor_node, options)}##{anchor_value}"
|
32
|
+
elsif fixed
|
33
|
+
return "#{zen_path(node, options)}##{anchor_value}"
|
32
34
|
else
|
33
|
-
return "##{
|
35
|
+
return "##{anchor_value}"
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
@@ -43,7 +45,7 @@ module Zena
|
|
43
45
|
abs_url_prefix = host ? "http://#{host}" : ''
|
44
46
|
|
45
47
|
if node.kind_of?(Document) && format == node.version.content.ext
|
46
|
-
if node.public? && !
|
48
|
+
if node.public? && !visitor.site.authentication?
|
47
49
|
# force the use of a cacheable path for the data, even when navigating in '/oo'
|
48
50
|
pre = node.version.lang
|
49
51
|
end
|
@@ -60,7 +62,7 @@ module Zena
|
|
60
62
|
opts.delete(:cachestamp) # cachestamp
|
61
63
|
end
|
62
64
|
|
63
|
-
path = if !asset && node[:id] ==
|
65
|
+
path = if !asset && node[:id] == visitor.site[:root_id] && mode.nil? && format == 'html'
|
64
66
|
"#{abs_url_prefix}/#{pre}" # index page
|
65
67
|
elsif node[:custom_base]
|
66
68
|
"#{abs_url_prefix}/#{pre}/" +
|
@@ -109,7 +111,7 @@ module Zena
|
|
109
111
|
# Url for a node. Options are 'mode' and 'format'
|
110
112
|
# ex 'http://test.host/en/document34_print.html'
|
111
113
|
def zen_url(node, opts={})
|
112
|
-
zen_path(node,opts.merge(:host =>
|
114
|
+
zen_path(node,opts.merge(:host => visitor.site[:host]))
|
113
115
|
end
|
114
116
|
|
115
117
|
# Return the path to a document's data
|
data/lib/zena/use/zafu.rb
CHANGED
@@ -93,8 +93,15 @@ module Zena
|
|
93
93
|
""
|
94
94
|
end
|
95
95
|
|
96
|
-
#
|
96
|
+
# Return the full path from a template's url.
|
97
|
+
# The expected url is of the form '/skin/Klass-mode/partial'
|
97
98
|
def fullpath_from_template_url(template_url=params[:t_url])
|
99
|
+
"#{SITES_ROOT}#{template_path_from_template_url(template_url)}"
|
100
|
+
end
|
101
|
+
|
102
|
+
# Return the template path without '.erb' extension in case we need to append '_form'
|
103
|
+
# from a template's url. The expected url is of the form '/skin/Klass-mode/partial'
|
104
|
+
def template_path_from_template_url(template_url=params[:t_url])
|
98
105
|
if template_url =~ /\A\.|[^\w\+\._\-\/]/
|
99
106
|
raise Zena::AccessViolation.new("'template_url' contains illegal characters : #{template_url.inspect}")
|
100
107
|
end
|
@@ -102,11 +109,12 @@ module Zena
|
|
102
109
|
template_url = template_url[1..-1].split('/')
|
103
110
|
path = "/#{template_url[0]}/#{template_url[1]}/#{dev_mode? ? "dev_#{lang}" : lang}/#{template_url[2..-1].join('/')}"
|
104
111
|
|
105
|
-
"
|
112
|
+
"/#{current_site.host}/zafu#{path}"
|
106
113
|
end
|
107
114
|
|
108
115
|
# Make sure some vital templates never get broken
|
109
116
|
def valid_template?(content, opts)
|
117
|
+
#puts content
|
110
118
|
mode = opts[:mode]
|
111
119
|
case mode
|
112
120
|
when '+login'
|
@@ -162,16 +170,14 @@ module Zena
|
|
162
170
|
skin_names_list << name unless skin_names_list.include?(name)
|
163
171
|
end
|
164
172
|
end
|
173
|
+
|
165
174
|
document = skin_name = nil
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
path = (skin.fullpath(rebuild_path).split('/') + url).join('/')
|
171
|
-
break if document = secure(Document) { Document.find_by_path(path) }
|
172
|
-
end
|
173
|
-
break if document
|
175
|
+
skin_names_list.each do |skin_name|
|
176
|
+
next unless skin = @skin[skin_name] ||= secure(Skin) { Skin.find_by_name(skin_name) }
|
177
|
+
path = (skin.fullpath.split('/') + url).join('/')
|
178
|
+
break if document = secure(Document) { Document.find_by_path(path) }
|
174
179
|
end
|
180
|
+
|
175
181
|
if format == 'data' && document
|
176
182
|
format = document.c_ext
|
177
183
|
end
|
@@ -502,60 +508,7 @@ module Zena
|
|
502
508
|
title
|
503
509
|
end
|
504
510
|
end
|
505
|
-
|
506
|
-
|
507
511
|
end # ViewMethods
|
508
|
-
|
509
|
-
# This will be completely replaced by RubyLess
|
510
|
-
module ModelMethods
|
511
|
-
def self.included(base)
|
512
|
-
zafu_class_methods = <<-END
|
513
|
-
@@_zafu_context ||= {} # defined for each class (list of methods to change contexts)
|
514
|
-
@@_zafu_known_contexts ||= {} # full list with inherited attributes
|
515
|
-
|
516
|
-
def self.zafu_context(hash)
|
517
|
-
@@_zafu_context[self] ||= {}
|
518
|
-
@@_zafu_context[self].merge!(hash.stringify_keys)
|
519
|
-
end
|
520
|
-
|
521
|
-
def self.zafu_known_contexts
|
522
|
-
@@_zafu_known_contexts[self] ||= begin
|
523
|
-
res = {}
|
524
|
-
if superclass == ActiveRecord::Base
|
525
|
-
@@_zafu_context[self] || {}
|
526
|
-
else
|
527
|
-
superclass.zafu_known_contexts.merge(@@_zafu_context[self] || {})
|
528
|
-
end.each do |k,v|
|
529
|
-
if v.kind_of?(Hash)
|
530
|
-
res[k] = v.merge(:node_class => parse_class(v[:node_class]))
|
531
|
-
else
|
532
|
-
res[k] = {:node_class => parse_class(v)}
|
533
|
-
end
|
534
|
-
end
|
535
|
-
res
|
536
|
-
end
|
537
|
-
end
|
538
|
-
|
539
|
-
def self.parse_class(klass)
|
540
|
-
if klass.kind_of?(Array)
|
541
|
-
if klass[0].kind_of?(String)
|
542
|
-
[Module::const_get(klass[0])]
|
543
|
-
else
|
544
|
-
klass
|
545
|
-
end
|
546
|
-
else
|
547
|
-
if klass.kind_of?(String)
|
548
|
-
Module::const_get(klass)
|
549
|
-
else
|
550
|
-
klass
|
551
|
-
end
|
552
|
-
end
|
553
|
-
end
|
554
|
-
END
|
555
|
-
|
556
|
-
base.send(:class_eval, zafu_class_methods)
|
557
|
-
end
|
558
|
-
end # ModelMethods
|
559
512
|
end # Zafu
|
560
513
|
end # Use
|
561
514
|
end # Zena
|
data/lib/zena/use/zazen.rb
CHANGED
@@ -77,16 +77,16 @@ module Zena
|
|
77
77
|
def make_link(opts)
|
78
78
|
# for latex refs, see http://www.tug.org/applications/hyperref/manual.html
|
79
79
|
link_opts = {}
|
80
|
-
if
|
81
|
-
if
|
82
|
-
|
83
|
-
|
84
|
-
link_opts[:
|
80
|
+
if anchor = opts[:anchor]
|
81
|
+
if anchor =~ /\[(.+?)\/(.*)\]/
|
82
|
+
anchor_in, anchor = $1, $2
|
83
|
+
anchor = anchor == '' ? 'true' : "[#{anchor}]"
|
84
|
+
link_opts[:anchor_in] = anchor_in
|
85
85
|
end
|
86
|
-
if ['[id]', '[zip]'].include?(
|
87
|
-
link_opts[:
|
86
|
+
if ['[id]', '[zip]'].include?(anchor)
|
87
|
+
link_opts[:anchor] = 'true'
|
88
88
|
else
|
89
|
-
link_opts[:
|
89
|
+
link_opts[:anchor] = anchor
|
90
90
|
end
|
91
91
|
end
|
92
92
|
if opts[:id] =~ /(\d+)(_\w+|)(\.\w+|)/
|
data/lib/zena/view/test_case.rb
CHANGED
@@ -4,13 +4,12 @@ module Zena
|
|
4
4
|
include Zena::Use::Fixtures
|
5
5
|
include Zena::Use::TestHelper
|
6
6
|
include Zena::Acts::Secure
|
7
|
+
include ::Authlogic::TestCase
|
7
8
|
|
8
|
-
|
9
|
-
# Ignore since we include helpers in the TestCase itself
|
10
|
-
end
|
9
|
+
setup :activate_authlogic
|
11
10
|
|
12
11
|
def setup
|
13
|
-
login
|
12
|
+
login :anon
|
14
13
|
end
|
15
14
|
|
16
15
|
def assert_css(match, target)
|
@@ -18,6 +17,11 @@ module Zena
|
|
18
17
|
assert !target.search(match).empty?,
|
19
18
|
"expected tag, but no tag found matching #{match.inspect} in:\n#{target.inspect}"
|
20
19
|
end
|
20
|
+
|
21
|
+
def self.helper_attr(*args)
|
22
|
+
# Ignore since we include helpers in the TestCase itself
|
23
|
+
end
|
24
|
+
|
21
25
|
end
|
22
26
|
end
|
23
27
|
end
|
Binary file
|
data/locale/en/zena.po
CHANGED
@@ -199,7 +199,7 @@ msgstr "<img src='/images/lock.png' alt='closed'/>"
|
|
199
199
|
|
200
200
|
#: app/helpers/application_helper.rb:1073
|
201
201
|
msgid "btn_title_open_discussion"
|
202
|
-
msgstr "Open the edition window to edit the node
|
202
|
+
msgstr "Open the edition window to edit the node"
|
203
203
|
|
204
204
|
#: app/helpers/application_helper.rb:1076
|
205
205
|
#: app/views/comments/_li.rhtml:3
|
@@ -1661,11 +1661,11 @@ msgstr "<img src='/images/add.png' alt='add'/>"
|
|
1661
1661
|
|
1662
1662
|
#: lib/gettext_strings.rb:26
|
1663
1663
|
msgid "btn_title_edit"
|
1664
|
-
msgstr "Open the edition window to edit the node
|
1664
|
+
msgstr "Open the edition window to edit the node."
|
1665
1665
|
|
1666
1666
|
#: lib/gettext_strings.rb:27
|
1667
1667
|
msgid "btn_title_drive"
|
1668
|
-
msgstr "Open the drive window to change the
|
1668
|
+
msgstr "Open the drive window to change the location, links, etc."
|
1669
1669
|
|
1670
1670
|
#: lib/gettext_strings.rb:33
|
1671
1671
|
msgid "btn_site_add"
|
data/public/.htaccess
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# General Apache options
|
2
|
+
AddHandler fastcgi-script .fcgi
|
3
|
+
AddHandler cgi-script .cgi
|
4
|
+
Options +FollowSymLinks +ExecCGI
|
5
|
+
|
6
|
+
# If you don't want Rails to look in certain directories,
|
7
|
+
# use the following rewrite rules so that Apache won't rewrite certain requests
|
8
|
+
#
|
9
|
+
# Example:
|
10
|
+
# RewriteCond %{REQUEST_URI} ^/notrails.*
|
11
|
+
# RewriteRule .* - [L]
|
12
|
+
|
13
|
+
# Redirect all requests not available on the filesystem to Rails
|
14
|
+
# By default the cgi dispatcher is used which is very slow
|
15
|
+
#
|
16
|
+
# For better performance replace the dispatcher with the fastcgi one
|
17
|
+
#
|
18
|
+
# Example:
|
19
|
+
# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
|
20
|
+
RewriteEngine On
|
21
|
+
|
22
|
+
# If your Rails application is accessed via an Alias directive,
|
23
|
+
# then you MUST also set the RewriteBase in this htaccess file.
|
24
|
+
#
|
25
|
+
# Example:
|
26
|
+
# Alias /myrailsapp /path/to/myrailsapp/public
|
27
|
+
# RewriteBase /myrailsapp
|
28
|
+
|
29
|
+
RewriteRule ^$ index.html [QSA]
|
30
|
+
RewriteRule ^([^.]+)$ $1.html [QSA]
|
31
|
+
RewriteCond %{REQUEST_FILENAME} !-f
|
32
|
+
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
|
33
|
+
|
34
|
+
# In case Rails experiences terminal errors
|
35
|
+
# Instead of displaying this message you can supply a file here which will be rendered instead
|
36
|
+
#
|
37
|
+
# Example:
|
38
|
+
# ErrorDocument 500 /500.html
|
39
|
+
|
40
|
+
ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
|
@@ -3,17 +3,19 @@
|
|
3
3
|
// and to fix some strange Safari bugs.
|
4
4
|
|
5
5
|
function submitUploadForm(form, uuid) {
|
6
|
+
if (!$('attachment' + uuid)) return;
|
6
7
|
if ($('progress_bar' + uuid)) return;
|
7
|
-
|
8
|
+
|
8
9
|
// create iframe and alter form to submit to an iframe
|
9
|
-
if (!$('
|
10
|
-
|
10
|
+
if (!$('using_iframe')) {
|
11
|
+
if (!$('UploadIFrame')) {
|
12
|
+
$(document.body).insert('<iframe id="UploadIFrame" name="UploadIFrame" src="about:blank"></iframe>');
|
13
|
+
}
|
14
|
+
$(form).insert("<input id='using_iframe' type='hidden' name='iframe' value='true'/>");
|
15
|
+
$(form).target = 'UploadIFrame';
|
11
16
|
}
|
12
|
-
|
13
|
-
|
14
|
-
// make sure the POST occurs before (Safari Bug)
|
15
|
-
UploadProgress.monitor(uuid, form);
|
16
|
-
}
|
17
|
+
// make sure the POST occurs before (Safari Bug)
|
18
|
+
UploadProgress.monitor(uuid, form);
|
17
19
|
$(form).submit();
|
18
20
|
}
|
19
21
|
|
@@ -69,6 +71,8 @@ var UploadProgress = {
|
|
69
71
|
|
70
72
|
|
71
73
|
buildProgressBar: function() {
|
74
|
+
$('au' + this.uuid).hide();
|
75
|
+
$('af' + this.uuid).show();
|
72
76
|
$('attachment' + this.uuid).insert({after:'<div class ="progress_shell" id="progress_shell' + this.uuid + '"><div class="progress_text" id="progress_text' + this.uuid + '"> </div><div class="progress_bar" id="progress_bar' + this.uuid + '" style="width:0%;"> </div></div>'});
|
73
77
|
$('attachment' + this.uuid).hide();
|
74
78
|
},
|
@@ -96,6 +100,11 @@ var UploadProgress = {
|
|
96
100
|
Effect.Appear('progress_shell' + this.uuid) ;
|
97
101
|
},
|
98
102
|
|
103
|
+
setAsError: function() {
|
104
|
+
$('progress_shell' + this.uuid).remove();
|
105
|
+
$('attachment' + this.uuid).show();
|
106
|
+
},
|
107
|
+
|
99
108
|
setAsFinished: function() {
|
100
109
|
this.uploading = false ;
|
101
110
|
this.watcher.stop() ;
|
data/public/javascripts/zena.js
CHANGED
@@ -27,7 +27,7 @@ Zena.version_diff = function(id, from, to) {
|
|
27
27
|
Zena.save = function(url, form, close_on_complete) {
|
28
28
|
if ($(form).select('[name="attachment"]')[0]) {
|
29
29
|
// do not use ajax call
|
30
|
-
eval(form.
|
30
|
+
eval(form.getAttribute('onsubmit'));
|
31
31
|
return true;
|
32
32
|
} else {
|
33
33
|
if (close_on_complete) {
|
@@ -504,6 +504,12 @@ Zena.select_tab = function(name) {
|
|
504
504
|
current_tab.style.display = '';
|
505
505
|
}
|
506
506
|
|
507
|
+
Zena.reloadAndClose = function() {
|
508
|
+
opener.window.location.href = opener.window.location.href;
|
509
|
+
window.close();
|
510
|
+
}
|
511
|
+
|
512
|
+
// POPUP GALLERY
|
507
513
|
Zena.popup_gallery = null;
|
508
514
|
|
509
515
|
Zena.popup = function(elem) {
|
@@ -652,4 +658,4 @@ Zena.popup_close = function() {
|
|
652
658
|
}
|
653
659
|
});
|
654
660
|
}
|
655
|
-
}
|
661
|
+
}
|
@@ -66,6 +66,7 @@ ul.link_box { float:left; display:block; margin:2px; padding:2px;}
|
|
66
66
|
|
67
67
|
#image_tab .toggle_div, #document_tab .toggle_div { margin-top: 1em; margin-bottom:0.5em;}
|
68
68
|
#file, #file_form { height:2em;}
|
69
|
+
.attach .off { color:grey; }
|
69
70
|
#image_tab img {border:1px solid #333; margin-top:4px;}
|
70
71
|
#image_tab, #document_tab { padding-left:3em; padding-top:3em; }
|
71
72
|
#document_tab a { width:80px; display:block; float:left;}
|
data/script/about
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '../lib/log_recorder/lib/log_recorder')
|
4
|
+
|
5
|
+
# start with :
|
6
|
+
# apache_logging 'vhost.com' 'config/database.yml'
|
7
|
+
vhost_name = ARGV[0] || 'test.host'
|
8
|
+
config_path = ARGV[1] || File.open(File.dirname(__FILE__) + '/../config/database.yml')
|
9
|
+
|
10
|
+
config = {}
|
11
|
+
|
12
|
+
YAML::load_documents( config_path ) do |doc|
|
13
|
+
doc.each do |elem|
|
14
|
+
next unless elem[0] == 'development'
|
15
|
+
config = elem[1]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
rec = LogRecorder.new(vhost_name, config)
|
20
|
+
|
21
|
+
rec.test
|
22
|
+
|
23
|
+
#$stdin.each do |l|
|
24
|
+
# rec.insert_combined_record()
|
25
|
+
#end
|
data/script/breakpointer
ADDED
data/script/console
ADDED
data/script/dbconsole
ADDED
data/script/destroy
ADDED
data/script/generate
ADDED
data/script/plugin
ADDED