allow anonymous viewing of features
[opensuse:openfate.git] / app / controllers / main_controller.rb
1 class MainController < ApplicationController
2
3   skip_before_filter :verify_authenticity_token, :only => [:refresh_updated_features]
4   before_filter :add_boxes
5   layout "application", :except => [:refresh_latest_features, :refresh_updated_features, :refresh_my_features]
6
7
8   def index 
9   end
10   
11   def refresh_updated_features
12     begin
13       query = "let $hits:= (for $i in /feature[partnercontext/organization='#{session[:user].organization}' and " + feature_type_filter + "] order by $i/k:versioningsummary/k:lastmodifydate descending return $i) return subsequence($hits, 1, 10)"
14       @features = Feature.queryFeatures(query, session[:user])
15       @order = 'update_date'
16       @orderdirection = 'descending'
17       @limit = '10'
18       render :partial => "layouts/featurebox", :locals =>  {:headline => 'Last updated', :action => :refresh_updated_features}
19     rescue Exception=>e
20       @exception = e
21       @message = "Error loading updated features"
22       @status = 500
23       render :template => 'main/error', :layout => false
24     end
25   end
26
27
28   def refresh_my_features
29     begin
30       query = "let $hits:= (for $i in " + 
31         "/feature[" + feature_type_filter + " and partnercontext/organization='#{session[:user].organization}' " + 
32         "and productcontext[status[new or research or ready or evaluation or implementation]] " +  
33         "and actor [ person/userid='#{session[:user].uid}' and (role='infoprovider' or " + 
34         "(../productcontext/status/evaluation/owner/role='productmanager' and role='productmanager') or " + 
35         "(../productcontext/status/evaluation/owner/role='projectmanager' and role='projectmanager') or " + 
36         "(../productcontext/status/evaluation/owner/role='teamleader' and role='teamleader') " + 
37         "or (../productcontext/status/implementation and role='developer'))]]" +     
38         " return $i) return $hits"
39       @features = Feature.queryFeatures(query, session[:user])
40       @type='myfeatures'
41       @limit = '10'
42       render :partial => "layouts/featurebox", :locals =>  {:headline => 'My features', :action => :refresh_my_features}
43     rescue Exception=>e
44       @exception = e
45       @message = "Error loading your features"
46       @status = 500
47       render :template => 'main/error', :layout => false
48     end
49   end
50
51
52   def refresh_partner_features
53     query = "let $hits:= (for $i in /feature[partnercontext/organization='#{session[:user].organization}'] order by $i/k:versioningsummary/k:lastmodifydate descending return $i) return $hits"
54     @features = Feature.queryFeatures(query, session[:user])
55     @order = 'update_date'
56     @orderdirection = 'descending'
57     render :partial => "layouts/featurebox", :locals =>  {:headline => 'Features', :action => :refresh_partner_features}
58   end
59   
60
61   def logout
62     session.delete
63     redirect_to("/cmd/ICSLogout")
64   end
65
66  
67 private 
68
69   def add_boxes
70     @partials = [ ['layouts/featurebox', {:headline => 'Last updated', :action => :refresh_updated_features}],
71                  ['layouts/unsavedbox', {}] ]
72   end
73  
74
75   def self.logger 
76     RAILS_DEFAULT_LOGGER
77   end
78   
79 end