changes in lva und beispiele

change
This commit is contained in:
Andreas Stephanides
2014-01-22 12:33:07 +01:00
parent 723182c69f
commit 783b9f41c9
12 changed files with 265 additions and 23 deletions

View File

@@ -14,7 +14,7 @@ class LvasController < ApplicationController
def show def show
@lva = Lva.find_by_id(params[:id]) @lva = Lva.find_by_id(params[:id])
@beispiel=Beispiel.new
@toolbar_elements<<{:hicon=>'icon-plus-sign', :icon=>:plus, :text => "Neues Beispiel", :path=> new_beispiel_path(:lva_id =>@lva.id)} @toolbar_elements<<{:hicon=>'icon-plus-sign', :icon=>:plus, :text => "Neues Beispiel", :path=> new_beispiel_path(:lva_id =>@lva.id)}
@toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)} @toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('common.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>'Sure?' } @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('common.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>'Sure?' }
@@ -32,8 +32,10 @@ class LvasController < ApplicationController
# GET /lvas/1/edit # GET /lvas/1/edit
def edit def edit
@lva = Lva.find(params[:id]) @lva = Lva.find(params[:id])
end @semester = @lva.modul.map(&:modulgruppen).flatten.map(&:studium).map(&:semester).flatten.uniq
end
# POST /lvas # POST /lvas
# POST /lvas.json # POST /lvas.json
def create def create

View File

@@ -9,7 +9,7 @@ class ModulsController < ApplicationController
@studium=Studium.find_by_id(params[:studium_id]) @studium=Studium.find_by_id(params[:studium_id])
end end
@toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("modul.add"), :path=>new_modul_path}] @toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("modul.add"), :path=>new_modul_path}]
@topbar_elements=[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}] @topbar_elements =[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}]
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path} @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path} @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}
@@ -26,6 +26,9 @@ class ModulsController < ApplicationController
def show def show
@modul = Modul.find(params[:id]) @modul = Modul.find(params[:id])
@toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("lva.add"), :path=>new_lva_path(:modul_id =>@modul.id)}] @toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("lva.add"), :path=>new_lva_path(:modul_id =>@modul.id)}]
@toolbar_elements << {:hicon=>'icon-pencil', :text=>"Lvas bearbeiten", :path=>modul_edit_lvas_path(@modul)}
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>"ADD FROM TISS", :path=>modul_load_tiss_path(:modul_id =>@modul.id)}
@toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t("modul.edit"), :path=>edit_modul_path(@modul)} @toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t("modul.edit"), :path=>edit_modul_path(@modul)}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t("common.delete"),:path=>@modul , :method=>:delete , :data=>{:confirm =>'Are you sure'}} @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t("common.delete"),:path=>@modul , :method=>:delete , :data=>{:confirm =>'Are you sure'}}
@@ -65,18 +68,27 @@ class ModulsController < ApplicationController
def edit_lvas def edit_lvas
@modul = Modul.find(params[:modul_id]) @modul = Modul.find(params[:modul_id])
@lvas = @modul.lvas @lvas = @modul.lvas
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
end end
def update_lvas def update_lvas
params[:modul_id]=params[:id] if params[:modul_id].empty? params[:modul_id]=params[:id] if params[:modul_id].empty?
@modul = Modul.find(params[:modul_id]) @modul = Modul.find(params[:modul_id])
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
@newlvas=[] @newlvas=[]
params["lvas"].each do |l| @lvas=[]
lva=Lva.where(:lvanr=>l["lvanr"]) params["lvas"].each do |i,l|
lva=Lva.new(l) #lva= Lva.find(l[:id].to_i)
lva.modul=[@modul] lva=Lva.where(:lvanr=>l["lvanr"]).first if lva.nil?
lva=Lva.new(l) if lva.nil?
lva.modul<<@modul
lva.modul.uniq!
lva.name=l["name"] lva.name=l["name"]
lva.lvanr=l["lvanr"]
lva.ects=l["ects"] lva.ects=l["ects"]
lva.desc=l["desc"] lva.desc=l["desc"]
lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i))
lva.stunden=l["stunden"] lva.stunden=l["stunden"]
lva.pruefungsinformation=l["pruefungsinformation"] lva.pruefungsinformation=l["pruefungsinformation"]
lva.lernaufwand=l["lernaufwand"] lva.lernaufwand=l["lernaufwand"]
@@ -84,12 +96,12 @@ class ModulsController < ApplicationController
lva.save lva.save
@newlvas<<lva @newlvas<<lva
end end
@lvas=@newlvas @lvas=@newlvas
# if @newlvas.map(&:valid?).all? if @newlvas.map(&:valid?).all?
redirect_to modul_path(@modul)
else
render "edit_lvas" render "edit_lvas"
# else end
# @lvas=@newlvas
# render show_tiss
# end # end
end end
def load_tiss def load_tiss
@@ -100,12 +112,14 @@ class ModulsController < ApplicationController
def show_tiss def show_tiss
@lvas=[]; @lvas=[];
@modul = Modul.find(params[:modul_id]) @modul = Modul.find(params[:modul_id])
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
params["lvas"].to_a.each do |l| params["lvas"].to_a.each do |l|
unless l.last["lvanr"].empty? unless l.last["lvanr"].empty?
l=l.last l=l.last
lva=Lva.new lva=Lva.new
lva.lvanr=l["lvanr"] lva.lvanr=l["lvanr"]
lva.load_tissdata("-2013W") lva.load_tissdata("-"+ l["sem"])
lva.modul<<@modul
@lvas<<lva @lvas<<lva
end end
end end

View File

@@ -38,7 +38,7 @@ class Lva < ActiveRecord::Base
ERLAUBTE_TYPEN = ['VO', 'UE', 'VU', 'LU', 'SE', 'andere']; ERLAUBTE_TYPEN = ['VO', 'UE', 'VU', 'LU', 'SE', 'andere'];
has_paper_trail # Versionsverfolgung has_paper_trail # Versionsverfolgung
attr_accessible :desc, :ects, :lvanr, :name, :stunden, :modul_ids, :semester_ids, :pruefungsinformation, :lernaufwand, :typ, :lecturer_ids attr_accessible :desc, :ects, :lvanr, :name, :stunden, :modul_ids, :semester_ids, :pruefungsinformation, :lernaufwand, :typ, :lecturer_ids
has_and_belongs_to_many :modul # Gehört zu einem Modul has_and_belongs_to_many :modul,:uniq=>true # Gehört zu einem Modul
has_and_belongs_to_many :semester has_and_belongs_to_many :semester
#Gehört zu einem Semester( derzeit nicht implementiert) #Gehört zu einem Semester( derzeit nicht implementiert)
has_many :beispiele , :class_name => "Beispiel" has_many :beispiele , :class_name => "Beispiel"
@@ -89,7 +89,8 @@ class Lva < ActiveRecord::Base
self.name=hash["course"]["title"][I18n.locale.to_s] self.name=hash["course"]["title"][I18n.locale.to_s]
self.pruefungsinformation= hash["course"]["examinationModalities"][I18n.locale.to_s] self.pruefungsinformation= hash["course"]["examinationModalities"][I18n.locale.to_s]
self.desc= hash["course"]["objective"][I18n.locale.to_s]+hash["course"]["teachingContent"][I18n.locale.to_s] self.desc= hash["course"]["objective"][I18n.locale.to_s]+hash["course"]["teachingContent"][I18n.locale.to_s]
self.typ=hash["course"]["courseType"]
self.stunden=hash["course"]["weeklyHours"]
end end

View File

@@ -14,7 +14,7 @@
class Modul < ActiveRecord::Base class Modul < ActiveRecord::Base
attr_accessible :desc,:name, :depend, :studium_id, :modulgruppe_ids attr_accessible :desc,:name, :depend, :studium_id, :modulgruppe_ids
has_and_belongs_to_many :lvas has_and_belongs_to_many :lvas , :uniq=>true
has_and_belongs_to_many :modulgruppen has_and_belongs_to_many :modulgruppen

View File

@@ -0,0 +1,142 @@
<div class="container">
<%= semantic_form_for [@lva, @beispiel], :remote=>true, :html => { :multipart => true, :id => "fileupload" } do |f| %>
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="row ">
<div class="span7">
<div class="fileupload-buttonbar">
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">
<i class="icon-plus icon-white"></i>
<span>Add files...</span>
<%= f.file_field :beispieldatei, :multiple=>true %>
<%= f.input :lva %>
</span>
<button type="submit" class="btn btn-primary start">
<i class="icon-upload icon-white"></i>
<span>Start upload</span>
</button>
<button type="reset" class="btn btn-warning cancel">
<i class="icon-ban-circle icon-white"></i>
<span>Cancel upload</span>
</button>
<button type="button" class="btn btn-danger delete">
<i class="icon-trash icon-white"></i>
<span>Delete</span>
</button>
<input type="checkbox" class="toggle">
</div>
<div class="span5">
<!-- The global progress bar -->
<div class="progress progress-success progress-striped active fade">
<div class="bar" style="width:100%;"></div>
</div>
</div>
</div>
</div>
<!-- The loading indicator is shown during image processing -->
<div class="fileupload-loading"></div>
<br>
<!-- The table listing the files available for upload/download -->
<table class="table table-striped"><tbody class="files" data-toggle="modal-lva" data-target="#modal-lva"></tbody>
</table>
<% end %>
</div>
<script>
var fileUploadErrors = {
maxFileSize: 'File is too big',
minFileSize: 'File is too small',
acceptFileTypes: 'Filetype not allowed',
maxNumberOfFiles: 'Max number of files exceeded',
uploadedBytes: 'Uploaded bytes exceed file size',
emptyResult: 'Empty file upload result'
};
</script>
<!-- The template to display files available for upload -->
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload fade">
<!--<td class="preview"><span class="fade"></span></td>-->
<td class="name"><span>{%=file.name %}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
{% if (file.error) { %}
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
{% } else if (o.files.valid && !i) { %}
<td>
<div class="progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div>
</td>
<td class="start">{% if (!o.options.autoUpload) { %}
<button class="btn btn-primary">
<i class="icon-upload icon-white"></i>
<span>{%=locale.fileupload.start%}</span>
</button>
{% } %}</td>
{% } else { %}
<td colspan="2"></td>
{% } %}
<td class="cancel">{% if (!i) { %}
<button class="btn btn-warning">
<i class="icon-ban-circle icon-white"></i>
<span>{%=locale.fileupload.cancel%}</span>
</button>
{% } %}</td>
</tr>
{% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
{% if (file.error) { %}
<td></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
{% } else { %}
<!--<td class="preview">{% if (file.thumbnail_url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" rel="lva" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
{% } %}</td>-->
<td class="name">
<a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'lva'%}" download="{%=file.name%}">{%=file.name%}</a>
</td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td colspan="2"></td>
{% } %}
<td class="delete">
<button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
<i class="icon-trash icon-white"></i>
<span>{%=locale.fileupload.destroy%}</span>
</button>
<input type="checkbox" name="delete" value="1">
</td>
</tr>
{% } %}
</script>
<script type="text/javascript" charset="utf-8">
$(function () {
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload();
//
// Load existing files:
$.getJSON($('#fileupload').prop('action'), function (files) {
var fu = $('#fileupload').data('blueimpFileupload'),
template;
fu._adjustMaxNumberOfFiles(-files.length);
console.log(files);
// no Download on Upload form
//template = fu._renderDownload(files)
//.appendTo($('#fileupload .files'));
// Force reflow:
fu._reflow = fu._transition && template.length &&
template[0].offsetWidth;
template.addClass('in');
$('#loading').remove();
});
$('#beispiel_beispieldatei').attr('name', 'beispiel[beispieldatei]');
$('#beispiel_beispieldatei').fileupload();
});
</script>

View File

@@ -7,7 +7,7 @@
<span class="btn btn-success fileinput-button"> <span class="btn btn-success fileinput-button">
<i class="icon-plus icon-white"></i> <i class="icon-plus icon-white"></i>
<span>Add files...</span> <span>Add files...</span>
<%= f.file_field :datei, :multiple=>true%> <%= f.file_field :datei, :multiple=>true %>
<%= f.input :gallery %> <%= f.input :gallery %>
</span> </span>
<button type="submit" class="btn btn-primary start"> <button type="submit" class="btn btn-primary start">

View File

@@ -25,7 +25,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="row-fluid"> <div class="row-fluid">
<%= f.input :desc %> <%= f.input :desc , :as=>:tinymce_text %>
<%= f.input :pruefungsinformation %> <%= f.input :pruefungsinformation %>
<%= f.input :lernaufwand %> <%= f.input :lernaufwand %>
</div></div> </div></div>
@@ -39,7 +39,7 @@
</div> </div>
<div class="span3"> <div class="span3">
<%= f.input :semester, :as=>:check_boxes%> <%= f.input :semester, :as=>:check_boxes, :collection=>@semester%>
<%= f.input :lecturers, :as=>:check_boxes%> <%= f.input :lecturers, :as=>:check_boxes%>
</div> </div>
<% end %> <% end %>
@@ -47,3 +47,4 @@
<%= f.action :submit, :as => :input %> <%= f.action :submit, :as => :input %>
<% end %> <% end %>
<% end %> <% end %>
<%= tinymce %>

View File

@@ -6,7 +6,7 @@
<h1><%=@lva.typ.to_s + ' ' + @lva.name %></h1> <h1><%=@lva.typ.to_s + ' ' + @lva.name %></h1>
<h2>Prüfungsinformation</h2> <h2>Prüfungsinformation</h2>
<div class=""> <div class="">
<%= @lva.pruefungsinformation %> <%= @lva.pruefungsinformation.html_safe %>
</div> </div>
<h2>Lernaufwand</h2> <h2>Lernaufwand</h2>
<div class=""> <div class="">
@@ -14,7 +14,7 @@
</div> </div>
<h2>Beschreibung</h2> <h2>Beschreibung</h2>
<div class=""> <div class="">
<%= @lva.desc %> <%= @lva.desc.to_s.html_safe %>
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<h2>Beispiele</h2> <h2>Beispiele</h2>
@@ -59,3 +59,4 @@
<%= render 'layouts/pretty_toolbar' %> <%= render 'layouts/pretty_toolbar' %>
</div> </div>
<%= render 'beispiele/form_bulk' %>

View File

@@ -0,0 +1,41 @@
<%= semantic_form_for "lvas[]", :url=>modul_update_lvas_path(@modul) do |ff|%>
<table>
<% i = 0 %>
<% @lvas.each do |lva|%>
<% i = i +1 %>
<tr>
<%= semantic_fields_for "lvas[#{i}]", lva do |f|%>
<td>
<h4><%= lva.name %></h4>
<%= f.semantic_errors :state %>
<%= f.input :id, :as=>:hidden %></td>
<td><%= f.input :lvanr , :input_html => { "style"=>"width:7em" }%></td>
<td><%= f.input :name %></td>
<td><%= f.input :ects, :input_html => { "style"=>"width:4em" },:size=>5 %>
<%= f.input :stunden, :input_html => { "style"=>"width:4em" }%></td>
<td><%= f.input :typ, :input_html => { "style"=>"width:4em" }%></td>
<td>
<%= f.input :semester , :input_html=>{:style=>"height:8em"},:collection=>@semester%></td>
<td><%= f.input :pruefungsinformation,:input_html=>{:rows=>4} %></td>
<td><%= f.input :desc, :input_html=>{:rows=>4}%></td>
<td>
<%= lva.valid? %>
</td>
<% end%>
</tr>
<% end %>
<%= ff.actions do %>
<%= ff.action :submit, :as => :button %>
<%= ff.action :cancel, :as => :link %>
<% end %>
<% end %>

View File

@@ -0,0 +1,15 @@
<%= semantic_form_for "lvas[]", :url=>modul_show_tiss_path(params[:modul_id]) do |ff|%>
<% for i in 1..5 do %>
<%= semantic_fields_for "lvas[#{i}]" do |f| %>
<%= f.input :lvanr %>
<%= f.input :sem , :input_html => { "style"=>"width:7em" },:as=>:select, :collection=>["2013W","2014S"] %>
<% end %>
<% end %>
<%= ff.actions do %>
<%= ff.action :submit, :as => :button %>
<%= ff.action :cancel, :as => :link %>
<% end %>
<% end %>

View File

@@ -0,0 +1,23 @@
<h1><%= @themengruppe.title %></h1>
<p>
<%= @themengruppe.text %>
</p>
<ul class="unstyled linkbox-list" >
<% @themengruppe.themen.each do |thema| %>
<li>
<div class="contentbox">
<a href="#<%=thema.id%>">
<h2><%= thema.title %></h2>
</a>
<% unless thema.gremium.nil? %>
<p>
<%= link_to "Zu dem Gremium ..." , thema.gremium %>
</p>
<% end %>
<%= render :partial => 'themen/small', :object => thema %>
</div>
</li>
<% end %>
</ul>
<%= render :partial=>'layouts/pretty_toolbar' %>

View File

@@ -61,7 +61,9 @@ end
post 'show_tiss' post 'show_tiss'
end end
resources :lvas resources :lvas do
resources :beispiele, :only=>[:show,:index]
end
resources :fragen resources :fragen
# get 'rubriken/verwalten', :controller=>:rubriken, :action=>:alle_verwalten, :as=>'alle_verwalten_rubrik' # get 'rubriken/verwalten', :controller=>:rubriken, :action=>:alle_verwalten, :as=>'alle_verwalten_rubrik'