Skip to content
This repository was archived by the owner on May 10, 2022. It is now read-only.

Multiple free responses; image free responses #191

Merged
merged 26 commits into from
Jan 30, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
79f510d
text free response work
jpslav Jan 7, 2013
46911b7
text responses mostly rockin
jpslav Jan 10, 2013
c98ded5
finished text free response code
jpslav Jan 10, 2013
6d04cc5
really finished text responses
jpslav Jan 10, 2013
fb0cbc5
pulled FR form into parent
jpslav Jan 14, 2013
b55e300
file uploading
jpslav Jan 26, 2013
3a880ce
added s3 storage for attachments
jpslav Jan 26, 2013
1798e31
made free responses sortable
jpslav Jan 26, 2013
6f4e789
fixed some bugs, added captions to images
jpslav Jan 27, 2013
008bb59
fixed up free response edit styling
jpslav Jan 27, 2013
957ce0f
viewing attachments
jpslav Jan 27, 2013
bc6bde6
got rid of old displays of free_response
jpslav Jan 28, 2013
3b9685c
Merge branch 'master' of github.com:lml/ost into jpslav-student-work
jpslav Jan 28, 2013
65c4125
fixed bugs, cleaned up SE show view, eliminated OBE files, etc
jpslav Jan 28, 2013
d43312f
cleanup
jpslav Jan 28, 2013
69de100
fixed migration to new free response style by ignoring a validation
jpslav Jan 28, 2013
4afcbde
got rid of remaining 'lock' text
jpslav Jan 28, 2013
ba36c8d
not migrating old blank free responses to new style
jpslav Jan 28, 2013
3f5ac81
fixed bug that had broken free response sorting
jpslav Jan 28, 2013
bf3b04e
fixed remove_from_container in acts_as_numberable when STI is being used
jpslav Jan 28, 2013
1b7de7d
made it clearer that students need to add at least one free response
jpslav Jan 28, 2013
5bb1668
now remove turn in form when last free response deleted
jpslav Jan 28, 2013
f8cf9a7
PR comment fixes and changed 'save' button terminology
jpslav Jan 29, 2013
63363c0
fixes recommend from pull request, 'attach' -> 'save draft', and bug …
jpslav Jan 29, 2013
dce1d3e
overlay on submitted free responses
jpslav Jan 30, 2013
2d2999c
YT change
jpslav Jan 30, 2013
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ config/developer_settings.yml
config/secret_settings.yml
config/deploy_settings.yml
public/system/**
public/uploads/**
db/data.yml
*~
.vagrant
Expand Down
6 changes: 6 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ gem 'sqlite3', '~> 1.3.6'
gem 'rack-mini-profiler'
gem 'newrelic_rpm'

gem 'mini_magick'
gem 'carrierwave'
gem "fog", "~> 1.3.1"

gem 'remotipart', '~> 1.0'

group :development, :test do
gem 'debugger', '~> 1.1.4'
gem 'faker', '~> 1.0.1'
Expand Down
24 changes: 24 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ GEM
capybara-webkit (0.12.1)
capybara (>= 1.0.0, < 1.2)
json
carrierwave (0.7.1)
activemodel (>= 3.2.0)
activesupport (>= 3.2.0)
cheat (1.3.0)
childprocess (0.3.5)
ffi (~> 1.0, >= 1.0.6)
Expand Down Expand Up @@ -115,6 +118,7 @@ GEM
diff-lcs (1.1.3)
erubis (2.7.0)
eventmachine (0.12.10)
excon (0.13.4)
execjs (1.4.0)
multi_json (~> 1.0)
factory_girl (4.1.0)
Expand All @@ -128,6 +132,17 @@ GEM
faye-websocket (0.4.6)
eventmachine (>= 0.12.0)
ffi (1.1.5)
fog (1.3.1)
builder
excon (~> 0.13.0)
formatador (~> 0.2.0)
mime-types
multi_json (~> 1.0)
net-scp (~> 1.0.4)
net-ssh (>= 2.1.3)
nokogiri (~> 1.5.0)
ruby-hmac
formatador (0.2.4)
gherkin (2.11.2)
json (>= 1.4.6)
haml (3.1.7)
Expand All @@ -151,6 +166,8 @@ GEM
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.19)
mini_magick (3.4)
subexec (~> 0.2.1)
multi_json (1.3.6)
mysql2 (0.3.11)
net-scp (1.0.4)
Expand Down Expand Up @@ -204,6 +221,7 @@ GEM
rdoc (3.12)
json (~> 1.4)
recaptcha (0.3.4)
remotipart (1.0.2)
rspec (2.11.0)
rspec-core (~> 2.11.0)
rspec-expectations (~> 2.11.0)
Expand All @@ -219,6 +237,7 @@ GEM
rspec (~> 2.11.0)
rspec-rerun (0.1.1)
rspec (>= 2.11.0)
ruby-hmac (0.4.0)
ruby2ruby (1.3.1)
ruby_parser (~> 2.0)
sexp_processor (~> 3.0)
Expand Down Expand Up @@ -251,6 +270,7 @@ GEM
activerecord (~> 3.0)
activesupport (~> 3.0)
polyamorous (~> 0.5.0)
subexec (0.2.2)
terminal-table (1.4.5)
therubyracer (0.10.1)
libv8 (~> 3.3.10)
Expand Down Expand Up @@ -291,6 +311,7 @@ DEPENDENCIES
capistrano (~> 2.12.0)
capybara-screenshot
capybara-webkit
carrierwave
cheat
chronic
coffee-rails (~> 3.2.1)
Expand All @@ -303,9 +324,11 @@ DEPENDENCIES
factory_girl_rails (~> 4.0)
faker (~> 1.0.1)
fastercsv
fog (~> 1.3.1)
jquery-rails (~> 2.0.2)
launchy
mime-types
mini_magick
mysql2 (~> 0.3.11)
newrelic_rpm
poltergeist
Expand All @@ -315,6 +338,7 @@ DEPENDENCIES
railroady
rails (= 3.2.8)
recaptcha (~> 0.3.4)
remotipart (~> 1.0)
rspec-rails
rspec-rerun
rvm-capistrano
Expand Down
Binary file added app/assets/images/ajax-loader.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions app/assets/javascripts/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
//
//= require jquery
//= require jquery_ujs
//= require jquery.remotipart
//= require jquery-ui
//= require jquery.purr
//= require best_in_place
Expand Down
7 changes: 7 additions & 0 deletions app/assets/javascripts/jquery_extensions.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,10 @@ jQuery.fn.pageTimeout = function(options) {
$(document).bind('click', resetTimeouts);
});
}

jQuery.fn.closeOnClickOutside = function(){
var dialogx = this;
$('.ui-widget-overlay').live("click",function(){
dialogx.dialog("close");
});
}
46 changes: 46 additions & 0 deletions app/assets/stylesheets/main.css.scss
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,12 @@ table.list td.assignment_grade {
text-align: right
}

table.list td.outlined_cell {
border-left: 1px solid #ddd;
border-right:1px solid #ddd;
padding: 8px;
}

table.list.assignment {
width: 95%;

Expand Down Expand Up @@ -856,3 +862,43 @@ span.antispam {display:none;}
input.ui-widget {
font-size: 11px;
}

///////// FREE RESPONSES ///////////

.free_response {
margin-bottom:14px;
clear:both;
}

.free_response_form {
background-color: #eee;
}

.free_response_form input[type="file"],textarea {
background-color: #fff;
}

@mixin content-box {
visibility: visible;
overflow: hidden;
position: relative;
z-index: 2;
border: 1px solid #ccc;
padding: 15px;
width: 560px;
margin-top:10px;
}

.question-box {
@include content-box;
}

.free-response-box {
@include content-box;
}

.section-exercise-responses {
.free-response-box {
width: 420px;
}
}
15 changes: 13 additions & 2 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class ApplicationController < ActionController::Base
:user_is_admin?,
:present_user,
:view_dir,
:view_dir_from_string,
:enable_clock

unless Ost::Application.config.consider_all_requests_local
Expand Down Expand Up @@ -151,7 +152,8 @@ def redirect_maintenance
end

def enable_timeout
@enable_timeout = true
# only enable in production
@enable_timeout = Rails.env.production?
end

def is_id?(value)
Expand Down Expand Up @@ -187,7 +189,11 @@ def set_user_time_zone
end

def view_dir(object)
object.type.underscore.pluralize
view_dir_from_string(object.type)
end

def view_dir_from_string(string)
string.underscore.pluralize
end

def enable_clock
Expand Down Expand Up @@ -222,4 +228,9 @@ def sort(params_name, model_class, parent = nil, parent_method = nil)
# render :template => 'shared/sort'
end

def read_errors(object)
@errors = object.errors
@errors_object = object
end

end
7 changes: 7 additions & 0 deletions app/controllers/file_free_responses_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class FileFreeResponsesController < ApplicationController

def view
@free_response = FreeResponse.find(params[:id])
raise SecurityTransgression unless present_user.can_read?(@free_response)
end
end
62 changes: 62 additions & 0 deletions app/controllers/free_responses_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
class FreeResponsesController < ApplicationController

before_filter :get_student_exercise, :only => [:new, :create, :sort]
before_filter :make_free_response, :only => [:new, :create]
before_filter :grab_view_helper_variables, :only => [:create, :update]

def new
end

def edit
@free_response = FreeResponse.find(params[:id])
raise SecurityTransgression unless present_user.can_update?(@free_response)
end

def create
raise SecurityTransgression unless present_user.can_create?(@free_response)
@free_response.save
render :template => 'free_responses/create_or_update'
end

def update
@free_response = FreeResponse.find(params[:id])
raise SecurityTransgression unless present_user.can_update?(@free_response)
@free_response.update_attributes(params[:free_response])
render :template => 'free_responses/create_or_update'
end

def destroy
@free_response = FreeResponse.find(params[:id])
raise SecurityTransgression unless present_user.can_destroy?(@free_response)
@free_response.destroy
end

def sort
super('free_response', FreeResponse, @student_exercise, :student_exercise)
end

protected

def get_student_exercise
@student_exercise = StudentExercise.find(params[:student_exercise_id])
end

def make_free_response
type = params[:type]
@free_response =
case type
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This case statement makes my spidy senses tingle, but I'm not sure what to do to fix it. It seems like we want to have a FreeResponseFactory of some sort do this work...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I hear you. If it just stays as is, I'm grudgingly ok with it.

when 'TextFreeResponse'
TextFreeResponse.new(params[:free_response])
when 'FileFreeResponse'
FileFreeResponse.new(params[:free_response])
else
raise AbstractController::ActionNotFound
end
@free_response.student_exercise = @student_exercise
end

def grab_view_helper_variables
@free_response_form_id = params[:free_response_form_id]
end

end
9 changes: 0 additions & 9 deletions app/controllers/student_exercises_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,6 @@ def make_correct
end
end

def preview_free_response
@text = params[:student_exercise][:free_response]
@student_exercise = StudentExercise.find(params[:student_exercise_id])
ResponseTime.create(:response_timeable => @student_exercise,
:event => "ACTIVITY",
:note => "preview",
:page => "work")
end

def feedback
@student_exercise = StudentExercise.find(params[:student_exercise_id])
raise SecurityTransgression unless present_user.can_read?(@student_exercise) &&
Expand Down
6 changes: 6 additions & 0 deletions app/controllers/text_free_responses_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class TextFreeResponsesController < ApplicationController

def preview
@text = params[:free_response][:content]
end
end
Loading