Description:
add tags
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r700:757ebc0ccd63 - - 7 files changed: 36 inserted, 9 deleted
@@ -200,24 +200,28 | |||||
|
200 | ok = [] |
|
200 | ok = [] |
|
201 | failed = [] |
|
201 | failed = [] |
|
202 | get_problems_from_params.each do |p| |
|
202 | get_problems_from_params.each do |p| |
|
203 | begin |
|
203 | begin |
|
204 | group.problems << p |
|
204 | group.problems << p |
|
205 | ok << p.full_name |
|
205 | ok << p.full_name |
|
206 | rescue => e |
|
206 | rescue => e |
|
207 | failed << p.full_name |
|
207 | failed << p.full_name |
|
208 | end |
|
208 | end |
|
209 | end |
|
209 | end |
|
210 | flash[:success] = "The following problems are added to the group #{group.name}: " + ok.join(', ') if ok.count > 0 |
|
210 | flash[:success] = "The following problems are added to the group #{group.name}: " + ok.join(', ') if ok.count > 0 |
|
211 | flash[:alert] = "The following problems are already in the group #{group.name}: " + failed.join(', ') if failed.count > 0 |
|
211 | flash[:alert] = "The following problems are already in the group #{group.name}: " + failed.join(', ') if failed.count > 0 |
|
|
212 | + elsif params.has_key? 'add_tags' | ||
|
|
213 | + get_problems_from_params.each do |p| | ||
|
|
214 | + p.tag_ids += params[:tag_ids] | ||
|
|
215 | + end | ||
|
212 | end |
|
216 | end |
|
213 |
|
217 | ||
|
214 | redirect_to :action => 'manage' |
|
218 | redirect_to :action => 'manage' |
|
215 | end |
|
219 | end |
|
216 |
|
220 | ||
|
217 | def import |
|
221 | def import |
|
218 | @allow_test_pair_import = allow_test_pair_import? |
|
222 | @allow_test_pair_import = allow_test_pair_import? |
|
219 | end |
|
223 | end |
|
220 |
|
224 | ||
|
221 | def do_import |
|
225 | def do_import |
|
222 | old_problem = Problem.find_by_name(params[:name]) |
|
226 | old_problem = Problem.find_by_name(params[:name]) |
|
223 | if !allow_test_pair_import? and params.has_key? :import_to_db |
|
227 | if !allow_test_pair_import? and params.has_key? :import_to_db |
@@ -291,16 +295,16 | |||||
|
291 | problems << Problem.find(id) |
|
295 | problems << Problem.find(id) |
|
292 | end |
|
296 | end |
|
293 | end |
|
297 | end |
|
294 | problems |
|
298 | problems |
|
295 | end |
|
299 | end |
|
296 |
|
300 | ||
|
297 | def get_problems_stat |
|
301 | def get_problems_stat |
|
298 | end |
|
302 | end |
|
299 |
|
303 | ||
|
300 | private |
|
304 | private |
|
301 |
|
305 | ||
|
302 | def problem_params |
|
306 | def problem_params |
|
303 | - params.require(:problem).permit(:name, :full_name, :full_score, :date_added, :available, :test_allowed,:output_only, :url, :description) |
|
307 | + params.require(:problem).permit(:name, :full_name, :full_score, :date_added, :available, :test_allowed,:output_only, :url, :description, tag_ids:[]) |
|
304 | end |
|
308 | end |
|
305 |
|
309 | ||
|
306 | end |
|
310 | end |
@@ -32,24 +32,26 | |||||
|
32 |
|
32 | ||
|
33 | # PATCH/PUT /tags/1 |
|
33 | # PATCH/PUT /tags/1 |
|
34 | def update |
|
34 | def update |
|
35 | if @tag.update(tag_params) |
|
35 | if @tag.update(tag_params) |
|
36 | redirect_to @tag, notice: 'Tag was successfully updated.' |
|
36 | redirect_to @tag, notice: 'Tag was successfully updated.' |
|
37 | else |
|
37 | else |
|
38 | render :edit |
|
38 | render :edit |
|
39 | end |
|
39 | end |
|
40 | end |
|
40 | end |
|
41 |
|
41 | ||
|
42 | # DELETE /tags/1 |
|
42 | # DELETE /tags/1 |
|
43 | def destroy |
|
43 | def destroy |
|
|
44 | + #remove any association | ||
|
|
45 | + ProblemTag.where(tag_id: @tag.id).destroy_all | ||
|
44 | @tag.destroy |
|
46 | @tag.destroy |
|
45 | redirect_to tags_url, notice: 'Tag was successfully destroyed.' |
|
47 | redirect_to tags_url, notice: 'Tag was successfully destroyed.' |
|
46 | end |
|
48 | end |
|
47 |
|
49 | ||
|
48 | private |
|
50 | private |
|
49 | # Use callbacks to share common setup or constraints between actions. |
|
51 | # Use callbacks to share common setup or constraints between actions. |
|
50 | def set_tag |
|
52 | def set_tag |
|
51 | @tag = Tag.find(params[:id]) |
|
53 | @tag = Tag.find(params[:id]) |
|
52 | end |
|
54 | end |
|
53 |
|
55 | ||
|
54 | # Only allow a trusted parameter "white list" through. |
|
56 | # Only allow a trusted parameter "white list" through. |
|
55 | def tag_params |
|
57 | def tag_params |
@@ -37,24 +37,25 | |||||
|
37 | :javascript |
|
37 | :javascript |
|
38 | $("#countdown").countdown({until: "+#{@current_user.contest_time_left.to_i}s", layout: 'Time left: {hnn}:{mnn}:{snn}'}); |
|
38 | $("#countdown").countdown({until: "+#{@current_user.contest_time_left.to_i}s", layout: 'Time left: {hnn}:{mnn}:{snn}'}); |
|
39 | / admin section |
|
39 | / admin section |
|
40 | - if (@current_user!=nil) and (session[:admin]) |
|
40 | - if (@current_user!=nil) and (session[:admin]) |
|
41 | / management |
|
41 | / management |
|
42 | %li.dropdown |
|
42 | %li.dropdown |
|
43 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
43 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
44 | Manage |
|
44 | Manage |
|
45 | %span.caret |
|
45 | %span.caret |
|
46 | %ul.dropdown-menu |
|
46 | %ul.dropdown-menu |
|
47 | = add_menu( 'Announcements', 'announcements', 'index') |
|
47 | = add_menu( 'Announcements', 'announcements', 'index') |
|
48 | = add_menu( 'Problems', 'problems', 'index') |
|
48 | = add_menu( 'Problems', 'problems', 'index') |
|
|
49 | + = add_menu( 'Tags', 'tags', 'index') | ||
|
49 | = add_menu( 'Users', 'user_admin', 'index') |
|
50 | = add_menu( 'Users', 'user_admin', 'index') |
|
50 | = add_menu( 'User Groups', 'groups', 'index') |
|
51 | = add_menu( 'User Groups', 'groups', 'index') |
|
51 | = add_menu( 'Graders', 'graders', 'list') |
|
52 | = add_menu( 'Graders', 'graders', 'list') |
|
52 | = add_menu( 'Message ', 'messages', 'console') |
|
53 | = add_menu( 'Message ', 'messages', 'console') |
|
53 | %li.divider{role: 'separator'} |
|
54 | %li.divider{role: 'separator'} |
|
54 | = add_menu( 'System config', 'configurations', 'index') |
|
55 | = add_menu( 'System config', 'configurations', 'index') |
|
55 | %li.divider{role: 'separator'} |
|
56 | %li.divider{role: 'separator'} |
|
56 | = add_menu( 'Sites', 'sites', 'index') |
|
57 | = add_menu( 'Sites', 'sites', 'index') |
|
57 | = add_menu( 'Contests', 'contest_management', 'index') |
|
58 | = add_menu( 'Contests', 'contest_management', 'index') |
|
58 | / report |
|
59 | / report |
|
59 | %li.dropdown |
|
60 | %li.dropdown |
|
60 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
61 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
@@ -3,24 +3,27 | |||||
|
3 | .form-group |
|
3 | .form-group |
|
4 | %label{:for => "problem_name"} Name |
|
4 | %label{:for => "problem_name"} Name |
|
5 | = text_field 'problem', 'name', class: 'form-control' |
|
5 | = text_field 'problem', 'name', class: 'form-control' |
|
6 | %small |
|
6 | %small |
|
7 | Do not directly edit the problem name, unless you know what you are doing. If you want to change the name, use the name change button in the problem management menu instead. |
|
7 | Do not directly edit the problem name, unless you know what you are doing. If you want to change the name, use the name change button in the problem management menu instead. |
|
8 | .form-group |
|
8 | .form-group |
|
9 | %label{:for => "problem_full_name"} Full name |
|
9 | %label{:for => "problem_full_name"} Full name |
|
10 | = text_field 'problem', 'full_name', class: 'form-control' |
|
10 | = text_field 'problem', 'full_name', class: 'form-control' |
|
11 | .form-group |
|
11 | .form-group |
|
12 | %label{:for => "problem_full_score"} Full score |
|
12 | %label{:for => "problem_full_score"} Full score |
|
13 | = text_field 'problem', 'full_score', class: 'form-control' |
|
13 | = text_field 'problem', 'full_score', class: 'form-control' |
|
14 | .form-group |
|
14 | .form-group |
|
|
15 | + %label{:for => "problem_full_score"} Tags | ||
|
|
16 | + = collection_select(:problem, :tag_ids, Tag.all, :id, :name, {}, {multiple: true, class: 'form-control select2'}) | ||
|
|
17 | + .form-group | ||
|
15 | %label{:for => "problem_date_added"} Date added |
|
18 | %label{:for => "problem_date_added"} Date added |
|
16 | = date_select 'problem', 'date_added', class: 'form-control' |
|
19 | = date_select 'problem', 'date_added', class: 'form-control' |
|
17 | - # TODO: these should be put in model Problem, but I can't think of |
|
20 | - # TODO: these should be put in model Problem, but I can't think of |
|
18 | - # nice default values for them. These values look fine only |
|
21 | - # nice default values for them. These values look fine only |
|
19 | - # in this case (of lazily adding new problems). |
|
22 | - # in this case (of lazily adding new problems). |
|
20 | - @problem.available = true if @problem!=nil and @problem.available==nil |
|
23 | - @problem.available = true if @problem!=nil and @problem.available==nil |
|
21 | - @problem.test_allowed = true if @problem!=nil and @problem.test_allowed==nil |
|
24 | - @problem.test_allowed = true if @problem!=nil and @problem.test_allowed==nil |
|
22 | - @problem.output_only = false if @problem!=nil and @problem.output_only==nil |
|
25 | - @problem.output_only = false if @problem!=nil and @problem.output_only==nil |
|
23 | .checkbox |
|
26 | .checkbox |
|
24 | %label{:for => "problem_available"} |
|
27 | %label{:for => "problem_available"} |
|
25 | = check_box :problem, :available |
|
28 | = check_box :problem, :available |
|
26 | Available? |
|
29 | Available? |
@@ -12,47 +12,52 | |||||
|
12 | %b Quick New: |
|
12 | %b Quick New: |
|
13 | %label{:for => "problem_name"} Name |
|
13 | %label{:for => "problem_name"} Name |
|
14 | = text_field 'problem', 'name' |
|
14 | = text_field 'problem', 'name' |
|
15 | | |
|
15 | | |
|
16 | %label{:for => "problem_full_name"} Full name |
|
16 | %label{:for => "problem_full_name"} Full name |
|
17 | = text_field 'problem', 'full_name' |
|
17 | = text_field 'problem', 'full_name' |
|
18 | = submit_tag "Create" |
|
18 | = submit_tag "Create" |
|
19 | %table.table.table-condense.table-hover |
|
19 | %table.table.table-condense.table-hover |
|
20 | %thead |
|
20 | %thead |
|
21 | %th Name |
|
21 | %th Name |
|
22 | %th Full name |
|
22 | %th Full name |
|
23 | %th.text-right Full score |
|
23 | %th.text-right Full score |
|
|
24 | + %th Tags | ||
|
24 | %th |
|
25 | %th |
|
25 | Submit |
|
26 | Submit |
|
26 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Admin can always submit to any problem' } [?] |
|
27 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Admin can always submit to any problem' } [?] |
|
27 | %th Date added |
|
28 | %th Date added |
|
28 | %th.text-center |
|
29 | %th.text-center |
|
29 | Avail? |
|
30 | Avail? |
|
30 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user submits to this problem?' } [?] |
|
31 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user submits to this problem?' } [?] |
|
31 | %th.text-center |
|
32 | %th.text-center |
|
32 | View Data? |
|
33 | View Data? |
|
33 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user view the testcase of this problem?' } [?] |
|
34 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user view the testcase of this problem?' } [?] |
|
34 | %th.text-center |
|
35 | %th.text-center |
|
35 | Test? |
|
36 | Test? |
|
36 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user uses test interface on this problem?' } [?] |
|
37 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user uses test interface on this problem?' } [?] |
|
37 | - if GraderConfiguration.multicontests? |
|
38 | - if GraderConfiguration.multicontests? |
|
38 | %th Contests |
|
39 | %th Contests |
|
39 | - for problem in @problems |
|
40 | - for problem in @problems |
|
40 | %tr{:class => "#{(problem.available) ? "success" : "danger"}", :id => "prob-#{problem.id}", :name => "prob-#{problem.id}"} |
|
41 | %tr{:class => "#{(problem.available) ? "success" : "danger"}", :id => "prob-#{problem.id}", :name => "prob-#{problem.id}"} |
|
41 | - @problem=problem |
|
42 | - @problem=problem |
|
42 | %td= problem.name #in_place_editor_field :problem, :name, {}, :rows=>1 |
|
43 | %td= problem.name #in_place_editor_field :problem, :name, {}, :rows=>1 |
|
43 | %td |
|
44 | %td |
|
44 | = problem.full_name #in_place_editor_field :problem, :full_name, {}, :rows=>1 |
|
45 | = problem.full_name #in_place_editor_field :problem, :full_name, {}, :rows=>1 |
|
45 | = link_to_description_if_any "[#{t 'main.problem_desc'}] <span class='glyphicon glyphicon-file'></span>".html_safe, problem |
|
46 | = link_to_description_if_any "[#{t 'main.problem_desc'}] <span class='glyphicon glyphicon-file'></span>".html_safe, problem |
|
46 | %td.text-right= problem.full_score #in_place_editor_field :problem, :full_score, {}, :rows=>1 |
|
47 | %td.text-right= problem.full_score #in_place_editor_field :problem, :full_score, {}, :rows=>1 |
|
|
48 | + %td | ||
|
|
49 | + - problem.tags.each do |t| | ||
|
|
50 | + - #%button.btn.btn-default.btn-xs= t.name | ||
|
|
51 | + %span.label.label-default= t.name | ||
|
47 | %td= link_to "Submit", direct_edit_problem_submissions_path(problem,@current_user.id), class: 'btn btn-xs btn-primary' |
|
52 | %td= link_to "Submit", direct_edit_problem_submissions_path(problem,@current_user.id), class: 'btn btn-xs btn-primary' |
|
48 | %td= problem.date_added |
|
53 | %td= problem.date_added |
|
49 | %td= toggle_button(@problem.available?, toggle_problem_path(@problem), "problem-avail-#{@problem.id}") |
|
54 | %td= toggle_button(@problem.available?, toggle_problem_path(@problem), "problem-avail-#{@problem.id}") |
|
50 | %td= toggle_button(@problem.view_testcase?, toggle_view_testcase_problem_path(@problem), "problem-view-testcase-#{@problem.id}") |
|
55 | %td= toggle_button(@problem.view_testcase?, toggle_view_testcase_problem_path(@problem), "problem-view-testcase-#{@problem.id}") |
|
51 | %td= toggle_button(@problem.test_allowed?, toggle_test_problem_path(@problem), "problem-test-#{@problem.id}") |
|
56 | %td= toggle_button(@problem.test_allowed?, toggle_test_problem_path(@problem), "problem-test-#{@problem.id}") |
|
52 | - if GraderConfiguration.multicontests? |
|
57 | - if GraderConfiguration.multicontests? |
|
53 | %td |
|
58 | %td |
|
54 | = problem.contests.collect { |c| c.name }.join(', ') |
|
59 | = problem.contests.collect { |c| c.name }.join(', ') |
|
55 | %td= link_to 'Stat', {:action => 'stat', :id => problem.id}, class: 'btn btn-info btn-xs btn-block' |
|
60 | %td= link_to 'Stat', {:action => 'stat', :id => problem.id}, class: 'btn btn-info btn-xs btn-block' |
|
56 | %td= link_to 'Show', {:action => 'show', :id => problem}, class: 'btn btn-info btn-xs btn-block' |
|
61 | %td= link_to 'Show', {:action => 'show', :id => problem}, class: 'btn btn-info btn-xs btn-block' |
|
57 | %td= link_to 'Edit', {:action => 'edit', :id => problem}, class: 'btn btn-info btn-xs btn-block' |
|
62 | %td= link_to 'Edit', {:action => 'edit', :id => problem}, class: 'btn btn-info btn-xs btn-block' |
|
58 | %td= link_to 'Destroy', { :action => 'destroy', :id => problem }, :confirm => 'Are you sure?', :method => :delete, class: 'btn btn-danger btn-xs btn-block' |
|
63 | %td= link_to 'Destroy', { :action => 'destroy', :id => problem }, :confirm => 'Are you sure?', :method => :delete, class: 'btn btn-danger btn-xs btn-block' |
@@ -40,68 +40,79 | |||||
|
40 |
|
40 | ||
|
41 | = form_tag :action=>'do_manage' do |
|
41 | = form_tag :action=>'do_manage' do |
|
42 | .panel.panel-primary |
|
42 | .panel.panel-primary |
|
43 | .panel-heading |
|
43 | .panel-heading |
|
44 | Action |
|
44 | Action |
|
45 | .panel-body |
|
45 | .panel-body |
|
46 | .submit-box |
|
46 | .submit-box |
|
47 | What do you want to do to the selected problem? |
|
47 | What do you want to do to the selected problem? |
|
48 | %br/ |
|
48 | %br/ |
|
49 | (You can shift-click to select a range of problems) |
|
49 | (You can shift-click to select a range of problems) |
|
50 | %ul.form-inline |
|
50 | %ul.form-inline |
|
51 | %li |
|
51 | %li |
|
52 |
- Change |
|
52 | + Change "Date added" to |
|
53 | .input-group.date |
|
53 | .input-group.date |
|
54 | = text_field_tag :date_added, class: 'form-control' |
|
54 | = text_field_tag :date_added, class: 'form-control' |
|
55 | %span.input-group-addon |
|
55 | %span.input-group-addon |
|
56 | %span.glyphicon.glyphicon-calendar |
|
56 | %span.glyphicon.glyphicon-calendar |
|
57 | -# = select_date Date.current, :prefix => 'date_added' |
|
57 | -# = select_date Date.current, :prefix => 'date_added' |
|
58 | |
|
58 | |
|
59 | = submit_tag 'Change', :name => 'change_date_added', class: 'btn btn-primary btn-sm' |
|
59 | = submit_tag 'Change', :name => 'change_date_added', class: 'btn btn-primary btn-sm' |
|
60 | %li |
|
60 | %li |
|
61 |
- Set |
|
61 | + Set "Available" to |
|
62 | = submit_tag 'True', :name => 'enable_problem', class: 'btn btn-primary btn-sm' |
|
62 | = submit_tag 'True', :name => 'enable_problem', class: 'btn btn-primary btn-sm' |
|
63 | = submit_tag 'False', :name => 'disable_problem', class: 'btn btn-primary btn-sm' |
|
63 | = submit_tag 'False', :name => 'disable_problem', class: 'btn btn-primary btn-sm' |
|
64 |
|
64 | ||
|
65 | - if GraderConfiguration.multicontests? |
|
65 | - if GraderConfiguration.multicontests? |
|
66 | %li |
|
66 | %li |
|
67 | - Add to |
|
67 | + Add selected problems to contest |
|
68 | = select("contest","id",Contest.all.collect {|c| [c.title, c.id]}) |
|
68 | = select("contest","id",Contest.all.collect {|c| [c.title, c.id]}) |
|
69 | = submit_tag 'Add', :name => 'add_to_contest', class: 'btn btn-primary btn-sm' |
|
69 | = submit_tag 'Add', :name => 'add_to_contest', class: 'btn btn-primary btn-sm' |
|
70 | %li |
|
70 | %li |
|
71 | - Add problems to group |
|
71 | + Add selected problems to user group |
|
72 | = select_tag "group_id", options_from_collection_for_select( Group.all, 'id','name',params[:group_name]), id: 'group_name',class: 'select2' |
|
72 | = select_tag "group_id", options_from_collection_for_select( Group.all, 'id','name',params[:group_name]), id: 'group_name',class: 'select2' |
|
73 |
- = submit_tag 'Add', name: 'add_group', class: 'btn btn- |
|
73 | + = submit_tag 'Add', name: 'add_group', class: 'btn btn-primary' |
|
|
74 | + %li | ||
|
|
75 | + Add the following tags to the selected problems | ||
|
|
76 | + = select_tag "tag_ids", options_from_collection_for_select( Tag.all, 'id','name'), id: 'tags_name',class: 'select2', multiple: true, data: {placeholder: 'Select tags by clicking', width: "200px"} | ||
|
|
77 | + = submit_tag 'Add', name: 'add_tags', class: 'btn btn-primary' | ||
|
74 |
|
78 | ||
|
75 | - |
|
79 | + %table.table.table-hover.datatable |
|
76 | - %table.table.table-hover |
|
80 | + %thead |
|
77 | %tr{style: "text-align: left;"} |
|
81 | %tr{style: "text-align: left;"} |
|
78 | %th= check_box_tag 'select_all' |
|
82 | %th= check_box_tag 'select_all' |
|
79 | %th Name |
|
83 | %th Name |
|
80 | %th Full name |
|
84 | %th Full name |
|
|
85 | + %th Tags | ||
|
81 | %th Available |
|
86 | %th Available |
|
82 | %th Date added |
|
87 | %th Date added |
|
83 | - if GraderConfiguration.multicontests? |
|
88 | - if GraderConfiguration.multicontests? |
|
84 | %th Contests |
|
89 | %th Contests |
|
85 |
|
90 | ||
|
|
91 | + %tbody | ||
|
86 | - num = 0 |
|
92 | - num = 0 |
|
87 | - for problem in @problems |
|
93 | - for problem in @problems |
|
88 | - num += 1 |
|
94 | - num += 1 |
|
89 | %tr{:id => "row-prob-#{problem.id}", :name=> "prob-#{problem.id}"} |
|
95 | %tr{:id => "row-prob-#{problem.id}", :name=> "prob-#{problem.id}"} |
|
90 | %td= check_box_tag "prob-#{problem.id}-#{num}" |
|
96 | %td= check_box_tag "prob-#{problem.id}-#{num}" |
|
91 | %td= problem.name |
|
97 | %td= problem.name |
|
92 | %td= problem.full_name |
|
98 | %td= problem.full_name |
|
|
99 | + %td | ||
|
|
100 | + - problem.tags.each do |t| | ||
|
|
101 | + %span.label.label-default= t.name | ||
|
93 | %td= problem.available |
|
102 | %td= problem.available |
|
94 | %td= problem.date_added |
|
103 | %td= problem.date_added |
|
95 | - if GraderConfiguration.multicontests? |
|
104 | - if GraderConfiguration.multicontests? |
|
96 | %td |
|
105 | %td |
|
97 | - problem.contests.each do |contest| |
|
106 | - problem.contests.each do |contest| |
|
98 | = "(#{contest.name} [#{link_to 'x', :action => 'remove_contest', :id => problem.id, :contest_id => contest.id }])" |
|
107 | = "(#{contest.name} [#{link_to 'x', :action => 'remove_contest', :id => problem.id, :contest_id => contest.id }])" |
|
99 |
|
108 | ||
|
100 | :javascript |
|
109 | :javascript |
|
101 | $('.input-group.date').datetimepicker({ |
|
110 | $('.input-group.date').datetimepicker({ |
|
102 | format: 'DD/MMM/YYYY', |
|
111 | format: 'DD/MMM/YYYY', |
|
103 | showTodayButton: true, |
|
112 | showTodayButton: true, |
|
104 | widgetPositioning: {horizontal: 'auto', vertical: 'bottom'}, |
|
113 | widgetPositioning: {horizontal: 'auto', vertical: 'bottom'}, |
|
105 |
|
114 | ||
|
106 | }); |
|
115 | }); |
|
107 | - |
|
116 | + $('.datatable').DataTable({ |
|
|
117 | + paging: false | ||
|
|
118 | + }); |
@@ -22,14 +22,15 | |||||
|
22 | .actions |
|
22 | .actions |
|
23 | = f.submit "Update", class: 'btn btn-primary' |
|
23 | = f.submit "Update", class: 'btn btn-primary' |
|
24 | .col-md-8 |
|
24 | .col-md-8 |
|
25 |
|
25 | ||
|
26 | = link_to 'Show', @site |
|
26 | = link_to 'Show', @site |
|
27 | | |
|
27 | | |
|
28 | = link_to 'Back', sites_path |
|
28 | = link_to 'Back', sites_path |
|
29 |
|
29 | ||
|
30 |
|
30 | ||
|
31 | :javascript |
|
31 | :javascript |
|
32 | $('.input-group.date').datetimepicker({ |
|
32 | $('.input-group.date').datetimepicker({ |
|
33 | format: 'DD/MMM/YYYY HH:mm', |
|
33 | format: 'DD/MMM/YYYY HH:mm', |
|
|
34 | + showTodayButton: true, | ||
|
34 | }); |
|
35 | }); |
|
35 |
|
36 |
You need to be logged in to leave comments.
Login now