themen ueberarbeitet attachments verwalten

This commit is contained in:
2014-06-09 23:14:05 +05:30
parent babbfb7d73
commit 6451c0f175
22 changed files with 245 additions and 38 deletions

View File

@@ -46,19 +46,29 @@ class AttachmentsController < ApplicationController
# POST /attachments.json
def create
@attachment = Attachment.new(params[:attachment])
@thema = Thema.find(params[:thema_id])
@attachment.thema_id = @thema.id
@action="create"
logger.info "#{@attachment.inspect}"
@thema = Thema.find_by_id(params[:thema_id])
# logger.info "gg"
@attachment.thema = @thema
@attachment.name=@attachment.datei.filename
@action="create"
# logger.info "sdf"
respond_to do |format|
if @attachment.save
format.html { redirect_to @thema, notice: 'Attachment was successfully created.' }
format.json { render json: @thema, status: :created, location: @thema }
format.js { }
if @attachment.save
format.html {
render :json => [@attachment.to_jq_upload].to_json,
:content_type => 'text/html',
:layout => false
}
# format.html { redirect_to @thema, notice: 'Attachment was successfully created.' }
format.json { render json: {files: [@attachment.to_jq_upload]}, status: :created, location: [@thema, @attachment]}
else
format.html { render action: "new" }
format.json { render json: @attachment.errors, status: :unprocessable_entity }
format.js { render action: "new.js.erb"}
end
end
end

View File

@@ -32,7 +32,8 @@ class ThemenController < ApplicationController
end
def verwalten
@thema = Thema.find(params[:id])
unless (@thema.wikiname.empty? || @thema.wikiname.nil?)
@attachment=Attachment.new
unless (@thema.is_wiki?)
redirect_to verwalten_wiki_path(Wiki.find(@thema.id))
end
@@ -58,7 +59,10 @@ class ThemenController < ApplicationController
# GET /themen/1/edit
def edit
@thema = Thema.find(params[:id])
unless ( @thema.wikiname.nil? || @thema.wikiname.empty? )
redirect_to edit_wiki_path(Wiki.find(@thema.id))
return
end
respond_to do |format|
format.html
format.js
@@ -93,6 +97,7 @@ class ThemenController < ApplicationController
def attachments
@thema = Thema.find(params[:id])
@attachments=@thema.attachments
@attachment=Attachment.new
respond_to do |format|
format.js
end

View File

@@ -23,7 +23,11 @@ class WikisController < ApplicationController
end
def edit
@wiki = Wiki.find(params[:id])
respond_to do |format|
format.html
format.js
end
end
def update

View File

@@ -12,9 +12,22 @@
class Attachment < ActiveRecord::Base
has_paper_trail
attr_accessible :name, :datei
attr_accessible :name, :datei, :datei_cache
belongs_to :thema
mount_uploader :datei, AttachmentUploader
validates :thema, :presence => true
validates :name, :presence => true
def to_jq_upload
{
"id" => read_attribute(:id),
"title" => read_attribute(:title),
"description" => read_attribute(:desc),
"name" => read_attribute(:title),
"size" => datei.size,
"url" => datei.url,
"thumbnail_url" => datei.thumb.url,
"delete_type" => "DELETE"
}
end
end

View File

@@ -14,8 +14,8 @@
class Gremium < ActiveRecord::Base
TYPEN={1=>"offiziell", 2=>"offiziell-temporär", 3 => "inoffiziell",4=>"inoffiziell-tempo", 11=> "berufungskommission",12=> "habilitationskommission" } # Kategorien, im Wesentlichen wichtig für Listung oder nicht Listung
GESCHLECHT={0=>"saechlich", 1 => "maennlich", 2 => "weiblich"} # Geschlecht des Gremiums zur richtige Deklination
ART2FALL={0=>"des", 1=>"des",2=>"der"} # Artikel 2.Fall abhängig vom Geschlecht
ART4FALL={0=>"das", 1=>"den",2=>"die"} # Artikel 2.Fall abhängig vom Geschlecht
ART2FALL={0=>"des", 1=>"des",2=>"der"} # Artikel 2.Fall abhängig vom Geschlecht
ART4FALL={0=>"das", 1=>"den",2=>"die"} # Artikel 2.Fall abhängig vom Geschlecht
FILTER={11=>I18n.t("gremium.filter.berufung.title"),12=>I18n.t("gremium.filter.habil.title")}
TEXT={11=>I18n.t("gremium.filter.berufung.text"),12=>I18n.t("gremium.filter.habil.text")}

View File

@@ -23,7 +23,7 @@ class Thema < ActiveRecord::Base
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
def is_wiki?
wikiname.empty? || wikiname.nil?
wikiname.nil? || wikiname.empty?
end
def text_first_words
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])

View File

@@ -6,6 +6,9 @@ class AttachmentUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
def root
Rails.root.join 'public/'
end
# Choose what kind of storage to use for this uploader:
storage :file
@@ -20,6 +23,9 @@ class AttachmentUploader < CarrierWave::Uploader::Base
version :thumb do
process :resize_to_fill => [64, 64]
end
version :thumb_small do
process :resize_to_fill => [32, 32]
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url

View File

@@ -1,9 +1,9 @@
<% data_ext = attachment.datei.file.extension.downcase %>
<%= attachment.name %> </br>
<% if (!["jpg","png","jpeg"].find_index(data_ext).nil?) %>
<%= image_tag attachment.datei.thumb.url %>
<% else %>
<%= image_tag "pdf-logo.jpg" %>
<% end %>
<%= attachment.name %>

View File

@@ -0,0 +1,143 @@
<div class="container-fluid">
<%= semantic_form_for [@thema,@attachment], :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-fluid">
<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 :datei, :multiple=>true %>
<% f.input :thema %>
</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();
});
$('#attachment_datei').attr('name', 'attachment[datei]');
$('#attachment_datei').fileupload();
});
</script>

View File

@@ -10,3 +10,5 @@
<%= f.action :submit, :as => :input %>
<% end %>
<% end %>
<%= tinymce %>

View File

@@ -10,3 +10,4 @@
<%= f.action :submit, :as => :input %>
<% end %>
<% end %>
<%= tinymce %>

View File

@@ -2,11 +2,17 @@
<% attachment_list.each do |a| %>
<tr>
<td>
<%= link_to a.datei.url do %>
<%= render a %>
<% end %>
</td>
<% if editor %>
<td>
<%= link_to "Edit", edit_thema_attachment_path(a.thema,a) %>
<%= link_to "Delete", thema_attachment_path(a.thema,a), method: "DELETE", confirm: "Sure?" %>
</td>
<% end %>
</tr>
<% end %>
</table>

View File

@@ -0,0 +1,3 @@
<%= render :partial=>"attachments/form_bulk" %>
<%= render partial: "themen/attachment_list", object:@thema.attachments ,locals: {:editor => true}%>

View File

@@ -2,7 +2,7 @@
<div class="container-fluid">
<%= semantic_form_for @thema, :remote=>true do |f| %>
<%= semantic_form_for @thema, :remote=>remote do |f| %>
<%= f.inputs do %>
<div class="row-fluid">
<div class="span6">

View File

@@ -1,18 +1,22 @@
<a name="thema_<%=small.id%>" href="#<%=small.id%>">
<h2><%= small.title %></h2>
</a>
<a name="thema_<%=small.id%>" href="#<%=small.id%>">
<h2><%= small.title %></h2>
</a>
<%= raw(small.text) %>
<br/>
<%= raw("<b>FAQs:</b>") unless small.fragen.empty? %>
<%= raw("<b>FAQs:</b>") unless small.fragen.empty? %>
<br/>
<% small.fragen.each do |frage| %>
<p>
<b> <%= frage.title %> </b> <br/>
<%= raw(frage.text) %>
<b> <%= frage.title %> </b> <br/>
<%= raw(frage.text) %>
</p>
<br/>
<% end %>
<%= render partial: "themen/attachment_list", object: small.attachments, locals:{editor: false} unless small.attachments.empty? %>
<br/>
<%
@small_elements = []
@small_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>small} if can? :edit, small

View File

@@ -1 +1 @@
$("#themaview").html("<%= escape_javascript(raw("<h2>"+I18n.t('thema.show')+"</h2>")+render(:partial=>"themen/attachment_list", :object=>@attachments) )%>");
$("#themaview").html("<%= escape_javascript(raw("<h2>"+I18n.t('thema.show')+"</h2>")+render(:partial=>"themen/attachment_verwalten") )%>");

View File

@@ -1,5 +1,5 @@
<div id="themaview">
<h1>Editing thema</h1>
<%= render 'form' %>
<%= render 'form' , :locals=>{:remote=>false}, :remote=>false %>
</div>
</br><%= link_to 'Back', @thema %>

View File

@@ -1 +1 @@
$("#themaview").html("<%= escape_javascript(raw("<h2>"+I18n.t('thema.edit')+"</h2>")+render(:partial=>"themen/form") )%>");
$("#themaview").html("<%= escape_javascript(raw("<h2>"+I18n.t('thema.edit')+"</h2>")+render(:partial=>"themen/form", :locals=>{:remote=>true}) )%>");

View File

@@ -1,6 +1,9 @@
<p id="notice"><%= notice %></p>
<h1><%= @thema.title %></h1>
<div class="container-fluid">
<div class="row-fluid">
<div class="span6">
<p>
<%= raw(@thema.text) %>
</p>
@@ -11,16 +14,22 @@
-->
<%= render :partial=>'layouts/pretty_toolbar' %>
<h2><%= I18n.t('attachment.title')%>:</h2>
<div id="attachmentform">
</div>
<%= render partial: "attachment_verwalten" %>
<%= render :partial => "themen/select", :object => @thema, :locals=>{:editor => :false} %>
</div>
<div class="span6">
<%= render :partial=>'themen/fragen' %>
<!--
<%= link_to 'Neue Frage', new_frage_path %> <br/>
-->
<br/>
<h2><%= I18n.t('attachment.title')%>:</h2>
<div id="attachmentform">
</div>
<%= link_to new_thema_attachment_path(@thema) ,:remote=>true do %> new Attachment <% end %>
<%= render :partial => "themen/select", :object => @thema, :locals=>{:editor => :false} %>
<%= link_to I18n.t('common.back'), themengruppen_path, :class=>:btn %>
</div>
</div>
</div>

View File

@@ -1,6 +1,6 @@
<%= tinymce_assets %>
<div class="container-fluid">
<%= semantic_form_for @wiki do |f| %>
<%= semantic_form_for @wiki, :remote=>remote do |f| %>
<%= f.inputs do %>
<div class="row-fluid">
<div class="span6">

View File

@@ -1,5 +1,5 @@
<div id="themaview">
<h1>Editing thema</h1>
<%= render 'form' %>
<%= render 'form', :remote=>false, :locals=>{:remote=>false} %>
</div>
</br><%= link_to 'Back', @thema %>

View File

@@ -0,0 +1 @@
$("#themaview").html("<%= escape_javascript(raw("<h2>"+I18n.t('wiki.edit')+"</h2>")+render(:partial=>"wikis/form", :locals=>{:remote=>true}) )%>");