Merge branch 'wiki'

This commit is contained in:
2014-06-04 23:09:26 +05:30
18 changed files with 309 additions and 30 deletions

View File

@@ -72,8 +72,9 @@ gem 'paperclip' ,'~>3.4.0'
gem 'git'
gem 'haml'
#gem 'RedCloth'
#gem 'gollum'
gem 'RedCloth'
gem 'wikicloth'
gem 'gollum-lib'
gem 'awesome_nested_set'
gem 'annotate', ">=2.5.0"
gem 'carrierwave', "~>0.9.0"

View File

@@ -12,6 +12,7 @@ class HomeController < ApplicationController
def intern
authorize! :seeintern, User
@neuigkeiten = Neuigkeit.intern.recent
@themengruppen=Themengruppe.intern
end
def startdev
render 'setup_fetsite_dev'

View File

@@ -32,6 +32,10 @@ class ThemenController < ApplicationController
end
def verwalten
@thema = Thema.find(params[:id])
unless (@thema.wikiname.empty? || @thema.wikiname.nil?)
redirect_to verwalten_wiki_path(Wiki.find(@thema.id))
end
@fragen=@thema.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>"Verwalten", :path=>verwalten_thema_path(@thema)}]
@@ -54,6 +58,7 @@ class ThemenController < ApplicationController
# GET /themen/1/edit
def edit
@thema = Thema.find(params[:id])
respond_to do |format|
format.html
format.js

View File

@@ -0,0 +1,46 @@
class WikisController < ApplicationController
load_and_authorize_resource
def show
@wiki = Wiki.find(params[:id])
@fragen = @wiki.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('wiki.edit'), :path=>verwalten_wiki_path(@wiki)}]
end
def wiki
@wiki = Wiki.find_or_init(params[:name])
@fragen = @wiki.fragen
@toolbar_elements = []
# @toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('wiki.edit'), :path=>verwalten_wiki_path(@wiki)}]
redirect_to wiki_path(@wiki)
end
def verwalten
@wiki = Wiki.find(params[:id])
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('wiki.edit'), :path=>edit_wiki_path(@wiki)}]
end
def edit
@wiki = Wiki.find(params[:id])
end
def update
@wiki = Wiki.find(params[:id])
@themen = @wiki.themengruppe.themen.order(:priority).reverse
@wiki.raw_data=params[:wiki][:raw_data]
respond_to do |format|
if @wiki.update_attributes(params[:wiki])
format.html { redirect_to @wiki, notice: 'Thema was successfully updated.' }
format.json { head :no_content }
format.js
else
format.html { render action: "edit" }
format.json { render json: @wiki.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
end

View File

@@ -22,7 +22,9 @@ class Thema < ActiveRecord::Base
validates :text, :presence => true
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?
end
def text_first_words
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
words=md[:text].split(" ") unless md.nil?

View File

@@ -20,4 +20,17 @@ class Themengruppe < ActiveRecord::Base
validates :text, :presence => true
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
scope :intern,-> {where(:public=>false)}
def self.find_wiki_default
where(:wiki_default=>true).first
end
def make_wiki_default
Themengruppe.where(:wiki_default=>:true).update_all(:wiki_default=>:false)
self.wiki_default=true;
self.save;
end
end

73
app/models/wiki.rb Normal file
View File

@@ -0,0 +1,73 @@
class Wiki < Thema
validates :wikiname, :uniqueness=>true, :presence=>true
after_initialize :load_wiki
attr_accessible :wikiname, :wikiformat, :hidelink, :raw_data
WIKIFORMATS={nil=> :textile, 0 =>:textile, 1=> :mediawiki}
def self.find_or_init(name)
w = Wiki.where(:wikiname=>name).first
page = is_file_availaible(name)
if w.nil?
unless page.nil?
w=Wiki.new(:wikiname=>name, :title=>name, :wikiformat=>Wiki::WIKIFORMATS.invert[page.format], :hidelink=>true)
else
w=Wiki.new(:wikiname=>name, :title=>name, :wikiformat=>0, :hidelink=>true)
wiki = Gollum::Wiki.new("../wiki.git", :base_path => "/wiki")
page=wiki.write_page(name, :textile, "ioi", self.commit)
w.reload_page
end
w.themengruppe = Themengruppe.find_wiki_default
w.raw_data="Neues Wiki"
w.save
end
w
end
def raw_data
self.page.raw_data
end
def raw_data=(data)
self.get_page(self.wikiname)
self.wiki.update_page(self.page, self.wikiname, Wiki::WIKIFORMATS[self.wikiformat], data, self.commit)
self.text=self.page.formatted_data
end
def page
self.get_page(wikiname) if @page.nil?
@page
end
def wiki
@wiki
end
def reload_page
self.get_page(self.wikiname)
end
protected
def self.is_file_availaible(name)
wiki = Gollum::Wiki.new("../wiki.git", :base_path => "/wiki")
wiki.page(name)
end
def load_wiki
@wiki = Gollum::Wiki.new("../wiki.git", :base_path => "/wiki")
end
def get_page(name)
@page= @wiki.page(name)
@page=self.wiki.write_page(self.wikiname, Wiki::WIKIFORMATS[self.wikiformat]," ",self.commit) if @page.nil?
@page
end
def commit
{message: "RailsUpdate", name:"SomeUser", email: "ttt@t"}
end
def self.commit
{message: "RailsUpdate", name:"SomeUser", email: "ttt@t"}
end
end

View File

@@ -4,6 +4,17 @@
<div class="span6">
<%= link_to "Adressliste", internlist_fetprofiles_path %>
<%= link_to "Internes Nachschlagewerk" %>
<ul class="unstyled linkbox-list">
<li>
<% @themengruppen.each do |themengruppe| %>
<div class="container-fluid">
<%= render themengruppe if can?(:show,themengruppe)%>
</div>
<% end %>
</li>
</ul>
</div>
<div class="span6">
<h2>Neuigkeiten</h2>

View File

@@ -5,5 +5,3 @@
<%= render :partial=>'layouts/pretty_toolbar' %>
<%= link_to new_thema_attachment_path(@thema) ,:remote=>true do %> new Attachment <% end %>
<%= render :partial => "themen/select", :object => @thema, :locals=>{:editor => :false} %>

View File

@@ -1,29 +1,21 @@
<div class="content-wrap content-column">
<%= render :partial=>'layouts/pretty_toolbar' %>
<p> <%= link_to "FAQS", faqs_themengruppen_path,class: :btn %></p>
<ul class="unstyled linkbox-list">
<%= render :partial=>'layouts/pretty_toolbar' %>
<p>
<%= link_to "FAQS", faqs_themengruppen_path,class: :btn %>
</p>
<ul class="unstyled linkbox-list">
<li>
<% @themengruppen.each do |themengruppe| %>
<div class="container-fluid">
<%= render themengruppe %>
<br/>
<div class="row-fluid">
<!--
<%= link_to 'Edit', edit_themengruppe_path(themengruppe) %>
-->
<%= render themengruppe if can?(:show,themengruppe)%>
</div>
</div>
<% end %>
</li>
</ul>
</ul>
<br/>
<br/>
</div>
<script class="hidden-phone">
<!-- make_equal_height();

View File

@@ -0,0 +1,51 @@
<div class="content-wrap content-column">
<h1><%= I18n.t('home.willkommen') %></h1></p>
<div class="container-fluid">
<div class="row-fluid">
<div class="span6">
<p>
<%= link_to I18n.t('home.login'), user_omniauth_authorize_path(:ldap) %>
</p>
<div class="alert">
<h2>Beta Test</h2>
<p>Die Webseite befindet sich derzeit in einem Entwicklungsstadium,
volle Funktionsfähigkeit ist noch nicht erreicht. Bitte Featurerequests und
Fehlermeldungen auf GitHub melden.
</p>
<p>
<%= link_to "Issues", "http://www.github.com/fetsite/fetsite/issues" %>
</p>
<p>
Bezüglich Design und Steuerung sind Vorschläge erwünscht.
</p>
<p><%= link_to "Steuerelemente und Komponenten", "http://getbootstrap.com/2.3.2/index.html" %></p>
<p>Um bei der Entwicklung mitzuhelfen braucht nur Ruby on Rails installiert werden</p>
<p><%= link_to "Getting Started" , startdev_home_index_path %></p>
<p> Das Kalender Feature wird überarbeitet, in Zukunft soll folgender Link nicht mehr funktionieren <%= link_to "Kalender", calendars_path %>
</p>
</div>
<%= link_to "Entwicklungsstatus" , dev_home_index_path %>
<%= render 'beispiele' %>
</div>
<div class="span6">
<ul class="unstyled linkbox-list" style="max-width:70em">
<% @neuigkeiten.each do |n| %>
<li><%= render n if can?(:show, n) %> </li>
<% end %>
</ul>
Verschiedene Styles
<ul>
<li> <%= link_to "Darkblue", home_index_path({:theme=>"darkblue"}) %></li>
<li> <%= link_to "Blue1", home_index_path({:theme=>"blue1"}) %></li>
<li> <%= link_to "2003", home_index_path({:theme=>"2003"}) %></li>
<li> <%= link_to "white_1", home_index_path({:theme=>"white_1"}) %></li>
</ul>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,38 @@
<%= tinymce_assets %>
<div class="container-fluid">
<%= semantic_form_for @wiki do |f| %>
<%= f.inputs do %>
<div class="row-fluid">
<div class="span6">
<%= f.input :title %>
</div>
<div class="span6">
<%= f.input :themengruppe %>
</div>
</div>
<div class="row-fluid">
<div class="span6">
<%= f.input :wikiformat, :as=>:select, :collection=>Wiki::WIKIFORMATS.invert %>
</div>
<div class="span6">
<%= f.input :hidelink, :as=>:boolean %>
<%= @wiki.wikiname %>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<%= f.input :raw_data, :label=>false,:as=>:text, :input_html=>{:rows=>20,:class=>"row-fluid"} %>
</div>
</div>
<%= f.actions do %>
<%= f.action :submit, :as => :button %>
<%= f.action :cancel, :as => :link %>
<% end %>
<% end %><% end %>
<%= tinymce %>
<h2>Attachments:</h2>

View File

@@ -0,0 +1,5 @@
<div id="themaview">
<h1>Editing thema</h1>
<%= render 'form' %>
</div>
</br><%= link_to 'Back', @thema %>

View File

@@ -0,0 +1,9 @@
<p id="notice"><%= notice %></p>
<%= link_to "Zurück", @wiki.themengruppe %>
<br>
<%= debug @wiki %>
<%= render :partial=>"themen/small", :object=>@wiki %>
<%= render :partial=>'layouts/pretty_toolbar' %>

View File

@@ -0,0 +1,8 @@
verwalte ein wiki
<%= @wiki %>
<%= render :partial=>'layouts/pretty_toolbar' %>
<%= debug @wiki %>
<%= debug params %>

View File

@@ -19,7 +19,21 @@
end
devise_for :users , :controllers=>{:omniauth_callbacks=> "users/omniauth_callbacks"}
scope '(:locale)' do
scope '(t/:theme)' do
get "wiki/:name", action: :wiki, controller: :wikis
resources :wikis do
member do
get :verwalten
end
end
end
end
# end
# end
scope ':locale' do
scope '(t/:theme)' do
# Studien

View File

@@ -0,0 +1,7 @@
class AddWikiToThema < ActiveRecord::Migration
def change
add_column :themen, :wikiname, :string
add_column :themen, :wikiformat, :integer
add_column :themen, :hidelink, :boolea
end
end

View File

@@ -0,0 +1,5 @@
class AddWikiToThemengruppen < ActiveRecord::Migration
def change
add_column :themengruppen, :wiki_default, :boolean
end
end