zena 0.15.2 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +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