Wiki integriert in HP
This commit is contained in:
5
Gemfile
5
Gemfile
@@ -72,8 +72,9 @@ gem 'paperclip' ,'~>3.4.0'
|
|||||||
|
|
||||||
gem 'git'
|
gem 'git'
|
||||||
gem 'haml'
|
gem 'haml'
|
||||||
#gem 'RedCloth'
|
gem 'RedCloth'
|
||||||
#gem 'gollum'
|
gem 'wikicloth'
|
||||||
|
gem 'gollum-lib'
|
||||||
gem 'awesome_nested_set'
|
gem 'awesome_nested_set'
|
||||||
gem 'annotate', ">=2.5.0"
|
gem 'annotate', ">=2.5.0"
|
||||||
gem 'carrierwave', "~>0.9.0"
|
gem 'carrierwave', "~>0.9.0"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ class HomeController < ApplicationController
|
|||||||
def intern
|
def intern
|
||||||
authorize! :seeintern, User
|
authorize! :seeintern, User
|
||||||
@neuigkeiten = Neuigkeit.intern.recent
|
@neuigkeiten = Neuigkeit.intern.recent
|
||||||
|
@themengruppen=Themengruppe.intern
|
||||||
end
|
end
|
||||||
def startdev
|
def startdev
|
||||||
render 'setup_fetsite_dev'
|
render 'setup_fetsite_dev'
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ class ThemenController < ApplicationController
|
|||||||
end
|
end
|
||||||
def verwalten
|
def verwalten
|
||||||
@thema = Thema.find(params[:id])
|
@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
|
@fragen=@thema.fragen
|
||||||
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>"Verwalten", :path=>verwalten_thema_path(@thema)}]
|
@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
|
# GET /themen/1/edit
|
||||||
def edit
|
def edit
|
||||||
@thema = Thema.find(params[:id])
|
@thema = Thema.find(params[:id])
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.js
|
format.js
|
||||||
|
|||||||
46
app/controllers/wikis_controller.rb
Normal file
46
app/controllers/wikis_controller.rb
Normal 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
|
||||||
@@ -22,7 +22,9 @@ class Thema < ActiveRecord::Base
|
|||||||
validates :text, :presence => true
|
validates :text, :presence => true
|
||||||
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
|
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
|
||||||
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
|
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
|
||||||
|
def is_wiki?
|
||||||
|
wikiname.empty? || wikiname.nil?
|
||||||
|
end
|
||||||
def text_first_words
|
def text_first_words
|
||||||
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
|
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
|
||||||
words=md[:text].split(" ") unless md.nil?
|
words=md[:text].split(" ") unless md.nil?
|
||||||
|
|||||||
@@ -20,4 +20,17 @@ class Themengruppe < ActiveRecord::Base
|
|||||||
validates :text, :presence => true
|
validates :text, :presence => true
|
||||||
|
|
||||||
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => 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
|
end
|
||||||
|
|||||||
73
app/models/wiki.rb
Normal file
73
app/models/wiki.rb
Normal 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
|
||||||
@@ -4,6 +4,17 @@
|
|||||||
<div class="span6">
|
<div class="span6">
|
||||||
<%= link_to "Adressliste", internlist_fetprofiles_path %>
|
<%= link_to "Adressliste", internlist_fetprofiles_path %>
|
||||||
<%= link_to "Internes Nachschlagewerk" %>
|
<%= 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>
|
||||||
<div class="span6">
|
<div class="span6">
|
||||||
<h2>Neuigkeiten</h2>
|
<h2>Neuigkeiten</h2>
|
||||||
|
|||||||
@@ -5,5 +5,3 @@
|
|||||||
|
|
||||||
<%= render :partial=>'layouts/pretty_toolbar' %>
|
<%= 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} %>
|
|
||||||
|
|||||||
@@ -1,29 +1,21 @@
|
|||||||
<div class="content-wrap content-column">
|
<div class="content-wrap content-column">
|
||||||
<%= render :partial=>'layouts/pretty_toolbar' %>
|
<%= render :partial=>'layouts/pretty_toolbar' %>
|
||||||
<p> <%= link_to "FAQS", faqs_themengruppen_path,class: :btn %></p>
|
<p>
|
||||||
<ul class="unstyled linkbox-list">
|
<%= link_to "FAQS", faqs_themengruppen_path,class: :btn %>
|
||||||
|
</p>
|
||||||
|
<ul class="unstyled linkbox-list">
|
||||||
<li>
|
<li>
|
||||||
<% @themengruppen.each do |themengruppe| %>
|
<% @themengruppen.each do |themengruppe| %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<%= render themengruppe %>
|
<%= render themengruppe if can?(:show,themengruppe)%>
|
||||||
<br/>
|
|
||||||
<div class="row-fluid">
|
|
||||||
<!--
|
|
||||||
<%= link_to 'Edit', edit_themengruppe_path(themengruppe) %>
|
|
||||||
-->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script class="hidden-phone">
|
<script class="hidden-phone">
|
||||||
|
|
||||||
<!-- make_equal_height();
|
<!-- make_equal_height();
|
||||||
|
|||||||
51
app/views/themes/blue1/home/index.html.erb
Normal file
51
app/views/themes/blue1/home/index.html.erb
Normal 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>
|
||||||
|
|
||||||
38
app/views/wikis/_form.html.erb
Normal file
38
app/views/wikis/_form.html.erb
Normal 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>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
5
app/views/wikis/edit.html.erb
Normal file
5
app/views/wikis/edit.html.erb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<div id="themaview">
|
||||||
|
<h1>Editing thema</h1>
|
||||||
|
<%= render 'form' %>
|
||||||
|
</div>
|
||||||
|
</br><%= link_to 'Back', @thema %>
|
||||||
9
app/views/wikis/show.html.erb
Normal file
9
app/views/wikis/show.html.erb
Normal 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' %>
|
||||||
|
|
||||||
8
app/views/wikis/verwalten.html.erb
Normal file
8
app/views/wikis/verwalten.html.erb
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
verwalte ein wiki
|
||||||
|
|
||||||
|
<%= @wiki %>
|
||||||
|
|
||||||
|
<%= render :partial=>'layouts/pretty_toolbar' %>
|
||||||
|
|
||||||
|
<%= debug @wiki %>
|
||||||
|
<%= debug params %>
|
||||||
@@ -19,7 +19,21 @@
|
|||||||
end
|
end
|
||||||
|
|
||||||
devise_for :users , :controllers=>{:omniauth_callbacks=> "users/omniauth_callbacks"}
|
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 ':locale' do
|
||||||
scope '(t/:theme)' do
|
scope '(t/:theme)' do
|
||||||
# Studien
|
# Studien
|
||||||
|
|||||||
7
db/migrate/20140529120536_add_wiki_to_thema.rb
Normal file
7
db/migrate/20140529120536_add_wiki_to_thema.rb
Normal 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
|
||||||
5
db/migrate/20140601114003_add_wiki_to_themengruppen.rb
Normal file
5
db/migrate/20140601114003_add_wiki_to_themengruppen.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
class AddWikiToThemengruppen < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :themengruppen, :wiki_default, :boolean
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user