Jump to content


Foto

Einfaches Dokumentationssystem mit Markdown


No replies to this topic

#1 Thomas

Thomas

    Member

  • Adminstrator
  • PIPPIP
  • 86 Beiträge:

Geschrieben 03 Februar 2013 - 14:57

Für eine Seite brauchte ich eine einfaches Dokumentationssystem und für die einfache Formattierung wollte ich die Markdown-Syntax verwenden. Da ich auf Anhieb nichts entsprechendes finden konnte, habe ich das schnell selbst geschrieben.

 

Unter www.domain.tld/guide sollen die Hilfeseiten erscheinen und dann z.B. www.domain.tld/guide/Eintrag für eine Unterseite.

 

Dazu muss zunächst eine route angelegt werden:

 

match "/guide/*name", :to => 'guide#show'
match "/guide", :to => 'guide#show'

Der Controller hat für Rails Verhältnisse recht viel Code für eine Methode:

 

class GuideController < ApplicationController
 
  def show
    @title = "Dokumentation und Hilfe"
    @path_elements = request.path.split('/')
    @file2 = @path_elements[@path_elements.size-1]
    @path_elements.slice!(1)
    @path = @path_elements[0..-2].join("/")
    
    if params[:name].nil?
      @file = "index.md"
    else
      if /^[0-9A-Za-z_\/]+$/.match(@file2)
        @file = @file2.to_s + ".md"
      else
        @file = "index.md"
      end
    end
    root = Rails.root
    path = Dir.chdir("#{root}/app/docs#{@path}")
    @current_path = "#{root}/app/docs#{@path}"
    
    @files = Dir.glob("*.md")
    # @dirs = Dir.glob('*').select { |fn| File.directory?(fn) }
    if FileTest.exists?(@current_path + "/" + @file)
      @content = File.read(@current_path + "/" + @file)
    else
      redirect_to guide_path
    end
    @stand = File.mtime(@current_path + "/" + @file)
  end
end

Die Auflistung aller Hilfedateien im aktuellen Verzeichnis erfolgt über

 

<ul class="nav nav-list">
            <li class="nav-header">Dokumentation &amp; Hilfe</li>
            <li><%= link_to "Startseite", guide_path %></li>
            <% @files.each do | file | %>
                <li><%= link_to file.to_s.gsub('.md', '').humanize(), guide_path + @path + "/" + file.to_s.gsub('.md', '') unless file == "index.md" %>
            <% end %>
</ul>

und in dem Beispiel habe ich noch ein wenig HTML-Markup von der Twitter Bootstrap übrig gelassen.

 

Ausgabe des Dateinhalts:

 

<%= markdown(@content )%>

Das Ergebnis könnt Ihr unter http://www.konzertfreun.de/guide sehen.





Antworten



  


0 Besucher lesen dieses Thema

0 members, 0 guests, 0 anonymous users