-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial commit of JRuby version of BananaScrum.
- Loading branch information
Showing
5,377 changed files
with
701,226 additions
and
31 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,18 @@ | ||
*.rbc | ||
capybara-*.html | ||
.rspec | ||
/log | ||
/tmp | ||
/db/*.sqlite3 | ||
/public/system | ||
/coverage/ | ||
/spec/tmp | ||
**.orig | ||
rerun.txt | ||
pickle-email-*.html | ||
|
||
# TODO Comment out these rules if you are OK with secrets being uploaded to the repo | ||
config/initializers/secret_token.rb | ||
config/secrets.yml | ||
|
||
## Environment normalisation: | ||
/.bundle | ||
/vendor/bundle | ||
|
||
# these should all be checked in to normalise the environment: | ||
# Gemfile.lock, .ruby-version, .ruby-gemset | ||
|
||
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: | ||
.rvmrc | ||
|
||
# if using bower-rails ignore default bower_components path bower.json files | ||
/vendor/assets/bower_components | ||
*.bowerrc | ||
bower.json | ||
public/javascripts/less_routes.js | ||
tmp/pids | ||
test/reports/ | ||
public/javascripts/all.js | ||
public/javascripts/jquery_all.js | ||
public/stylesheets/all.css | ||
/tags | ||
nbproject | ||
build/bananascrum.war | ||
build/config.yml | ||
build/database.yml | ||
build/README | ||
build/README.pdf | ||
doc/_build | ||
doc/deployment.pdf | ||
build/livesync/livesync.jar | ||
BananaScrum-*.*.tar.gz | ||
bananascrum.war |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
load 'deploy' if respond_to?(:namespace) # cap2 differentiator | ||
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) } | ||
load 'config/deploy' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Add your own tasks in files placed in lib/tasks ending in .rake, | ||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. | ||
|
||
require(File.join(File.dirname(__FILE__), 'config', 'boot')) | ||
|
||
require 'rake' | ||
require 'rake/testtask' | ||
require 'rdoc/task' | ||
require 'tasks/rails' | ||
|
||
require 'rubygems' | ||
gem 'ci_reporter' | ||
require 'ci/reporter/rake/test_unit' | ||
|
||
begin | ||
# Optionally use metric_fu gem | ||
require 'metric_fu' | ||
rescue LoadError | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
# Base controller for all admin actions | ||
class AdminBaseController < DomainBaseController | ||
before_filter :redirect_if_not_admin, :find_domain | ||
|
||
protected | ||
|
||
def changing_plans_enabled | ||
render_404 unless AppConfig.payments_enabled | ||
end | ||
|
||
def prepare_users | ||
@users = Domain.current.users | ||
end | ||
|
||
def prepare_projects | ||
@projects = User.current.projects | ||
end | ||
|
||
def prepare_payments | ||
if AppConfig.payments_enabled | ||
@payments = Domain.current.payments | ||
end | ||
end | ||
|
||
def prepare_plans | ||
if AppConfig.payments_enabled | ||
@current_plan = @domain.plan | ||
@plans = Plan.enabled.public.find(:all, :order => "price ASC") | ||
@free_plan = @plans.select { |plan| plan.name == 'Free' }.first | ||
|
||
@not_available_plans = {} | ||
for plan in @plans | ||
exceedings = @domain.exceedes_plan?(plan) | ||
if exceedings | ||
@not_available_plans[plan] = exceedings | ||
end | ||
end | ||
|
||
@show_free_plan = (@current_plan != @free_plan) && (@current_plan.free? || Domain.current.can_downgrade?) && @not_available_plans[@free_plan].nil? | ||
end | ||
end | ||
|
||
def prepare_customer | ||
@customer = @domain.customer | ||
end | ||
|
||
def find_domain | ||
@domain = Domain.current | ||
end | ||
|
||
def redirect_if_not_xhr | ||
unless request.xhr? | ||
flash[:warning] = "Only xhr requests allowed" | ||
redirect_to admin_panel_url | ||
end | ||
end | ||
|
||
protected | ||
|
||
def setup_gateway | ||
paypal_credentials = AppConfig.paypal[:credentials] | ||
@gateway ||= ActiveMerchant::Billing::PaypalExpressRecurringGateway.new(paypal_credentials) | ||
end | ||
|
||
def cancel_agreement_for(domain) | ||
response = @gateway.cancel_profile(domain.billing_profile_id) | ||
|
||
if response.success? | ||
domain.billing_profile_id = nil | ||
domain.billing_agreement_status = Domain::BILLING_AGREEMENT_STATUSES[:cancelled] | ||
domain.save! | ||
end | ||
|
||
return response | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Just a wrapper around DomainAndAuthorization mixin. | ||
# It just imports that module and should not do anything more | ||
# the module must be fully usable outside this inheritance hierarchy | ||
class DomainBaseController < ApplicationController | ||
protected | ||
include DomainAndAuthorization | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Base controller for all operations inside a single project | ||
# Just a wrapper around ProjectAccessControl - *do not* add anything | ||
# but this include here - the module must be fully usable outside this | ||
# inheritance hierarchy | ||
class ProjectBaseController < DomainBaseController | ||
protected | ||
include ProjectAccessControl | ||
around_filter :set_current_project | ||
around_filter :ensure_current_project_set | ||
before_filter :disallow_non_get_for_archived_projects | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
class Admin::DomainsController < AdminBaseController | ||
helper Admin::PlansHelper | ||
|
||
def update | ||
domain_updated = @domain.update_attributes(params[:domain]) | ||
|
||
if domain_updated then | ||
return render_json(200) | ||
else | ||
return render_json(409, :_error => { :message => @domain.errors.full_messages.join }) | ||
end | ||
end | ||
|
||
def show | ||
prepare_plans | ||
prepare_domain | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
class Admin::InvoicesController < AdminBaseController | ||
|
||
def show | ||
invoice = Domain.current.invoices.find(params[:id]) | ||
if !File.exist?(invoice.original_filename) | ||
return render_404 | ||
end | ||
send_file invoice.original_filename, :type => "application/pdf" | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
class Admin::PasswordsController < AdminBaseController | ||
before_filter :find_user | ||
|
||
def reset | ||
password = User.generate_password | ||
@user.user_password = password | ||
@user.save! | ||
|
||
@user_activation = @user.user_activations.create(:reset_pwd => true) | ||
@user_activation.save! | ||
|
||
Notifier.deliver_admin_reset_password(@user, @user_activation.key) | ||
flash[:notice] = "Password resetted and sent over to user" | ||
render_json :ok | ||
end | ||
|
||
def new | ||
render_to_json_envelope | ||
end | ||
|
||
def create | ||
@user.user_password = params[:user] && params[:user][:user_password] | ||
@user.user_password_confirmation = params[:user] && params[:user][:user_password_confirmation] | ||
@user.password_changed = true | ||
if @user.save | ||
flash[:notice] = "Password updated" | ||
render_json :ok | ||
else | ||
form = render_to_string(:action => :new, :layout => false) | ||
render_json 409, { :html => form } | ||
end | ||
end | ||
|
||
private | ||
|
||
def find_user | ||
@user = User.find(params[:user_id]) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
class Admin::ProjectsController < AdminBaseController | ||
include InPlaceEditing | ||
|
||
include ApplicationHelper | ||
include ActionView::Helpers::FormOptionsHelper | ||
include ActionView::Helpers::TagHelper | ||
helper :users, :admin | ||
|
||
before_filter :set_project, :except => [ :create, :new ] | ||
before_filter :redirect_if_not_xhr, :only => [:new, :create, :edit, :reset_settings_to_default, :update] | ||
|
||
cache_sweeper :project_sweeper, :only => [:update] | ||
prepend_after_filter :refresh_projects, :only => [:archive, :destroy, :create] | ||
|
||
def edit | ||
@assigned_users = @project.nil? ? [] : @project.users | ||
@codename_opts = {:disabled => "disabled"} | ||
render_to_json_envelope({:layout => false}, graphs_hashes_for_select_checkbox) | ||
end | ||
|
||
def update | ||
if params["visible-graphs"] == "None" | ||
@project.visible_graphs = Project::visible_graphs_unselected | ||
end | ||
if @project.update_attributes(params[:project]) | ||
flash[:notice] = "Project was successfully updated." | ||
return render_to_json_envelope :partial => "admin/projects/projects_list", :locals => {:projects => User.current.projects} | ||
else | ||
@assigned_users = @project.nil? ? [] : @project.users | ||
render_json 409, :_error => { :message => @project.errors.full_messages.join } | ||
end | ||
end | ||
|
||
def new | ||
@project = Project.new | ||
@project.domain = Domain.current | ||
@project.free_days = {'6' => '1', '0' => '1'} | ||
render_to_json_envelope({:layout => false}, graphs_hashes_for_select_checkbox.merge(mass_assignment_hashes)) | ||
end | ||
|
||
def create | ||
@project = Project.new(params[:project]) | ||
@project.domain = Domain.current | ||
|
||
if @project.save | ||
flash[:notice] = "New project created. Start using it with creating some backlog items" | ||
|
||
# deliver notifications | ||
@project.users.each do |user| | ||
Notifier.deliver_roles_assigment(@project, user) if user.like_spam? | ||
end | ||
|
||
return render_to_json_envelope :partial => "project", :object => @project | ||
else | ||
return render_json 409, {:html => render_to_string(:action => :new, :layout => false)}.merge(graphs_hashes_for_select_checkbox).merge(mass_assignment_hashes) | ||
end | ||
end | ||
|
||
def destroy | ||
begin | ||
@project.purge! | ||
flash[:notice] = "Project “#{@project.name}” was successfully deleted" | ||
return render_json :ok | ||
rescue Project::DestroyError => de | ||
logger.error "Failed to delete project: '#{@project.name}': #{de.message}" | ||
flash[:error] = "Project “#{@project.name}” can't be deleted!" | ||
rescue => e | ||
raise e # Rethrow exception | ||
end | ||
render_json 409, :_error => { :message => flash[:error] } | ||
end | ||
|
||
def project_description_text | ||
if @project.description.nil? | ||
render :text => "Project description not set" | ||
else | ||
render :text => @project.description | ||
end | ||
end | ||
|
||
def reset_settings_to_defaults | ||
@project.reset_settings! | ||
flash[:notice] = "Settings reset for project #{@project.presentation_name}" | ||
render_to_json_envelope :partial => "settings_form", :leaveOpen => true | ||
rescue Project::ProjectError => e | ||
render_json 409, :_error => { :message => e.message, :type => 'project_error' } | ||
end | ||
|
||
def archive | ||
@project.archived = params[:project_archived].to_i != 0 | ||
@project.save! | ||
if @project.archived | ||
flash[:notice] = "Project #{@project.name} archived" | ||
else | ||
flash[:notice] = "Project #{@project.name} unarchived" | ||
end | ||
render_json 200, { :project => @project.id, :archived => @project.archived } | ||
rescue ActiveRecord::RecordInvalid => ri | ||
flash[:error] = ri.message | ||
render_json 409, {:project => @project.id} | ||
end | ||
|
||
protected | ||
|
||
def graphs_hashes_for_select_checkbox | ||
all_graphs = Project::DEFAULT_VISIBLE_GRAPHS.map {|key, value| {:label => key.to_s, :value => 1, :name => "project[visible_graphs][#{key.to_s}]" }} | ||
selected_graphs = @project.selected_visible_graphs_keys | ||
return {:all_graphs => all_graphs, :selected_graphs => selected_graphs} | ||
end | ||
|
||
def mass_assignment_hashes | ||
list = {} | ||
users = @project.domain.users.not_blocked | ||
roles = Role.find(:all) | ||
|
||
roles.each do |role| | ||
list[role.code] = users.map { |user| { :label => user.login, :value => 1, :name => "project[users_to_assign][#{role.code}][#{user.login}]"} } | ||
end | ||
|
||
selected = {} | ||
roles.each { |role| selected[role.code] = [] } | ||
if @project.users_to_assign | ||
selected = @project.users_to_assign.inject({}) do |new_hash, (k,v)| | ||
new_hash[k] = v.keys | ||
new_hash | ||
end | ||
end | ||
|
||
return { :mass_assignment => list, :mass_assignment_selected => selected } | ||
end | ||
|
||
def refresh_projects | ||
return if error? | ||
|
||
append_to_envelope(:_projects, projects_for_select) | ||
end | ||
|
||
def set_project | ||
@project = find_current_project or render_not_found | ||
end | ||
|
||
def find_current_project | ||
if params[:id] then | ||
User.current.projects.find(params[:id]) | ||
else | ||
raise ActiveRecord::RecordNotFound.new 'Project id not specified' | ||
end | ||
end | ||
end |
Oops, something went wrong.