infocalypse

(djk)
2009-11-11: Simplified creation of wiki_root dir by fn-wiki create config. Added

Simplified creation of wiki_root dir by fn-wiki create config. Added better default text.

diff --git a/fniki/default_files/wikitext/EditingTips b/fniki/default_files/wikitext/EditingTips
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/EditingTips
@@ -0,0 +1,41 @@
+Names of pages have to LookLikeThis.

+It's called a WikiName.

+If you write a word that LookLikeThis, it will be automatically turned into a link.

+

+Be aware that PikiPiki does not lock pages during editing, so if you pause for a long time on the edit screen you may overwrite somebody else's changes.

+

+Leave blank lines between paragraphs.

+

+You can also write ''italics'' and '''bold'''.

+To write italics, enclose the text in double single quotes.

+To write bold, enclose the text in triple single quotes.

+If you can't figure out what I mean, click EditText to look at the source for this page.

+

+If you indent text

+

+  like this, then it is indented in the output

+

+    you can have multiple levels of indent

+

+And if you put asterisks at the start of the line

+

+  * you get a 

+  * bulleted

+  * list

+    * which can also be indented

+      * to several levels

+

+To insert program source without reformatting in a monospace font, use three curly braces:

+

+{{{

+  public static void main(String[] args) {

+    out.println("Hello");

+  }

+}}}

+

+Just like that.

+

+Now click EditText in the footer to see the markup for this page, and try it yourself in PikiSandBox.

+

+----

+Contributors and PikiGurus: JohnFarrell, MartinPool
\ No newline at end of file
diff --git a/fniki/default_files/wikitext/FindPage b/fniki/default_files/wikitext/FindPage
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/FindPage
@@ -0,0 +1,29 @@
+Here are some good starting points for browsing:
+
+ * FrontPage -- top of this system
+ * RecentChanges recorded automatically
+ * TipsForBeginners
+ * TitleIndex -- all pages in the database
+ * WordIndex -- all words in all titles
+
+----
+The following interface only works if you are running the wiki 
+locally.  No in Freenet search ;-)
+----
+
+You can use this page to search all entries in PikiPiki.  Searches are not case sensitive.
+
+Here's a title search.  Try something like ''manager'':
+
+ [[TitleSearch]]
+
+Here's a full-text search.
+
+ [[FullSearch]]
+
+You can also use regular expressions, such as
+
+{{{    seriali[sz]e}}}
+
+Or go direct to a page, or create a new page by entering its name here:
+  [[GoTo]]
\ No newline at end of file
diff --git a/fniki/default_files/wikitext/FreenetOnlyFeatures b/fniki/default_files/wikitext/FreenetOnlyFeatures
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/FreenetOnlyFeatures
@@ -0,0 +1,13 @@
+Links to freenet URIs are automatically hypertexted but they only work when the wiki is inserted into Freenet.
+
+freenet:USK@qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index-text/81/
+
+Normal 'http:' links are also hypertexted.  They will automatically be converted into the _CHECKED_HTTP_ links when the wiki is inserted into freenet.
+
+Images with links to Freenet URIs are supported, but you can only see them when the wiki is inserted into Freenet.
+
+''Remember'' to use 'freenet:' at the start of the URI.
+
+[[[freenet:USK@qd-hk0vHYg7YvK2BQsJMcUD5QSF0tDkgnnF6lnWUH0g,xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index-text/81/activelink.png|(alt tag for image)|(title tag for image]]]
+
+Use the edit text link below to view the markup for these features.
\ No newline at end of file
diff --git a/fniki/default_files/wikitext/FrontPage b/fniki/default_files/wikitext/FrontPage
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/FrontPage
@@ -0,0 +1,24 @@
+'''Minimal wiki skeleton directory to start your wiki from'''
+
+fniki is based on PikiPiki.
+
+TitleIndex has a list of all pages.
+
+These pages have examples of wiki markup:
+ * TipsForBeginners, EditingTips, HorizontalRules
+ * FreenetOnlyFeatures
+
+
+Removing pages isn't supported though the wiki interface (yet!).
+You can manually remove pages by removing files from the:
+{{{
+<repo root>/wiki_root/wikitext
+}}}
+directory.
+
+These pages have embedded macros. You might want to take a look at
+the document source before you delete them.
+
+ * FindPage,RecentChanges,TitleIndex, WordIndex
+
+
diff --git a/fniki/default_files/wikitext/HorizontalRules b/fniki/default_files/wikitext/HorizontalRules
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/HorizontalRules
@@ -0,0 +1,7 @@
+You can rule a line across the page by typing four or more dashes.  In PikiPiki the number of dashes in a horizontal rule markup determine how thick it is: use them in moderation.  (A suggestion from JohnFarrell.)

+

+---

+----

+-----

+------

+-------
\ No newline at end of file
diff --git a/fniki/default_files/wikitext/PikiPiki b/fniki/default_files/wikitext/PikiPiki
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/PikiPiki
@@ -0,0 +1,7 @@
+I'm using piki as the wiki engine for this project, mostly since it is so small and easy to understand / modify even if it is a little old.  Thanks to MartinPool for making this code available. I started hacking from:
+
+sha1:e71779f4f8fea7dc851ffb1e74f18c613a94b086 piki-1.62.zip
+
+which I got here:
+
+http://sourcefrog.net/projects/piki/
diff --git a/fniki/default_files/wikitext/RecentChanges b/fniki/default_files/wikitext/RecentChanges
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/RecentChanges
@@ -0,0 +1,1 @@
+[[RecentChanges]]
\ No newline at end of file
diff --git a/fniki/default_files/wikitext/TipsForBeginners b/fniki/default_files/wikitext/TipsForBeginners
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/TipsForBeginners
@@ -0,0 +1,4 @@
+

+ * The highlighted PageTitle shows a list of all pages that link to the current page.  It even works on pages that are not defined yet.

+

+ * A question mark after a link (e.g. NoSuchPage) means that the page is not defined: you can click the question mark to offer a definition.
\ No newline at end of file
diff --git a/fniki/default_files/wikitext/TitleIndex b/fniki/default_files/wikitext/TitleIndex
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/TitleIndex
@@ -0,0 +1,10 @@
+This is an index of all pages in PikiPiki.  

+

+See also:

+

+  * WordIndex -- a permuted index of all words occuring in titles

+  * RecentChanges

+

+----

+

+[[TitleIndex]]
\ No newline at end of file
diff --git a/fniki/default_files/wikitext/UploadFile b/fniki/default_files/wikitext/UploadFile
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/UploadFile
@@ -0,0 +1,1 @@
+Uploading files isn't implemented.
\ No newline at end of file
diff --git a/fniki/default_files/wikitext/WordIndex b/fniki/default_files/wikitext/WordIndex
new file mode 100644
--- /dev/null
+++ b/fniki/default_files/wikitext/WordIndex
@@ -0,0 +1,10 @@
+This is an index of all words occuring in page titles.

+

+See also:

+

+ * TitleIndex -- a shorter index

+ * RecentChanges

+

+----

+

+[[WordIndex]]
\ No newline at end of file
diff --git a/fniki/piki.css b/fniki/default_files/www/piki.css
rename from fniki/piki.css
rename to fniki/default_files/www/piki.css
diff --git a/fniki/pikipiki-logo.png b/fniki/default_files/www/pikipiki-logo.png
rename from fniki/pikipiki-logo.png
rename to fniki/default_files/www/pikipiki-logo.png
diff --git a/fniki/piki.py b/fniki/piki.py
--- a/fniki/piki.py
+++ b/fniki/piki.py
@@ -690,22 +690,13 @@ def set_data_dir_from_cfg(base_path=None
     reset_root_dir(root_dir)
 
 import shutil
-def create_empty_wiki(base_path, www_src):
+def create_default_wiki(base_path):
     if os.path.exists(base_path):
         raise IOError("The directory already exists.")
-    os.makedirs(base_path)
-    new_text = os.path.join(base_path, 'wikitext')
-    new_www = os.path.join(base_path, 'www')
-    os.makedirs(new_text)
-    os.makedirs(new_www)
-    out = open(os.path.join(new_text, 'FrontPage'), 'wt')
-    out.write("Empty wiki.\nStart editing :-)\n")
-    out.close()
-    if www_src is None:
-        return
-    for name in PIKI_REQUIRED_FILES:
-        shutil.copyfile(os.path.join(www_src, name),
-                        os.path.join(new_www, name))
+
+    shutil.copytree(os.path.join(os.path.dirname(__file__),
+                                 'default_files'),
+                    base_path)
 
 def dump(output_dir, wiki_root):
     global form, scrub_links
diff --git a/infocalypse/__init__.py b/infocalypse/__init__.py
--- a/infocalypse/__init__.py
+++ b/infocalypse/__init__.py
@@ -740,7 +740,8 @@ cmdtable = {
     "fn-wiki": (infocalypse_wiki,
                      [('', 'run', None, "start a local http server " +
                        "displaying a wiki"),
-                      ('', 'createconfig', None, "create default fnwiki.cfg"),
+                      ('', 'createconfig', None, "create default fnwiki.cfg " +
+                       "and skeleton wiki_root dir"),
                       ('', 'http_port', 8081, "port for http server"),
                       ('', 'http_bind', 'localhost', "interface http " +
                        "listens on, '' to listen on all"),],
diff --git a/infocalypse/wikicmds.py b/infocalypse/wikicmds.py
--- a/infocalypse/wikicmds.py
+++ b/infocalypse/wikicmds.py
@@ -32,10 +32,7 @@ from pathhacks import add_parallel_sys_p
 add_parallel_sys_path('fniki')
 
 import servepiki
-from piki import create_empty_wiki
-
-# piki's required files are in that directory.
-PIKI_WWW_SRC = os.path.dirname(servepiki.__file__)
+from piki import create_default_wiki
 
 def execute_wiki(ui_, repo, params):
     """ Run the wiki command. """
@@ -59,7 +56,7 @@ def execute_wiki(ui_, repo, params):
             raise util.Abort("The wiki_root subdirectory already exists! " +
                              "Move it out of the way to continue.")
 
-        create_empty_wiki(os.path.join(repo.root, 'wiki_root'),  PIKI_WWW_SRC)
+        create_default_wiki(os.path.join(repo.root, 'wiki_root'))
         ui_.status("Created skeleton wiki_root dir.\n")
         write_default_config(ui_, repo, True)
         return