diff --git a/admin.php b/admin.php index b88e924..328f1fe 100644 --- a/admin.php +++ b/admin.php @@ -8,6 +8,7 @@ $media_files = array_values ( array_diff( scandir( "./media" ), ["..", "."] ) ); sort( $media_files ); include_once "common.php"; + include_once "config.php"; ?> @@ -35,6 +36,8 @@ details[open]{padding-bottom:1em} details[open] summary {border-bottom: 1px solid #aaa;margin-bottom: 0.5em;background:#333;color:#DDD} thead{background: #333;color:#EEE} + fieldset{display: inline;padding: 0 2px 0 0;margin: 0 5px 0 0;border: none;vertical-align: middle} + legend{float: left;border: none;padding-inline: 0 2px} @@ -55,7 +58,7 @@

New post successfully added!

-

File updated successfully!

+

Updated successfully!

Media uploaded successfully!

@@ -139,6 +142,11 @@ HTML; Site Actions
diff --git a/config.php b/config.php index d76f40f..1c200d4 100644 --- a/config.php +++ b/config.php @@ -57,3 +57,14 @@ const SHOW_DATES = false; * https://www.php.net/manual/en/datetime.format.php */ const DATE_STYLE = "m/d/y h:ia"; + +/* + * Use 'simple.css' css theme/styling. This is + * a boolean setting (true/false) that fill + * include this css theming. When true, simple.css + * will be added, but will not be directly + * editable. You will still have access to your + * css and be able to override any styles though. + */ +const SIMPLE_CSS = true; + diff --git a/css/simple.css b/css/simple.css new file mode 100644 index 0000000..13c0b87 --- /dev/null +++ b/css/simple.css @@ -0,0 +1 @@ +::backdrop,:root{--sans-font:-apple-system,BlinkMacSystemFont,"Avenir Next",Avenir,"Nimbus Sans L",Roboto,"Noto Sans","Segoe UI",Arial,Helvetica,"Helvetica Neue",sans-serif;--mono-font:Consolas,Menlo,Monaco,"Andale Mono","Ubuntu Mono",monospace;--standard-border-radius:5px;--bg:#fff;--accent-bg:#f5f7ff;--text:#212121;--text-light:#585858;--border:#898EA4;--accent:#0d47a1;--accent-text:var(--bg);--code:#d81b60;--preformatted:#444;--marked:#ffdd33;--disabled:#efefef}@media (prefers-color-scheme:dark){::backdrop,:root{color-scheme:dark;--bg:#212121;--accent-bg:#2b2b2b;--text:#dcdcdc;--text-light:#ababab;--accent:#ffb300;--accent-text:var(--bg);--code:#f06292;--preformatted:#ccc;--disabled:#111}img,video{opacity:.8}}*,::after,::before{box-sizing:border-box}input,progress,select,textarea{appearance:none;-webkit-appearance:none;-moz-appearance:none}html{font-family:var(--sans-font);scroll-behavior:smooth}body{color:var(--text);background-color:var(--bg);font-size:1.15rem;line-height:1.5;display:grid;grid-template-columns:1fr min(45rem,90%) 1fr;margin:0}body>*{grid-column:2}body>header{background-color:var(--accent-bg);border-bottom:1px solid var(--border);text-align:center;padding:0 .5rem 2rem .5rem;grid-column:1/-1}body>header>:only-child{margin-block-start:2rem}body>header h1{max-width:1200px;margin:1rem auto}body>header p{max-width:40rem;margin:1rem auto}main{padding-top:1.5rem}body>footer{margin-top:4rem;padding:2rem 1rem 1.5rem 1rem;color:var(--text-light);font-size:.9rem;text-align:center;border-top:1px solid var(--border)}h1{font-size:3rem}h2{font-size:2.6rem;margin-top:3rem}h3{font-size:2rem;margin-top:3rem}h4{font-size:1.44rem}h5{font-size:1.15rem}h6{font-size:.96rem}p{margin:1.5rem 0}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}h1,h2,h3{line-height:1.1}@media only screen and (max-width:720px){h1{font-size:2.5rem}h2{font-size:2.1rem}h3{font-size:1.75rem}h4{font-size:1.25rem}}a,a:visited{color:var(--accent)}a:hover{text-decoration:none}.button,a.button,button,input[type=button],input[type=reset],input[type=submit],label[type=button]{border:1px solid var(--accent);background-color:var(--accent);color:var(--accent-text);padding:.5rem .9rem;text-decoration:none;line-height:normal}.button[aria-disabled=true],button[disabled],input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;background-color:var(--disabled);border-color:var(--disabled);color:var(--text-light)}input[type=range]{padding:0}abbr[title]{cursor:help;text-decoration-line:underline;text-decoration-style:dotted}.button:not([aria-disabled=true]):hover,button:enabled:hover,input[type=button]:enabled:hover,input[type=reset]:enabled:hover,input[type=submit]:enabled:hover,label[type=button]:hover{filter:brightness(1.4);cursor:pointer}.button:focus-visible,button:focus-visible:where(:enabled),input:enabled:focus-visible:where([type=submit],[type=reset],[type=button]){outline:2px solid var(--accent);outline-offset:1px}header>nav{font-size:1rem;line-height:2;padding:1rem 0 0 0}header>nav ol,header>nav ul{align-content:space-around;align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;list-style-type:none;margin:0;padding:0}header>nav ol li,header>nav ul li{display:inline-block}header>nav a,header>nav a:visited{margin:0 .5rem 1rem .5rem;border:1px solid var(--border);border-radius:var(--standard-border-radius);color:var(--text);display:inline-block;padding:.1rem 1rem;text-decoration:none}header>nav a.current,header>nav a:hover,header>nav a[aria-current=page]{border-color:var(--accent);color:var(--accent);cursor:pointer}@media only screen and (max-width:720px){header>nav a{border:none;padding:0;text-decoration:underline;line-height:1}}aside,details,pre,progress{background-color:var(--accent-bg);border:1px solid var(--border);border-radius:var(--standard-border-radius);margin-bottom:1rem}aside{font-size:1rem;width:30%;padding:0 15px;margin-inline-start:15px;float:right}[dir=rtl] aside{float:left}@media only screen and (max-width:720px){aside{width:100%;float:none;margin-inline-start:0}}article,dialog,fieldset{border:1px solid var(--border);padding:1rem;border-radius:var(--standard-border-radius);margin-bottom:1rem}article h2:first-child,section h2:first-child{margin-top:1rem}section{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:2rem 1rem;margin:3rem 0}section+section,section:first-child{border-top:0;padding-top:0}section:last-child{border-bottom:0;padding-bottom:0}details{padding:.7rem 1rem}summary{cursor:pointer;font-weight:700;padding:.7rem 1rem;margin:-.7rem -1rem;word-break:break-all}details[open]>summary+*{margin-top:0}details[open]>summary{margin-bottom:.5rem}details[open]>:last-child{margin-bottom:0}table{border-collapse:collapse;margin:1.5rem 0}td,th{border:1px solid var(--border);text-align:start;padding:.5rem}th{background-color:var(--accent-bg);font-weight:700}tr:nth-child(even){background-color:var(--accent-bg)}table caption{font-weight:700;margin-bottom:.5rem}.button,button,input,select,textarea{font-size:inherit;font-family:inherit;padding:.5rem;margin-bottom:.5rem;border-radius:var(--standard-border-radius);box-shadow:none;max-width:100%;display:inline-block}input,select,textarea{color:var(--text);background-color:var(--bg);border:1px solid var(--border)}label{display:block}textarea:not([cols]){width:100%}select:not([multiple]){background-image:linear-gradient(45deg,transparent 49%,var(--text) 51%),linear-gradient(135deg,var(--text) 51%,transparent 49%);background-position:calc(100% - 15px),calc(100% - 10px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-inline-end:25px}[dir=rtl] select:not([multiple]){background-position:10px,15px}input[type=checkbox],input[type=radio]{vertical-align:middle;position:relative;width:min-content}input[type=checkbox]+label,input[type=radio]+label{display:inline-block}input[type=radio]{border-radius:100%}input[type=checkbox]:checked,input[type=radio]:checked{background-color:var(--accent)}input[type=checkbox]:checked::after{content:" ";width:.18em;height:.32em;border-radius:0;position:absolute;top:.05em;left:.17em;background-color:transparent;border-right:solid var(--bg) .08em;border-bottom:solid var(--bg) .08em;font-size:1.8em;transform:rotate(45deg)}input[type=radio]:checked::after{content:" ";width:.25em;height:.25em;border-radius:100%;position:absolute;top:.125em;background-color:var(--bg);left:.125em;font-size:32px}@media only screen and (max-width:720px){input,select,textarea{width:100%}}input[type=color]{height:2.5rem;padding:.2rem}input[type=file]{border:0}hr{border:none;height:1px;background:var(--border);margin:1rem auto}mark{padding:2px 5px;border-radius:var(--standard-border-radius);background-color:var(--marked);color:#000}mark a{color:#0d47a1}img,video{max-width:100%;height:auto;border-radius:var(--standard-border-radius)}figure{margin:0;display:block;overflow-x:auto}figcaption{text-align:center;font-size:.9rem;color:var(--text-light);margin-bottom:1rem}blockquote{margin-inline-start:2rem;margin-inline-end:0;margin-block:2rem;padding:.4rem .8rem;border-inline-start:.35rem solid var(--accent);color:var(--text-light);font-style:italic}cite{font-size:.9rem;color:var(--text-light);font-style:normal}dt{color:var(--text-light)}code,kbd,pre,pre span,samp{font-family:var(--mono-font);color:var(--code)}kbd{color:var(--preformatted);border:1px solid var(--preformatted);border-bottom:3px solid var(--preformatted);border-radius:var(--standard-border-radius);padding:.1rem .4rem}pre{padding:1rem 1.4rem;max-width:100%;overflow:auto;color:var(--preformatted)}pre code{color:var(--preformatted);background:0 0;margin:0;padding:0}progress{width:100%}progress:indeterminate{background-color:var(--accent-bg)}progress::-webkit-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent-bg)}progress::-webkit-progress-value{border-radius:var(--standard-border-radius);background-color:var(--accent)}progress::-moz-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent);transition-property:width;transition-duration:.3s}progress:indeterminate::-moz-progress-bar{background-color:var(--accent-bg)}dialog{max-width:40rem;margin:auto}dialog::backdrop{background-color:var(--bg);opacity:.8}@media only screen and (max-width:720px){dialog{max-width:100%;margin:auto 1em}}sub,sup{vertical-align:baseline;position:relative}sup{top:-.4em}sub{top:.3em}.notice{background:var(--accent-bg);border:2px solid var(--border);border-radius:var(--standard-border-radius);padding:1.5rem;margin:2rem 0} diff --git a/css/style.css b/css/style.css index 0da337e..f9ae157 100644 --- a/css/style.css +++ b/css/style.css @@ -1,20 +1,19 @@ +/* Uncomment the css below + * for basic css when not using + * simple.css in config.php + * */ + +/* header{padding:1em 0} header h1{font-size: 1.2rem;border-bottom:3px solid #333;display:inline-block} header h1 a{text-decoration: none; color: inherit} .article-head{margin-bottom:4em;padding:1em 0;border-bottom:1px dashed #333} .article-head h1, .article-head .date{display:inline-block} .article-head .date{margin-left:2em;font-style:italic} - blockquote{border-left:3px solid #333;padding-left:1em} pre{border:1px dotted #333;background-color:#333;color:white;border-radius:10px;padding:1em;margin:2em 0} - body.post{color:#444;font-family:sans-serif;padding-left:2em} -body.post main h1, -body.post main h2, -body.post main h3, -body.post main h4, -body.post main h5, -body.post main h6{font-family:serif} +h1, h2, h3, h4, h5, h6{font-family:serif} body.post main{max-width:900px} - img{max-width:100%} +*/ diff --git a/edit.php b/edit.php index 2a423a1..7d0fdb4 100644 --- a/edit.php +++ b/edit.php @@ -59,10 +59,12 @@ header ul.inline li::after{content:'' !important} .post-list tbody tr:nth-child(odd){background-color: #DDD} td{padding-left:1em} - details {border: 1px solid #aaa;border-radius: 4px;padding: 0.5em 0.5em 0} + details {border: 1px solid #aaa;border-radius: 4px;padding: 0.5em 0.5em 0;margin-top:2em} summary {font-weight: bold;margin: -0.5em -0.5em 0;padding: 0.5em} - details[open] summary {border-bottom: 1px solid #aaa;margin-bottom: 0.5em} + details[open]{padding-bottom:1em} + details[open] summary {border-bottom: 1px solid #aaa;margin-bottom: 0.5em;background:#333;color:#DDD} thead{background: #333;color:#EEE} + pre{background:#333;color:white;padding:1em;width:calc(90% - 2em);margin:1em auto;border-radius:5px} @@ -76,13 +78,71 @@
-

Editing - +

Editing -

+ +
+ Guide to simple.css variables +

The following are the default variable values for the active simple.css css theming. You can override any of them you like.

+

For example, to override the border color for both the light and dark modes you could do something like the following:

+
:root, ::backdrop {
+  --border: darkred;
+}
+
+@media (prefers-color-scheme: dark) {
+  :root, ::backdrop {
+    --border: red;
+  }
+}
+

That would change the color everywhere on your site. You can override any other css (things not set by variables) by just writing your own css that overrides the things you want to change.

+

Default Value Guide

+ +
:root,
+::backdrop {
+  /* Set sans-serif & mono fonts */
+  --sans-font: -apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
+    "Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
+    "Helvetica Neue", sans-serif;
+  --mono-font: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
+  --standard-border-radius: 5px;
+
+  /* Default (light) theme */
+  --bg: #fff;
+  --accent-bg: #f5f7ff;
+  --text: #212121;
+  --text-light: #585858;
+  --border: #898EA4;
+  --accent: #0d47a1;
+  --accent-text: var(--bg);
+  --code: #d81b60;
+  --preformatted: #444;
+  --marked: #ffdd33;
+  --disabled: #efefef;
+}
+
+/* Dark theme */
+@media (prefers-color-scheme: dark) {
+  :root,
+  ::backdrop {
+    color-scheme: dark;
+    --bg: #212121;
+    --accent-bg: #2b2b2b;
+    --text: #dcdcdc;
+    --text-light: #ababab;
+    --accent: #ffb300;
+    --accent-text: var(--bg);
+    --code: #f06292;
+    --preformatted: #ccc;
+    --disabled: #111;
+  }
+}
+
+
diff --git a/index.php b/index.php index a8e17c1..e4166f1 100644 --- a/index.php +++ b/index.php @@ -11,6 +11,9 @@ <?php echo SITE_NAME; ?> + + + diff --git a/post.php b/post.php index 7243a0a..e582198 100644 --- a/post.php +++ b/post.php @@ -20,10 +20,13 @@ <?php echo $parts["title"]; ?> - - + + + + + diff --git a/site_actions.php b/site_actions.php new file mode 100644 index 0000000..058f068 --- /dev/null +++ b/site_actions.php @@ -0,0 +1,30 @@ +