Merge branch 'master' into master

This commit is contained in:
stormand 2017-01-02 16:12:11 +08:00 committed by GitHub
commit ed26b41005
29 changed files with 10602 additions and 365 deletions

View File

@ -5,4 +5,4 @@ You are allowed to:
2. Remove generators
3. Add installed generators
To add new installed generators automatically delete this file and reload the project.
--><GeneratorsGroup><Generator name="assets" /><Generator name="coffee:assets" /><Generator name="controller" /><Generator name="generator" /><Generator name="helper" /><Generator name="integration_test" /><Generator name="jbuilder" /><Generator name="job" /><Generator name="js:assets" /><Generator name="mailer" /><Generator name="migration" /><Generator name="model" /><Generator name="resource" /><Generator name="scaffold" /><Generator name="scaffold_controller" /><Generator name="task" /><Generator name="test_unit:generator" /><Generator name="test_unit:job" /><Generator name="test_unit:plugin" /></GeneratorsGroup></Settings>
--><GeneratorsGroup><Generator name="active_record:migration" /><Generator name="active_record:model" /><Generator name="active_record:observer" /><Generator name="active_record:session_migration" /><Generator name="controller" /><Generator name="erb:controller" /><Generator name="erb:mailer" /><Generator name="erb:scaffold" /><Generator name="generator" /><Generator name="helper" /><Generator name="integration_test" /><Generator name="mailer" /><Generator name="metal" /><Generator name="migration" /><Generator name="model" /><Generator name="model_subclass" /><Generator name="observer" /><Generator name="performance_test" /><Generator name="plugin" /><Generator name="resource" /><Generator name="scaffold" /><Generator name="scaffold_controller" /><Generator name="session_migration" /><Generator name="stylesheets" /><Generator name="test_unit:controller" /><Generator name="test_unit:helper" /><Generator name="test_unit:integration" /><Generator name="test_unit:mailer" /><Generator name="test_unit:model" /><Generator name="test_unit:observer" /><Generator name="test_unit:performance" /><Generator name="test_unit:plugin" /><Generator name="test_unit:scaffold" /></GeneratorsGroup></Settings>

View File

@ -0,0 +1,27 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="CourseSelect_dev" type="RailsRunConfigurationType" factoryName="Rails">
<predefined_log_file id="RUBY_RAILS_SERVER" enabled="true" />
<module name="vim" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="true" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="rbenv: 2.3.1" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<envs />
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
<COVERAGE_PATTERN ENABLED="true">
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
</COVERAGE_PATTERN>
</EXTENSION>
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="SCRIPT_ARGS" VALUE="" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="PORT" VALUE="3000" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="IP" VALUE="0.0.0.0" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="DUMMY_APP" VALUE="test/dummy" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RAILS_SERVER_TYPE" VALUE="default" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ENVIRONMENT_TYPE" VALUE="development" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="LAUNCH_JS" VALUE="false" />
<method />
</configuration>
</component>

View File

@ -19,7 +19,7 @@
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="PORT" VALUE="3000" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="IP" VALUE="0.0.0.0" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="DUMMY_APP" VALUE="test/dummy" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RAILS_SERVER_TYPE" VALUE="Default" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RAILS_SERVER_TYPE" VALUE="default" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ENVIRONMENT_TYPE" VALUE="development" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="LAUNCH_JS" VALUE="false" />
<method />

View File

@ -10,38 +10,14 @@
</facet>
</component>
<component name="ModuleRunConfigurationManager">
<configuration default="false" name="test: vim" type="RakeRunConfigurationType" factoryName="Rake">
<configuration default="false" name="CourseSelect_dev" type="RailsRunConfigurationType" factoryName="Rails">
<predefined_log_file id="RUBY_RAILS_SERVER" enabled="true" />
<module name="vim" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<envs>
<env name="RAILS_ENV" value="test" />
</envs>
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
<COVERAGE_PATTERN ENABLED="true">
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
</COVERAGE_PATTERN>
</EXTENSION>
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_NAME" VALUE="test" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ARGS" VALUE="" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ATTACHED_TEST_FRAMEWORKS" VALUE=":test_unit " />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_TRACE" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_DRYRUN" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_PREREQS" VALUE="false" />
<method />
</configuration>
<configuration default="false" name="spec: vim" type="RakeRunConfigurationType" factoryName="Rake">
<module name="vim" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="true" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="rbenv: 2.3.1" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<envs />
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
@ -50,12 +26,38 @@
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
</COVERAGE_PATTERN>
</EXTENSION>
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_NAME" VALUE="spec" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ARGS" VALUE="" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ATTACHED_TEST_FRAMEWORKS" VALUE=":rspec " />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_TRACE" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_DRYRUN" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_PREREQS" VALUE="false" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="SCRIPT_ARGS" VALUE="" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="PORT" VALUE="3000" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="IP" VALUE="0.0.0.0" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="DUMMY_APP" VALUE="test/dummy" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RAILS_SERVER_TYPE" VALUE="default" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ENVIRONMENT_TYPE" VALUE="development" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="LAUNCH_JS" VALUE="false" />
<method />
</configuration>
<configuration default="false" name="Development: vim" type="RailsRunConfigurationType" factoryName="Rails">
<predefined_log_file id="RUBY_RAILS_SERVER" enabled="true" />
<module name="vim" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<envs />
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
<COVERAGE_PATTERN ENABLED="true">
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
</COVERAGE_PATTERN>
</EXTENSION>
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="SCRIPT_ARGS" VALUE="" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="PORT" VALUE="3000" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="IP" VALUE="0.0.0.0" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="DUMMY_APP" VALUE="test/dummy" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RAILS_SERVER_TYPE" VALUE="default" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ENVIRONMENT_TYPE" VALUE="development" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="LAUNCH_JS" VALUE="false" />
<method />
</configuration>
<configuration default="false" name="Production: vim" type="RailsRunConfigurationType" factoryName="Rails">
@ -83,14 +85,13 @@
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="LAUNCH_JS" VALUE="false" />
<method />
</configuration>
<configuration default="false" name="Development: vim" type="RailsRunConfigurationType" factoryName="Rails">
<predefined_log_file id="RUBY_RAILS_SERVER" enabled="true" />
<configuration default="false" name="spec: vim" type="RakeRunConfigurationType" factoryName="Rake">
<module name="vim" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<envs />
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
@ -99,13 +100,37 @@
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
</COVERAGE_PATTERN>
</EXTENSION>
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="SCRIPT_ARGS" VALUE="" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="PORT" VALUE="3000" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="IP" VALUE="0.0.0.0" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="DUMMY_APP" VALUE="test/dummy" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="RAILS_SERVER_TYPE" VALUE="Default" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="ENVIRONMENT_TYPE" VALUE="development" />
<RAILS_SERVER_CONFIG_SETTINGS_ID NAME="LAUNCH_JS" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_NAME" VALUE="spec" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ARGS" VALUE="" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ATTACHED_TEST_FRAMEWORKS" VALUE=":rspec " />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_TRACE" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_DRYRUN" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_PREREQS" VALUE="false" />
<method />
</configuration>
<configuration default="false" name="test: vim" type="RakeRunConfigurationType" factoryName="Rake">
<module name="vim" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
<envs>
<env name="RAILS_ENV" value="test" />
</envs>
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
<COVERAGE_PATTERN ENABLED="true">
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
</COVERAGE_PATTERN>
</EXTENSION>
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_NAME" VALUE="test" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ARGS" VALUE="" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ATTACHED_TEST_FRAMEWORKS" VALUE=":test_unit " />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_TRACE" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_DRYRUN" VALUE="false" />
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_PREREQS" VALUE="false" />
<method />
</configuration>
</component>

File diff suppressed because it is too large Load Diff

View File

@ -153,7 +153,7 @@ GEM
activesupport (= 4.2.5.2)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (11.2.2)
rake (11.3.0)
rdoc (4.2.2)
json (~> 1.4)
remotipart (1.2.1)

View File

@ -2,7 +2,7 @@
##([本组的heroku展示地址](https://courseselectofstormand.herokuapp.com/))
目前完成修改:
* 首页显示所有的课程,与其相关属性。
* 首页显示所有的课程,与其相关属性。aaa
### [中文教程1](http://blog.csdn.net/ppp8300885/article/details/52594839) [中文教程2](http://blog.csdn.net/ppp8300885/article/details/52601560) [中文教程3](http://blog.csdn.net/ppp8300885/article/details/52669749)
@ -12,7 +12,7 @@
适合新学者的入手的第一个项目 ([演示Demo戳这里](https://courseselect.herokuapp.com/ )),入门者可以在这个样本系统上增加更多的功能:
* 处理选课冲突、控制选课人数
* 处理选课冲突、控制选课人数(finish)
* 统计选课学分,学位课等
* 增加选课的开放、关闭功能
* 自定义管理员后台

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 876 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

View File

@ -61,20 +61,64 @@ class CoursesController < ApplicationController
def list
@course=Course.all
@course_open=Course.where("open = ?", true)
@course_open=@course_open-current_user.courses
@course_open=Course.where("open = ?", true)-current_user.courses
@course_close=@course-@course_open
@theparams=params
@credit_isdegree, @credit_nodegree=cal_degree
end
def credit#add credit method
@course_isdegree=current_user.courses.where("degree= ?", true)
@course_nodegree=current_user.courses.where("degree= ?", false)
@credit_isdegree, @credit_nodegree=cal_degree
end
def isdegree #add isdegree method
@course=Course.find_by_id(params[:id])
@course.update_attributes(degree: true)
redirect_to courses_path,flash: {:success=> "已经成功将 #{@course.name} 选为学位课"}
end
def nodegree #add nodegree method
@course=Course.find_by_id(params[:id])
@course.update_attributes(degree: false)
redirect_to courses_path,flash: {:success=> "已经成功将 #{@course.name} 选为非学位课"}
end
def select
@course=Course.find_by_id(params[:id])
current_user.courses<<@course
flash={:success => "成功选择课程: #{@course.name}"}
redirect_to courses_path, flash: flash
if !@course.limit_num.nil? && @course.limit_num!=0
if(@course.student_num < @course.limit_num)
current_user.courses<<@course
@course.student_num+=1
@course.update_attributes(:student_num=>@course.student_num)
flash={:success => "成功选择课程: #{@course.name}"}
redirect_to courses_path, flash: flash
else
flash={:danger => "选课人数已满: #{@course.name}"}
@course=Course.all
@course_open=Course.where(:open=>true)
@course_open=@course_open-current_user.courses
redirect_to list_courses_path, flash: flash
end
else
current_user.courses<<@course
@course.student_num+=1
@course.update_attributes(:student_num=>@course.student_num)
flash={:success => "成功选择课程: #{@course.name}"}
redirect_to courses_path, flash: flash
end
end
def quit
@course=Course.find_by_id(params[:id])
current_user.courses.delete(@course)
@course.student_num-=1
@course.update_attributes(:student_num=>@course.student_num)
flash={:success => "成功退选课程: #{@course.name}"}
redirect_to courses_path, flash: flash
end
@ -85,6 +129,20 @@ class CoursesController < ApplicationController
def index
@course=current_user.teaching_courses if teacher_logged_in?
@course=current_user.courses if student_logged_in?
@credit_isdegree, @credit_nodegree=cal_degree
end
def cal_degree
@credit_isdegree=0
@credit_nodegree=0
current_user.courses.each do |course|
if course.degree
@credit_isdegree=@credit_isdegree + course.credit.sub(/\d+\// , "").to_i
else
@credit_nodegree=@credit_nodegree + course.credit.sub(/\d+\// , "").to_i
end
end
return @credit_isdegree, @credit_nodegree
end
@ -92,6 +150,42 @@ class CoursesController < ApplicationController
@course=Course.find_by_id(params[:id])
end
def search
temp="%"+params[:name]+"%"
@theparams=Course.find_by_id(1)
@course=Course.all
@course_open=Course.where("name like ? AND open =?", temp ,true)
@course_close=Course.where("name like ? AND open =?", temp ,false)
if params[:teaching_type]!=""
@course_open=@course_open.where("teaching_type =?", params[:teaching_type])
@course_close=@course_close.where("teaching_type =?", params[:teaching_type])
end
if params[:course_type]!=""
@course_open=@course_open.where("course_type =?", params[:course_type])
@course_close=@course_close.where("course_type =?", params[:course_type])
end
if params[:credit]!=""
@course_open=@course_open.where("credit =?", params[:credit])
@course_close=@course_close.where("credit =?", params[:credit])
end
if params[:exam_type]!=""
@course_open=@course_open.where("exam_type =?", params[:exam_type])
@course_close=@course_close.where("exam_type =?", params[:exam_type])
end
@course_open=@course_open-current_user.courses
@course_close=@course_close-current_user.courses
@theparams=params
render 'list'
end
def refresh_search
@course=Course.all
@course_open=Course.where("open = ?", true)-current_user.courses
@course_close=@course-@course_open
@theparams=params
render 'list'
end
private

View File

@ -2,8 +2,9 @@ class HomesController < ApplicationController
def index
@course=Course.all
@course1=Course.find_by_id(1)
@course_play_first=Course.order("student_num DESC").limit(1)
@course_play=Course.order("student_num DESC").limit(3)-@course_play_first
@course_play_first=@course_play_first.take
end
end

View File

@ -20,12 +20,12 @@ class AvatarUploader < CarrierWave::Uploader::Base
def default_url
# For Rails 3.1+ asset pipeline compatibility:
# ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
"fallback/" + [version_name, "default.jpg"].compact.join('_')
#"fallback/" + [version_name, "default.jpg"].compact.join('_')
end
version :thumb do
process :resize_to_fill => [1200, 300]
process :resize_to_fill => [1910, 550]
end

View File

@ -0,0 +1,89 @@
<div class="container-fluid">
<div class="row">
<div class="col-sm-2">
<%= render "shared/sidenav" %>
</div>
<div class="col-sm-10">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">已选学分共<%= @credit_isdegree+@credit_nodegree%>学分</h3>
</div>
<div class="panel-body" style="min-height: 450px">
<p align="center">学位课</p>
<p align="center">共<%= @credit_isdegree%>学分</p>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>课程编号</th>
<th>课程名称</th>
<th>课时/学分</th>
<th>是否是学位课</th>
<th>课程属性</th>
<th>授课方式</th>
<th>考试方式</th>
<th>主讲教师</th>
</tr>
</thead>
<tbody>
<% @course_isdegree.each do |course| %>
<tr>
<td><%= course.course_code %></td>
<td><%= course.name %></td>
<td><%= course.credit %></td>
<td>是</td>
<td><%= course.course_type %></td>
<td><%= course.teaching_type %></td>
<td><%= course.exam_type %></td>
<td><%= course.teacher.name %></td>
</tr>
<% end %>
</tbody>
</table>
<p align="center">非学位课</p>
<p align="center">共<%= @credit_nodegree%>学分</p>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>课程编号</th>
<th>课程名称</th>
<th>课时/学分</th>
<th>是否是学位课</th>
<th>课程属性</th>
<th>授课方式</th>
<th>考试方式</th>
<th>主讲教师</th>
</tr>
</thead>
<tbody>
<% @course_nodegree.each do |course| %>
<tr>
<td><%= course.course_code %></td>
<td><%= course.name %></td>
<td><%= course.credit %></td>
<td>否</td>
<td><%= course.course_type %></td>
<td><%= course.teaching_type %></td>
<td><%= course.exam_type %></td>
<td><%= course.teacher.name %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>

View File

@ -7,16 +7,58 @@
<%= render "shared/sidenav" %>
</div>
<% end %>
<div class="col-md-offset-3 col-sm-6">
<% if logged_in? %>
<div class="col-md-offset-1 col-sm-6" >
<% else %>
<div class="col-md-offset-3 col-sm-6" >
<% end %>
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="text-center">课程: <%= @course.name %></h3>
</div>
<div class="panel-body">
<%= @course.course_introduction %>
<%= image_tag @course.avatar, {width: "1000", height: "228"} %>
<%= image_tag(@course.avatar_url(:thumb)) if @course.avatar %>
<h1><%= @course.name %></h1>
<%= image_tag(@course.avatar_url, class: "img-responsive" ) if !@course.avatar.blank? %>
<%= image_tag "fallback/default_original.jpg" , class: "img-responsive" if @course.avatar.blank? %>
<h4>课程介绍:</h4>
<p><%=@course.course_introduction if !@course.course_introduction.blank? %><%="暂无课程介绍" if @course.course_introduction.blank? %></p>
<div class="row">
<div class="col-sm-3">
<h4>课程属性</h4>
<p><%=@course.course_type %></p>
</div>
<div class="col-sm-3">
<h4>授课方式</h4>
<p><%=@course.teaching_type %></p>
</div>
<div class="col-sm-3">
<h4>考试方式</h4>
<p><%=@course.exam_type %></p>
</div>
<div class="col-sm-3">
<h4>主讲教师</h4>
<p><%=@course.teacher.name %></p>
</div>
</div>
<div class="row">
<div class="col-sm-3">
<h4>限选/已选</h4>
<p><%=@course.limit_num if !@course.limit_num.blank? %> <%="无限选" if @course.limit_num.blank? %>/<%=@course.student_num %></p>
</div>
<div class="col-sm-3">
<h4>课时/学分</h4>
<p><%=@course.credit %></p>
</div>
<div class="col-sm-3">
<h4>时间/周数</h4>
<p><%=@course.course_time %>/<%=@course.course_week %></p>
</div>
<div class="col-sm-3">
<h4>上课教室</h4>
<p><%=@course.class_room %></p>
</div>
</div>
</div>
</div>
</div>

View File

@ -22,6 +22,14 @@
<th>课时/学分</th>
<th>考试方式</th>
<th>主讲教师</th>
<% if teacher_logged_in? %>
<th>编辑课程</th>
<th>打开课程</th>
<th>删除课程</th>
<% elsif student_logged_in? %>
<th>删除课程</th>
<th>是否选为学位课</th>
<% end %>
</tr>
<tbody>
@ -36,16 +44,19 @@
<% if teacher_logged_in? %>
<td><%= link_to "编辑", edit_course_url(course), class: 'btn btn-xs btn-info' %></td>
<% if course.open %>
<td><%= link_to "关闭", close_course_url(course), class: 'btn btn-xs btn-info' %></td>
<% else %>
<% if course.open %>
<td><%= link_to "关闭", close_course_url(course), class: 'btn btn-xs btn-danger' %></td>
<% else %>
<td><%= link_to "打开", open_course_url(course), class: 'btn btn-xs btn-info' %></td>
<% end %>
<% end %>
<td><%= link_to "删除", course_path(course), :method => "delete", class: 'btn btn-xs btn-danger', :data => {confirm: '确定要删除此课程?'} %></td>
<% elsif student_logged_in? %>
<td><%= link_to "删除", quit_course_path(course), class: 'btn-sm btn-danger' %></td>
<% if course.degree %>
<td><%= link_to "否", nodegree_course_path(course), class: 'btn btn-xs btn-danger' %></td>
<% else %>
<td><%= link_to "是",isdegree_course_path(course), class: 'btn btn-xs btn-info' %></td>
<% end %>
<% end %>
</tr>
<% end %>

View File

@ -9,6 +9,45 @@
<div class="panel-heading">
<h3 class="panel-title">选修课程</h3>
</div>
<br>
<%= form_tag("/courses/search", method: "get") do %>
<%= link_to '', refresh_search_courses_path, :class => "btn btn-md glyphicon glyphicon-refresh" %>
<%= text_field_tag(:name, @theparams[:name] ) %>
<select name="credit" id="credit">
<option value="">所有课时学分</option>
<% @course.select(:credit).distinct.each do |ct| %>
<option value=<%= ct.credit %> <%= selected="selected" if @theparams[:credit]==ct.credit %>><%= ct.credit %></option>
<% end %>
</select>
<select name="course_type" id="course_type">
<option value="">所有课程属性</option>
<% @course.select(:course_type).distinct.each do |ct| %>
<option value=<%= ct.course_type %> <%= selected="selected" if @theparams[:course_type]==ct.course_type %>><%= ct.course_type %></option>
<% end %>
</select>
<select name="teaching_type" id="teaching_type">
<option value="">所有授课方式</option>
<% @course.select(:teaching_type).distinct.each do |ct| %>
<option value=<%= ct.teaching_type %> <%= selected="selected" if @theparams[:teaching_type]==ct.teaching_type %>><%= ct.teaching_type %></option>
<% end %>
</select>
<select name="exam_type" id="exam_type">
<option value="">所有考试方式</option>
<% @course.select(:exam_type).distinct.each do |ct| %>
<option value=<%= ct.exam_type %> <%= selected="selected" if @theparams[:exam_type]==ct.exam_type %>><%= ct.exam_type %></option>
<% end %>
</select>
<%= submit_tag("Search" ,class:"btn btn-md btn-primary") %>
<% end %>
<div class="panel-body" style="min-height: 450px">
<table class="table table-striped table-hover">
<thead>
@ -40,7 +79,29 @@
<td><%= course.teaching_type %></td>
<td><%= course.exam_type %></td>
<td><%= course.teacher.name %></td>
<td><%= link_to "加入课程", select_course_path(course), class: 'btn-sm btn-info' %></td>
<td>
<%= link_to select_course_path(course) do %>
<button type="button" class="btn btn-sm btn-primary" >加入课程</button>
<% end %>
</td>
</tr>
<% end %>
<% @course_close.each do |course| %>
<tr>
<td><%= course.course_code %></td>
<td><%= link_to course.name, detail_course_path(course), class: 'btn-sm' %></td>
<td><%= course.credit %></td>
<td><%= course.limit_num %></td>
<td><%= course.student_num %></td>
<td><%= course.course_type %></td>
<td><%= course.teaching_type %></td>
<td><%= course.exam_type %></td>
<td><%= course.teacher.name %></td>
<td> <button type="button" class="btn btn-sm btn-default" disabled="disabled">
加入课程
</button></td>
</tr>
<% end %>

View File

@ -1,6 +1,4 @@
<div class="container">
<div id="myCarousel" class="carousel slide">
<div id="myCarousel" class="carousel slide">
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
@ -8,24 +6,24 @@
</ol>
<!-- 轮播Carousel项目 -->
<div class="carousel-inner">
<div class="item active" >
<%= link_to detail_course_path(@course1) do %>
<%= image_tag(@course1.avatar_url(:thumb)) %>
<div class="carousel-caption"><%= @course1.name %></div>
<% end %>
</div>
<div class="item">
<%= link_to detail_course_path(@course1) do %>
<%= image_tag(@course1.avatar_url(:thumb)) %>
<div class="carousel-caption"><%= @course1.name %></div>
<% end %>
</div>
<div class="item">
<%= link_to detail_course_path(@course1) do %>
<%= image_tag(@course1.avatar_url(:thumb)) %>
<div class="carousel-caption"><%= @course1.name %></div>
<div class="item active">
<%= link_to detail_course_path(@course_play_first) do %>
<%= image_tag @course_play_first.avatar_url(:thumb) if !@course_play_first.avatar.blank? %>
<%= image_tag "fallback/default.jpg" if @course_play_first.avatar.blank? %>
<div class="carousel-caption"><%= @course_play_first.name %></div>
<% end %>
</div>
<% @course_play.each do |play| %>
<div class="item" >
<%= link_to detail_course_path(play) do %>
<%= image_tag play.avatar_url(:thumb) if !play.avatar.blank? %>
<%= image_tag "fallback/default.jpg" if play.avatar.blank? %>
<div class="carousel-caption"><%= play.name %></div>
<% end %>
</div>
<% end %>
</div>
<!-- 轮播Carousel导航 -->
<a class="carousel-control left" href="#myCarousel"
@ -40,8 +38,15 @@
<hr>
<div class="container">
<div class="col-sm-12">
<div class="panel panel-primary">
<div class="panel">
<div class="panel-body" style="min-height: 450px">
<table class="table table-striped table-hover">
@ -51,15 +56,11 @@
<th>课程编号</th>
<th>课程名称</th>
<th>课时/学分</th>
<th>限选</th>
<th>已选</th>
<th>课程属性</th>
<th>授课方式</th>
<th>考试方式</th>
<th>主讲教师</th>
<th>time</th>
<th>week</th>
<th>room</th>
</tr>
</thead>
@ -71,15 +72,10 @@
<td><%= course.course_code %></td>
<td><%= link_to course.name, detail_course_path(course), class: 'btn-sm' %></td>
<td><%= course.credit %></td>
<td><%= course.limit_num %></td>
<td><%= course.student_num %></td>
<td><%= course.course_type %></td>
<td><%= course.teaching_type %></td>
<td><%= course.exam_type %></td>
<td><%= course.teacher.name %></td>
<td><%= course.course_time %></td>
<td><%= course.course_week %></td>
<td><%= course.class_room %></td>
</tr>
<% end %>
@ -88,5 +84,4 @@
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -46,6 +46,13 @@
<span class="glyphicon glyphicon-chevron-right"></span> 已选课程
<span class="label label-info pull-right"><%= current_user.courses.length %></span>
<% end %>
<li class="list-group-item">
<%= link_to credit_courses_path do %>
<span class="glyphicon glyphicon-chevron-right"></span> 已选学分
<span class="label label-info pull-right"><%= @credit_nodegree %></span>
<span class="label label-default pull-right"><%= @credit_isdegree %></span>
<% end %>
</li>
<% end %>

View File

@ -24,9 +24,15 @@ Rails.application.routes.draw do
get :detail
get :open
get :close
get :isdegree #add route isdegree
get :nodegree #add route nodegree
end
collection do
get :list
get :search
get :refresh_search
get :credit #add credit route
end
end

2744
css/animate.css vendored Normal file

File diff suppressed because it is too large Load Diff

5831
css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

7
css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

792
css/style.css Normal file
View File

@ -0,0 +1,792 @@
/* ==== Google font ==== */
@import url('http://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic|Montserrat:700|Merriweather:400italic');
body {
width: 100%;
height: 100%;
font-family: 'Lato',sans-serif;
font-weight: 300;
color: #666;
background-color: #fff;
}
html {
width: 100%;
height: 100%;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0 0 30px;
text-transform: uppercase;
font-family: Montserrat,sans-serif;
font-weight: 700;
letter-spacing: 1px;
}
p {
margin: 0 0 20px;
font-size: 16px;
line-height: 1.6em;
}
p.lead {
font-weight: 600;
}
a {
color: #28c3ab;
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
a:hover,
a:focus {
text-decoration: none;
color: #176e61;
}
.light {
font-weight: 400;
}
.navbar {
margin-bottom: 0;
border-bottom: 1px solid rgba(255,255,255,.3);
}
.navbar-brand {
font-weight: 700;
}
.navbar-brand {
height: 40px;
padding: 5px 15px;
font-size: 18px;
line-height: 1em;
}
.navbar-brand h1{
color: #fff;
font-size: 20px;
line-height: 40px;
}
.navbar-brand:focus {
outline: 0;
}
.nav.navbar-nav {
background-color: rgba(255,255,255,.4);
}
.navbar-custom.top-nav-collapse .nav.navbar-nav {
background-color: rgba(0,0,0,0);
}
.navbar-custom ul.nav li a {
font-size: 12px;
letter-spacing: 1px;
color: #444;
text-transform: uppercase;
font-weight: 700;
}
.navbar-custom.top-nav-collapse ul.nav li a {
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
color: #fff;
}
.navbar-custom ul.nav ul.dropdown-menu {
border-radius: 0;
}
.navbar-custom ul.nav ul.dropdown-menu li {
border-bottom: 1px solid #f5f5f5;
}
.navbar-custom ul.nav ul.dropdown-menu li:last-child{
border-bottom: none;
}
.navbar-custom ul.nav ul.dropdown-menu li a {
padding: 10px 20px;
}
.navbar-custom ul.nav ul.dropdown-menu li a:hover {
background: #fefefe;
}
.navbar-custom.top-nav-collapse ul.nav ul.dropdown-menu li a {
color: #666;
}
.navbar-custom .nav li a {
-webkit-transition: background .3s ease-in-out;
-moz-transition: background .3s ease-in-out;
transition: background .3s ease-in-out;
}
.navbar-custom .nav li a:hover,
.navbar-custom .nav li a:focus,
.navbar-custom .nav li.active {
outline: 0;
background-color: rgba(255,255,255,.2);
}
.navbar-custom .nav li a:hover,
.navbar-custom .nav li a:focus,
.navbar-custom .nav li.active {
outline: 0;
background-color: rgba(255,255,255,.2);
}
.navbar-toggle {
padding: 4px 6px;
font-size: 14px;
color: #fff;
}
.navbar-toggle:focus,
.navbar-toggle:active {
outline: 0;
}
/* loader */
#preloader {
background: #ffffff;
bottom: 0;
height: 100%;
left: 0;
position: fixed;
right: 0;
top: 0;
width: 100%;
z-index: 999;
}
#loaderInner {
background:#ffffff url(../img/spinner.gif) center center no-repeat;
height: 60px;
left: 50%;
margin: -50px 0 0 -50px;
position: absolute;
top: 50%;
width: 60px;
}
@keyframes boxSpin{
0%{
transform: translate(-10px, 0px);
}
25%{
transform: translate(10px, 10px);
}
50%{
transform: translate(10px, -10px);
}
75%{
transform: translate(-10px, -10px);
}
100%{
transform: translate(-10px, 10px);
}
}
@keyframes shadowSpin{
0%{
box-shadow: 10px -10px #39CCCC, -10px 10px #FFDC00;
}
25%{
box-shadow: 10px 10px #39CCCC, -10px -10px #FFDC00;
}
50%{
box-shadow: -10px 10px #39CCCC, 10px -10px #FFDC00;
}
75%{
box-shadow: -10px -10px #39CCCC, 10px 10px #FFDC00;
}
100%{
box-shadow: 10px -10px #39CCCC, -10px 10px #FFDC00;
}
}
#load {
z-index: 9999;
background-color: #FF4136;
opacity: 0.75;
width: 10px;
height: 10px;
position: absolute;
top: 50%;
margin: -5px auto 0 auto;
left: 0;
right: 0;
border-radius: 0px;
border: 5px solid #FF4136;
box-shadow: 10px 0px #39CCCC, 10px 0px #01FF70;
animation: shadowSpin 1s ease-in-out infinite;
}
/* misc */
hr {
margin-top: 10px;
}
/* margins */
.marginbot-0{margin-bottom:0 !important;}
.marginbot-10{margin-bottom:10px !important;}
.marginbot-20{margin-bottom:20px !important;}
.marginbot-30{margin-bottom:30px !important;}
.marginbot-40{margin-bottom:40px !important;}
.marginbot-50{margin-bottom:50px !important;}
/* ===========================
--- General sections
============================ */
.home-section {
padding-top: 110px;
padding-bottom: 110px;
display:block;
position:relative;
z-index:120;
}
.section-heading h2 {
font-size: 40px;
}
.section-heading i {
margin-bottom: 20px;
}
/* --- section bg var --- */
.bg-white {
background: #fff;
}
.bg-gray {
background: #f8f8f8;
}
.bg-dark {
background: #575757;
}
/* --- section color var --- */
.text-light {
color: #fff;
}
/* ===========================
--- Intro
============================ */
.intro {
width:100%;
position:relative;
background: url(../img/bg1.jpg) no-repeat top center;
}
#intro.intro {
padding:20% 0 0 0;
}
.intro .slogan {
text-align: center;
}
.intro .page-scroll {
text-align: center;
}
.brand-heading {
font-size: 40px;
}
.intro-text {
font-size: 18px;
}
.intro .slogan h2 {
color: #FFF;
text-shadow: none;
font-size: 60px;
line-height: 60px;
font-weight: 700;
font-family: Montserrat, sans-serif;
background-color: rgba(0, 0, 0, 0);
text-decoration: none;
text-transform: uppercase;
border-width: 0px;
border-color: #000;
border-style: none;
text-shadow: -1px 0 1px #000;
}
.intro .slogan h4 {
color: #fff;
text-shadow: -1px 1px 1px #000;
}
/* ===========================
--- About
============================ */
.boxed-grey {
background: #f9f9f9;
padding: 20px;
}
.team h5 {
margin-bottom: 10px;
}
.team p.subtitle {
margin-bottom: 10px;
}
.avatar {
margin-bottom: 20px;
}
.team-social {
margin-left: 0;
padding-left: 0;
}
.team-social {
text-align: center;
}
.team-social li{
display: inline-block;
margin:0 !important;
padding:0;
}
.team-social a{
margin:0;
padding:0;
display: block;
width: 40px;
height: 40px;
line-height: 40px;
text-align: center;
background: #3bbec0;
color: #fff;
-webkit-transition: background .3s ease-in-out;
transition: background .3s ease-in-out;
}
.team-social a i{
text-align: center;
margin:0;
padding:0;
}
.team-social .social-facebook a{background: #3873ae;}
.team-social .social-twitter a{background: #62c6f8;}
.team-social .social-dribble a{background: #d74980;}
.team-social .social-deviantart a{background: #8da356;}
.team-social .social-google a{background: #000;}
.team-social .social-vimeo a{background: #51a6d3;}
.team-social .social-facebook a:hover{background: #4893ce;}
.team-social .social-twitter a:hover{background: #82e6ff;}
.team-social .social-dribble a:hover{background: #f769a0;}
.team-social .social-deviantart a:hover{background: #adc376;}
.team-social .social-google a:hover{background: #333;}
.team-social .social-vimeo a:hover{background: #71c6f3;}
/* ===========================
--- Services
============================ */
.service-icon {
margin-bottom: 20px;
}
/* ===========================
--- Contact
============================ */
form#contact-form .form-group label {
text-align: left !important;
display: block;
text-transform: uppercase;
letter-spacing: 1px;
font-size: 12px;
}
form#contact-form input,form#contact-form select,form#contact-form textarea {
border-radius: 0;
border: 1px solid #eee;
-webkit-box-shadow: none;
box-shadow: none;
}
form#contact-form input:focus,form#contact-form select:focus,form#contact-form textarea:focus {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
.input-group-addon {
background-color: #fefefe;
border: 1px solid #eee;
border-radius: 0;
}
.widget-contact {
text-align: left;
}
.company-social {
margin-left: 0;
padding-left: 0;
margin-top: 10px;
}
.company-social {
text-align: left;
}
.company-social li{
display: inline-block;
margin:0 !important;
padding:0;
}
.company-social a{
margin:0;
padding:0;
display: block;
width: 40px;
height: 40px;
line-height: 40px;
text-align: center;
background: #3bbec0;
color: #fff;
-webkit-transition: background .3s ease-in-out;
transition: background .3s ease-in-out;
}
.company-social a i{
text-align: center;
margin:0;
padding:0;
}
.company-social .social-facebook a{background: #3873ae;}
.company-social .social-twitter a{background: #62c6f8;}
.company-social .social-dribble a{background: #d74980;}
.company-social .social-deviantart a{background: #8da356;}
.company-social .social-google a{background: #000;}
.company-social .social-vimeo a{background: #51a6d3;}
.company-social .social-facebook a:hover{background: #4893ce;}
.company-social .social-twitter a:hover{background: #82e6ff;}
.company-social .social-dribble a:hover{background: #f769a0;}
.company-social .social-deviantart a:hover{background: #adc376;}
.company-social .social-google a:hover{background: #333;}
.company-social .social-vimeo a:hover{background: #71c6f3;}
/* ===========================
--- Footer
============================ */
footer {
text-align: center;
padding: 50px 0 ;
}
footer p {
color: #f8f8f8;
}
/* ==========================
Parallax
============================= */
#parallax1{
background-image: url(../img/parallax/1.jpg);
}
#parallax1:after {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAEklEQVQImWNgYGD4z0AswK4SAFXuAf8EPy+xAAAAAElFTkSuQmCC);
content: "";
position: absolute;
bottom: 0;
left: 0;
right: 0;
top: 0;
opacity: 0.7;
z-index: -1;
}
#parallax2{
background-image: url(../img/parallax/2.jpg);
}
#parallax2:after {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAEklEQVQImWNgYGD4z0AswK4SAFXuAf8EPy+xAAAAAElFTkSuQmCC);
content: "";
position: absolute;
bottom: 0;
left: 0;
right: 0;
top: 0;
opacity: 0.7;
z-index: -1;
}
/* ===========================
--- Elements
============================ */
.btn {
border-radius: 0;
text-transform: uppercase;
font-family: Montserrat,sans-serif;
font-weight: 400;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
.btn-circle {
width: 70px;
height: 70px;
margin-top: 15px;
padding: 7px 16px;
border: 2px solid #fff;
border-radius: 50%;
font-size: 40px;
color: #fff;
background: 0 0;
-webkit-transition: background .3s ease-in-out;
-moz-transition: background .3s ease-in-out;
transition: background .3s ease-in-out;
}
.btn-circle.btn-dark {
border: 2px solid #666;
color: #666;
}
.btn-circle:hover,
.btn-circle:focus {
outline: 0;
color: #fff;
background: rgba(255,255,255,.1);
}
.btn-circle.btn-dark :hover,
.btn-circle.btn-dark :focus {
outline: 0;
color: #999;
background: #fff;
}
.btn-circle.btn-dark :hover i,
.btn-circle.btn-dark :focus i{
color: #999;
}
.page-scroll .btn-circle i.animated {
-webkit-transition-property: -webkit-transform;
-webkit-transition-duration: 1s;
-moz-transition-property: -moz-transform;
-moz-transition-duration: 1s;
}
.page-scroll .btn-circle:hover i.animated {
-webkit-animation-name: pulse;
-moz-animation-name: pulse;
-webkit-animation-duration: 1.5s;
-moz-animation-duration: 1.5s;
-webkit-animation-iteration-count: infinite;
-moz-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-moz-animation-timing-function: linear;
}
@-webkit-keyframes pulse {
0 {
-webkit-transform: scale(1);
transform: scale(1);
}
50% {
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
100% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@-moz-keyframes pulse {
0 {
-moz-transform: scale(1);
transform: scale(1);
}
50% {
-moz-transform: scale(1.2);
transform: scale(1.2);
}
100% {
-moz-transform: scale(1);
transform: scale(1);
}
}
#text {
color: #fff;
background: #ffcc00;
}
#map {
height: 500px;
}
.btn-skin:hover,
.btn-skin:focus,
.btn-skin:active,
.btn-skin.active {
color: #fff;
background-color: #666;
border-color: #666;
}
.btn-default:hover,
.btn-default:focus {
border: 1px solid #28c3ab;
outline: 0;
color: #000;
background-color: #28c3ab;
}
.btn-huge {
padding: 25px;
font-size: 26px;
}
.banner-social-buttons {
margin-top: 0;
}
/* Media queries */
@media(min-width:767px) {
.navbar {
padding: 20px 0;
border-bottom: 0;
letter-spacing: 1px;
background: 0 0;
-webkit-transition: background .5s ease-in-out,padding .5s ease-in-out;
-moz-transition: background .5s ease-in-out,padding .5s ease-in-out;
transition: background .5s ease-in-out,padding .5s ease-in-out;
}
.top-nav-collapse {
padding: 0;
background-color: #000;
}
.navbar-custom.top-nav-collapse {
border-bottom: 1px solid rgba(255,255,255,.3);
}
.intro {
height: 100%;
padding: 0;
}
.brand-heading {
font-size: 100px;
}
.intro-text {
font-size: 25px;
}
}
@media (max-width:768px) {
.team.boxed-grey {
margin-bottom: 30px;
}
.boxed-grey {
margin-bottom: 30px;
}
}
@media (max-width:480px) {
.navbar-custom .nav.navbar-nav {
background-color: rgba(255,255,255,.4);
}
.navbar.navbar-custom.navbar-fixed-top {
margin-bottom: 30px;
}
.tp-banner-container {
padding-top:40px;
}
.page-scroll a.btn-circle {
width: 40px;
height: 40px;
margin-top: 10px;
padding: 7px 0;
border: 2px solid #fff;
border-radius: 50%;
font-size: 20px;
}
}

View File

@ -0,0 +1,5 @@
class AddDegreeToCourse < ActiveRecord::Migration
def change
add_column :courses, :degree ,:boolean,default:false
end
end

View File

@ -11,7 +11,8 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20161109105023) do
ActiveRecord::Schema.define(version: 20161207102921) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -34,6 +35,8 @@ ActiveRecord::Schema.define(version: 20161109105023) do
t.string "course_introduction"
t.string "avatar"
t.boolean "open", default: false
t.boolean "degree", default: false
end
create_table "grades", force: :cascade do |t|

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB