some changes
authorSabine Engelhardt <frosch@atari-frosch.de>
Thu, 6 Apr 2017 18:55:05 +0000 (20:55 +0200)
committerSabine Engelhardt <frosch@atari-frosch.de>
Thu, 6 Apr 2017 18:55:05 +0000 (20:55 +0200)
ToDo
filters/atarifrosch.py
fullsettings.py
htmlglue.py.old [deleted file]
sites/atarifrosch/DEFAULTS/settings.py
sites/atarifrosch/SNIPPETS/menustart.htm [new file with mode: 0644]
sites/atarifrosch/menu.py

diff --git a/ToDo b/ToDo
index 5b76fba..936c139 100644 (file)
--- a/ToDo
+++ b/ToDo
@@ -50,6 +50,8 @@ def makemenuitem(menuitem):
 
 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
index e54fc8b..ef71a6f 100755 (executable)
@@ -8,10 +8,11 @@ targetpath = "/home/frosch/projekte/htmlglue/themes/atarifrosch/"
 ignoredirs = ["bilder", "computer/hw", "computer/x100e", "depression/tagebuch"]
 ignorefiles = []
 
-ignoreparts = []
-# ignoreparts defines a keyword from the first line and a keyword from the
+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[0] = '<body>%%<!--div#logo-->'
index e888ba1..4c90299 100644 (file)
@@ -8,6 +8,9 @@
 ## otherwise. All settings in this file are just examples!
 #############################################################################
 
+def makehead(contentfile, targetfile, myurl):
+    pass
+
 # As I wanted to have some current information in the page foot, I wrote
 # this function that creates the footer section, using a SNIPPETS file, the
 # timestamp of the content file, and the current date/time. Of course you
@@ -21,14 +24,8 @@ def makefooter(contentfile, targetfile, myurl):
     footer = f.read()
     f.close()
 
-    if path.exists("./modif.lst"):
-        # TODO: pick according line from that file and use the timestamp from there
-        # also touch contentfile with that timestamp and then delete line from file
-        filetimestamp = ""
-    else:
-        # TODO: contentfile needs to be expanded to its full path before using it
-        filetime = path.getmtime(contentfile)
-        filetimestamp = str(strftime(filetime, "%Y-%m-%d %H:%M"))
+    filetime = path.getmtime(contentfile)
+    filetimestamp = str(strftime(filetime, "%Y-%m-%d %H:%M"))
 
     currenttime = datetime.now()
     curtimestamp = str(strftime(currenttime, "%Y-%m-%d %H:%M"))
diff --git a/htmlglue.py.old b/htmlglue.py.old
deleted file mode 100755 (executable)
index 0b614ad..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf8 -*-
-
-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):
-    # file/dir names have leading numbers to claim their position in the menu
-    # like 0-index.htm 1-vorstellung 2-blog (special case, external link)
-    # ... 15-impressum.htm
-    # read folders from own directory and their index.py
-    # get index.menuentry
-
-    menu = '      <div id="menu">\n'
-    menu += '        <ul>'
-    listend = '</a></li>\n'
-
-    # Startpage
-    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
index 0231d71..91e4931 100755 (executable)
@@ -1,7 +1,32 @@
 #!/usr/bin/env python3
 # -*- coding: utf8 -*-
 
+def makefooter(contentfile, targetfile, myurl):
+    from os import path
+    from datetime import datetime
+    from time import strftime
+
+    f = open("../SNIPPETS/footer.htm", "r")
+    footer = f.read()
+    f.close()
+
+    filetime = path.getmtime(contentfile)
+    filetimestamp = str(strftime(filetime, "%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("[MYURL]", myurl)
+
+    return footer
+
+
 theme = atarifrosch
+proto = "https"
+domain = "www.atari-frosch.de"
+myurl = proto + "://" + domain + "/"
 
 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">'
@@ -14,22 +39,20 @@ dctitle = "Atari-Frosch"
 dccreator = 'Atari-Frosch'
 dcpublisher = 'Atari-Frosch'
 dcrights = "Sabine 'Atari-Frosch' Becker"
+dccoverage = "Düsseldorf - Deutschland"
 
 favicon = 'favicon.ico'
 stylesheet = 'frosch.css'
+stylesheetmedia = "all"
 
-proto = "https"
-domain = "www.atari-frosch.de"
-
-# position of menu: "above" or "below" content
 menupos = "above"
 
-# This can be set to False if no Footer is wanted in general or
-# for a single page
-footer = True
+metakeywords = "atari-frosch, atari, computer, depression, autismus"
 
 # dictionary of variables within content files which need to be replaced
 # can be extended in $file.py files
 
 replacement["[FLATTRBUTTON]"] = "flattrbutton.htm"
 replacement["[FLATTRSCRIPT]"] = "flattrscript.htm"
+
+pagefoot = makefoot(contentfile, targetfile, myurl)
diff --git a/sites/atarifrosch/SNIPPETS/menustart.htm b/sites/atarifrosch/SNIPPETS/menustart.htm
new file mode 100644 (file)
index 0000000..9aa7ad4
--- /dev/null
@@ -0,0 +1,2 @@
+      <div id="menu">
+        <ul>
\ No newline at end of file
index f928eb2..98ed4a7 100755 (executable)
@@ -1,6 +1,8 @@
 #!/usr/bin/env python3
 # -*- coding: utf8 -*-
 
+menustart = "SNIPPET/menustart.htm"
+
 menuitem[0]  = "htm, home, index.html, Startseite"
 menuitem[1]  = "dir, close, vorstellung, Vorstellung"
 menuitem[2]  = "dir, close, https://blog.atari-frosch.de/, Blog"
@@ -17,3 +19,11 @@ menuitem[12] = "dir, close, misc, Vermischtes"
 menuitem[13] = "htm, file, impressum.html, Impressum"
 menuitem[14] = "htm, file, probleme.html, Darstellungsprobleme?"
 menuitem[15] = "dir, close, hist, Website-History"
+
+menuend = "SNIPPETS/menuend.htm"
+
+menuadd["GEOCACHING"] = "SNIPPETS/menu.geocaching.htm"
+menuadd["CACERT"] = "SNIPPETS/menu.cacert.htm"
+
+menuaddtofile["index.html"] = menuadd["GEOCACHING"]
+menuaddtofile["index.html"] = menuadd["CACERT"]