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.fileupload-ui
*= require jquery.datetimepicker *= require jquery.datetimepicker
*= require jquery.ui.dialog *= require jquery.ui.dialog
*= require jquery.ui.autocomplete
*= require jquery.ui.tabs
* require 'bootstrap' * require 'bootstrap'
* require 'neuigkeiten' * require 'neuigkeiten'
*/ */

View File

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

View File

@@ -125,13 +125,13 @@ end
def show_tiss def show_tiss
@lvas=[]; @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| 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("-"+ l["sem"]) lva.load_tissdata
lva.modul<<@modul lva.modul<<@modul
@lvas<<lva # @lvas<<lva #
end end

View File

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

View File

@@ -12,7 +12,7 @@
# #
class Modul < ActiveRecord::Base 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 :lvas , :uniq=>true
has_and_belongs_to_many :modulgruppen has_and_belongs_to_many :modulgruppen

View File

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

View File

@@ -1,6 +1,6 @@
<%= semantic_form_for @modulgruppe do |f| %> <%= semantic_form_for @modulgruppe do |f| %>
<%= f.inputs do %> <%= f.inputs do %>
<div class="span8">
<div class="row-fluid"> <div class="row-fluid">
<%= f.input :name, :wrapper_html=>{:class=>"span12"}%> <%= f.input :name, :wrapper_html=>{:class=>"span12"}%>
@@ -9,6 +9,7 @@
<%= f.input :studium_id, :as =>:select, :collection => Studium.all, :wrapper_html=>{:class=>"span4"} %> <%= 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 :typ, :collection=>["Pflicht","Vertiefungspflicht","Wahl"], :wrapper_html=>{:class=>"span4"}%>
<%= f.input :phase, :as=>:select, :collection=>1..3, :wrapper_html=>{:class=>"span4"} %> <%= f.input :phase, :as=>:select, :collection=>1..3, :wrapper_html=>{:class=>"span4"} %>
</div> </div>
@@ -16,14 +17,46 @@
<%= f.input :desc %> <%= f.input :desc %>
</div> </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 %> <% end %>
<%= f.actions do %> <%= f.actions do %>
<%= f.action :submit, :as => :input %> <%= f.action :submit, :as => :input %>
<% end %> <% end %>
<% end %> <% end %>

View File

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

View File

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

View File

@@ -6,24 +6,37 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <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> </div>
<div class="row-fluid" > <div class="row-fluid" >
<div class="span12"> <div class="span12">
<%= f.input :desc, :as=>:tinymce_text %> <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> </div>
<%= f.input :desc, :as=>:hidden %>
</div> </div>
<div class="row-fluid"> <div id="tab-depend">
<div class="span12">
<%= f.input :depend %> <%= f.input :depend %>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
<div class="span3"> <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>
</div> </div>
@@ -34,5 +47,34 @@
<% end %> <% end %>
<% 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> </div>
<%= tinymce :inline_simple %>
<%= tinymce :inline_div %>
<%= tinymce %> <%= tinymce %>

View File

@@ -1,7 +1,7 @@
<li> <li>
<div class="contentbox"> <div class="contentbox">
<p> <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> </p>
<ul> <ul>
<% modul.lvas.each do |lva| %> <% modul.lvas.each do |lva| %>

View File

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

View File

@@ -3,7 +3,7 @@
<%= semantic_fields_for "lvas[#{i}]" do |f| %> <%= semantic_fields_for "lvas[#{i}]" do |f| %>
<%= f.input :lvanr %> <%= 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 %>
<% end %> <% end %>

View File

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

View File

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

View File

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

View File

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