removed lots of errors in makesite
authorSabine Engelhardt (Becker) <frosch@atari-frosch.de>
Tue, 11 Sep 2018 14:33:11 +0000 (16:33 +0200)
committerSabine Engelhardt (Becker) <frosch@atari-frosch.de>
Tue, 11 Sep 2018 14:33:11 +0000 (16:33 +0200)
17 files changed:
.gitignore
CHANGELOG [new file with mode: 0644]
ToDo
__pycache__/defaults.cpython-34.pyc
filters/__pycache__/atarifrosch.cpython-34.pyc
filters/atarifrosch.py
filters/saphisecke.py
filters/saphisecke.py~ [deleted file]
fullsettings.py
htmlglue.py [deleted file]
makesite.py [new file with mode: 0755]
preparesite.py
sites/atarifrosch/DEFAULTS/settings.py
sites/atarifrosch/SNIPPETS/flattrbutton.htm [deleted file]
sites/atarifrosch/SNIPPETS/flattrscript.htm [deleted file]
sites/atarifrosch/SNIPPETS/head.htm [deleted file]
sites/atarifrosch/SNIPPETS/meta.flattrverify.htm [deleted file]

index 57e3ed8..1faf4b7 100644 (file)
@@ -2,4 +2,3 @@ __pycache__/
 */__pycache/
 html/
 sites/
-
diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644 (file)
index 0000000..7bd82ac
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,31 @@
+2018-09-10 frosch
+
+    * preparesite.py: define menuitem list in all menu.py first before 
+      appending menu items
+
+    * makesite.py: Fixed general import problem with own modules using
+      runpy.run_path, thx to <timo@chaosdorf.de> who directed me to
+      https://docs.python.org/3.5/library/runpy.html
+
+    * preparesite.py and makesite.py: Changed variable type and handling of
+      menuitems for menu.py; was defined as dict, but must be a list.
+
+    * settings.py for firstmenuline: css class can be empty, marked as '.'
+      (still not processed in preparesite and makesite!)
+
+    * settings.py and makesite.py: Modules imported with runpy cannot be
+      used the same way as before with __import__, but are now delivering
+      a dict; syntax changed
+
+    * makesite.py: Fixed lots of errors, mostly path and variable type
+      problems (still not running)
+
+
+2018-09-09 frosch
+
+    * preparesite.py: although it had worked before, now the script threw
+      path and variable errors. Fixed.
+
+    * makesite.py: Theoretically done, but completely untested.
+
+    * makesite.py: Fixed a problem with the logging.
diff --git a/ToDo b/ToDo
index 395ffb6..7bc0417 100644 (file)
--- a/ToDo
+++ b/ToDo
@@ -1,20 +1,55 @@
-General:
-
-* PROBLEM: fix git push
+in general:
 
+LICENSE missing
 
 preparesite.py:
 
-* FEAT: remove flattr support
-
+* NEW: Put data from filter to settings.py – possible?
 
 fullsettings.py:
 
 * FEAT: create function makehead
 
 
-htmlglue.py:
+makesite.py:
+
+* ERROR: created pages have several errors, like double \n, missing parts,
+  etc.
+
+* ERROR: in site atarifrosch file missing.htm is not found, although there
+
+* FEAT: compare file timestamps of pages and html, build new html if page is
+  newer or html does not exist at all. Needs no more arguments from the
+  command line.
 
-* FEAT: logging
 * FEAT: create sitemap.xml
+
+* FEAT: include content from other sites, like Piwigo (photos), Twitter,
+        GNUsocial, Mastodon, G+, a git, an rss feed, …
+
 * FEAT: create redirect for apache2 and nginx when moving a file?
+
+
+makefolder.py:
+
+(Re-)make folder, like after changing the menu, adding a new page, or adding
+a new (sub-)folder. Include in makesite.py, where useful.
+
+
+makepage.py:
+
+Rebuild a single page after changes in the content part. Include in
+makefolder.py, where useful.
+
+
+movepage.py:
+
+Move the content of a page to another folder, then rebuild both, the source
+folder and the targetted folder (especially menu.py).
+
+* FEAT: rebuild sitemap.xml
+
+
+htmlglue.py:
+
+Menu for using all functions of the project.
index efa49cf..2b83609 100644 (file)
Binary files a/__pycache__/defaults.cpython-34.pyc and b/__pycache__/defaults.cpython-34.pyc differ
index 58e3ae0..d473dae 100644 (file)
Binary files a/filters/__pycache__/atarifrosch.cpython-34.pyc and b/filters/__pycache__/atarifrosch.cpython-34.pyc differ
index c130715..5aa5418 100755 (executable)
@@ -3,7 +3,7 @@
 
 origpath = "/srv/atarifrosch/"
 fileext = ".html"
-targetpath = "/home/frosch/projekte/htmlglue/sites/atarifrosch/"
+targetpath = "/home/frosch/prog/htmlglue/sites/atarifrosch/"
 logfile = targetpath + "preparesite.log"
 loglevel = 5
 
@@ -68,7 +68,7 @@ ignorehtml = []
 # last line that has to be ignored. %% is the placeholder between start
 # and end.
 # Only preparesite.py changes this into a dictionary.
-# Do NOT ignore the menu here, as it needs a special 'treatment'.
+# Do NOT ignore the menu here, as it needs a special treatment.
 
 ignorehtml.append('<body> == <!--div#logo-->')
 ignorehtml.append('<div id="footer"> == </html>')
@@ -77,7 +77,7 @@ ignorehtml.append('<!-- AKVS body start v1.6 --> == <!-- AKVS body end -->')
 
 menustart = '<div id="menu">'
 menuend = '<!-- div#menu -->'
-firstmenuitem = 'menuitem.append(["htm", "home", "/index.html", "Startseite"])\n'
+firstmenuitem = 'menuitem.append(["htm home /index.html Startseite"])\n'
 
 headlinekey = "<h1>"
 
index eea2e14..97e7198 100755 (executable)
@@ -3,7 +3,7 @@
 
 origpath = "/srv/saphisecke/"
 fileext = ".html"
-targetpath = "/home/frosch/projekte/htmlglue/sites/saphisecke/"
+targetpath = "/home/frosch/prog/htmlglue/sites/saphisecke/"
 logfile = targetpath + "preparesite.log"
 loglevel = 5
 
@@ -30,7 +30,7 @@ ignorehtml.append('<div id="foot"> == </html>')
 
 menustart = '<div id="navi">'
 menuend = '<!-- div#navi -->'
-firstmenuitem = 'menuitem.append(["htm", "", "/index.html", "Startseite"])\n'
+firstmenuitem = 'menuitem.append(["htm . /index.html Startseite"])\n'
 
 headlinekey = "<h1>"
 
diff --git a/filters/saphisecke.py~ b/filters/saphisecke.py~
deleted file mode 100755 (executable)
index 5d05faf..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf8 -*-
-
-origpath = "/srv/saphisecke/"
-fileext = ".html"
-targetpath = "/home/frosch/projekte/htmlglue/sites/saphisecke/"
-logfile = targetpath + "preparesite.log"
-loglevel = 5
-
-oldenc = "iso8859-1"
-
-ignoredirs = []
-ignoredirs.append("/bilder")
-ignoredirs.append("/bilder/orig")
-ignoredirs.append("/stats")
-ignoredirs.append("/susilein/work")
-ignoredirs.append("/susilein/work/bak")
-
-ignorefiles = ["STANDARD.html"]
-
-ignorehtml = [] 
-# This defines a keyword from the first line and a keyword from the
-# last line that has to be ignored. %% is the placeholder between start
-# and end.
-# Only preparesite.py changes this into a dictionary.
-# Do NOT ignore the menu here, as it needs a special 'treatment'.
-
-ignorehtml.append('<body> == <div id="head">')
-ignorehtml.append('<div id="foot"> == </html>')
-
-menustart = '<div id="navi">'
-menuend = '<!-- div#navi -->'
-firstmenuitem = 'menuitem.append(["htm", "", "/index.html", "Startseite"])\n'
-
-headlinekey = "<h1>"
-
-contentstart = '<div id="content">'
-contentend = '</div><!-- div#content -->'
-
-# while reading the content, we can replace a few things
-# that are mostly left from the iso-latin age …
-replacement = {}
-replacement["<li> "] = "<li>"
-replacement["<p> "] = "<p>"
-replacement[" </"] = "</"
-replacement["&bdquo;"] = "„"
-replacement["&rdquo;"] = "“"
-replacement["&mdash;"] = "–"
-replacement["&reg;"] = "®"
-replacement["(tm)"] = "™"
-replacement["..."] = "…"
-replacement["&middot;"] = "·"
index 230483c..3456c18 100644 (file)
@@ -42,11 +42,11 @@ def makefoot(contentfile, targetfile, myurl):
 theme = "mytheme"
 
 # Standard protocol of the site (one out of "http", "https")
-# This statement can NOT be overwritten by a page's .py file!
+# This statement must NOT be overwritten by a page's .py file!
 proto = "https"
 
 # domain name of the site
-# This statement can NOT be overwritten by a page's .py file!
+# This statement must NOT be overwritten by a page's .py file!
 domain = "www.atari-frosch.de"
 
 ## The following variables can be overwritten in a page's .py file.
@@ -83,8 +83,8 @@ author = "Atari-Frosch"
 
 # Keywords for search engines – if you want to use them. And if, they should
 # be overwritten individually by each page's .py file.
-metakeywords = "atari-frosch, atari, computer, depression"
-# will become: <meta name="keywords" content="atari-frosch, atari, computer, depression" />
+metakeywords = "atari-frosch, atari, computer, autismus, politik"
+# will become: <meta name="keywords" content="atari-frosch, atari, computer, autismus, politik" />
 
 # The content of the DC.Title meta tag
 dctitle = "Atari-Frosch"
@@ -113,7 +113,7 @@ dcrights = "Sabine 'Atari-Frosch' Becker"
 favicon = 'favicon.ico'
 # will become: <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
 
-# Primary style sheet for the site, file must exist in the CSS directory of
+# Primary style sheet for the site; file must exist in the CSS directory of
 # the theme
 stylesheet = "frosch.css"
 stylesheetmedia = "all"
@@ -170,9 +170,10 @@ contentfile = "index.htm"
 
 # Here you can state keywords with a SNIPPETS file, and while creating the
 # page the keywords will be replaced by the snippet. If the snippet does not
-# exist in the SNIPPETS directory of the theme, the keyword will just be deleted
-# from the content.
-# Variable type: dictionary with keywords and SNIPPET file names
+# exist in the SNIPPETS directory of the theme, the keyword will just be
+# deleted from the content.
+# Variable type: dictionary with keywords and variables/values or SNIPPET
+# file names
 addtobody = {}
 addtobody["[MYURL]"] = myurl
 addtobody["[AKVSBODY]"] = "akvsbody.htm"
@@ -189,9 +190,11 @@ menuadd = ["menu.geocaching.htm", "menu.cacert.htm"]
 
 # This will be the headline of the current page. Depending on the way your
 # theme is built it is possible that the headline is not part of the page
-# content section, but only the content section is to be placed into the
+# content section; but only the content section is to be placed into the
 # content file, so the headline should be stated in the .py file, at least
 # if necessary.
 headline = "Qua®k!"
 
 pagefoot = makefoot(contentfile, targetfile, myurl)
+
+# EOF
diff --git a/htmlglue.py b/htmlglue.py
deleted file mode 100755 (executable)
index 455a2aa..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf8 -*-
-
-'''
-get theme dir from sys.argv[1]
-opt: get dir or file to build from sys.argv[n]
-no additional parameter(s): (re)build whole site
--d --dir $dir 
--f --file $file
--r --recursive (with -d, ignore if -f)
-
-does theme dir exist?
-opt: does dir/file exist?
-
-theme dir must have subdirs CSS, DEFAULT, SNIPPETS
-theme dir must have index.py, index.htm, menu.py
-subdir CSS must have at least one css file
-subdir DEFAULTS must have at least settings.py
-
-add DEFAULTS to path
-
-does theme/html exist, if not: mkdir
-
-full (re)build (no parameters given)
-or (recursive) (re)build of one folder
-
-if -d|--dir:
-- if menu.py:
-  - import menu.py
-  - if -r|--recursive (as function):
-    - read all folder names from menu.py in folderlist[]
-    - use folderlist to read menu.py from each subfolder
-    - add all found folders to folderlist[]
-      (need to remember current dir!)
-    - recursive, until all menu.py are processed
-
-    - for each folder in folderlist[]:
-      - import menu.py
-        - for each menuitem[]: function makemenuitem
-
-def makemenuitem(menuitem):
-- split into its parts (must be 4 parts) 
-- if menuitem is htm (part 0):
-  - check whether according content file (.htm) exists in currentdir
-    - if not: log/pass
-  - check whether according .py file exists in currentdir
-    - if not: log/pass
-  - call function buildpage with filename, currentdir
-
-def buildpage(filename, currentdir)
-- build page targetfile with settings, SNIPPETS, and menulist
-- Build <head> section like footer in settings.py?
-  - Reason: replacements must be placed correctly.
-- import DEFAULTS/settings.py 
-  - add currentdir to path (in order to import .py files)
-  - import menu.py from currentdir
-  - if according menuitem exists:
-    - split into its parts (must be 4 parts)
-    - check whether according content file exists in currentdir
-    - check whether according content file (.htm) exists in currentdir
-      - if not: pass
-    - check whether according .py file exists in currentdir
-      - if not: pass
-    - call function buildpage with filename, currentdir
-    - build page targetfile with settings, SNIPPETS, and menulist
-      - import DEFAULTS/settings.py 
-      - add currentdir to path (in order to import .py files)
-      - import $page.py (menuitem part 2)
-      - own menu entry without link to itself
-          
-
-if -f|--file targetfile:
-- create currentdir and contentfile from targetfile
-- buildpage(contentfile, currentdir)
-
-'''
-
-import sys, os
-from time import strftime
-from datetime import datetime
-
-def checkfiles(sourcepath):
-    filelist = os.listdir(sourcepath)    
-    cleanfiles = []
-    for i in range(len(filelist)):
-        currentfilename = filelist[i]
-        ignorelist = ['', '.', '..']
-        if not currentfilename in ignorelist:
-            if not os.path.isfile(currentfilename):
-                cleanfiles.append(currentfilename)
-            if currentfilename.endswith(".htm"):
-                cleanfiles.append(currentfilename)
-    return cleanfiles
-
-def buildpage(sourcepath, sourceconf, theme):
-    from sourcepath import sourceconf as pageconfig
-    filetime = os.path.getmtime(pageconfig.contentfile)
-    fileday = strftime(filetime, "%Y-%m-%d")
-    filetimestamp = strftime(filetime, "%Y-%m-%d %H:%M:%S")
-    targetfile = pageconfig.targetfile
-
-    from defaults import myversion
-
-    metaend = '" />\n'
-
-    if pageconfig.doctype in locals():
-        htmlpage = settings.doctype + "\n"
-    elif settings.doctype in locals():
-        htmlpage = pageconfig.doctype + "\n"
-    else:
-        htmlpage = ""
-
-    if pageconfig.htmlver in locals():
-        htmlpage += htmlver + "\n"
-    elif settings.htmlver in locals():
-        htmlpage += htmlver + "\n"
-    else:
-        htmlpage += '<html>\n'
-    htmlpage += '  <head>\n'
-
-    if pageconfig.title in locals():
-        htmlpage += '    <title>' + pageconfig.title + '</title>\n'
-    elif settings.title in locals():
-        htmlpage += '    <title>' + settings.title + '</title\n'
-    elif pageconfig.dctitle in locals():
-        htmlpage += '    <title>' + pageconfig.dctitle + '</title>\n'
-    elif settings.dctitle in locals():
-        htmlpage += '    <title>' + settings.dctitle + '</title>\n'
-    else:
-        htmlpage += '    <title>' + settings.domain + '</title>\n'
-
-    if pageconfig.description in locals():
-        htmlpage += '    <meta name="description" content="' + pageconfig.description + metaend
-    elif settings.description in locals():
-        htmlpage += '    <meta name="description" content="' + settings.description + metaend
-
-    if pageconfig.creator in locals():
-        htmlpage += '    <meta name="author" content="' + pageconfig.creator + metaend
-    elif settings.creator in locals():
-        htmlpage += '    <meta name="author" content="' + settings.creator + metaend
-
-    if pageconfig.robots in locals():
-        htmlpage += '    <meta name="robots" content="' + pageconfig.robots + metaend
-    elif settings.robots in locals():
-        htmlpage += '    <meta name="robots" content="' + settings.robots + metaend
-    else:
-        htmlpage += '    <meta name="robots" content="index,follow' + metaend
-
-    htmlpage += '    <meta name="generator" content="HTMLglue v' + myversion + metaend
-
-    if pageconfig.language in locals():
-        htmlpage += '    <meta http-equiv="content-language" content="' + pageconfig.language + metaend
-    elif settings.language in locals():
-        htmlpage += '    <meta http-equiv="content-language" content="' + settings.language + metaend
-    else:
-        pass
-
-    if pageconfig.dctitle in locals():
-        htmlpage += '    <meta name="DC.Title" content="' + pageconfig.dctitle + metaend
-    elif settings.dctitle in locals():
-        htmlpage += '    <meta name="DC.Title" content="' + settings.dctitle + metaend
-    else:
-        pass
-
-    if pageconfig.creator in locals():
-        htmlpage += '    <meta name="DC.Creator" content="' + pageconfig.creator + metaend
-    elif settings.creator in locals():
-        htmlpage += '    <meta name="DC.Creator" content="' + settings.creator + metaend
-    else:
-        pass
-
-    if pageconfig.subject in locals():
-        htmlpage += '    <meta name="DC.Subject" content="' + pageconfig.subject + metaend
-    elif settings.subject in locals():
-        htmlpage += '    <meta name="DC.Subject" content="' + settings.subject + metaend
-    else:
-        pass
-
-    if pageconfig.description in locals():
-        htmlpage += '    <meta name="DC.Description" content="' + pageconfig.description + metaend
-    elif settings.description in locals():
-        htmlpage += '    <meta name="DC.Description" content="' + settings.description + metaend
-    else:
-        pass
-
-    if pageconfig.publisher in locals():
-        htmlpage += '    <meta name="DC.Publisher" content="' + pageconfig.publisher + metaend
-    elif settings.publisher in locals():
-        htmlpage += '    <meta name="DC.Publisher" content="' + settings.publisher + metaend
-    else:
-        pass
-
-    htmlpage += '    <meta name="DC.Date" content="' + fileday + metaend
-
-    if pageconfig.dclang in locals():
-        htmlpage += '    <meta name="DC.Language" content="' + pageconfig.dclang + metaend
-    elif settings.dclang in locals():
-        htmlpage += '    <meta name="DC.Language" content="' + settings.dclang + metaend
-    elif pageconfig.language in locals():
-        htmlpage += '    <meta name="DC.Language" content="' + pageconfig.language + metaend
-    elif settings.language in locals():
-        htmlpage += '    <meta name="DC.Language" content="' + settings.language + metaend
-    else:
-        pass
-
-    if pageconfig.dccoverage in locals():
-        htmlpage += '    <meta name="DC.Coverage" content="' + pageconfig.dccoverage + metaend
-    elif settings.dccoverage in locals():
-        htmlpage += '    <meta name="DC.Coverage" content="' + settings.dccoverage + metaend
-    else:
-        pass
-
-    if pageconfig.dcrights in locals():
-        htmlpage += '    <meta name="DC.Rights" content="' + pageconfig.dcrights + metaend
-    elif settings.dcrights in locals():
-        htmlpage += '    <meta name="DC.Rights" content="' + settings.dcrights + metaend
-    else:
-        pass
-
-    # only in start page of the whole site
-    if pageconfig.flattr in locals():
-        htmlpage += '    <meta name="verify-v1" content="' + flattr + metaend
-
-    if pageconfig.favicon in locals():
-        htmlpage += '    link rel="shortcut icon" href="' + pageconfig.favicon + 'type="image/x-icon' + metaend
-    elif settings.favicon in locals():
-        htmlpage += '    link rel="shortcut icon" href="' + settings.favicon + 'type="image/x-icon' + metaend
-    else:
-        pass
-
-    if pageconfig.stylesheet in locals():
-        htmlpage += '   <link rel="stylesheet" media="all" href="' + pageconfig.stylesheet + 'type="text/css' + metaend
-    elif settings.stylesheet in locals():
-        htmlpage += '   <link rel="stylesheet" media="all" href="' + settings.stylesheet + 'type="text/css' + metaend
-    else:
-        pass
-
-    # additional css files are only expected in single pages, not for the whole site
-    if pageconfig.addcss in locals():
-        addcss = pageconfig.addcss
-        for i in range(len(addcss)):
-            cssinfoparts = addcss[i].split(" ")
-            htmlpage += '    <link rel="stylesheet" media="' + cssinfoparts[1] + '"'
-            htmlpage += 'href="' + cssinfoparts[0] + 'type="text/css' + metaend
-
-    # same for additional entries in <head>
-    if pageconfig.addhead in locals():
-        htmlpage += pageconfig.addhead
-
-    htmlpage += '  </head>\n'
-
-    bodytopfile = themepath + "/bodytop.htm"
-    logofile = themepath + "/logo.htm"
-
-    if os.path.exists(bodytopfile):
-        bodytop = open(bodytopfile, "r")
-        bodytophtml = bodytop.read()
-        bodytop.close()
-        htmlpage += bodytophtml
-    else:
-        print("bodytop in theme " + theme + " does not exist, aborting.")
-        exit()
-
-
-    if os.path.exists(logofile):
-        logo = open(logofile, "r")
-        logohtml = logo.read()
-        logo.close()
-        htmlpage += logohtml
-
-    if settings.menupos == "above":
-        # like in below
-
-    contentfile = open(sourcehtml, "r")
-    content = contentfile.read()
-    contentfile.close()
-    htmlpage += content
-
-    if settings.menupos == "below":
-        if pageconfig.menuadd in locals():
-            menu = buildmenu(sourcepath, pageconfig.menuentry, pageconfig.menuadd, pageconfig.menuclass, settings.menuhome)
-        else:
-            menu = buildmenu(sourcepath, pageconfig.menuentry, "", pageconfig.menuclass, settings.menuhome)
-        htmlpage += menu
-
-    # footer        
-
-
-def buildmenu(sourcepath, menuadd, mymenuclass, menuhome):
-
-    from sourcepath import menu
-
-    # TODO: replace this with a menustart.htm snippet
-    menulist  = '      <div id="menu">\n'
-    menulist += '        <ul>'
-
-    listitemend = '</a></li>\n'
-
-    # Startpage
-
-    for item in range(len(menu.menuitem)):
-        menuitemparts = menu.menuitem[item].split(", ")
-        if len(menuitemparts) == 4:
-            menutype = menuitemparts[0]
-            menuclass = menuitemparts[1]
-            menufile = menuitemparts[2]
-            menuitemname = menuitemparts[3]
-            
-            if item == 0:
-                # start page
-                pass
-            else:
-                pass
-        
-        else:
-            print("Error in menu.py in", sourcepath)
-            exit()
-
-
-
-    if mymenuclass == "home":
-        menu += '<li class="home">' + menuentry + '</li>\n'
-    else:
-        menu += '<li class="home"><a href="/">' + menuhome + listend
-
-    allfiles = os.listdir(sourcepath)
-    cleanfiles = checkfiles(allfiles)
-    if cleanfolders != "":
-        cleanfolders = cleanfolders.sort()
-        for i in range(len(cleanfolders)):
-            if cleanfo
-            from cleanfolders[1] import index
-            menu += 
-            
-                
-
-    if menuadd in locals():
-        for i in range(len(menuadd)):
-            snippetpath = mypath + "/theme/" + theme
-            snippetfile = snippetpath + "/menu." + menuadd[i] + ".htm"
-            snippet = open(snippetfile, "r")
-            menusnippet = snippet.read()
-            snippet.close()
-            htmlpage += menusnippet + "\n"
-
-# End of functions
-
-
-# check arguments
-mypath = "/".join(sys.argv[0]("/")[:-1])
-
-if len(sys.argv) > 1:
-    arguments = {"theme" = "", "targetdir" = "", "targetfile" = ""}
-    for args in range(len(sys.argv)):
-        if sys.argv[args] == "-t" or sys.argv[args] == "--theme":
-            arguments["theme"] = sys.argv[args + 1]
-        elif sys.argv[args] == "-d" or sys.argv[args] == "--dir":
-            arguments["targetdir"] = sys.argv[args + 1]
-        elif sys.argv[args] == "-f" or sys.argv[args] == "--file":
-            arguments["targetfile"] = sys.argv[args + 1]
-else:
-    print("Cannot work without at least a given theme.")
-    exit()
-
-# ToDo instead: compare file timestamps of pages and html, build
-# new html if page is newer or html does not exist at all.
-# Needs no more arguments from the command line.
-# How to find out if theme has been changed (and everything must
-# be rebuilt)?
-
-if arguments("theme") == "":
-    print("Cannot work without at least a given theme.")
-    exit()
-else:
-    themepath = mypath + "/themes/" + arguments["theme"]
-    sys.path.insert(0, themepath)
-
-
-targetpath = mypath + "/html/" + arguments["theme"] 
-if not targetpath.endswith("/"):
-    targetpath += "/"
-
-if arguments["directory"] != "":
-    targetpath += arguments["directory"]
-    if os.path.exists(targetpath):
-        os.mkdir(targetpath)
-
-# In this version the first file with given name gets used!
-# If there is another file with same name in another directory, it will not be found.
-if arguments("targetfile") != "":
-    targetfile = arguments["targetfile"]
-    if not targetfile.endswith(".html"):
-        print("invalid target file")
-        exit()
-
-    if "/" in targetfile:
-        targetfileparts = targetfile.split("/")
-        targetpath = mypath
-        for i in range(len(targetfileparts) -1):
-            targetpath += targetfileparts[i]
-        targetfile = targetfileparts[len(targetfileparts)]
-    else:
-        searchfile = targetpath + targetfile
-        if not os.path.exists(searchfile):
-            allfolders = os.listdir(filepath)
-            cleanfolders = checkfolders(allfolders)
-            for curfold in range(len(cleanfolders)):
-                currentfolder = cleanfolders[curfold]
-                currentpath = filepath + currentfolder + "/"
-                filelist = filesoffolder(currentpath)
-                if targetfile in filelist:
-                    targetpath = currentpath
-                    break
diff --git a/makesite.py b/makesite.py
new file mode 100755 (executable)
index 0000000..36b6cdb
--- /dev/null
@@ -0,0 +1,281 @@
+#!/usr/bin/env python3
+# -*- coding: utf8 -*-
+
+import os, sys
+from time import strftime, gmtime
+from datetime import datetime
+# from importlib import import_module
+from runpy import run_path
+import logging
+import defaults
+
+# functions
+
+def makemenus(curdir):
+    curmenu = curdir + "/menu.py"
+    logging.debug('Processing %s.', curmenu)
+    ln = "\n"
+    if not os.path.exists(curmenu):
+        logging.critical('No menu.py in <%s>.  Stop.', curdir)
+        sys.exit()
+    else:
+        logging.debug('menu.py found in <%s>.', curdir)
+        menumod = run_path(curmenu)
+        curdirfiles = os.listdir(curdir)
+        pagenames = []
+        for file in curdirfiles:
+            logging.debug('makemenus, processing file <%s>', file)
+            if file.endswith(".htm"):
+                pagenames.append(file)
+        for i in range(len(pagenames)):
+            pagenames[i] = pagenames[i].replace('.htm', '')
+        for i in range(len(pagenames)):
+            outfile = curdir + "/" + pagenames[i] + ".menu"
+            targetpage = pagenames[i] + ".html"
+            targetfile = open(outfile, "w")
+            menuitems = menumod["menuitem"]
+            for j in range(len(menuitems)):
+                curmenuitems = menuitems[j]
+                # ToDo: Last item in each line can contain more than one word!
+                # replace " " with _ in last item or process this here?
+                curitems = curmenuitems.split(" ")
+                # ToDo: class can be '.' in menu.py, then there is no class!
+                if curitems[0] == "htm":
+                    if targetpage in curitems[2]:
+                        menuline = '<li class="' + curitems[1] + '">'
+                        menuline += curitems[3] + '</li>' + ln
+                    else:
+                        menuline = '<li class="' + curitems[1] + '"><a href="' + curitems[2]
+                        menuline += '">' + curitems[3] + '</a></li>' + ln
+                    targetfile.write(menuline)
+                elif curitems[0] == "dir":
+                    menuline = '<li class="' + curitems[1] + '"><a href="' + curitems[2]
+                    menuline += '">' + curitems[3] + '</a></li>' + ln
+                    targetfile.write(menuline)
+                else:
+                    logging.error('<%s> is an unknown argument in menu.py in <%s>.', curitems[0], curdir)
+            targetfile.close()
+                
+
+def buildpage(filename, curdir, targetdir):
+    # we have: contentfile.htm + contentfile.menu + contentfile.py
+    # filename = contentfile.htm
+    logging.debug('Running buildpage with filename %s, curdir %s, targetdir %s.', filename, curdir, targetdir)
+
+    if not filename.endswith(".htm"):
+        pass
+    else:
+        pagepy = curdir + "/" + filename.replace(".htm", ".py")
+        pageconfig = run_path(pagepy)
+        contenttime = os.path.getmtime(curdir + filename)
+        fileday = datetime.fromtimestamp(contenttime).strftime('%Y-%m-%d')
+        filetimestamp = datetime.fromtimestamp(contenttime).strftime('%Y-%m-%d %H:%M:%S')
+        targetfile = targetdir + filename + "l"
+
+        from defaults import myversion
+    
+        logging.debug('Starting to build page <%s>.', curdir + targetfile)
+        htmlpage = settings.makehtmlhead(filename, snippetspath, pagepy)
+
+        try:
+            settings.bodytopfile
+        except NameError:
+            logging.critical('bodytopfile for <%s> is not defined.  Stop.')
+            sys.exit()
+        else:
+            bodytopfile = snippetspath + settings.bodytopfile
+            if os.path.exists(bodytopfile):
+                bodytop = open(bodytopfile, "r")
+                bodytophtml = bodytop.read()
+                bodytop.close()
+                htmlpage += bodytophtml
+                logging.debug('bodytop file added to page.')
+            else:
+                logging.critical("bodytop for site " + sitename + " does not exist, aborting.")
+                sys.exit()
+        
+        try:
+            settings.logofile
+        except NameError:
+            logging.info('Could not find a logo file snippet.')
+        else:
+            logofile = snippetspath + settings.logofile
+            if os.path.exists(settings.logofile):
+                logo = open(settings.logofile, "r")
+                logohtml = logo.read()
+                logo.close()
+                htmlpage += logohtml
+                logging.debug('Logo file added to page.')
+
+    if settings.menupos == "above":
+        menufile = curdir + filename.replace(".htm", ".menu")
+        if os.path.exists(menufile):
+            m = open(menufile, "r")
+            menu = m.read()
+            m.close()
+            htmlpage += menu
+            logging.debug('Menu added to page (<%s>).', settings.menupos)
+        else:
+            logging.critical('No menu file for <%s>.  Stop.', filename)
+            sys.exit()
+
+    contentfile = open(curdir + filename, "r")
+    content = contentfile.read()
+    contentfile.close()
+    htmlpage += content
+
+    # ToDo: Check pagepy for variable replace{} and execute replacements.
+    # Problem: Imports of own .py files does not work.
+
+    if settings.menupos == "below":
+        menufile = curdir + filename.replace(".htm", ".menu")
+        if os.path.exists(menufile):
+            m = open(menufile, "r")
+            menu = m.read()
+            m.close()
+            htmlpage += menu
+            logging.debug('Menu added to page (<%s>).', settings.menupos)
+        else:
+            logging.critical('No menu file for <%s>.  Stop.', filename)
+            sys.exit()
+
+    footer = settings.makefoot(curdir, filename, snippetspath, settings.myurl)
+    htmlpage += footer
+    logging.debug('Footer added to page.')
+
+    t = open(targetfile, "w")
+    t.write(htmlpage)
+    t.close()
+    logging.info('<%s> created.', targetfile)
+
+
+# end of functions
+
+# check arguments
+mypath = os.path.dirname(sys.argv[0])
+fullpath = os.path.abspath(sys.argv[0])
+fullpath = os.path.dirname(fullpath) + "/"
+
+if len(sys.argv) > 1:
+    for args in range(len(sys.argv)):
+        if sys.argv[args] == "-d" or sys.argv[args] == "--dir":
+            targetdir = sys.argv[args + 1]
+            # (re)build a single directory
+        elif sys.argv[args] == "-f" or sys.argv[args] == "--file":
+            # (re)build a single file
+            targetfile = sys.argv[args + 1]
+else:
+    print('Cannot work without at least a sitename.  Stop.')
+    sys.exit()
+
+sitename = sys.argv[1]
+sitepath = mypath + "/sites/" + sitename + "/"
+
+if not os.path.exists(sitepath):
+    print('Site does not exist.  Stop.')
+    sys.exit()
+
+# check for settings
+
+# These paths are not configurable for good reasons. :-)
+
+defaultpath = sitepath + "DEFAULTS/" 
+snippetspath = sitepath + "SNIPPETS/"
+csspath = sitepath + "CSS/"
+
+if not os.path.exists(snippetspath):
+    print('No snippets available for this site.  Stop.')
+    sys.exit()
+
+if not os.path.exists(defaultpath):
+    print('Defaults directory not found.  Stop.')
+    sys.exit()
+else:
+    settingfile = sitepath + "DEFAULTS/settings.py"
+    if not os.path.exists(settingfile):
+        print('Settings file <%s> not found.  Stop.', settingfile)
+        sys.exit()
+    else:
+        defaultpath = sitepath + "DEFAULTS/"
+        os.sys.path.append(defaultpath)
+        import settings
+
+targetdir = mypath + "/html/" + sitename + "/"
+if not os.path.exists(mypath + "/html"):
+    os.mkdir(mypath + "/html")
+
+
+# logging configuration
+
+try:
+    settings.makelogfile
+except NameError:
+    logfile = sitename + "-make.log"
+else:
+    logfile = settings.makelogfile
+
+try:
+    settings.makeloglevel
+except NameError:
+    loglevel = 3
+else:
+    loglevel = settings.makeloglevel
+
+logformat = "%(asctime)s %(levelname)s %(message)s"
+
+if loglevel == 5:
+    logging.basicConfig(format=logformat, filename=logfile, level=logging.DEBUG)
+elif loglevel == 4:
+    logging.basicConfig(format=logformat, filename=logfile, level=logging.INFO)
+elif loglevel == 3:
+    logging.basicConfig(format=logformat, filename=logfile, level=logging.WARNING)
+elif loglevel == 2:
+    logging.basicConfig(format=logformat, filename=logfile, level=logging.ERROR)
+elif loglevel == 1:
+    logging.basicConfig(format=logformat, filename=logfile, level=logging.CRITICAL)
+
+logging.debug('Opened log file.')
+
+# Do we have everything we need?
+
+if not os.path.exists(csspath):
+    logging.info('CSS directory not found, creating CSS directory ...')
+    logging.warning('Your site will not have any CSS.')
+    os.mkdir(csspath)
+
+if not os.path.exists(sitepath + "index.htm"):
+    logging.critical('Main content page does not exist.  Stop.')
+    sys.exit()
+
+if not os.path.exists(sitepath + "index.py"):
+    logging.critical('python config file for main page does not exist.  Stop.')
+    sys.exit()
+
+if not os.path.exists(sitepath + "menu.py"):
+    logging.critical('menu config file for the site does not exist.  Stop.')
+    sys.exit()
+
+if not os.path.exists(sitepath + "html/"):
+    logging.info('HTML directory does not exist, creating it ...')
+    os.mkdir(sitepath + "html/")
+else:
+    logging.debug('HTML directory found.')
+
+# Now we can start.
+
+# In this early version the whole site will be created every time the script
+# gets called. To (re)build a single folder or a single page is on the ToDo
+# list, also moving pages from one folder to another.
+
+for dirpath, dirs, files in os.walk(sitepath):
+    for folder in dirs:
+        logging.debug('Current folder: <%s>', dirpath)
+        if os.path.exists(dirpath + "/menu.py"):
+            targetpath = dirpath.replace("sites", "html")
+            logging.debug('Current targetpath is <%s>.', targetpath)
+            if not os.path.exists(targetpath):
+                os.mkdir(targetpath)
+            makemenus(os.path.abspath(sitepath))
+            for eachfile in files:
+                if eachfile.endswith('.htm'):
+                    buildpage(eachfile, sitepath, targetpath)
index 24e4825..2fa2b6f 100755 (executable)
@@ -31,6 +31,11 @@ def checkfolder(curpath):
         igndir = True
     return igndir
 
+def makesetting(settingfile, flt):
+    pass
+#    import fullsettings
+#    # ???    
+
 
 # end of functions
 
@@ -77,7 +82,7 @@ elif loglevel == 1:
     logging.basicConfig(format=logformat, datefmt=dateformat, filename=logfile, level=logging.CRITICAL)
 else:
     logging.basicConfig(format='%(asctime)s %(message)s', datefmt=dateformat, filename=logfile,level=logging.INFO)
-    logging.error('could not identify loglevel, using INFO as default')
+    logging.error('could not determine loglevel, using INFO as default')
 
 
 if not os.path.exists(targetpath):
@@ -88,18 +93,18 @@ if not os.path.exists(targetpath):
     os.mkdir(defaultsdir)
     snippetdir = targetpath + "/SNIPPETS"
     os.mkdir(snippetdir)
-    fullsettings = mypath + "/fullsettings.py"
-    localsettings = defaultsdir + "/settings.py"
-    import shutil
-    shutil.copyfile(fullsettings, localsettings)
+    fullsettings = mypath + "/fullsettings.py"
+    localsettings = defaultsdir + "/settings.py"
+    import shutil
+    shutil.copyfile(fullsettings, localsettings)
     initfile = targetpath + "/__init__.py"
     init = open(initfile, "w")
     init.close()
     call(["/bin/chmod", "755", initfile])
-    outline = "Please edit <" + localsettings + ">!"
-    print(outline)
-    print("Without a correct filter the site cannot be prepared for htmlglue.")
-    logging.critical('Please edit DEFAULTS/settings.py.')
+    outline = "Please edit <" + localsettings + ">!"
+    print(outline)
+    print("Without a correct filter the site cannot be prepared for htmlglue.")
+    logging.critical('Please edit DEFAULTS/settings.py.')
     sys.exit()
 
 if not flt.origpath.startswith("/"):
@@ -116,11 +121,15 @@ else:
     fileext = flt.fileext
 logging.debug('HTML files end with <%s>.', fileext)
 
-settingpath = targetpath + "DEFAULTS/"
-logging.debug('Settings will be searched in <%s>.', settingpath)
-sys.path.insert(1, settingpath)
-import settings
-logging.debug('Settings imported.')
+settingfile = targetpath + "DEFAULTS/settings.py"
+if not os.path.exists(settingfile):
+    logging.debug('Settings file will be created as <%s>.', settingfile)
+    makesetting(settingfile, flt)
+else:
+    logging.debug('Setting file already exists.')
+    defaultpath = targetpath + "DEFAULTS/"
+    os.sys.path.append(defaultpath)
+    
 
 if len(flt.ignorehtml) > 0:
     ignorehtml = {}
@@ -266,9 +275,11 @@ for dirpath, dirs, files in os.walk(origpath):
                     if flt.contentstart in curline:
                         logging.debug('Found start of content part.')
                         contentread = True
-                        htm.write(curline + "\n")
+                        htm.write(curline + ln)
                         continue
 
+                    import settings
+
                     if curline.startswith('<DOCTYPE'):
                         logging.debug('Found DocType.')
                         if curline != settings.doctype:
@@ -398,6 +409,7 @@ for dirpath, dirs, files in os.walk(origpath):
                     menu.write("#!/usr/bin/env python3\n")
                     menu.write("# -*- coding: utf8 -*-\n\n\n")
                     menu.write("# Created automatically with htmlglue/preparesite v" + myversion + "\n\n")
+                    menu.write("menuitem = []\n")
 
                     menu.write(flt.firstmenuitem)
                     for item in range(len(origmenuparts)):
@@ -421,8 +433,8 @@ for dirpath, dirs, files in os.walk(origpath):
                                 else:
                                     filetype = "dir"
 
-                                outline = 'menuitem.append(["' + filetype + '", "' + menuclass + '", "'
-                                outline += menufilename + '", "' + menuitemname + '"])\n'
+                                outline = 'menuitem.append(["' + filetype + ' ' + menuclass
+                                outline += ' ' + menufilename + ' ' + menuitemname + '"])\n'
                                 menu.write(outline)
 
                     menu.close()
index 23a84c6..7f22576 100755 (executable)
 #!/usr/bin/env python3
 # -*- coding: utf8 -*-
 
-def makefoot(contentfile, targetfile, myurl):
-    from os import path
+import os, sys
+from runpy import run_path
+from datetime import datetime
+
+def makehtmlhead(contentfile, snippetpath, sourcepy):
+    pageconf = run_path(sourcepy)
+    import defaults
+    headfile = open(snippetpath + "/htmlhead.htm", "r")
+    head = headfile.read()
+    headfile.close()
+    metaend = '" />\n'
+    
+    try:
+        pageconf["doctype"]
+    except KeyError:
+        head = head.replace("[DOCTYPE]", doctype)
+    else:
+        head = head.replace("[DOCTYPE]", pageconf["doctype"])
+
+    try:
+        pageconf["title"]
+    except KeyError:
+        head = head.replace("[TITLE]", title)
+        r = '<meta name="DC.Title" content="' + title + metaend
+        head = head.replace("[DC.TITLE]", r)
+        r = '<meta name="DC.Subject" content="' + title + metaend
+        head = head.replace("[DC.SUBJECT]", r)
+    else:
+        head = head.replace("[TITLE]", pageconf["title"])
+        r = '<meta name="DC.Title" content="' + pageconf["title"] + metaend
+        head = head.replace("[DC.TITLE]", r)
+        r = '<meta name="DC.Subject" content="' + pageconf["title"] + metaend
+        head = head.replace("[DC.SUBJECT]", r)
+
+    try:
+        pageconf["description"]
+    except KeyError:
+        r = '<meta name="description" content="' + description + metaend
+        head = head.replace("[METADESCRIPT]", r)
+        r = '<meta name="DC.Description" content="' + description + metaend
+        head = head.replace("[DC.DESCRIPTION]", r)
+    else:
+        r = '<meta name="description" content="' + pageconf["description"] + metaend
+        head = head.replace("[METADESCRIPT]", r)
+        r = '<meta name="DC.Description" content="' + pageconf["description"] + metaend
+        head = head.replace("[DC.DESCRIPTION]", r)
+
+    try:
+        pageconf["robots"]
+    except KeyError:
+        r = '<meta name="robots" content="' + robots + metaend
+        head = head.replace("[ROBOTS]", r)
+    else:
+        r = '<meta name="robots" content="' + pageconf["robots"] + metaend
+        head = head.replace("[ROBOTS]", r)
+
+    r = '<meta name="generator" content="' + defaults.generator
+    head = head.replace("[GENERATOR]", r)
+
+    try:
+        pageconf["dccreator"]
+    except KeyError:
+        r = '<meta name="DC.Creator" content="' + dccreator + metaend
+        head = head.replace("[DC.CREATOR]", r)
+    else:
+        r = '<meta name="DC.Creator" content="' + pageconf["dccreator"] + metaend
+        head = head.replace("[DC.CREATOR]", r)
+
+    try:
+        pageconf["dcpublisher"]
+    except KeyError:
+        r = '<meta name="DC.Publisher" content="' + dcpublisher + metaend
+        head = head.replace("[DC.PUBLISHER]", r)
+    else:
+        r = '<meta name="DC.Publisher" content="' + pageconf["dcpublisher"] + metaend
+        head = head.replace("[DC.PUBLISHER]", r)
+
+    try:
+        pageconf["dcdate"]
+    except KeyError:
+        try:
+            pageconf["contentdate"]
+        except KeyError:
+            r = '<meta name="DC.Date" content="' + str(datetime.strftime(os.path.getmtime(contentfile), "%Y-%m-%d")) + metaend
+            head = head.replace("[DC.DATE]", r)
+        else:
+            cdate = pageconf["contentdate"].split(" ", 0)
+            r = '<meta name="DC.Date" content="' + cdate + metaend
+            head = head.replace("[DC.Date]", r)
+    else:
+        curtimestamp = str(datetime.strftime(datetime.now(), '%Y-%m-%d'))
+        r = 'meta name="DC.Date" content="' + curtimestamp + metaend
+        head = head.replace("[DC.Date]", r)
+
+    try:
+        pageconf["language"]
+    except KeyError:
+        r = '<meta name="DC.Language" content="' + language + metaend
+        head = head.replace("[DC.LANGUAGE]", r)
+        head = head.replace("[HTMLVER]", htmlver)
+    else:
+        r = '<meta name="DC.Language" content="' + pageconf["language"] + metaend
+        head = head.replace("[DC.LANGUAGE]", r)
+        try:
+            pageconf["htmlver"]
+        except KeyError:
+            head = head.replace("[HTMLVER]", htmlver)
+        else:
+            head = head.replace("[HTMLVER]", pageconf["htmlver"])
+
+
+    if "[DC.COVERAGE]" in head:
+        try:
+            pageconf["dccoverage"]
+        except KeyError:
+            if dccoverage != "":
+                r = '<meta name="DC.Coverage" content="' + dccoverage + metaend
+                head = head.replace("[DC.COVERAGE]", r)
+            else:
+                head = head.replace("[DC.COVERAGE]", "")
+        else:
+            r = '<meta name="DC.Coverage" content="' + pageconf["dccoverage"] + metaend
+            head = head.replace("[DC.COVERAGE]", r)
+
+    try:
+        pageconf["dcrights"]
+    except KeyError:
+        r = '<meta name="DC.Rights" content="' + dcrights + metaend
+        head = head.replace("[DC.RIGHTS]", r)
+    else:
+        r = '<meta name="DC.Rights" content="' + pageconf["dcrights"] + metaend
+        head = head.replace("[DC.RIGHTS]", r)
+
+    try:
+        pageconf["favicon"]
+    except KeyError:
+        r = '    <link rel="shortcut icon" href="' + favicon + ' type="image/x-icon"' + metaend
+        head += r
+    else:
+        r = '    <link rel="shortcut icon" href="' + pageconf["favicon"] + ' type="image/x-icon"' + metaend
+        head += r
+
+    head += '    <link rel="stylesheet" media=' + stylesheetmedia + 'href="/' + stylesheet + 'type="text/css"' + metaend
+    try:
+        pageconf["addcssfile"]
+    except KeyError:
+        pass
+    else:
+        for i in range(len(pageconf["addcssfile"])):
+            cssfile = pageconf["addcssfile"][i]
+            cssfileparts = cssfile.split(" ")
+            r = '    <link rel="stylesheet" media=' + cssfileparts[1] + 'href="/' + cssfileparts[0] + 'type="text/css"' + metaend
+            head += r
+
+    head += '</head>\n'
+    return head
+
+
+def makefoot(curpath, contentfile, snippetspath, myurl):
     from datetime import datetime
     from time import strftime
 
-    f = open("../SNIPPETS/footer.htm", "r")
+    f = open(snippetspath + "/footer.htm", "r")
     footer = f.read()
     f.close()
 
-    filetime = path.getmtime(contentfile)
-    filetimestamp = str(strftime(filetime, "%Y-%m-%d %H:%M"))
+    filetime = os.path.getmtime(curpath + "/" + contentfile)
+    filetimestamp = datetime.fromtimestamp(filetime).strftime('%Y-%m-%d %H:%M')
+    curtimestamp = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M')
 
-    currenttime = datetime.now()
-    curtimestamp = str(strftime(currenttime, "%Y-%m-%d %H:%M"))
-
-    footer = footer.replace("[FILETIME]", filetime)
-    footer = footer.replace("[CURTIME]", curtimestamp)
+    footer = footer.replace("[FILETIME]", str(filetime))
+    footer = footer.replace("[CURTIME]", str(curtimestamp))
     footer = footer.replace("[MYURL]", myurl)
 
     return footer
 
+sitepath = "/home/frosch/prog/htmlglue/sites/atarifrosch/"
+
+preplogfile = "atarifrosch-prep.log"
+preploglevel = 5
+
+makelogfile = "atarifrosch-make.log"
+makeloglevel = 5
 
-theme = "atarifrosch"
+sitename = "atarifrosch"
 proto = "https"
 domain = "www.atari-frosch.de"
 myurl = proto + "://" + domain + "/"
 
+language = 'de'
+# language will also be used for xml:lang and DC.Language
 doctype = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
-htmlver = '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">'
+htmlver = '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="' + language + '" lang="' + language + '">'
 title = "Atari-Frosch"
+# title will also be used for DC.Subject
+description = "Homepage von Sabine 'Atari-Frosch' Becker"
+# description will also be used for DC.Description
 robots = 'index,follow'
-# language will also be used for DC.Language
-language = 'de'
 author = "Atari-Frosch"
 
 dctitle = "Atari-Frosch"
 dccreator = 'Atari-Frosch'
 dcpublisher = 'Atari-Frosch'
 dcrights = "Sabine 'Atari-Frosch' Becker"
-dccoverage = "Düsseldorf - Deutschland"
+dccoverage = ""
 
 favicon = 'favicon.ico'
 stylesheet = 'frosch.css'
@@ -48,11 +213,14 @@ stylesheetmedia = "all"
 
 menupos = "above"
 
-metakeywords = "atari-frosch, atari, computer, depression, autismus"
+metakeywords = "atari-frosch"
 
-replacement = {}
+# replacement = []
+# replacement.append["Sabine Engelhardt", "Sabine 'Atari-Frosch' Becker"]
 
 headline = "Qua®k!"
 
-# uncomment for use in htmlglue; preparesite would stop with an error message
-# pagefoot = makefoot(contentfile, targetfile, myurl)
+htmlhead = "/htmlhead.htm"
+bodytopfile = "/bodytop.htm"
+logofile = "/logo.htm"
+endoffile = "/endoffile.htm"
diff --git a/sites/atarifrosch/SNIPPETS/flattrbutton.htm b/sites/atarifrosch/SNIPPETS/flattrbutton.htm
deleted file mode 100644 (file)
index 23b2d0a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-        <div class="picright">
-          <a class="FlattrButton" style="display:none;"
-             href="[MYURL]"></a>
-          <noscript>
-            <a class="graflink" href="https://flattr.com/thing/[THING]/[THINGNAME]">
-            <img src="http://api.flattr.com/button/flattr-badge-large.png"
-                 alt="Flattr this" title="Flattr this" border="0"/></a>
-          </noscript>
-        </div>
diff --git a/sites/atarifrosch/SNIPPETS/flattrscript.htm b/sites/atarifrosch/SNIPPETS/flattrscript.htm
deleted file mode 100644 (file)
index 2b1e093..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-    <script type="text/javascript">
-     /* <![CDATA[ */
-       (function() {
-         var s = document.createElement('script'), t =
-          document.getElementsByTagName('script')[0];
-          s.type = 'text/javascript';
-          s.async = true;
-          s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-          t.parentNode.insertBefore(s, t);
-       })();
-     /* ]]> */
-    </script>
diff --git a/sites/atarifrosch/SNIPPETS/head.htm b/sites/atarifrosch/SNIPPETS/head.htm
deleted file mode 100644 (file)
index fc5b665..0000000
+++ /dev/null
@@ -1 +0,0 @@
-  <head>
\ No newline at end of file
diff --git a/sites/atarifrosch/SNIPPETS/meta.flattrverify.htm b/sites/atarifrosch/SNIPPETS/meta.flattrverify.htm
deleted file mode 100644 (file)
index 721bba2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-    <meta name="verify-v1" content="iE1JAwy4KmLfpfiA7Fyyj5ddtgTnhKjWvnbgj6aUsmo=" />
-