]> source.dussan.org Git - redmine.git/commitdiff
Unlimited and optional project description. The project list will show truncated...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 20 Jan 2008 18:37:51 +0000 (18:37 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 20 Jan 2008 18:37:51 +0000 (18:37 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1088 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project.rb
app/views/admin/projects.rhtml
app/views/projects/_form.rhtml
app/views/projects/list.rhtml
app/views/welcome/index.rhtml
db/migrate/087_change_projects_description_to_text.rb [new file with mode: 0644]

index 0e7f8284cfde26be64a0a325f8d501ea27d578c5..42f2ddfd91a57b1bec4610328d2e5c7b0f54237d 100644 (file)
@@ -52,12 +52,11 @@ class Project < ActiveRecord::Base
 
   attr_protected :status, :enabled_module_names
   
-  validates_presence_of :name, :description, :identifier
+  validates_presence_of :name, :identifier
   validates_uniqueness_of :name, :identifier
   validates_associated :custom_values, :on => :update
   validates_associated :repository, :wiki
   validates_length_of :name, :maximum => 30
-  validates_length_of :description, :maximum => 255
   validates_length_of :homepage, :maximum => 60
   validates_length_of :identifier, :in => 3..20
   validates_format_of :identifier, :with => /^[a-z0-9\-]*$/
@@ -184,6 +183,15 @@ class Project < ActiveRecord::Base
     name.downcase <=> project.name.downcase
   end
   
+  def to_s
+    name
+  end
+  
+  # Returns a short description of the projects (first lines)
+  def short_description(length = 255)
+    description.gsub(/^(.{#{length}}[^\n]*).*$/m, '\1').strip if description
+  end
+  
   def allows_to?(action)
     if action.is_a? Hash
       allowed_actions.include? "#{action[:controller]}/#{action[:action]}"
index 3a759ecaa8aa4342d3a44d7f1f734ee1ed0535ab..d35c484b5ef309563b5d90dde6b6db86341934ee 100644 (file)
@@ -27,7 +27,7 @@
 <% for project in @projects %>
   <tr class="<%= cycle("odd", "even") %>">
        <td><%= project.active? ? link_to(h(project.name), :controller => 'projects', :action => 'settings', :id => project) : h(project.name) %>
-       <td><%= textilizable project.description, :project => project %>
+       <td><%= textilizable project.short_description, :project => project %>
        <td align="center"><%= image_tag 'true.png' if project.is_public? %>
        <td align="center"><%= project.children.size %>
        <td align="center"><%= format_date(project.created_on) %>
index e63c929cc8ea954f183286c1577df46c17705612..a810369d42e8efd14d8fc7ce0d12fb75b50234d5 100644 (file)
@@ -8,8 +8,11 @@
     <p><%= f.select :parent_id, (@root_projects.collect {|p| [p.name, p.id]}), { :include_blank => true } %></p>
 <% end %>
 
-<p><%= f.text_area :description, :required => true, :cols => 60, :rows => 5 %><em><%= l(:text_caracters_maximum, 255) %></em></p>
-<p><%= f.text_field :identifier, :required => true, :disabled => @project.identifier_frozen? %><br /><em><%= l(:text_length_between, 3, 20) %> <%= l(:text_project_identifier_info) unless @project.identifier_frozen? %></em></p>
+<p><%= f.text_area :description, :rows => 5, :class => 'wiki-edit' %></p>
+<p><%= f.text_field :identifier, :required => true, :disabled => @project.identifier_frozen? %>
+<% unless @project.identifier_frozen? %>
+<br /><em><%= l(:text_length_between, 3, 20) %> <%= l(:text_project_identifier_info) %></em>
+<% end %></p>
 <p><%= f.text_field :homepage, :size => 40 %></p>
 <p><%= f.check_box :is_public %></p>
 <%= wikitoolbar_for 'project_description' %>
index a18f63e43506e86ff89b0750b09557bdece2ceb3..15ea06483403f27a17c27e5a57fd1cce0188dd22 100644 (file)
@@ -2,7 +2,7 @@
 
 <% @project_tree.keys.sort.each do |project| %>
 <h3><%= link_to h(project.name), {:action => 'show', :id => project}, :class => (User.current.member_of?(project) ? "icon icon-fav" : "") %></h3>
-<%= textilizable(project.description, :project => project) %>
+<%= textilizable(project.short_description, :project => project) %>
 
 <% if @project_tree[project].any? %>
     <p><%= l(:label_subproject_plural) %>:
index 2e7ec2c0611517049e5a61268d236a2990f12baa..d618fa6e1f844109de5e4973207305f3089bc06b 100644 (file)
@@ -18,7 +18,7 @@
                <% for project in @projects %>
                        <li>
                        <%= link_to project.name, :controller => 'projects', :action => 'show', :id => project %> (<%= format_time(project.created_on) %>)
-                       <%= textilizable project.description, :project => project %>
+                       <%= textilizable project.short_description, :project => project %>
                        </li>
                <% end %>
                </ul>
diff --git a/db/migrate/087_change_projects_description_to_text.rb b/db/migrate/087_change_projects_description_to_text.rb
new file mode 100644 (file)
index 0000000..d215840
--- /dev/null
@@ -0,0 +1,8 @@
+class ChangeProjectsDescriptionToText < ActiveRecord::Migration
+  def self.up
+    change_column :projects, :description, :text, :default => ''
+  end
+
+  def self.down
+  end
+end