studium form update

This commit is contained in:
Andreas Stephanides
2015-05-28 20:17:36 +02:00
parent c7e6c5022b
commit 5a7eb23a1f
17 changed files with 172 additions and 57 deletions

View File

@@ -15,6 +15,8 @@
*= require jquery.fileupload-ui
*= require jquery.datetimepicker
*= require jquery.ui.dialog
*= require jquery.ui.autocomplete
*= require jquery.ui.tabs
* require 'bootstrap'
* require 'neuigkeiten'
*/

View File

@@ -77,13 +77,13 @@ class LvasController < ApplicationController
@lva = Lva.find_by_id(params[:id])
@lvatiss = Lva.new
@lvatiss.lvanr=@lva.lvanr
@lvatiss.load_tissdata("-2013W")
@lvatiss.load_tissdata
end
def load_tiss
@lva = Lva.find_by_id(params[:id])
@lva.load_tissdata("-2013W")
@lva.load_tissdata
if @lva.save
redirect_to @lva , notice: 'Lva von TISS geladen.'
else

View File

@@ -125,13 +125,13 @@ end
def show_tiss
@lvas=[];
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).uniq
params["lvas"].to_a.each do |l|
unless l.last["lvanr"].empty?
l=l.last
lva=Lva.new
lva.lvanr=l["lvanr"]
lva.load_tissdata("-"+ l["sem"])
lva.load_tissdata
lva.modul<<@modul
@lvas<<lva #
end

View File

@@ -109,7 +109,7 @@ class Lva < ActiveRecord::Base
end
def load_tissdata(semester)
def load_tissdata
urlp="https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+"-"
begin
url= urlp+Time.now.year.to_s+"W"

View File

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

View File

@@ -113,7 +113,7 @@
</div>
<% end %>
<% unless @crawlobjects.nil? %>
<div class="row-fluid">
<div class="span12">
<% @crawlobjects.each do |co| %>
@@ -121,7 +121,7 @@
<% end %>
</div>
</div>
<% end %>
</div>
</div>

View File

@@ -1,29 +1,62 @@
<%= semantic_form_for @modulgruppe do |f| %>
<%= f.inputs do %>
<div class="span8">
<div class="row-fluid">
<%= f.input :name, :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<%= f.input :studium_id, :as =>:select, :collection => Studium.all, :wrapper_html=>{:class=>"span4"} %>
<%= f.input :typ, :collection=>["Pflicht","Vertiefungspflicht","Wahl"], :wrapper_html=>{:class=>"span4"}%>
</div>
<div class="row-fluid">
<%= f.input :studium_id, :as =>:select, :collection => Studium.all, :wrapper_html=>{:class=>"span4"} %>
<%= f.input :typ, :collection=>["Pflicht","Vertiefungspflicht","Wahl"], :wrapper_html=>{:class=>"span4"}%>
<%= f.input :phase, :as=>:select, :collection=>1..3, :wrapper_html=>{:class=>"span4"} %>
</div>
</div>
<div class="row-fluid">
<%= f.input :desc %>
</div>
<div class="row-fluid">
<div class="span12">
<input id="modul" class="autocomplete-checkbox" data-checkboxdiv="modulgruppe_moduls_input" data-checkboxname="modulgruppe[modul_ids][]" data-collection="<%= (Modul.all.map{|l| "{\"value\": \""+l.id.to_s + "\", \"label\": " + "\"" +escape_javascript( l.name.gsub(";",",")) + "\"}"}.join("; "))%>"> </input>
<%= f.input :moduls, :as=>:check_boxes, :collection=>@modulgruppe.moduls %>
<script>
$(function(){
$( ".autocomplete-checkbox" ).autocomplete({
minLength: 0,
source: [],
focus: function( event, ui ) {
$( this ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( this ).val( "" );
$( "#"+$(this).data("checkboxdiv")).append($("<label>").append($("<div>").attr("class", "checkbox").append($("<input>").attr("type","checkbox").attr("value", ui.item.value).attr("checked","checked").attr("name",$(this).data("checkboxname"))).append(ui.item.label)));
return false;
}
}).each(function() {
$(this).autocomplete("option", "source", $(this).data('collection').split(";").map(function(el){return JSON.parse(el)})
);
})
.data( "ui-autocomplete" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a>" + item.label + "</a>" )
.appendTo( ul );
};
});
</script>
</div></div>
</div>
<div class="span4">
<%= f.input :moduls, :as=>:check_boxes %>
</div>
<% end %>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<% end %>
<% end %>

View File

@@ -1,6 +1,6 @@
<div class="modulgruppe_phase_<%= modulgruppe.phase %>" >
<h2><%= link_to modulgruppe.name, modulgruppe_path(modulgruppe) %>
</h2>
<h2><%= link_to modulgruppe.name, modulgruppe_path(modulgruppe) %> <%= link_to fa_icon("pencil") , edit_modulgruppe_path(modulgruppe) %></h2>
<%= modulgruppe.desc%><ul class="unstyled">
<%= render :partial=>'moduls/kurz', :collection=>modulgruppe.moduls, :as=>:modul%>

View File

@@ -3,7 +3,7 @@
<p id="notice"><%= notice %></p>
<h1>
<%= @modulgruppe.name %>
<%= @modulgruppe.name %><%= link_to fa_icon("pencil") , edit_modulgruppe_path(@modulgruppe) %>
</h1>
<p>
<!-- <b><%= link_to "Studium: "+@modulgruppe.studium.name, studium_path(@modulgruppe.studium) %></b>-->

View File

@@ -6,24 +6,37 @@
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<%= f.input :name ,:hint=>true%>
<%= f.input :name , :as=>:hidden %>
<div id="toolBar" style="z-index:100"></div>
<h1 class="editable_simple" data-target="#modul_name"><%= @modul.name %> </h1>
</div>
</div>
<div class="row-fluid">
<div class="row-fluid" >
<div class="span12">
<%= f.input :desc, :as=>:tinymce_text %>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<%= f.input :depend %>
<div id="tabs">
<ul><li><a href="#tab-desc">Beschreibung</a></li><li><a href="#tab-depend">Voraussetzung</a></li></ul>
<div id="tab-desc">
<div class="editable" data-target="#modul_desc">
<%= raw(@modul.desc) %>
</div>
<%= f.input :desc, :as=>:hidden %>
</div>
<div id="tab-depend">
<%= f.input :depend %>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="span3">
<%= f.input :modulgruppen, :as => :check_boxes, :member_label=>:long_name, :collection => Modulgruppe.all %>
<input id="lva" class="autocomplete-checkbox" data-checkboxdiv="modul_lvas_input" data-checkboxname="modul[lva_ids][]" data-collection="<%= (Lva.all.map{|l| "{\"value\": \""+l.id.to_s + "\", \"label\": " + "\"" +escape_javascript( l.full_name) + "\"}"}.join("; "))%>"> </input>
<%= f.input :lvas, :as => :check_boxes, :member_label=>:full_name, :collection => @modul.lvas %>
<input id="modul" class="autocomplete-checkbox" data-checkboxdiv="modul_modulgruppen_input" data-checkboxname="modul[modulgruppe_ids][]" data-collection="<%= (Modulgruppe.all.map{|l| "{\"value\": \""+l.id.to_s + "\", \"label\": " + "\"" +escape_javascript( l.long_name) + "\"}"}.join("; "))%>"> </input>
<%= f.input :modulgruppen, :as => :check_boxes, :member_label=>:long_name, :collection => @modul.modulgruppen %>
</div>
</div>
@@ -34,5 +47,34 @@
<% end %>
<% end %>
<script>
$(function(){
$( ".autocomplete-checkbox" ).autocomplete({
minLength: 0,
source: [],
focus: function( event, ui ) {
$( this ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( this ).val( "" );
$( "#"+$(this).data("checkboxdiv")).append($("<label>").append($("<div>").attr("class", "checkbox").append($("<input>").attr("type","checkbox").attr("value", ui.item.value).attr("checked","checked").attr("name",$(this).data("checkboxname"))).append(ui.item.label)));
return false;
}
}).each(function() { // Goes through `.autocomplete` elements and sets source
$(this).autocomplete("option", "source", $(this).data('collection').split(";").map(function(el){return JSON.parse(el)}));
})
.data( "ui-autocomplete" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a>" + item.label + "</a>" )
.appendTo( ul );
};
$("#tabs").tabs();
});
</script>
</div>
<%= tinymce :inline_simple %>
<%= tinymce :inline_div %>
<%= tinymce %>

View File

@@ -1,7 +1,7 @@
<li>
<div class="contentbox">
<p>
<b><%= link_to "Modul "+ modul.name.to_s , modul_path(modul) %> </b>
<b><%= link_to "Modul "+ modul.name.to_s , modul_path(modul) %> <%= link_to fa_icon("pencil") , edit_modul_path(modul) %> </b>
</p>
<ul>
<% modul.lvas.each do |lva| %>

View File

@@ -16,6 +16,11 @@
<p>
<%= raw(modul.desc) %>
</p>
<h2><%=I18n.t("modul.depend")%></h2>
<p>
<%= raw(modul.depend) %>
</p>
</div>
<div class="span4">
<div class="lva-sidebar">

View File

@@ -3,7 +3,7 @@
<%= semantic_fields_for "lvas[#{i}]" do |f| %>
<%= f.input :lvanr %>
<%= f.input :sem , :input_html => { "style"=>"width:7em" },:as=>:select, :collection=>["2012S", "2012W","2013S","2013W","2014S","2014W","2015S","2015W"] %>
<% f.input :sem , :input_html => { "style"=>"width:7em" },:as=>:select, :collection=>["2012S", "2012W","2013S","2013W","2014S","2014W","2015S","2015W"] %>
<% end %>
<% end %>

View File

@@ -7,37 +7,62 @@
<div class="row-fluid">
<%= f.input :name,:append=>"NAME", :wrapper_html=>{:class=>"span6"}%>
<%= f.input :abkuerzung, :wrapper_html=>{:class=>"span1"}%>
<%= f.input :zahl , :wrapper_html=>{:class=>"span2"}%>
<%= f.input :typ, :as=>:select, :include_blank=>false, :collection=>["Bachelor","Master"], :wrapper_html=>{:class=>"span2"}%>
</div>
<div class="row-fluid">
<%= f.input :desc, :as=>:tinymce_text , :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<%= f.input :qualifikation, :as=>:tinymce_text , :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<%= f.input :struktur, :as=>:tinymce_text , :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<%= f.input :jobmoeglichkeiten, :as=>:tinymce_text , :wrapper_html=>{:class=>"span12"}%>
</div>
<div class="row-fluid">
<div class="span12">
<div class="span12"><p>
<div id="toolBar"></div></p>
<div id="tabs">
<ul>
<li><a href="#tab-data">Daten</a></li>
<li><a href="#tab-desc">Beschreibung</a></li>
<li><a href="#tab-qual">Qualifikation</a></li>
<li><a href="#tab-struk">Struktur</a></li>
<li><a href="#tab-job">JobMöglichkeiten</a></li>
</ul>
<div id="tab-data">
<%= f.input :abkuerzung %>
<%= f.input :zahl %>
<%= f.input :typ, :as=>:select, :include_blank=>false, :collection=>["Bachelor","Master"] %>
<label>Bild</label>
<%= image_tag(@studium.picture.thumb.url) unless @studium.picture.nil? %>
<%= f.file_field :picture %>
<%= f.hidden_field :picture_cache %>
</div>
<label>Bild</label>
<%= image_tag(@studium.picture.thumb.url) unless @studium.picture.nil? %>
<%= f.file_field :picture %>
<%= f.hidden_field :picture_cache %>
<div id="tab-desc">
<div class="editable" data-target="#studium_desc">
<%= raw(@studium.desc) %>
</div>
<%= f.input :desc, :as=>:hidden %>
</div>
<div id="tab-qual">
<div class="editable" data-target="#studium_qualifikation">
<%= raw(@studium.qualifikation) %>
</div>
<%= f.input :qualifikation, :as=>:hidden %>
</div>
<div id="tab-struk">
<div class="editable" data-target="#studium_struktur">
<%= raw(@studium.struktur) %>
</div>
<%= f.input :struktur, :as=>:hidden %>
</div>
<div id="tab-job">
<div class="editable" data-target="#studium_jobmoeglichkeiten">
<%= raw(@studium.jobmoeglichkeiten) %>
</div>
<%= f.input :jobmoeglichkeiten, :as=>:hidden %>
</div>
</div>
</div>
</div>
<% end %>
<script>$("#tabs").tabs()</script>
<%= tinymce %>
<%= tinymce :inline_div %>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<%= link_to 'Back', studien_path, :data=>{:locale=>I18n.locale}, class: :btn%>

View File

@@ -6,6 +6,9 @@
<%= render_attachments_for(@studium) %>
<%= raw(@studium.desc) %>
<%= raw(@studium.struktur) %>
<%= raw(@studium.jobmoeglichkeiten) %>
</div>
</div>

View File

@@ -31,3 +31,5 @@ en:
bspe: "Examples"
home:
newexamples: "Newest Examples"
modul:
depend: "Voraussetzungen"

View File

@@ -40,6 +40,9 @@ inline_simple:
toolbar:
- undo redo
menubar: false
setup: function(ed) {
ed.on('NodeChange',function(){$($("#"+ed.id).attr("data-target")).val(this.getContent())})
}
inline_div:
selector: "div.editable"
inline: true