parlement 0.11 → 0.12
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/CHANGES +10 -1
- data/README +3 -0
- data/Rakefile +13 -0
- data/app/controllers/application.rb +2 -6
- data/app/controllers/elt_controller.rb +2 -2
- data/app/helpers/elt_helper.rb +3 -3
- data/app/models/elt.rb +1 -1
- data/app/views/_help.rhtml +1 -1
- data/app/views/account/_login.rhtml +9 -29
- data/app/views/account/_show.rhtml +8 -7
- data/app/views/elt/_elt.rhtml +2 -2
- data/app/views/elt/_form.rhtml +2 -2
- data/app/views/elt/new.rhtml +7 -54
- data/app/views/elt/show.rhtml +86 -7
- data/app/views/layouts/top.rhtml +1 -1
- data/app/views/person/_listElts.rhtml +1 -1
- data/app/views/person_notify/setEmail.rhtml +5 -18
- data/app/views/subscriber/_list.rhtml +3 -3
- data/config/environment.rb +3 -1
- data/config/routes.rb +9 -8
- data/public/stylesheets/default.css +9 -4
- data/vendor/plugins/google_analytics/lib/rubaidh/google_analytics.rb +3 -3
- data/vendor/plugins/responds_to_parent/MIT-LICENSE +20 -0
- data/vendor/plugins/responds_to_parent/README +42 -0
- data/vendor/plugins/responds_to_parent/Rakefile +22 -0
- data/vendor/plugins/responds_to_parent/init.rb +1 -0
- data/vendor/plugins/responds_to_parent/lib/responds_to_parent.rb +46 -0
- data/vendor/plugins/responds_to_parent/test/responds_to_parent_test.rb +115 -0
- metadata +84 -75
data/CHANGES
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
- parlement changelog
|
2
2
|
|
3
|
+
== Version 0.12
|
4
|
+
|
5
|
+
Internationalization
|
6
|
+
|
7
|
+
* links
|
8
|
+
* i18n with gettext, english and french
|
9
|
+
* better blind up and down for login and logout
|
10
|
+
* better spam fighting against posts with numerous links
|
11
|
+
|
3
12
|
== Version 0.11
|
4
13
|
|
5
|
-
Most active forums presented first
|
14
|
+
Most active forums presented first. Passage to rails 1.2
|
6
15
|
|
7
16
|
* Corrected a small javascript error displaying subscriptionLink
|
8
17
|
* last_activity field added to elts
|
data/README
CHANGED
@@ -28,6 +28,9 @@ And then:
|
|
28
28
|
Only if you expect to develop and do any release:
|
29
29
|
# gem install meta_project
|
30
30
|
|
31
|
+
For i18n:
|
32
|
+
# apt-get install ruby1.8-dev
|
33
|
+
# gem install gettext
|
31
34
|
|
32
35
|
The database is setup for user "manu", you may need to change the file
|
33
36
|
config/database.yml for your own settings.
|
data/Rakefile
CHANGED
@@ -177,3 +177,16 @@ task :publish_news => [:verify_env_vars] do
|
|
177
177
|
"""
|
178
178
|
end
|
179
179
|
|
180
|
+
desc "Update pot/po files."
|
181
|
+
task :updatepo do
|
182
|
+
require 'gettext/utils'
|
183
|
+
GetText.update_pofiles(PKG_NAME, Dir.glob("{app}/**/*.{rb,rhtml}"), "#{PKG_NAME} #{PKG_VERSION}")
|
184
|
+
end
|
185
|
+
|
186
|
+
desc "Create mo-files"
|
187
|
+
task :makemo do
|
188
|
+
require 'gettext/utils'
|
189
|
+
#GetText.create_mofiles(true)
|
190
|
+
GetText.create_mofiles(true, "po", "locale") # This is for "Ruby on Rails".
|
191
|
+
end
|
192
|
+
|
@@ -8,7 +8,8 @@ class ApplicationController < ActionController::Base
|
|
8
8
|
include LoginEngine
|
9
9
|
include Term::ANSIColor
|
10
10
|
|
11
|
-
|
11
|
+
init_gettext "parlement"
|
12
|
+
|
12
13
|
before_filter :set_login_from_cookie
|
13
14
|
after_filter :fix_unicode_for_safari
|
14
15
|
after_filter OutputCompressionFilter
|
@@ -22,11 +23,6 @@ class ApplicationController < ActionController::Base
|
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
|
-
def set_charset
|
26
|
-
#@headers["Content-Type"] = "text/html; charset=iso-8859-15"
|
27
|
-
headers["Content-Type"] = "text/html; charset=utf-8"
|
28
|
-
end
|
29
|
-
|
30
26
|
def set_login_from_cookie
|
31
27
|
unless session[:person]
|
32
28
|
if (person = Person.find_by_name(cookies[:person_name])) and \
|
@@ -17,7 +17,7 @@ class EltController < ApplicationController
|
|
17
17
|
render :layout => 'top'
|
18
18
|
|
19
19
|
rescue ActiveRecord::RecordNotFound => e
|
20
|
-
flash[:error] = "Element
|
20
|
+
flash[:error] = _("Element %s does not exist") % params[:id]
|
21
21
|
headers["Status"] = "301 Moved Permanently"
|
22
22
|
redirect_to '/'
|
23
23
|
end
|
@@ -67,7 +67,7 @@ class EltController < ApplicationController
|
|
67
67
|
|
68
68
|
if !session[:person] and \
|
69
69
|
(@elt.subject =~ /([<>\/]|href)/ \
|
70
|
-
or @elt.body =~ /(.*(http|href)
|
70
|
+
or @elt.body =~ /(.*(http|href)(.*\n)*){3}/ \
|
71
71
|
or @elt.body =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i \
|
72
72
|
or @elt.body =~ /([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,}.*){3}/i) then
|
73
73
|
logger.error red { underline { "SPAM! '#{@elt.subject}'" } }
|
data/app/helpers/elt_helper.rb
CHANGED
@@ -23,17 +23,17 @@ module EltHelper
|
|
23
23
|
.gsub(/^(\d\d:\d\d\s)/, '* \\1') \
|
24
24
|
.gsub(/^\s\*(.*)\*/, '*\\1*') \
|
25
25
|
.gsub(/^\b(.{2,50})$(\n)\b/, '\\1<br/>\\2') \
|
26
|
-
.gsub(/\n*^\b(position
|
26
|
+
.gsub(/\n*^\b(position\s*:\s*(\d*(\.\d+)?))\s*$\n*/, ' <span class="position">\1</span>') \
|
27
27
|
if data != nil
|
28
28
|
|
29
29
|
# Only show the n first paragraphs
|
30
30
|
text.gsub!(/((?:(\n)(?:^.+$\n)*){#{NB_PARAGRAPH_TO_DISPLAY}})((?:.|\n)*)/,
|
31
|
-
'\1\2<a class="readMore" href="#" onclick="Element.hide(this); Element.removeClassName(this.parentNode.nextSibling, \'tooLarge\'); return false;">Read more...</a>\2<div class="tooLarge">\2\3\2</div>') \
|
31
|
+
'\1\2<a class="readMore" href="#" onclick="Element.hide(this); Element.removeClassName(this.parentNode.nextSibling, \'tooLarge\'); return false;">Read more... / Lire plus...</a>\2<div class="tooLarge">\2\3\2</div>') \
|
32
32
|
if data and text.strip =~ /((?:(\n)(?:^.+$\n)*){#{NB_PARAGRAPH_TO_DISPLAY+2}})/
|
33
33
|
|
34
34
|
# Only show the n*2 first list items
|
35
35
|
text.gsub!(/((?:^\*\s+.+$\n){#{NB_PARAGRAPH_TO_DISPLAY*2}})((?:.|\n)*)(\n)/,
|
36
|
-
'\1\3\3* <a class="readMore" href="#" onclick="Element.hide(this.parentNode.parentNode); Element.removeClassName(this.parentNode.parentNode.nextSibling.nextSibling, \'tooLarge\'); return false;">Read more...</a>\3\3<div class="tooLarge">\3\3\2</div>') \
|
36
|
+
'\1\3\3* <a class="readMore" href="#" onclick="Element.hide(this.parentNode.parentNode); Element.removeClassName(this.parentNode.parentNode.nextSibling.nextSibling, \'tooLarge\'); return false;">Read more... / Lire plus...</a>\3\3<div class="tooLarge">\3\3\2</div>') \
|
37
37
|
if data and text.strip =~ /(?:(?:^\*\s+.+$\n){#{NB_PARAGRAPH_TO_DISPLAY*2+2}})/
|
38
38
|
|
39
39
|
#hard_breaks = true
|
data/app/models/elt.rb
CHANGED
@@ -65,7 +65,7 @@ class Elt < ActiveRecord::Base
|
|
65
65
|
def publish
|
66
66
|
logger.info "Publish #{subject}"
|
67
67
|
|
68
|
-
self.position = Regexp.last_match(1) if body =~ /^\s*position
|
68
|
+
self.position = Regexp.last_match(1) if body =~ /^\s*position\s*:\s*(\d+(\.\d+)?)(\s|$)/
|
69
69
|
|
70
70
|
build_mail(:elt => self) unless mail
|
71
71
|
mail.publish
|
data/app/views/_help.rhtml
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
:style => "display:none") %>
|
15
15
|
|
16
16
|
<div style="display:none" class="help" id="help_<%= divId %>">
|
17
|
-
<%= link_to_function("
|
17
|
+
<%= link_to_function(_('Help')+":",
|
18
18
|
visual_effect(:Shrink, "help_#{divId}")+
|
19
19
|
visual_effect(:Shrink, "help_close_#{divId}_link")+
|
20
20
|
visual_effect(:Grow, "help_#{divId}_link"),
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<% form_remote_tag(
|
2
2
|
:update => 'identity',
|
3
3
|
:url => { :controller => 'account', :action => 'login', :elt => @elt },
|
4
|
-
:before => visual_effect(:BlindUp, 'identity')+";resetChoices();",
|
5
|
-
:loaded => visual_effect(:BlindDown, 'identity')) do %>
|
4
|
+
:before => visual_effect(:BlindUp, 'identity', { :queue => 'login' })+";resetChoices();",
|
5
|
+
:loaded => visual_effect(:BlindDown, 'identity', { :queue => 'login' })+visual_effect(:BlindDown, 'subscriptionLink')) do %>
|
6
6
|
|
7
|
-
|
7
|
+
<div class="login"><%= _('Please, choose a pseudo') %></div>
|
8
8
|
|
9
|
-
|
9
|
+
<label for="person_name"><%= _('Pseudo') %>:
|
10
10
|
<%= text_field "person", "name", :size => 10 %>
|
11
11
|
<script type="text/javascript">Form.focusFirstElement(document.forms[0]);</script>
|
12
12
|
</label>
|
@@ -16,9 +16,9 @@
|
|
16
16
|
+visual_effect(:Grow, 'user_password_identity') \
|
17
17
|
+"Form.focusFirstElement(document.forms[0])") %>
|
18
18
|
|
19
|
-
<span style="display: none
|
19
|
+
<span id="user_password_identity" style="display: none">
|
20
20
|
<br/>
|
21
|
-
|
21
|
+
<label for="user_password"><%= _('Password') %>:
|
22
22
|
<%= password_field "user", "password", :size => 10 %>
|
23
23
|
</label>
|
24
24
|
|
@@ -28,35 +28,15 @@
|
|
28
28
|
+"Form.focusFirstElement(document.forms[0])") %>
|
29
29
|
</span>
|
30
30
|
|
31
|
-
<span style="display: none
|
31
|
+
<span id="person_email_identity" style="display: none">
|
32
32
|
<br/>
|
33
|
-
|
33
|
+
<label for="person_email"><%= _('Email (or check key)') %>:</label>
|
34
34
|
<%= text_field "person", "email", :size => 20 %>
|
35
35
|
</span>
|
36
36
|
|
37
37
|
<%= submit_tag 'OK' %>
|
38
38
|
|
39
39
|
<%= render :partial => '/help',
|
40
|
-
:locals => { :divId => 'login', :content => '
|
41
|
-
<p>You can participate with:</p>
|
42
|
-
<ul>
|
43
|
-
<li>no pseudo</li>
|
44
|
-
<li>an unprotected pseudo</li>
|
45
|
-
<li>a password protected pseudo (click on "<span class="icon">>></span>")</li>
|
46
|
-
<li>a password protected and email verified pseudo</li>
|
47
|
-
</ul>
|
48
|
-
<p>
|
49
|
-
The last method is the only secure way to protect a nickname on
|
50
|
-
<strong>this</strong> server.
|
51
|
-
</p>
|
52
|
-
<p>
|
53
|
-
If a pseudo is not protected <strong>and</strong> verified, anybody
|
54
|
-
else can protect it for themselves if they at least supply a password
|
55
|
-
<em>and</em> an email.
|
56
|
-
</p>
|
57
|
-
<p>
|
58
|
-
A login must contain [3..40] characters, a password [5..40].
|
59
|
-
</p>
|
60
|
-
' } %>
|
40
|
+
:locals => { :divId => 'login', :content => _('<p>You can participate with:</p> <ul><li>no pseudo</li> <li>an unprotected pseudo</li> <li>a password protected pseudo (click on "<span class="icon">>></span>")</li> <li>a password protected and email verified pseudo</li></ul> <p> The last method is the only secure way to protect a nickname on <strong>this</strong> server.</p> <p>If a pseudo is not protected <strong>and</strong> verified, anybody else can protect it for themselves if they at least supply a password <em>and</em> an email.</p> <p>A login must contain [3..40] characters, a password [5..40].</p>') } %>
|
61
41
|
<% end %>
|
62
42
|
|
@@ -15,17 +15,17 @@
|
|
15
15
|
};
|
16
16
|
updateChoices(choices_to_update);
|
17
17
|
</script>
|
18
|
-
<script language="JavaScript">Element.show($('subscriptionLink'));</script>
|
19
18
|
</span>
|
20
19
|
<% end %>
|
21
20
|
|
22
21
|
<% if @person = session[:person] %>
|
22
|
+
<script language="JavaScript">Element.show($('subscriptionLink'));</script>
|
23
23
|
<span class="logout">
|
24
24
|
<%= link_to_remote('[X]',
|
25
25
|
{ :update => 'identity',
|
26
26
|
:url => { :controller => 'account', :action => 'logout', :elt => @elt },
|
27
|
-
:before => visual_effect(:BlindUp, 'identity')+visual_effect(:BlindUp, 'subscriptionLink')+";resetChoices();",
|
28
|
-
:loaded => visual_effect(:BlindDown, 'identity') },
|
27
|
+
:before => visual_effect(:BlindUp, 'identity', { :queue => 'login' })+visual_effect(:BlindUp, 'subscriptionLink', { :queue => 'login' })+";resetChoices();",
|
28
|
+
:loaded => visual_effect(:BlindDown, 'identity', { :queue => 'login' }) },
|
29
29
|
{ :href => url_for(:controller => 'account', :action => 'logout') }) %>
|
30
30
|
</span>
|
31
31
|
<span class="author">
|
@@ -40,13 +40,14 @@
|
|
40
40
|
:id => "person_avatar", :class => "avatar" %>
|
41
41
|
</div>
|
42
42
|
|
43
|
-
|
43
|
+
<fieldset id="edit">
|
44
|
+
<legend><%= _('Edit') %></legend>
|
44
45
|
<% form_remote_tag(
|
45
46
|
:update => 'identity',
|
46
47
|
:url => { :controller => 'account', :action => 'setPassword' },
|
47
48
|
:before => visual_effect(:BlindUp, 'identity'),
|
48
49
|
:loaded => visual_effect(:BlindDown, 'identity')) do %>
|
49
|
-
|
50
|
+
<label for="user_password"><%= _('Password') %>:</label>
|
50
51
|
<%= password_field "user", "password", :size => 12 %>
|
51
52
|
<%= submit_tag 'OK' %>
|
52
53
|
<% end %>
|
@@ -56,14 +57,14 @@
|
|
56
57
|
:url => { :controller => 'account', :action => 'setEmail' },
|
57
58
|
:before => visual_effect(:BlindUp, 'identity'),
|
58
59
|
:loaded => visual_effect(:BlindDown, 'identity')) do %>
|
59
|
-
|
60
|
+
<label for="person_email"><%= _('Email') %>:</label>
|
60
61
|
<%= text_field "person", "email", :size => 16 %>
|
61
62
|
<%= submit_tag 'OK' %>
|
62
63
|
<% end %>
|
63
64
|
|
64
65
|
<% form_tag( { :controller => "account", :action => "setAvatar"},
|
65
66
|
:multipart => true, :target => "avatar", :class => "setAvatar") do %>
|
66
|
-
|
67
|
+
<label><%= _('Avatar') %>:</label>
|
67
68
|
<%= file_field "person", "image", :onchange => "submit()", :size => 3 %>
|
68
69
|
<%= submit_tag 'OK' %>
|
69
70
|
<% end %>
|
data/app/views/elt/_elt.rhtml
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
<span class="eltMore" id="eltMore_<%= elt.id %>"
|
60
60
|
<%= 'style="display: none"' if (eltTop or elt.elts_count < SUB_THREAD_LENGTH) %>>
|
61
|
-
<%= link_to_remote(
|
61
|
+
<%= link_to_remote(n_('%s message...', '%s messages...', elt.elts_count) % elt.elts_count,
|
62
62
|
{ :update => 'eltSubs_'+elt.id.to_s,
|
63
63
|
:url => { :controller => 'elt', :action => 'list', :id => elt },
|
64
64
|
:before => visual_effect(:BlindUp, "eltMore_#{elt.id.to_s}")+
|
@@ -79,7 +79,7 @@
|
|
79
79
|
<span <%= 'style="display: none"' unless (elt.elts_count > 0 and (eltTop or elt.elts_count < SUB_THREAD_LENGTH)) %>
|
80
80
|
id="eltSubsClose_<%= elt.id %>" title="<%= elt.created_on %>"
|
81
81
|
class="eltSubsClose">
|
82
|
-
|
82
|
+
<%= link_to_function('<span class="icon"><<</span> '+_('Close'),
|
83
83
|
visual_effect(:BlindUp, "eltNew_#{elt.id}")+
|
84
84
|
visual_effect(:BlindUp, "eltSubsClose_#{elt.id}")+
|
85
85
|
visual_effect(:BlindUp, "eltSubs_#{elt.id}")+
|
data/app/views/elt/_form.rhtml
CHANGED
@@ -15,14 +15,14 @@
|
|
15
15
|
<%= hidden_field 'elt', 'parent_id' %></p>
|
16
16
|
|
17
17
|
<p style="display:<%= 'none' if @person.name != nil %>">
|
18
|
-
|
18
|
+
<label for="person_name"><%= _('Proposed by') %></label>
|
19
19
|
<%= text_field 'person', 'name' %>
|
20
20
|
</p>
|
21
21
|
|
22
22
|
<!-- <p><label for="elt_subject">Title</label><br/> -->
|
23
23
|
<%= text_field 'elt', 'subject' %>
|
24
24
|
|
25
|
-
<label for="elt_position"
|
25
|
+
<label for="elt_position"><%= _('Position') %></label>
|
26
26
|
<%= text_field 'elt', 'position', 'size' => 1, 'align' => 'right' %>
|
27
27
|
|
28
28
|
<label for="elt_body"></label><br/>
|
data/app/views/elt/new.rhtml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<%
|
1
|
+
<% flash.each do |key, value| %>
|
2
2
|
<div class="<%= key %>"><%= value %></div>
|
3
3
|
<% end %>
|
4
4
|
|
@@ -18,68 +18,21 @@
|
|
18
18
|
<%= text_field 'elt', 'subject' %>
|
19
19
|
|
20
20
|
<%= render :partial => '/help',
|
21
|
-
:locals => { :divId => 'title'+@elt.parent_id, :content => '
|
22
|
-
This is the title of your proposition.
|
23
|
-
<br/>
|
24
|
-
If you leave it as it is then it won\'t be displayed (recommanded if your
|
25
|
-
text is short, like in a conversation).
|
26
|
-
' } %>
|
21
|
+
:locals => { :divId => 'title'+@elt.parent_id, :content => _('This is the title of your proposition.<br/>If you leave it as it is then it won\'t be displayed (recommanded if your text is short, like in a conversation).') } %>
|
27
22
|
</h2>
|
28
23
|
|
29
24
|
<%= text_area 'elt', 'body' %>
|
30
25
|
|
31
26
|
<div class="eltNewButtons">
|
32
|
-
<%=
|
33
|
-
:locals => { :divId => 'body'+@elt.parent_id, :content => '
|
34
|
-
_<em>emphasis</em>_ *<strong>strong</strong>* -<span
|
35
|
-
style="text-decoration:line-through;">strike-through</span>- +added+
|
36
|
-
^<sup>sup</sup>^ ~<sub>sub</sub>~
|
37
|
-
<div>bg. blockquote => </div>
|
38
|
-
<blockquote>blockquote</blockquote>
|
39
|
-
"Google":http://google.com => <a href="http://google.com">Google</a>
|
40
|
-
<br/>
|
41
|
-
<pre>@code@</pre>
|
42
|
-
<div style="float:left">
|
43
|
-
ordered list
|
44
|
-
<br/>
|
45
|
-
# first item
|
46
|
-
<br/>
|
47
|
-
# second item
|
48
|
-
<br/>
|
49
|
-
# third item
|
50
|
-
</div>
|
51
|
-
<div style="margin-left:10em">
|
52
|
-
<ol>ordered list
|
53
|
-
<li>first item</li>
|
54
|
-
<li>second item</li>
|
55
|
-
<li>third item</li>
|
56
|
-
</ol>
|
57
|
-
</div>
|
58
|
-
<div style="float:left">
|
59
|
-
unordered list
|
60
|
-
<br/>
|
61
|
-
* item
|
62
|
-
<br/>
|
63
|
-
* item
|
64
|
-
<br/>
|
65
|
-
* item
|
66
|
-
</div>
|
67
|
-
<div style="margin-left:10em">
|
68
|
-
<ul>unordered list
|
69
|
-
<li>item</li>
|
70
|
-
<li>item</li>
|
71
|
-
<li>item</li>
|
72
|
-
</ul>
|
73
|
-
</div>
|
74
|
-
<a href="http://hobix.com/textile/quick.html">Textile Reference</a>
|
75
|
-
' } %>
|
76
|
-
|
77
|
-
<%= submit_to_remote('Preview', 'preview',
|
27
|
+
<%= submit_to_remote(_('Preview'), _('Preview'),
|
78
28
|
:update => "eltNewPreview_"+@elt.parent_id,
|
79
29
|
:url => { :action => "create", :id => @elt.parent, :submit => "preview" },
|
80
30
|
:loading => visual_effect(:BlindDown, 'eltNewPreview_'+@elt.parent_id)) %>
|
81
31
|
|
82
|
-
<%= submit_tag 'Propose!' %>
|
32
|
+
<%= submit_tag _('Propose!') %>
|
33
|
+
|
34
|
+
<%= render :partial => '/help',
|
35
|
+
:locals => { :divId => 'body'+@elt.parent_id, :content => _('_<em>emphasis</em>_ *<strong>strong</strong>* -<span style="text-decoration: line-through;">strike-through</span>- +added+^<sup>sup</sup>^ ~<sub>sub</sub>~<div>bg. blockquote => </div><blockquote>blockquote</blockquote> "Google":http://google.com => <a href="http://google.com">Google</a><br/><pre>@code@</pre><div style="float:left">ordered list<br/># first item<br/># second item<br/># third item</div><div style="margin-left:10em"><ol>ordered list<li>first item</li><li>second item</li><li>third item</li></ol></div><div style="float:left">unordered list<br/>* item<br/>* item<br/>* item</div><div style="margin-left:10em"><ul>unordered list<li>item</li><li>item</li><li>item</li></ul></div><a href="http://hobix.com/textile/quick.html">Textile Reference</a>') } %>
|
83
36
|
</div>
|
84
37
|
<% end %>
|
85
38
|
|
data/app/views/elt/show.rhtml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
<% voters = Choice.count :select => 'person_id', :distinct => true %>
|
2
2
|
<div class="sidebar">
|
3
|
-
|
3
|
+
<h3 class="boxTitle"><%= _('Identity')%></h3>
|
4
4
|
<div class="box" id="identity"><%= render :partial => 'account/show' %></div>
|
5
5
|
|
6
|
-
|
6
|
+
<h3 class="boxTitle"><%= _('Filter') %></h3>
|
7
7
|
<div class="box">
|
8
|
-
|
8
|
+
<div><%= _('All voters:') %> <span class="result"><%= voters %></span></div>
|
9
9
|
<form id="filterForm" name="filterForm">
|
10
10
|
<a onclick="return decrementFilter()" href="#" accesskey="<"><</a>
|
11
11
|
<select id="filter" name="filter"
|
@@ -19,16 +19,46 @@
|
|
19
19
|
<script>setFilterFromCookie();</script>
|
20
20
|
</div>
|
21
21
|
|
22
|
-
|
22
|
+
<h3 class="boxTitle"><%= _('Subscribers') %></h3>
|
23
23
|
<div class="box"><%= render :partial => '/subscriber/list' %></div>
|
24
24
|
|
25
|
-
|
25
|
+
<h3 class="boxTitle"><%= _('Highest posts') %></h3>
|
26
26
|
<div class="box listByVote"><%= render :partial => '/elt/listByVote' %></div>
|
27
27
|
|
28
|
-
|
28
|
+
<h3 class="boxTitle"><%= _('Latest posts') %></h3>
|
29
29
|
<div class="box listByDate"><%= render :partial => '/elt/listByDate' %></div>
|
30
30
|
|
31
|
-
|
31
|
+
<h3 class="boxTitle"><%= _('Links') %></h3>
|
32
|
+
<div class="box">
|
33
|
+
<h4><%= _('Personal') %></h4>
|
34
|
+
<div class="boxLine"><a href="http://www.alivrouvert.com">
|
35
|
+
À Livr’ Ouvert</a></div>
|
36
|
+
<div class="boxLine"><a href="http://www.baratissus.com">
|
37
|
+
Le bar à tissus</a></div>
|
38
|
+
|
39
|
+
<div class="boxLine"><a href="http://echarp.org/blog">
|
40
|
+
echarp's blog</a></div>
|
41
|
+
<div class="boxLine"><a href="http://www-inf.int-evry.fr/~olberger/weblog/">
|
42
|
+
Olivier's</a></div>
|
43
|
+
<div class="boxLine"><a href="http://www.couchet.org/blog/">
|
44
|
+
mad’s</a></div>
|
45
|
+
<div class="boxLine"><a href="http://www.grassouille.org/blog/">
|
46
|
+
benj’s</a></div>
|
47
|
+
|
48
|
+
<h4><%= _('Democracy') %></h4>
|
49
|
+
<div class="boxLine"><a href="http://worldblu.com">
|
50
|
+
World BLU</a></div>
|
51
|
+
<div class="boxLine"><a href="http://groups.google.com/group/top-politics">
|
52
|
+
top politics</a></div>
|
53
|
+
<div class="boxLine"><a href="http://www.tdge.org">
|
54
|
+
world Parliament Experiment</a></div>
|
55
|
+
<div class="boxLine"><a href="http://groups.google.com/group/worldcit">
|
56
|
+
The Community of World Citizens</a></div>
|
57
|
+
<div class="boxLine"><a href="http://world-wide.democracy.net">
|
58
|
+
Worldwide Direct Democracy Movement</a></div>
|
59
|
+
</div>
|
60
|
+
|
61
|
+
<h3 class="boxTitle"><%= _('Search') %></h3>
|
32
62
|
<div class="box">
|
33
63
|
<form action="http://google.com/search">
|
34
64
|
<input type="hidden" name="q"
|
@@ -37,6 +67,55 @@
|
|
37
67
|
<%= submit_tag 'OK' %>
|
38
68
|
</form>
|
39
69
|
</div>
|
70
|
+
|
71
|
+
<!--
|
72
|
+
<table width="100%" bgcolor="#FFFFFF" style="font-size: smaller">
|
73
|
+
<tr>
|
74
|
+
<td align="center">
|
75
|
+
<img src="http://www.acthum.net/directdemocracy/images/dd-sml.gif">
|
76
|
+
</td>
|
77
|
+
<td colspan="3">
|
78
|
+
<b><font size="3">DIRECT DEMOCRACY</font></b>
|
79
|
+
<br/>
|
80
|
+
<font size="4">Web Ring</font>
|
81
|
+
</td>
|
82
|
+
</tr>
|
83
|
+
<tr>
|
84
|
+
<td align="center">
|
85
|
+
<a href="http://www.acthum.net/directdemocracy/">
|
86
|
+
<font color="#0000FF">Home</font>
|
87
|
+
</a>
|
88
|
+
</td>
|
89
|
+
<td width="47%" align="center" colspan="2">
|
90
|
+
<a href="http://www.software-zone.com/cgi-bin/ringlink/rand.pl?ringid=common1;siteid=parlement">
|
91
|
+
<font color="#0000FF">Random Site</font></a>
|
92
|
+
</td>
|
93
|
+
<td width="23%" align="center">
|
94
|
+
<a href="http://www.software-zone.com/cgi-bin/ringlink/list.pl?ringid=common1;siteid=parlement">
|
95
|
+
<font color="#0000FF">Site List</font>
|
96
|
+
</a>
|
97
|
+
</td>
|
98
|
+
</tr>
|
99
|
+
<tr>
|
100
|
+
<td align="center">
|
101
|
+
<a href="http://www.software-zone.com/cgi-bin/ringlink/prev.pl?ringid=common1;siteid=parlement">
|
102
|
+
<font color="#0000FF">Previous</font></a>
|
103
|
+
</td>
|
104
|
+
<td width="24%" align="center">
|
105
|
+
<a href="http://www.software-zone.com/cgi-bin/ringlink/next.pl?ringid=common1;siteid=parlement">
|
106
|
+
<font color="#0000FF">Next</font></a>
|
107
|
+
</td>
|
108
|
+
<td width="23%" align="center">
|
109
|
+
<a href="http://www.software-zone.com/cgi-bin/ringlink/prev5.pl?ringid=common1;siteid=parlement">
|
110
|
+
<font color="#0000FF">Previous 5</font></a>
|
111
|
+
</td>
|
112
|
+
<td width="23%" align="center">
|
113
|
+
<a href="http://www.software-zone.com/cgi-bin/ringlink/next5.pl?ringid=common1;siteid=parlement">
|
114
|
+
<font color="#0000FF">Next 5</font></a>
|
115
|
+
</td>
|
116
|
+
</tr>
|
117
|
+
</table>
|
118
|
+
-->
|
40
119
|
</div>
|
41
120
|
|
42
121
|
<% flash.each do |key, value| %>
|
data/app/views/layouts/top.rhtml
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
<div class="links">
|
51
51
|
<a class="title" href="http://leparlement.org">Parlement</a>
|
52
52
|
<span class="signets">
|
53
|
-
|
53
|
+
<a href="/people"><%= _('people') %></a>
|
54
54
|
<a href="http://rubyforge.org/projects/parlement">forge</a>
|
55
55
|
<a href="http://www.gnu.org/licenses/gpl.html">GPL</a>
|
56
56
|
<a id="fr" href="/fr">fr</a>
|
@@ -48,7 +48,7 @@
|
|
48
48
|
<% for elt in e[0...PAGE_LENGTH] %>
|
49
49
|
<li class="elt">
|
50
50
|
<span class="author"><<%= elt.created_on.strftime('%d/%m %H:%M') %>></span>
|
51
|
-
<%= link_to elt.subject.gsub(/\[.*\]/, ''), :
|
51
|
+
<%= link_to elt.subject.gsub(/\[.*\]/, ''), :id => elt, :controller => 'elt', :action => 'show' %>
|
52
52
|
(<%= elt.children.size %> sub element(s))
|
53
53
|
<span class="choice result"><%= sprintf("%+d", elt.result) %></span>
|
54
54
|
<% " "*22 %>
|
@@ -1,24 +1,11 @@
|
|
1
|
-
Welcome to
|
1
|
+
<%= _('Welcome to %s') % @app_name %>, <%= @name %>.
|
2
2
|
|
3
|
-
Please click on the following link to confirm your email:
|
4
|
-
<a href="<%= @url%>"
|
3
|
+
<%= _('Please click on the following link to confirm your email:') %>
|
4
|
+
<a href="<%= @url%>"><%= _('Click me!') %></a>
|
5
5
|
|
6
6
|
<%= @url %>
|
7
7
|
|
8
|
-
If you received this email by mistake, just ignore it.
|
8
|
+
<%= _('If you received this email by mistake, just ignore it.') %>
|
9
9
|
|
10
|
-
Thank you
|
11
|
-
|
12
|
-
====================================================================
|
13
|
-
|
14
|
-
Bienvenue à <%= @app_name %>, <%= @name %>.
|
15
|
-
|
16
|
-
Veuillez cliquer sur le lien ci dessous pour confirmer votre email:
|
17
|
-
<a href="<%= @url%>">cliquez moi</a>
|
18
|
-
|
19
|
-
<%= @url %>
|
20
|
-
|
21
|
-
Si vous avez reçu ce mail par erreur, ignorez le tout simplement.
|
22
|
-
|
23
|
-
Merci
|
10
|
+
<%= _('Thank you') %>
|
24
11
|
|
@@ -8,11 +8,11 @@
|
|
8
8
|
|
9
9
|
<div id="subscriptionLink" class="boxLineR"
|
10
10
|
<%= "style='display: none'" unless session[:person] %> >
|
11
|
-
<%= link_to_remote 'Add/remove me!',
|
11
|
+
<%= link_to_remote _('Add/remove me!'),
|
12
12
|
:update => 'subscription',
|
13
13
|
:url => { :controller => 'subscriber', :action => 'subscribe', :id => @elt },
|
14
|
-
:before => visual_effect(:BlindUp, 'subscription'),
|
15
|
-
:loaded => visual_effect(:BlindDown, 'subscription') %>
|
14
|
+
:before => visual_effect(:BlindUp, 'subscription', { :queue => 'end' }),
|
15
|
+
:loaded => visual_effect(:BlindDown, 'subscription', { :queue => 'end' }) %>
|
16
16
|
</div>
|
17
17
|
</div>
|
18
18
|
|
data/config/environment.rb
CHANGED
@@ -64,6 +64,8 @@ require 'rails_file_column'
|
|
64
64
|
require 'jcode'
|
65
65
|
$KCODE = 'u'
|
66
66
|
|
67
|
+
require 'gettext/rails'
|
68
|
+
|
67
69
|
# What is the name of a quick anonymous poster
|
68
70
|
ANONYMOUS_POSTER = 'anon'
|
69
71
|
|
@@ -110,5 +112,5 @@ end
|
|
110
112
|
|
111
113
|
Rubaidh::GoogleAnalytics.tracker_id = 'UA-317241-1'
|
112
114
|
|
113
|
-
PARLEMENT_VERSION='0.
|
115
|
+
PARLEMENT_VERSION='0.12'
|
114
116
|
|
data/config/routes.rb
CHANGED
@@ -19,19 +19,20 @@ ActionController::Routing::Routes.draw do |map|
|
|
19
19
|
map.connect ':id//index.rss', :controller => 'elt', :action => 'rss'
|
20
20
|
map.connect ':id//vote.rss', :controller => 'elt', :action => 'vote_rss'
|
21
21
|
|
22
|
-
map.connect 'perso/:id', :controller => 'elt', :action => 'show'
|
23
|
-
map.connect 'perso/:id/index.rss', :controller => 'elt', :action => 'rss'
|
24
|
-
map.connect 'perso/blog/:id', :controller => 'elt'
|
25
|
-
map.connect 'perso/blog/:id/index.rss', :controller => 'elt', :action => 'rss'
|
26
|
-
map.connect 'perso/blog/:id/vote.rss', :controller => 'elt', :action => 'vote_rss'
|
27
|
-
|
28
22
|
# Allow downloading Web Service WSDL as a file with an extension
|
29
23
|
# instead of a file named 'wsdl'
|
30
24
|
#map.connect ':controller/service.wsdl', :action => 'wsdl'
|
31
25
|
|
26
|
+
map.connect ':id', :controller => 'elt', :action => 'rss', :requirements => { :id => /.*\.rss/ }
|
27
|
+
map.connect ':id', :controller => 'elt', :action => 'show'
|
28
|
+
|
32
29
|
# Install the default route as the lowest priority.
|
33
30
|
map.connect ':controller/:action/:id'
|
34
31
|
|
35
|
-
map.connect '
|
36
|
-
map.connect '
|
32
|
+
map.connect 'perso/:id', :controller => 'elt', :action => 'show'
|
33
|
+
map.connect 'perso/:id/index.rss', :controller => 'elt', :action => 'rss'
|
34
|
+
map.connect 'perso/blog/:id', :controller => 'elt'
|
35
|
+
map.connect 'perso/blog/:id/index.rss', :controller => 'elt', :action => 'rss'
|
36
|
+
map.connect 'perso/blog/:id/vote.rss', :controller => 'elt', :action => 'vote_rss'
|
37
37
|
end
|
38
|
+
|
@@ -70,7 +70,7 @@ h1 input {
|
|
70
70
|
#elt_fr > * > h1 a {
|
71
71
|
display: none; }
|
72
72
|
|
73
|
-
a:link, select, input[type='Button'], input[type='submit'] { color: #3b76ae; }
|
73
|
+
legend, a:link, select, input[type='Button'], input[type='submit'] { color: #3b76ae; }
|
74
74
|
a:visited { color: #1b568e; }
|
75
75
|
a:hover, a:active, select:hover, input[type='Button']:hover, input[type='submit']:hover { color: purple; }
|
76
76
|
a:active, input[type='Button']:active, input[type='submit']:active { color: orange; }
|
@@ -195,14 +195,13 @@ h1 .help {
|
|
195
195
|
font-weight: bolder; }
|
196
196
|
|
197
197
|
#identity form { display: block; }
|
198
|
-
#identity
|
199
|
-
#identity:hover
|
198
|
+
#identity #edit, #identity iframe { display: none; }
|
199
|
+
#identity:hover #edit { display: block; }
|
200
200
|
#identity fieldset#edit {
|
201
201
|
border: solid thin yellow;
|
202
202
|
padding: 0.5em 0;
|
203
203
|
margin: 0.5em 0; }
|
204
204
|
#identity fieldset#edit label { color: #3b76ae; }
|
205
|
-
#identity fieldset#edit legend { color: #333; }
|
206
205
|
img.avatar {
|
207
206
|
float: left;
|
208
207
|
width: auto;
|
@@ -240,6 +239,12 @@ div#listByDate .result, div#listByVote .result {
|
|
240
239
|
|
241
240
|
div#subscription + .boxLine + .boxLineR { font-size: smaller; }
|
242
241
|
|
242
|
+
.box h4 {
|
243
|
+
margin: 0;
|
244
|
+
padding: 0;
|
245
|
+
color: #333;
|
246
|
+
font-style: italic; }
|
247
|
+
|
243
248
|
/* _ _
|
244
249
|
___| | |_
|
245
250
|
/ _ \ | __|
|
@@ -2,14 +2,14 @@ module Rubaidh # :nodoc:
|
|
2
2
|
module GoogleAnalyticsMixin
|
3
3
|
def google_analytics_code(request = nil)
|
4
4
|
return unless GoogleAnalytics.enabled?
|
5
|
-
GoogleAnalytics.
|
5
|
+
GoogleAnalytics.google_analytics_code(request)
|
6
6
|
end
|
7
7
|
|
8
8
|
# An after_filter to automatically add the analytics code.
|
9
9
|
def add_google_analytics_code
|
10
10
|
code = google_analytics_code(request)
|
11
11
|
return if code.blank?
|
12
|
-
response.body.gsub! '</body>', code + '</body>'
|
12
|
+
response.body.gsub! '</body>', code + '</body>' if response.body.respond_to?(:gsub!)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -49,7 +49,7 @@ module Rubaidh # :nodoc:
|
|
49
49
|
not analytics_url.blank?)
|
50
50
|
end
|
51
51
|
|
52
|
-
def google_analytics_code(request = nil)
|
52
|
+
def self.google_analytics_code(request = nil)
|
53
53
|
extra_code = domain_name.blank? ? nil : "_udn = \"#{domain_name}\";"
|
54
54
|
url = (not request.blank? and request.ssl?) ? analytics_ssl_url : analytics_url
|
55
55
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2006 Sean Treadway
|
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.
|
@@ -0,0 +1,42 @@
|
|
1
|
+
RespondsToParent
|
2
|
+
================
|
3
|
+
|
4
|
+
Adds responds_to_parent to your controller to respond to the parent document of your page.
|
5
|
+
Make Ajaxy file uploads by posting the form to a hidden iframe, and respond with
|
6
|
+
RJS to the parent window.
|
7
|
+
|
8
|
+
Example
|
9
|
+
=======
|
10
|
+
|
11
|
+
Controller:
|
12
|
+
|
13
|
+
class Test < ActionController::Base
|
14
|
+
def main
|
15
|
+
end
|
16
|
+
|
17
|
+
def form_action
|
18
|
+
# Do stuff with params[:uploaded_file]
|
19
|
+
|
20
|
+
responds_to_parent do
|
21
|
+
render :update do |page|
|
22
|
+
page << "alert($('stuff').innerHTML)"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
main.rhtml:
|
29
|
+
|
30
|
+
<html>
|
31
|
+
<body>
|
32
|
+
<div id="stuff">Here is some stuff</div>
|
33
|
+
|
34
|
+
<form target="frame" action="form_action">
|
35
|
+
<input type="file" name="uploaded_file"/>
|
36
|
+
<input type="submit"/>
|
37
|
+
</form>
|
38
|
+
|
39
|
+
<iframe id='frame' name="frame"></iframe>
|
40
|
+
</body>
|
41
|
+
</html>
|
42
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the responds_to_parent plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = true
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Generate documentation for the responds_to_parent plugin.'
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
18
|
+
rdoc.title = 'RespondsToParent'
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
+
rdoc.rdoc_files.include('README')
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
ActionController::Base.send :include, RespondsToParent
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Module containing the methods useful for child IFRAME to parent window communication
|
2
|
+
module RespondsToParent
|
3
|
+
|
4
|
+
# Executes the response body as JavaScript in the context of the parent window.
|
5
|
+
# Use this method of you are posting a form to a hidden IFRAME or if you would like
|
6
|
+
# to use IFRAME base RPC.
|
7
|
+
def responds_to_parent(&block)
|
8
|
+
yield
|
9
|
+
|
10
|
+
if performed?
|
11
|
+
# We're returning HTML instead of JS or XML now
|
12
|
+
response.headers['Content-Type'] = 'text/html; charset=UTF-8'
|
13
|
+
|
14
|
+
# Either pull out a redirect or the request body
|
15
|
+
script = if location = erase_redirect_results
|
16
|
+
"document.location.href = #{location.to_s.inspect}"
|
17
|
+
else
|
18
|
+
response.body
|
19
|
+
end
|
20
|
+
|
21
|
+
# Escape quotes, linebreaks and slashes, maintaining previously escaped slashes
|
22
|
+
# Suggestions for improvement?
|
23
|
+
script = (script || '').
|
24
|
+
gsub('\\', '\\\\\\').
|
25
|
+
gsub(/\r\n|\r|\n/, '\\n').
|
26
|
+
gsub(/['"]/, '\\\\\&').
|
27
|
+
gsub('</script>','</scr"+"ipt>')
|
28
|
+
|
29
|
+
# Clear out the previous render to prevent double render
|
30
|
+
erase_results
|
31
|
+
|
32
|
+
# Eval in parent scope and replace document location of this frame
|
33
|
+
# so back button doesn't replay action on targeted forms
|
34
|
+
# loc = document.location to be set after parent is updated for IE
|
35
|
+
# with(window.parent) - pull in variables from parent window
|
36
|
+
# setTimeout - scope the execution in the windows parent for safari
|
37
|
+
# window.eval - legal eval for Opera
|
38
|
+
render :text => "<html><body><script type='text/javascript' charset='utf-8'>
|
39
|
+
var loc = document.location;
|
40
|
+
with(window.parent) { setTimeout(function() { window.eval('#{script}'); loc.replace('about:blank'); }, 1) }
|
41
|
+
</script></body></html>"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
alias respond_to_parent responds_to_parent
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../config/environment'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'test_help'
|
4
|
+
|
5
|
+
class IFrameController < ActionController::Base
|
6
|
+
def normal
|
7
|
+
render :update do |page|
|
8
|
+
page.alert "foo"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def aliased
|
13
|
+
respond_to_parent do
|
14
|
+
render :text => 'woot'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def redirect
|
19
|
+
responds_to_parent do
|
20
|
+
redirect_to '/another/place'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def no_block
|
25
|
+
responds_to_parent
|
26
|
+
end
|
27
|
+
|
28
|
+
def empty_render
|
29
|
+
responds_to_parent do
|
30
|
+
end
|
31
|
+
|
32
|
+
render :text => ''
|
33
|
+
end
|
34
|
+
|
35
|
+
def quotes
|
36
|
+
responds_to_parent do
|
37
|
+
render :text => %(single' double" qs\\' qd\\" escaped\\\' doubleescaped\\\\')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def newlines
|
42
|
+
responds_to_parent do
|
43
|
+
render :text => "line1\nline2\\nline2"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def update
|
48
|
+
responds_to_parent do
|
49
|
+
render :update do |page|
|
50
|
+
page.alert 'foo'
|
51
|
+
page.alert 'bar'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def rescue_action(e)
|
57
|
+
raise e
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class RespondsToParentTest < Test::Unit::TestCase
|
62
|
+
def setup
|
63
|
+
@controller = IFrameController.new
|
64
|
+
@request = ActionController::TestRequest.new
|
65
|
+
@response = ActionController::TestResponse.new
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_normal
|
69
|
+
get :normal
|
70
|
+
assert_match /alert\("foo"\)/, @response.body
|
71
|
+
assert_no_match /window\.parent/, @response.body
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_quotes_should_be_escaped
|
75
|
+
render :quotes
|
76
|
+
assert_match %r{eval\('single\\' double\\" qs\\\\\\' qd\\\\\\" escaped\\\\\\' doubleescaped\\\\\\\\\\'}, @response.body
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_newlines_should_be_escaped
|
80
|
+
render :newlines
|
81
|
+
assert_match %r{eval\('line1\\nline2\\\\nline2'\)}, @response.body
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_no_block_should_raise
|
85
|
+
assert_raises LocalJumpError do
|
86
|
+
get :no_block
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_empty_render_should_not_expand_javascript
|
91
|
+
get :empty_render
|
92
|
+
assert_equal '', @response.body
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_update_should_perform_combined_rjs
|
96
|
+
render :update
|
97
|
+
assert_match /alert\(\\"foo\\"\);\\nalert\(\\"bar\\"\)/, @response.body
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_aliased_method_should_not_raise
|
101
|
+
assert_nothing_raised do
|
102
|
+
render :aliased
|
103
|
+
assert_match /eval\('woot'\)/, @response.body
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
protected
|
108
|
+
|
109
|
+
def render(action)
|
110
|
+
get action
|
111
|
+
assert_match /<script type='text\/javascript'/, @response.body
|
112
|
+
assert_match /with\(window\.parent\)/, @response.body
|
113
|
+
assert_match /document\.location\.replace\('about:blank'\)/, @response.body
|
114
|
+
end
|
115
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: parlement
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2007-
|
6
|
+
version: "0.12"
|
7
|
+
date: 2007-04-21 00:00:00 +02:00
|
8
8
|
summary: Trusted Direct Democracy on a forum
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -35,10 +35,6 @@ files:
|
|
35
35
|
- CHANGES
|
36
36
|
- MEMORY
|
37
37
|
- app/models
|
38
|
-
- app/controllers
|
39
|
-
- app/apis
|
40
|
-
- app/views
|
41
|
-
- app/helpers
|
42
38
|
- app/models/mail_notify.rb
|
43
39
|
- app/models/user_notify.rb
|
44
40
|
- app/models/person.rb
|
@@ -49,30 +45,31 @@ files:
|
|
49
45
|
- app/models/person_mail.rb
|
50
46
|
- app/models/person_notify.rb
|
51
47
|
- app/models/user.rb
|
48
|
+
- app/controllers
|
52
49
|
- app/controllers/account_controller.rb
|
53
50
|
- app/controllers/application.rb
|
54
51
|
- app/controllers/subscriber_controller.rb
|
55
52
|
- app/controllers/person_controller.rb
|
56
53
|
- app/controllers/elt_controller.rb
|
54
|
+
- app/apis
|
55
|
+
- app/views
|
57
56
|
- app/views/_help.rhtml
|
58
57
|
- app/views/person
|
59
|
-
- app/views/account
|
60
|
-
- app/views/mail_notify
|
61
|
-
- app/views/layouts
|
62
|
-
- app/views/elt
|
63
|
-
- app/views/subscriber
|
64
|
-
- app/views/person_notify
|
65
58
|
- app/views/person/_listElts.rhtml
|
66
59
|
- app/views/person/show.rhtml
|
60
|
+
- app/views/account
|
67
61
|
- app/views/account/welcome.rhtml
|
68
62
|
- app/views/account/logout.rhtml
|
69
63
|
- app/views/account/_show.rhtml
|
70
64
|
- app/views/account/_login.rhtml
|
71
65
|
- app/views/account/signup.rhtml
|
66
|
+
- app/views/mail_notify
|
72
67
|
- app/views/mail_notify/publish.text.html.rhtml
|
73
68
|
- app/views/mail_notify/publish.text.plain.rhtml
|
69
|
+
- app/views/layouts
|
74
70
|
- app/views/layouts/scaffold.rhtml
|
75
71
|
- app/views/layouts/top.rhtml
|
72
|
+
- app/views/elt
|
76
73
|
- app/views/elt/vote_rss.rxml
|
77
74
|
- app/views/elt/show_tree.rhtml
|
78
75
|
- app/views/elt/_listByVote.rhtml
|
@@ -85,8 +82,11 @@ files:
|
|
85
82
|
- app/views/elt/show.rhtml
|
86
83
|
- app/views/elt/_listByDate.rhtml
|
87
84
|
- app/views/elt/_form.rhtml
|
85
|
+
- app/views/subscriber
|
88
86
|
- app/views/subscriber/_list.rhtml
|
87
|
+
- app/views/person_notify
|
89
88
|
- app/views/person_notify/setEmail.rhtml
|
89
|
+
- app/helpers
|
90
90
|
- app/helpers/mailman.rb
|
91
91
|
- app/helpers/elt_helper.rb
|
92
92
|
- app/helpers/subscriber_helper.rb
|
@@ -95,40 +95,35 @@ files:
|
|
95
95
|
- app/helpers/live_tree.rb
|
96
96
|
- app/helpers/person_helper.rb
|
97
97
|
- config/environments
|
98
|
-
- config/database.yml
|
99
|
-
- config/routes.rb
|
100
|
-
- config/boot.rb
|
101
|
-
- config/environment.rb
|
102
98
|
- config/environments/development.rb
|
103
99
|
- config/environments/production.rb
|
104
100
|
- config/environments/test.rb
|
105
101
|
- config/environments/user_environment.rb
|
102
|
+
- config/database.yml
|
103
|
+
- config/routes.rb
|
104
|
+
- config/boot.rb
|
105
|
+
- config/environment.rb
|
106
106
|
- db/schema.sql
|
107
107
|
- db/migrate
|
108
|
-
- db/ROOT
|
109
|
-
- db/development_structure.sql
|
110
|
-
- db/schema.rb
|
111
108
|
- db/migrate/005_filter_mail.rb
|
112
109
|
- db/migrate/001_create_choices.rb
|
113
110
|
- db/migrate/002_nested_set.rb
|
114
111
|
- db/migrate/003_elt_children_count.rb
|
115
112
|
- db/migrate/004_people_image.rb
|
116
113
|
- db/migrate/006_last_activity.rb
|
114
|
+
- db/ROOT
|
117
115
|
- db/ROOT/perso
|
118
116
|
- db/ROOT/parlement.txt
|
119
117
|
- db/ROOT/parlement
|
120
|
-
- db/ROOT/parleR.txt
|
121
|
-
- db/ROOT/fr.txt
|
122
|
-
- db/ROOT/mail.txt
|
123
118
|
- db/ROOT/parlement/ddRing.txt
|
124
119
|
- db/ROOT/parlement/our-constitution.txt
|
125
120
|
- db/ROOT/parlement/test.txt
|
126
121
|
- db/ROOT/parlement/Security
|
122
|
+
- db/ROOT/parlement/Security/anonymity.txt
|
127
123
|
- db/ROOT/parlement/top-politics.txt
|
128
124
|
- db/ROOT/parlement/security.txt
|
129
125
|
- db/ROOT/parlement/news.txt
|
130
126
|
- db/ROOT/parlement/News
|
131
|
-
- db/ROOT/parlement/Security/anonymity.txt
|
132
127
|
- db/ROOT/parlement/News/Version_01.txt
|
133
128
|
- db/ROOT/parlement/News/Version_02.txt
|
134
129
|
- db/ROOT/parlement/News/Version_07.txt
|
@@ -137,6 +132,11 @@ files:
|
|
137
132
|
- db/ROOT/parlement/News/Version_06.txt
|
138
133
|
- db/ROOT/parlement/News/Version_05.txt
|
139
134
|
- db/ROOT/parlement/News/Version_03.txt
|
135
|
+
- db/ROOT/parleR.txt
|
136
|
+
- db/ROOT/fr.txt
|
137
|
+
- db/ROOT/mail.txt
|
138
|
+
- db/development_structure.sql
|
139
|
+
- db/schema.rb
|
140
140
|
- lib/user_system.rb
|
141
141
|
- lib/data_import.rb
|
142
142
|
- lib/localizer.rb
|
@@ -206,30 +206,11 @@ files:
|
|
206
206
|
- script/console
|
207
207
|
- vendor/plugins
|
208
208
|
- vendor/plugins/engines
|
209
|
-
- vendor/plugins/file_column
|
210
|
-
- vendor/plugins/google_analytics
|
211
|
-
- vendor/plugins/output_compression
|
212
|
-
- vendor/plugins/login_engine
|
213
209
|
- vendor/plugins/engines/Rakefile
|
214
210
|
- vendor/plugins/engines/lib
|
215
|
-
- vendor/plugins/engines/about.yml
|
216
|
-
- vendor/plugins/engines/UPGRADING
|
217
|
-
- vendor/plugins/engines/CHANGELOG
|
218
|
-
- vendor/plugins/engines/README
|
219
|
-
- vendor/plugins/engines/init.rb
|
220
|
-
- vendor/plugins/engines/install.rb
|
221
|
-
- vendor/plugins/engines/tasks
|
222
|
-
- vendor/plugins/engines/generators
|
223
|
-
- vendor/plugins/engines/MIT-LICENSE
|
224
211
|
- vendor/plugins/engines/lib/engines
|
225
|
-
- vendor/plugins/engines/lib/engines.rb
|
226
212
|
- vendor/plugins/engines/lib/engines/plugin.rb
|
227
213
|
- vendor/plugins/engines/lib/engines/rails_extensions
|
228
|
-
- vendor/plugins/engines/lib/engines/testing.rb
|
229
|
-
- vendor/plugins/engines/lib/engines/plugin_migrator.rb
|
230
|
-
- vendor/plugins/engines/lib/engines/deprecated_config_support.rb
|
231
|
-
- vendor/plugins/engines/lib/engines/rails_extensions.rb
|
232
|
-
- vendor/plugins/engines/lib/engines/plugin_list.rb
|
233
214
|
- vendor/plugins/engines/lib/engines/rails_extensions/routing.rb
|
234
215
|
- vendor/plugins/engines/lib/engines/rails_extensions/rails_initializer.rb
|
235
216
|
- vendor/plugins/engines/lib/engines/rails_extensions/templates.rb
|
@@ -238,95 +219,118 @@ files:
|
|
238
219
|
- vendor/plugins/engines/lib/engines/rails_extensions/migrations.rb
|
239
220
|
- vendor/plugins/engines/lib/engines/rails_extensions/dependencies.rb
|
240
221
|
- vendor/plugins/engines/lib/engines/rails_extensions/active_record.rb
|
222
|
+
- vendor/plugins/engines/lib/engines/testing.rb
|
223
|
+
- vendor/plugins/engines/lib/engines/plugin_migrator.rb
|
224
|
+
- vendor/plugins/engines/lib/engines/deprecated_config_support.rb
|
225
|
+
- vendor/plugins/engines/lib/engines/rails_extensions.rb
|
226
|
+
- vendor/plugins/engines/lib/engines/plugin_list.rb
|
227
|
+
- vendor/plugins/engines/lib/engines.rb
|
228
|
+
- vendor/plugins/engines/about.yml
|
229
|
+
- vendor/plugins/engines/UPGRADING
|
230
|
+
- vendor/plugins/engines/CHANGELOG
|
231
|
+
- vendor/plugins/engines/README
|
232
|
+
- vendor/plugins/engines/init.rb
|
233
|
+
- vendor/plugins/engines/install.rb
|
234
|
+
- vendor/plugins/engines/tasks
|
241
235
|
- vendor/plugins/engines/tasks/engines.rake
|
236
|
+
- vendor/plugins/engines/generators
|
242
237
|
- vendor/plugins/engines/generators/plugin_migration
|
243
238
|
- vendor/plugins/engines/generators/plugin_migration/plugin_migration_generator.rb
|
244
239
|
- vendor/plugins/engines/generators/plugin_migration/USAGE
|
245
240
|
- vendor/plugins/engines/generators/plugin_migration/templates
|
246
241
|
- vendor/plugins/engines/generators/plugin_migration/templates/plugin_migration.erb
|
242
|
+
- vendor/plugins/engines/MIT-LICENSE
|
243
|
+
- vendor/plugins/file_column
|
247
244
|
- vendor/plugins/file_column/Rakefile
|
248
245
|
- vendor/plugins/file_column/test
|
249
|
-
- vendor/plugins/file_column/lib
|
250
|
-
- vendor/plugins/file_column/CHANGELOG
|
251
|
-
- vendor/plugins/file_column/README
|
252
|
-
- vendor/plugins/file_column/init.rb
|
253
|
-
- vendor/plugins/file_column/TODO
|
254
246
|
- vendor/plugins/file_column/test/magick_test.rb
|
255
247
|
- vendor/plugins/file_column/test/fixtures
|
256
|
-
- vendor/plugins/file_column/test/magick_view_only_test.rb
|
257
|
-
- vendor/plugins/file_column/test/file_column_helper_test.rb
|
258
|
-
- vendor/plugins/file_column/test/public
|
259
|
-
- vendor/plugins/file_column/test/abstract_unit.rb
|
260
|
-
- vendor/plugins/file_column/test/connection.rb
|
261
|
-
- vendor/plugins/file_column/test/file_column_test.rb
|
262
248
|
- vendor/plugins/file_column/test/fixtures/invalid-image.jpg
|
263
249
|
- vendor/plugins/file_column/test/fixtures/mysql.sql
|
264
250
|
- vendor/plugins/file_column/test/fixtures/entry.rb
|
265
251
|
- vendor/plugins/file_column/test/fixtures/kerb.jpg
|
266
252
|
- vendor/plugins/file_column/test/fixtures/skanthak.png
|
267
253
|
- vendor/plugins/file_column/test/fixtures/schema.rb
|
254
|
+
- vendor/plugins/file_column/test/magick_view_only_test.rb
|
255
|
+
- vendor/plugins/file_column/test/file_column_helper_test.rb
|
256
|
+
- vendor/plugins/file_column/test/public
|
257
|
+
- vendor/plugins/file_column/test/abstract_unit.rb
|
258
|
+
- vendor/plugins/file_column/test/connection.rb
|
259
|
+
- vendor/plugins/file_column/test/file_column_test.rb
|
260
|
+
- vendor/plugins/file_column/lib
|
268
261
|
- vendor/plugins/file_column/lib/file_column.rb
|
269
262
|
- vendor/plugins/file_column/lib/file_column_helper.rb
|
270
263
|
- vendor/plugins/file_column/lib/validations.rb
|
271
264
|
- vendor/plugins/file_column/lib/rails_file_column.rb
|
272
265
|
- vendor/plugins/file_column/lib/magick_file_column.rb
|
273
266
|
- vendor/plugins/file_column/lib/file_compat.rb
|
267
|
+
- vendor/plugins/file_column/CHANGELOG
|
268
|
+
- vendor/plugins/file_column/README
|
269
|
+
- vendor/plugins/file_column/init.rb
|
270
|
+
- vendor/plugins/file_column/TODO
|
271
|
+
- vendor/plugins/google_analytics
|
274
272
|
- vendor/plugins/google_analytics/Rakefile
|
275
273
|
- vendor/plugins/google_analytics/test
|
276
|
-
- vendor/plugins/google_analytics/lib
|
277
|
-
- vendor/plugins/google_analytics/README
|
278
|
-
- vendor/plugins/google_analytics/init.rb
|
279
274
|
- vendor/plugins/google_analytics/test/google_analytics_test.rb
|
275
|
+
- vendor/plugins/google_analytics/lib
|
280
276
|
- vendor/plugins/google_analytics/lib/rubaidh
|
281
277
|
- vendor/plugins/google_analytics/lib/rubaidh/google_analytics.rb
|
278
|
+
- vendor/plugins/google_analytics/README
|
279
|
+
- vendor/plugins/google_analytics/init.rb
|
280
|
+
- vendor/plugins/responds_to_parent
|
281
|
+
- vendor/plugins/responds_to_parent/Rakefile
|
282
|
+
- vendor/plugins/responds_to_parent/test
|
283
|
+
- vendor/plugins/responds_to_parent/test/responds_to_parent_test.rb
|
284
|
+
- vendor/plugins/responds_to_parent/lib
|
285
|
+
- vendor/plugins/responds_to_parent/lib/responds_to_parent.rb
|
286
|
+
- vendor/plugins/responds_to_parent/README
|
287
|
+
- vendor/plugins/responds_to_parent/init.rb
|
288
|
+
- vendor/plugins/responds_to_parent/MIT-LICENSE
|
289
|
+
- vendor/plugins/output_compression
|
282
290
|
- vendor/plugins/output_compression/test
|
291
|
+
- vendor/plugins/output_compression/test/test_helper.rb
|
292
|
+
- vendor/plugins/output_compression/test/test_controller.rb
|
293
|
+
- vendor/plugins/output_compression/test/output_test.rb
|
283
294
|
- vendor/plugins/output_compression/lib
|
295
|
+
- vendor/plugins/output_compression/lib/output_compression.rb
|
284
296
|
- vendor/plugins/output_compression/rakefile
|
285
297
|
- vendor/plugins/output_compression/CHANGELOG
|
286
298
|
- vendor/plugins/output_compression/README
|
287
299
|
- vendor/plugins/output_compression/init.rb
|
288
300
|
- vendor/plugins/output_compression/MIT-LICENSE
|
289
|
-
- vendor/plugins/
|
290
|
-
- vendor/plugins/output_compression/test/test_controller.rb
|
291
|
-
- vendor/plugins/output_compression/test/output_test.rb
|
292
|
-
- vendor/plugins/output_compression/lib/output_compression.rb
|
301
|
+
- vendor/plugins/login_engine
|
293
302
|
- vendor/plugins/login_engine/test
|
294
|
-
- vendor/plugins/login_engine/lib
|
295
|
-
- vendor/plugins/login_engine/CHANGELOG
|
296
|
-
- vendor/plugins/login_engine/README
|
297
|
-
- vendor/plugins/login_engine/app
|
298
|
-
- vendor/plugins/login_engine/install.rb
|
299
|
-
- vendor/plugins/login_engine/db
|
300
|
-
- vendor/plugins/login_engine/public
|
301
|
-
- vendor/plugins/login_engine/init_engine.rb
|
302
303
|
- vendor/plugins/login_engine/test/fixtures
|
304
|
+
- vendor/plugins/login_engine/test/fixtures/users.yml
|
303
305
|
- vendor/plugins/login_engine/test/test_helper.rb
|
304
306
|
- vendor/plugins/login_engine/test/unit
|
305
|
-
- vendor/plugins/login_engine/test/mocks
|
306
|
-
- vendor/plugins/login_engine/test/functional
|
307
|
-
- vendor/plugins/login_engine/test/fixtures/users.yml
|
308
307
|
- vendor/plugins/login_engine/test/unit/user_test.rb
|
308
|
+
- vendor/plugins/login_engine/test/mocks
|
309
309
|
- vendor/plugins/login_engine/test/mocks/time.rb
|
310
310
|
- vendor/plugins/login_engine/test/mocks/mail.rb
|
311
|
+
- vendor/plugins/login_engine/test/functional
|
311
312
|
- vendor/plugins/login_engine/test/functional/user_controller_test.rb
|
313
|
+
- vendor/plugins/login_engine/lib
|
312
314
|
- vendor/plugins/login_engine/lib/login_engine.rb
|
313
315
|
- vendor/plugins/login_engine/lib/login_engine
|
314
316
|
- vendor/plugins/login_engine/lib/login_engine/authenticated_system.rb
|
315
317
|
- vendor/plugins/login_engine/lib/login_engine/authenticated_user.rb
|
318
|
+
- vendor/plugins/login_engine/CHANGELOG
|
319
|
+
- vendor/plugins/login_engine/README
|
320
|
+
- vendor/plugins/login_engine/app
|
316
321
|
- vendor/plugins/login_engine/app/models
|
317
|
-
- vendor/plugins/login_engine/app/controllers
|
318
|
-
- vendor/plugins/login_engine/app/views
|
319
|
-
- vendor/plugins/login_engine/app/helpers
|
320
322
|
- vendor/plugins/login_engine/app/models/user_notify.rb
|
321
323
|
- vendor/plugins/login_engine/app/models/user.rb
|
324
|
+
- vendor/plugins/login_engine/app/controllers
|
322
325
|
- vendor/plugins/login_engine/app/controllers/user_controller.rb
|
326
|
+
- vendor/plugins/login_engine/app/views
|
323
327
|
- vendor/plugins/login_engine/app/views/user_notify
|
324
|
-
- vendor/plugins/login_engine/app/views/user
|
325
328
|
- vendor/plugins/login_engine/app/views/user_notify/pending_delete.rhtml
|
326
329
|
- vendor/plugins/login_engine/app/views/user_notify/delete.rhtml
|
327
330
|
- vendor/plugins/login_engine/app/views/user_notify/change_password.rhtml
|
328
331
|
- vendor/plugins/login_engine/app/views/user_notify/forgot_password.rhtml
|
329
332
|
- vendor/plugins/login_engine/app/views/user_notify/signup.rhtml
|
333
|
+
- vendor/plugins/login_engine/app/views/user
|
330
334
|
- vendor/plugins/login_engine/app/views/user/login.rhtml
|
331
335
|
- vendor/plugins/login_engine/app/views/user/home.rhtml
|
332
336
|
- vendor/plugins/login_engine/app/views/user/edit.rhtml
|
@@ -336,11 +340,16 @@ files:
|
|
336
340
|
- vendor/plugins/login_engine/app/views/user/_edit.rhtml
|
337
341
|
- vendor/plugins/login_engine/app/views/user/signup.rhtml
|
338
342
|
- vendor/plugins/login_engine/app/views/user/_password.rhtml
|
343
|
+
- vendor/plugins/login_engine/app/helpers
|
339
344
|
- vendor/plugins/login_engine/app/helpers/user_helper.rb
|
345
|
+
- vendor/plugins/login_engine/install.rb
|
346
|
+
- vendor/plugins/login_engine/db
|
340
347
|
- vendor/plugins/login_engine/db/migrate
|
341
348
|
- vendor/plugins/login_engine/db/migrate/001_initial_schema.rb
|
349
|
+
- vendor/plugins/login_engine/public
|
342
350
|
- vendor/plugins/login_engine/public/stylesheets
|
343
351
|
- vendor/plugins/login_engine/public/stylesheets/login_engine.css
|
352
|
+
- vendor/plugins/login_engine/init_engine.rb
|
344
353
|
test_files:
|
345
354
|
- test/unit/attachment_test.rb
|
346
355
|
- test/unit/mail_notify_test.rb
|