2009-07-15 5 views
0

Gibt es ein Wiki-Modul für asp.net Mvc oder soemthign, die relativ leicht angepasst werden können :)Ein Wiki für asp.net Mvc Wiki-Engine

alternativ gibt es irgendwelche Formatierer für den Wiki-Markup der vielleicht implment die gängigste Wiki-Markup-Formatierung usw.

+0

auch http://wikiplex.codeplex.com/ – Kumar

Antwort

0
private void ProcessLine(string line, TextWriter writer) 
    { 
     int state = 0; 
     int i = 0; 
     int wordStart = 0; 
     Action encode =() => HttpUtility.HtmlEncode(line[i].ToString(), writer); 
     Func<bool> isws =() => Char.IsWhiteSpace(line[i]); 

     for (i = 0; i < line.Length; ++i) 
     { 
      switch (state) 
      { 
       case 0: 
        if (line[i] == '*') 
        { 
         state = 1; 
        } 
        else if (line[i] == '/') 
        { 
         state = 4; 
        } 
        else if (line[i] == '[') 
        { 
         wordStart = i + 1; 
         state = 7; 
        } 
        else 
        { 
         encode(); 
        } 
        break; 

       case 1: //Start bold 
        if (isws()) 
        { 
         encode(); 
         state = 0; 
        } 
        else 
        { 
         writer.Write("<b>"); 
         encode(); 
         state = 2; 
        } 
        break; 

       case 2: //End bold 
        if (isws()) 
        { 
         encode(); 
         state = 3; 
        } 
        else if (line[i] == '*') 
        { 
         writer.Write("</b>"); 
         state = 0; 
        } 
        else 
        { 
         encode(); 
        } 
        break; 

       case 3: 
        if (isws()) 
        { 
         encode(); 
        } 
        else 
        { 
         encode(); 
         state = 2; 
        } 
        break; 

       case 4: //Start italics 
        if (isws()) 
        { 
         HttpUtility.HtmlEncode("/ ", writer); 
         state = 0; 
        } 
        else 
        { 
         writer.Write("<i>"); 
         encode(); 
         state = 5; 
        } 
        break; 

       case 5: //End italics 
        if (isws()) 
        { 
         encode(); 
         state = 6; 
        } 
        else if (line[i] == '/') 
        { 
         writer.Write("</i>"); 
         state = 0; 
        } 
        else 
        { 
         encode(); 
        } 
        break; 

       case 6: 
        if (isws()) 
        { 
         encode(); 
        } 
        else 
        { 
         encode(); 
         state = 5; 
        } 
        break; 

       case 7: //Start link 
        state = 8; 
        break; 
       case 8: //End link 
        if (line[i] == ']') 
        { 
         WriteLink(line.Substring(wordStart, i - wordStart), writer); 
         state = 0; 
        } 
        break; 
      } 
     } 

     // Clean up italics, bold etc. based on the state we were in at the end of the line. 
     switch (state) 
     { 
      case 0: 
       break; 
      case 1: 
       HttpUtility.HtmlEncode("*", writer); 
       break; 
      case 2: 
      case 3: 
       writer.Write("</b>"); 
       break; 
      case 4: 
       HttpUtility.HtmlEncode("/", writer); 
       break; 
      case 5: 
      case 6: 
       writer.Write("</i>"); 
       break; 
      case 7: 
       HttpUtility.HtmlEncode(line.Substring(wordStart), writer); 
       break; 
      case 8: 
       WriteLink(line.Substring(wordStart), writer); 
       break; 
     } 

    } 
+0

Der obige Code ändert das Verhalten so, dass alles, was in [] eingeschlossen ist, zu einer neuen oder bestehenden Seite verknüpft wird. Hoffe, dass Sie nach Kumar waren. – griegs

1

versuchen

MiniWiki

Es ist ziemlich einfach anzupassen. Dies ist eine voll funktionsfähige Wiki mit vielen der Eigenschaften von MediaWiki

+0

gescannt durch, konnte nicht finden Sie Informationen über die Markup, keine Hilfe dabei? – Kumar

+0

Das Markup befindet sich im Code. Es verwendet eine seltsame Notation, um einen Link zu einer neuen Seite zu erstellen, aber es funktioniert gut. Ich änderte den Code in meinem um eine bessere Notation zu akzeptieren und es dauerte nur etwa eine Stunde zu verstehen und anpassen. Werfen Sie einen Blick in die Datei WikiToHtmlFormatter.cs in MiniWiki.DomainModel für Details. – griegs

+0

Ich verfolgte den Wert rückwärts von 8 und ging den ganzen Weg in Code auf 7, aber verlor es irgendwo auf dem Weg, vielleicht, wenn Sie das Markup kennen, um das Tag zu generieren, kann ich es auf diese Weise durchlaufen – Kumar

1

Eine neuen mvc4-basierten Wiki-Engine bei http://lynxwiki.codeplex.com mit einer Lauf Version des Motors bei http://www.sapientier.com:88/LynxWiki/WikiTopic/Page/WikiRoot/WikiDir/HomePage

freigegeben wurde und es hat die Fähigkeit für dynamische Inhalte durch die Verwendung von eingebetteten IronPython Scripting

+1

Willkommen bei Stack Overflow! Danke, dass du deine Antwort geschrieben hast! Bitte lesen Sie die [FAQ zu Eigenwerbung] (http://stackoverflow.com/faq#promotion) sorgfältig durch. Beachten Sie außerdem, dass es erforderlich ist *, dass Sie jedes Mal einen Haftungsausschluss veröffentlichen, wenn Sie auf Ihre eigene Website/Ihr Produkt verlinken. –