diff -r 48ddad528c51 -r 52be96e83080 app/views/projects/_latest.html.erb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/projects/_latest.html.erb Mon Nov 12 15:17:17 2012 +0000
@@ -0,0 +1,19 @@
+
diff -r 48ddad528c51 -r 52be96e83080 app/views/projects/explore.html.erb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/projects/explore.html.erb Mon Nov 12 15:17:17 2012 +0000
@@ -0,0 +1,23 @@
+
+
+
+
<%=l(:label_institutions_busy)%>
+ <%= render :partial => 'activities/busy_institution' %>
+
+
+
<%=l(:label_project_latest)%>
+ <%= render :partial => 'projects/latest' %>
+
+
+
+
<%=l(:label_projects_busy)%>
+ <%= render :partial => 'activities/busy' %>
+
+
diff -r 48ddad528c51 -r 52be96e83080 app/views/welcome/index.html.erb
--- a/app/views/welcome/index.html.erb Fri Nov 09 14:41:57 2012 +0000
+++ b/app/views/welcome/index.html.erb Mon Nov 12 15:17:17 2012 +0000
@@ -14,40 +14,17 @@
<% if @site_news.any? %>
-
-
<%=l(:label_news_site_latest)%>
+
+
<%=l(:label_news_site_latest)%>
<%= render :partial => 'news/news', :locals => { :project => @site_project }, :collection => @site_news %>
-
<%= link_to l(:label_news_more), { :controller => 'projects', :action => @site_project.identifier, :id => 'news' } %>
<% end %>
- <% if @projects.any? %>
<%=l(:label_project_latest)%>
-
- <% for project in @projects %>
- <% @project = project %>
- -
-
- <% if !project.root? %>
- <% project.ancestors.each do |p| %>
- <%= h(p) %> »
- <% end %>
- <% end %>
- <%= link_to_project project %>
-
- <% if !project.is_public? %>
- <%= l(:field_is_private) %>
- <% end %>
- <%= format_time(project.created_on)%>
- <%= render_project_short_description project %>
-
- <% end %>
- <% @project = nil %>
-
- <%= link_to l(:label_projects_more), :controller => 'projects' %>
+ <%= render :partial => 'projects/latest' %>
+ <%= link_to l(:label_projects_more), :controller => 'projects' %>
- <% end %>
<%= call_hook(:view_welcome_index_right, :projects => @projects) %>
diff -r 48ddad528c51 -r 52be96e83080 config/locales/en.yml
--- a/config/locales/en.yml Fri Nov 09 14:41:57 2012 +0000
+++ b/config/locales/en.yml Mon Nov 12 15:17:17 2012 +0000
@@ -494,6 +494,9 @@
label_project_all: All Projects
label_project_latest: Latest projects
label_projects_more: More projects
+ label_project_tags_all: Popular tags
+ label_projects_busy: Busy projects
+ label_institutions_busy: Active institutions
label_managers: Managed by
label_issue: Issue
label_issue_new: New issue
@@ -560,6 +563,7 @@
label_activity_my_recent_none: No recent activity
label_overall_activity: Overall activity
label_user_activity: "%{value}'s activity"
+ label_institution_activity: "Activity from %{value}"
label_new: New
label_logged_as: Logged in as
label_environment: Environment
@@ -689,7 +693,7 @@
label_repository: Repository
label_is_external_repository: Track an external repository
label_repository_plural: Repositories
- label_browse: Browse
+ label_explore_projects: Explore projects
label_modification: "%{count} change"
label_modification_plural: "%{count} changes"
label_branch: Branch
diff -r 48ddad528c51 -r 52be96e83080 config/routes.rb
--- a/config/routes.rb Fri Nov 09 14:41:57 2012 +0000
+++ b/config/routes.rb Mon Nov 12 15:17:17 2012 +0000
@@ -32,6 +32,8 @@
# TODO: wasteful since this is also nested under issues, projects, and projects/issues
map.resources :time_entries, :controller => 'timelog'
+ map.connect 'explore', :controller => 'projects', :action => 'explore'
+
map.connect 'projects/:id/wiki', :controller => 'wikis', :action => 'edit', :conditions => {:method => :post}
map.connect 'projects/:id/wiki/destroy', :controller => 'wikis', :action => 'destroy', :conditions => {:method => :get}
map.connect 'projects/:id/wiki/destroy', :controller => 'wikis', :action => 'destroy', :conditions => {:method => :post}
diff -r 48ddad528c51 -r 52be96e83080 extra/soundsoftware/get-statistics.rb
--- a/extra/soundsoftware/get-statistics.rb Fri Nov 09 14:41:57 2012 +0000
+++ b/extra/soundsoftware/get-statistics.rb Mon Nov 12 15:17:17 2012 +0000
@@ -5,9 +5,19 @@
# ./script/runner -e production extra/soundsoftware/get-statistics.rb
#
-d1 = Date.parse("20101201") # => 1 Dec 2010
+d1 = Date.parse("20100701") # => 1 Jul 2010
d2 = Date.today
+def delta_array (iarray)
+ # returns an array with the deltas
+ ## prepends a zero and drops the last element
+ deltas = [0] + iarray
+ deltas = deltas.first(deltas.size - 1)
+
+ return iarray.zip(deltas).map { |x, y| x - y }
+
+end
+
def months_between(d1, d2)
months = []
start_date = Date.civil(d1.year, d1.month, 1)
@@ -32,28 +42,106 @@
while (start_date < end_date)
weeks << start_date
- start_date = start_date + 1.week
+ start_date = start_date + 2.week
end
weeks << end_date
end
-# dates = months_between(d1, d2)
-dates = weeks_between(d1, d2)
+def get_user_project_evol_stats()
+ # dates = months_between(d1, d2)
+ dates = months_between(d1, d2)
+
+ # number of users
+ n_users = []
+ n_projects = []
+ qm_users = []
+
+ dates.each do |date|
+ users = User.find_by_sql ["SELECT * FROM users WHERE users.status = '1' AND users.created_on <= ?;", date]
+ projects = Project.find_by_sql ["SELECT * FROM projects WHERE projects.created_on <= ?;", date]
+
+ qm_users_list = User.find_by_sql ["SELECT * FROM users,ssamr_user_details WHERE users.status = '1' AND ssamr_user_details.user_id = users.id AND (users.mail like '%qmul%' OR ssamr_user_details.institution_id = '99') AND users.created_on <= ?;", date ]
+
+ qm_users << qm_users_list.count
+ n_users << users.count
+ n_projects << projects.count
+
+ # private_projects = Project.find(:all, :conditions => {:created_on => d1..date, is_public => false})
+ end
+
+ user_deltas = delta_array(n_users)
+ proj_deltas = delta_array(n_projects)
+ qm_user_deltas = delta_array(qm_users)
+
+ puts "Date Users D_Users QM_Users D_QM_users Projects D_Projects"
+
+ dates.zip(n_users, user_deltas, qm_users, qm_user_deltas, n_projects, proj_deltas).each do |a, b, c, d, e, f, g|
+ puts "#{a} #{b} #{c} #{d} #{e} #{f} #{g}"
+ end
+
+end
-dates.each do |date|
- users = User.find(:all, :conditions => {:created_on => d1..date})
- all_projects = Project.find(:all, :conditions => {:created_on => d1..date})
- private_projects = Project.find(:all, :conditions => {:created_on => d1..date,
- :is_public => false})
- top_level_and_private_projects = Project.find(:all, :conditions => {:created_on => d1..date,
- :is_public => false,
- :parent_id => nil})
- puts "#{date} #{users.count} #{all_projects.count} #{private_projects.count} #{top_level_and_private_projects.count}\n"
+def get_project_status()
+ date = "20121101"
+
+ all_projects = Project.find(:all, :conditions => ["created_on < ?", date])
+ # all_projects = Project.find(:all, :conditions => ["is_public = ? AND created_on < ?", true, date])
+# all_projects = Project.find(:all, :conditions => ["is_public = ? AND created_on < ?", false, date])
+
+ collab = []
+ users_per_proj = []
+
+ # puts "Public Users Institutions"
+
+ all_projects.each do |proj|
+ insts = []
+
+ proj.users.each do |u|
+ if u.institution == "" || u.institution == "No Institution Set"
+ if u.mail.include?("qmul.ac.uk") || u.mail.include?("andrewrobertson77")
+ insts << "Queen Mary, University of London"
+ else
+ insts << u.mail
+ end
+ else
+ insts << u.institution
+ end
+ end
+
+ users_per_proj << proj.users.count
+ collab << insts.uniq.count
+ end
+
+
+ # freq = collab.inject(Hash.new(0)) { |h,v| h[v] += 1; h }
+ # freq = freq.sort_by {|key, value| value}
+ # puts freq.inspect.sort
+
+ puts "Projects: #{all_projects.count} UpP: #{users_per_proj.sum / users_per_proj.size.to_f} Users1+: #{users_per_proj.count{|x| x> 1}} Users2+: #{users_per_proj.count{|x| x> 2}} Collab1+: #{collab.count{|x| x > 1}} Collab2+: #{collab.count{|x| x > 2}} IpP: #{collab.sum / collab.size.to_f}"
+end
+
+def get_user_projects_ratios()
+ user_projects = User.find(:all, :conditions=> {:status => 1})
+ pub_proj_user = user_projects.map{|u| u.projects.find(:all, :conditions=>{:is_public => true}).count}
+
+ user_projects.zip(pub_proj_user).each do |u, pub|
+ puts "#{u.projects.count} #{pub}"
+ end
end
+def get_inst_list()
+ users = User.find(:all, :conditions => {:status => 1})
+ inst_list = users.map{|user| user.institution}
+
+ freq = inst_list.inject(Hash.new(0)) { |h,v| h[v] += 1; h }
+
+end
+# get_user_projects_ratios()
+# get_user_project_evol_stats()
+get_project_status()
diff -r 48ddad528c51 -r 52be96e83080 public/stylesheets/application.css
--- a/public/stylesheets/application.css Fri Nov 09 14:41:57 2012 +0000
+++ b/public/stylesheets/application.css Mon Nov 12 15:17:17 2012 +0000
@@ -240,6 +240,8 @@
div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
+div.tags h3 { background: url(../images/ticket_note.png) no-repeat 0% 50%; padding-left: 20px; }
+div.institutions h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
#watchers ul {margin: 0; padding: 0;}
#watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
diff -r 48ddad528c51 -r 52be96e83080 vendor/plugins/redmine_tags/app/controllers/tags_controller.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/plugins/redmine_tags/app/controllers/tags_controller.rb Mon Nov 12 15:17:17 2012 +0000
@@ -0,0 +1,15 @@
+class TagsController < ApplicationController
+
+ def index
+ respond_to do |format|
+ format.html {
+ render :template => 'tags/index.html.erb', :layout => !request.xhr?
+ }
+ format.api {
+ }
+ format.atom {
+ }
+ end
+ end
+
+end
diff -r 48ddad528c51 -r 52be96e83080 vendor/plugins/redmine_tags/app/helpers/tags_helper.rb
--- a/vendor/plugins/redmine_tags/app/helpers/tags_helper.rb Fri Nov 09 14:41:57 2012 +0000
+++ b/vendor/plugins/redmine_tags/app/helpers/tags_helper.rb Mon Nov 12 15:17:17 2012 +0000
@@ -40,8 +40,11 @@
content_tag('span', content, :class => 'tag-label')
end
- def render_project_tag_link(tag)
+ def render_project_tag_link(tag, options = {})
content = link_to tag.name, :controller => :projects, :action => :index, :project => { :tag_list => tag.name }
+ if options[:show_count]
+ content << content_tag('span', "(#{tag.count})", :class => 'tag-count')
+ end
content_tag('span', content, :class => 'tag-label')
end
@@ -73,7 +76,7 @@
end
tag_cloud tags, (1..8).to_a do |tag, weight|
- content << " " + content_tag(item_el, render_tag_link(tag, options), :class => "tag-nube-#{weight}") + " "
+ content << " " + content_tag(item_el, render_project_tag_link(tag, options), :class => "tag-nube-#{weight}") + " "
end
content_tag(list_el, content, :class => 'tags')
diff -r 48ddad528c51 -r 52be96e83080 vendor/plugins/redmine_tags/app/views/projects/_tagcloud.html.erb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/plugins/redmine_tags/app/views/projects/_tagcloud.html.erb Mon Nov 12 15:17:17 2012 +0000
@@ -0,0 +1,9 @@
+<% content_for :header_tags do %>
+ <%= stylesheet_link_tag 'redmine_tags', :plugin => 'redmine_tags' %>
+<% end %>
+
+
+<%= render_tags_list(Project.available_tags, :style => :cloud) %>
+
+
+
diff -r 48ddad528c51 -r 52be96e83080 vendor/plugins/redmine_tags/app/views/projects/index.html.erb
--- a/vendor/plugins/redmine_tags/app/views/projects/index.html.erb Fri Nov 09 14:41:57 2012 +0000
+++ b/vendor/plugins/redmine_tags/app/views/projects/index.html.erb Mon Nov 12 15:17:17 2012 +0000
@@ -11,7 +11,6 @@
<% if User.current.logged? %>
<%= render :partial => 'my_projects' %>
diff -r 48ddad528c51 -r 52be96e83080 vendor/plugins/redmine_tags/app/views/tags/index.html.erb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/plugins/redmine_tags/app/views/tags/index.html.erb Mon Nov 12 15:17:17 2012 +0000
@@ -0,0 +1,13 @@
+<% content_for :header_tags do %>
+ <%= auto_discovery_link_tag(:atom, {:action => 'index', :format => 'atom', :key => User.current.rss_key}) %>
+ <%= stylesheet_link_tag 'redmine_tags', :plugin => 'redmine_tags' %>
+<% end %>
+
+
+
+
+<%= render_tags_list(Project.available_tags, :style => :cloud) %>
+
diff -r 48ddad528c51 -r 52be96e83080 vendor/plugins/redmine_tags/assets/stylesheets/redmine_tags.css
--- a/vendor/plugins/redmine_tags/assets/stylesheets/redmine_tags.css Fri Nov 09 14:41:57 2012 +0000
+++ b/vendor/plugins/redmine_tags/assets/stylesheets/redmine_tags.css Mon Nov 12 15:17:17 2012 +0000
@@ -22,6 +22,7 @@
ul.tags li { margin: .25em 0px; }
div.tags { text-align: center; }
+div.tags h3 { text-align: left; }
div.tags .tag-label { margin: .25em; }
div.tags .tag-nube-1 { font-size: .8em; }
div.tags .tag-nube-2 { font-size: .9em; }
diff -r 48ddad528c51 -r 52be96e83080 vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_helper_patch.rb
--- a/vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_helper_patch.rb Fri Nov 09 14:41:57 2012 +0000
+++ b/vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_helper_patch.rb Mon Nov 12 15:17:17 2012 +0000
@@ -4,6 +4,7 @@
def self.included(base) # :nodoc:
base.send(:include, InstanceMethods)
+ base.send(:include, TagsHelper)
base.class_eval do
unloadable
end