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 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
- before_filter :set_charset
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 '#{params[:id]}' does not exist"
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).*){3}/ \
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}'" } }
@@ -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:\s*(\d*(\.\d+)?))\s*$\n*/, ' <span class="position">\1</span>') \
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:\s*(\d+(\.\d+)?)(\s|$)/
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
@@ -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("Help:",
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
- <div class="login">Please, choose a pseudo</div>
7
+ <div class="login"><%= _('Please, choose a pseudo') %></div>
8
8
 
9
- <label for="person_name">Pseudo:
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;" id="user_password_identity">
19
+ <span id="user_password_identity" style="display: none">
20
20
  <br/>
21
- <label for="user_password">Password:
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;" id="person_email_identity">
31
+ <span id="person_email_identity" style="display: none">
32
32
  <br/>
33
- <label for="person_email">Email (or check key):</label>
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">&gt;&gt;</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">&gt;&gt;</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
- <fieldset id="edit"><legend>Edit</legend>
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
- <label for="user_password">Password:</label>
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
- <label for="person_email">Email:</label>
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
- <label>Avatar:</label>
67
+ <label><%= _('Avatar') %>:</label>
67
68
  <%= file_field "person", "image", :onchange => "submit()", :size => 3 %>
68
69
  <%= submit_tag 'OK' %>
69
70
  <% end %>
@@ -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(elt.elts_count.to_s+' more...',
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
- <%= link_to_function('<span class="icon">&lt;&lt;</span> Close',
82
+ <%= link_to_function('<span class="icon">&lt;&lt;</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}")+
@@ -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
- <label for="person_name">Proposed by</label>
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">Position</label>
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/>
@@ -1,4 +1,4 @@
1
- <% @flash.each do |key, value| %>
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
- <%= render :partial => '/help',
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 =&gt; </div>
38
- <blockquote>blockquote</blockquote>
39
- "Google":http://google.com =&gt; <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 =&gt; </div><blockquote>blockquote</blockquote> "Google":http://google.com =&gt; <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
 
@@ -1,11 +1,11 @@
1
1
  <% voters = Choice.count :select => 'person_id', :distinct => true %>
2
2
  <div class="sidebar">
3
- <h3 class="boxTitle">Identity</h3>
3
+ <h3 class="boxTitle"><%= _('Identity')%></h3>
4
4
  <div class="box" id="identity"><%= render :partial => 'account/show' %></div>
5
5
 
6
- <h3 class="boxTitle">Filter</h3>
6
+ <h3 class="boxTitle"><%= _('Filter') %></h3>
7
7
  <div class="box">
8
- <div>All voters: <span class="result"><%= voters %></span></div>
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="<">&lt;</a>
11
11
  <select id="filter" name="filter"
@@ -19,16 +19,46 @@
19
19
  <script>setFilterFromCookie();</script>
20
20
  </div>
21
21
 
22
- <h3 class="boxTitle">Subscribers</h3>
22
+ <h3 class="boxTitle"><%= _('Subscribers') %></h3>
23
23
  <div class="box"><%= render :partial => '/subscriber/list' %></div>
24
24
 
25
- <h3 class="boxTitle">Highest posts</h3>
25
+ <h3 class="boxTitle"><%= _('Highest posts') %></h3>
26
26
  <div class="box listByVote"><%= render :partial => '/elt/listByVote' %></div>
27
27
 
28
- <h3 class="boxTitle">Latest posts</h3>
28
+ <h3 class="boxTitle"><%= _('Latest posts') %></h3>
29
29
  <div class="box listByDate"><%= render :partial => '/elt/listByDate' %></div>
30
30
 
31
- <h3 class="boxTitle">Search</h3>
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&#8217; 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&#8217;s</a></div>
45
+ <div class="boxLine"><a href="http://www.grassouille.org/blog/">
46
+ benj&#8217;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| %>
@@ -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
- <a href="/people">people</a>
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">&lt;<%= elt.created_on.strftime('%d/%m %H:%M') %>&gt;</span>
51
- <%= link_to elt.subject.gsub(/\[.*\]/, ''), :controller => 'elt', :action => 'show', :id => elt %>
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
  <% "&#160;"*22 %>
@@ -1,24 +1,11 @@
1
- Welcome to <%= @app_name %>, <%= @name %>.
1
+ <%= _('Welcome to %s') % @app_name %>, <%= @name %>.
2
2
 
3
- Please click on the following link to confirm your email:
4
- <a href="<%= @url%>">Click me!</a>
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
 
@@ -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.11'
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 ':id', :controller => 'elt', :action => 'rss', :requirements => { :id => /.*\.rss/ }
36
- map.connect ':id', :controller => 'elt', :action => 'show'
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 form.setAvatar, #identity #edit, #identity iframe { display: none; }
199
- #identity:hover form.setAvatar, #identity:hover #edit { display: block; }
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.new.google_analytics_code(request)
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.11"
7
- date: 2007-02-24 00:00:00 +01:00
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/output_compression/test/test_helper.rb
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