drag & drop tiddlers + homepage iframe integration

This commit is contained in:
fred 2022-05-04 21:00:53 +02:00
parent d22b66e202
commit d45c75fde9
26 changed files with 472 additions and 1703 deletions

View File

@ -1,531 +0,0 @@
/** General **/
html {
font-family: Helvetica, Geneva, sans-serif;
}
body {
color: #666;
}
html,
body {
margin: 0;
background: hsla(182, 43%, 94%, 1);
}
/** Helpers **/
.noscroll {
overflow: hidden;
}
/** Structure **/
header {
text-align: left;
margin: 30px;
position: relative;
color: rgba(0, 0, 0, .25);
}
header img {
float: left;
margin-right: 2em;
}
header h1 {
color: #333;
margin: 0 0 0.2em;
font-size: 3em;
font-weight: 600;
}
header h2 {
margin: 0;
font-size: 1.5em;
font-weight: 500;
color: rgba(0, 0, 0, .35);
}
.attr {
display: block;
position: absolute;
right: 0;
top: 50%;
transform: translate3d(0,-50%,0);
font-size: 0.9em;
}
.attr a {
color: #7abbed;
text-decoration: none;
}
.attr a:hover {
text-decoration: underline;
}
article {
font-family: Verdana, Geneva, sans-serif;
}
footer {
position: fixed;
width: 100%;
position: sticky;
bottom: 0;
padding-bottom: 30px;
z-index: 1;
}
/** MCE overrides **/
.editor-toolbar,
.CodeMirror {
border-left: none !important;
border-right: none !important;
border-radius: 0 !important;
}
.editor-toolbar {
background-color: #f9f9f9 !important;
}
.editor-statusbar {
padding: 8px 30px !important;
}
/** Button **/
button {
overflow: visible;
text-transform: none;
font: inherit;
}
.pure-button {
border: transparent;
box-sizing: border-box;
cursor: pointer;
display: inline-block;
font-family: inherit;
line-height: normal;
padding: .5em 1em;
text-align: center;
text-decoration: none;
vertical-align: middle;
white-space: nowrap;
zoom: 1;
-webkit-user-drag: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
color: rgba(0, 0, 0, .5);
font-weight: bold;
border-radius: 4px;
background: rgb(122, 202, 206);
display: block;
transition: all .25s ease-in;
color: #fff;
border-color: rgb(82, 137, 132);
border-width: 1px 1px 3px;
border-style: solid;
font-family: Helvetica;
}
.pure-button:hover {
background-color: #93d4d7;
}
.pure-button:active {
border-width: 3px 1px 1px;
}
.button-publish {
margin: 0 auto;
font-size: 150%;
}
/** Overlay **/
#overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0,0,0,.75);
z-index: 2;
transform: perspective(600px);
display: none;
overflow-y: scroll;
}
#overlay section {
background: #fff;
margin: 0 auto;
transform: translate3d(-50%, -50%,0);
left: 50%;
top: 50%;
position: fixed;
padding: 0;
text-align: left;
width: 48em;
display: none;
border-radius: 5px;
box-shadow: 0px 10px 12px -5px rgba(0,0,0,.25);
padding-bottom: 20px;
}
#overlay section div {
margin: 0 20px;
}
#overlay section div p,
#overlay section a.essayaddr,
#overlay section code {
margin: 0 0 1em;
}
#overlay section a.essayaddr {
font-size: 15px;
font-weight: bold;
text-align: center;
background: #f9f9f9;
padding: 5px;
border-radius: 3px;
display: block;
text-overflow: ellipsis;
overflow: hidden;
}
#overlay section code {
background: #000;
border-radius: 5px;
color: #999;
display: block;
overflow: hidden;
overflow-x: auto;
padding: 5px;
white-space: nowrap;
}
#overlay section div.note {
padding: 10px;
background-color: rgb(255, 255, 209);
border-radius: 5px;
}
#overlay section div.note p:last-child {
margin-bottom: 0;
}
#overlay section h3 {
margin: 0 0 20px;
padding: 10px;
background: hsla(182, 43%, 94%, 1);
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom: 1px solid rgba(0,0,0,.15);
}
#overlay section a {
color: #7abbed;
}
#overlay .pure-button {
margin: 20px auto 0;
display: block;
}
#overlay #essay-pin {
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
}
#overlay .loading {
position: absolute;
left: 50%;
top: 50%;
display: block;
width: 30px;
height: 30px;
transform: translate3d(-50%, -50%, 0) rotate3d(0,1,1, -90deg) scale3d(1,1,1);
transform-style: preserve-3d;
animation: pulse 0.5s infinite alternate;
}
#overlay .loading:before,
#overlay .loading:after,
#overlay .loading em {
content: '';
display: block;
background-color: #4a9ea1;
width: 30px;
height: 30px;
text-indent: -9999999px;
box-shadow: inset 0 0 0px 4px rgba(0, 0, 0, .25);
}
#overlay .loading:before {
transform: translate3d(50%,0%,0) rotateY(90deg);
background: rgb(110,183,187);
}
#overlay .loading em {
transform: translate3d(0,-100%,15px);
background: rgb(122,202,206);
}
#overlay .loading:after {
transform: translate3d(0%,-150%,0) rotateX( 90deg );
background: rgb(95,157,161);
}
@keyframes pulse {
from {
transform: translate3d(-50%, -50%, 0) rotate3d(0,1,1, -90deg) scale3d(1,1,1);
}
to {
transform: translate3d(-50%, -50%, 0) rotate3d(0,1,1, -90deg) scale3d(1.5,1.5,1.5);
}
}
/** Overlay **/
.overlay {
display: none;
}
.overlay.open {
display: block;
}
.overlay {
display: none;
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(0,0,0,.6);
z-index: 3;
}
.overlay .overlay-body {
width: 600px;
background: #fff;
position: absolute;
left: 50%;
transform: translate3d(-50%, -50%, 0);
top: 50%;
text-align: center;
padding: 0;
border-radius: 0px;
box-shadow: 0 12px 30px 0 rgba(0,0,0,.5), inset 0 1px 0 0 hsla(0,0%,100%,.65);
z-index: 4;
}
.overlay .closeoverlay {
cursor: pointer;
}
.overlay .overlay-body .tabs {
white-space: nowrap;
background: rgb(122, 202, 206);
overflow: hidden;
}
.overlay .overlay-body .tab {
padding: 10px 0;
width: 50%;
display: inline-block;
box-sizing: border-box;
text-decoration: none;
color: #fff;
}
.overlay .overlay-body .tabs .active {
color: #000;
background: #fff;
cursor: default;
}
.overlay .overlay-body [data-tabcontent] {
display: none;
padding: 20px;
}
.overlay .overlay-body [data-tabcontent].active {
display: block;
}
.overlay #upload,
.overlay form button {
margin: 0 0 20px;
display: inline-block;
}
.overlay #upload.uploading {
color: #33759F;
background-color: transparent;
cursor: default;
}
.overlay #upload.uploading:hover {
border-color: #33759F;
}
.overlay #background {
display: none;
}
.overlay .overlay-body h3 {
margin: 0 0 20px;
color: #33759F;
padding: 10px 10px 10px;
border-bottom: 2px solid #33759F;
text-align: left;
}
.overlay .visit {
display: block;
margin-bottom: 20px;
font-weight: bold;
font-size: 20px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.overlay .fields {
text-align: left;
width: inherit;
}
.overlay .field {
margin-bottom: 35px;
position: relative;
}
.overlay .field:after {
display: none;
position: absolute;
top: 0px;
left: 50%;
transform: translate3d(-50%, 0,0 );
padding: 2px 9px;
margin: 0;
}
.overlay .field.error:after {
content: attr(data-err);
display: block;
}
.overlay label {
display: block;
font-weight: bold;
margin-bottom: 10px;
}
.overlay input {
width: 100%;
margin: 0;
}
.overlay .pin-stats {
display: none;
position: absolute;
left: 50%;
transform: translate3d(-50%, 100%, 0);
font-size: 15px;
font-style: normal;
bottom: -10px;
}
.overlay .pin-stats.open {
display: block;
}
#form-messages p {
margin: 10px;
display: inline-block;
padding: 5px 15px;
}
.overlay .field:after,
#form-messages p {
background: red;
color: #fff;
font-size: 15px;
border-radius: 30px;
}
input {
outline: none;
margin: 0;
font-size: 20px;
display: inline;
border-radius: 30px;
padding: 8px 13px;
border: 2px solid #787C7F;
box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.25);
box-sizing: border-box;
}
input::placeholder {
color: #ccc;
}
/** Media queries **/
@media (max-width: 48em) {
header {
text-align: center;
}
header img {
float: none;
width: 70px;
margin: 0 0 1em 0;
}
header h1 {
font-size: 2em;
}
header h2 {
font-size: 1.2em;
}
.attr {
position: static;
transform: initial;
margin-top: 30px;
text-align: center;
}
.editor-statusbar {
display: none !important;
}
#overlay section {
border-radius: 0;
width: 100%;
top: 0;
left: 0;
transform: initial;
position: static;
}
#overlay section h3 {
border-radius: 0;
}
}
@media (max-width: 650px) {
.overlay .overlay-body {
width: 100%;
border: none;
border-radius: 0;
bottom: 0;
transform: none;
left: 0;
box-sizing: border-box;
top: initial;
padding: 0;
}
.overlay form button {
margin-top: 20px;
}
.overlay .fields {
padding: 20px 20px 0;
box-sizing: border-box;
}
.overlay .field {
margin-bottom: 20px;
white-space: nowrap;
}
.overlay .field:last-child {
margin: 0;
}
.overlay .button.newpin {
margin: 20px 0;
}
.overlay .button.closeoverlay {
display: block;
text-align: center;
border: none;
margin-top: 20px;
border-radius: 0;
padding: 10px;
font-weight: normal;
margin: 0;
color: #33759F;
border: none;
border-top: 1px solid #ddd;
}
}
@media (max-width: 520px) {
.authenticated h1 {
font-size: 30px;
}
.overlay .overlay-body h3 {
margin-bottom: 10px;
}
.overlay .pin-details p.name input {
width: 150px;
}
.overlay .pin-details p.name .button {
padding: 7px 10px;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/assets/icons/mstile-150x150.png"/>
<TileColor>#00aba9</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 533 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,17 +0,0 @@
{
"name": "IPFessay",
"icons": [
{
"src": "/assets/icons/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/assets/icons/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#5fcbcf",
"background_color": "#5fcbcf"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1 +0,0 @@
<svg version="1" xmlns="http://www.w3.org/2000/svg" width="933.333" height="933.333" viewBox="0 0 700.000000 700.000000"><path d="M343.5 3.7c-3.3 2-8 4.7-10.5 6.1-6.9 3.9-9 5.1-31.4 18.1-11.5 6.6-21.1 12.1-21.3 12.1-.2 0-1.6.8-3.1 1.9-1.5 1-16.6 9.9-33.7 19.7-44.4 25.4-74.6 42.9-85 48.9-13.7 8-72.4 41.9-77.5 44.8-2.5 1.4-11 6.3-19 10.9l-14.5 8.4V525.3l24 13.9c13.2 7.7 26.3 15.2 29 16.8 2.8 1.5 16.3 9.3 30 17.2 13.8 8 26.4 15.3 28 16.2 1.7.9 4.4 2.5 6 3.5 1.7 1 5 2.9 7.5 4.3s12.3 7.1 21.9 12.7c9.5 5.5 17.5 10.1 17.7 10.1.2 0 4.4 2.5 9.5 5.5 5 3 9.5 5.5 10 5.5s.9.4.9 1c0 .5.5 1 1.1 1 .9 0 14.1 7.4 29.9 16.9 1.9 1.1 4.9 2.8 6.5 3.7 1.7.9 19 10.9 38.5 22.2 19.5 11.2 37 21.3 38.8 22.3l3.3 1.9 6.7-3.9c3.7-2.1 13.9-8 22.7-13.1 34.7-20.1 46.9-27 47.7-27 .4 0 .8-.5.8-1 0-.6.6-1 1.3-1 .7 0 2.8-1.1 4.7-2.3 1.9-1.3 5.5-3.5 8-4.9 2.5-1.4 6.2-3.5 8.3-4.7 2-1.1 5.4-3.1 7.5-4.2 2-1.2 7.5-4.4 12.2-7.2 4.7-2.7 10.1-5.9 12-7 17.8-10 35.6-20.2 36-20.7.3-.3 1.9-1.2 3.5-2.1 6.6-3.6 122.3-70.4 126.8-73.1l4.7-3V349.4c0-97.4-.4-175.4-.9-175.4-.4 0-12.9-7-27.6-15.5-14.7-8.5-27.1-15.5-27.6-15.5s-.9-.5-.9-1c0-.6-.4-1-1-1-.5 0-5.5-2.7-11.1-6-5.5-3.3-10.2-6-10.4-6-.2 0-3.6-1.9-7.7-4.3-4-2.4-9.3-5.5-11.8-6.9-2.5-1.4-8.5-4.9-13.5-7.8-4.9-2.9-10.6-6.2-12.5-7.2-3.5-2.1-19.4-11.2-71-41.1-15.7-9-30.1-17.3-32-18.4-1.9-1.1-19.6-11.3-39.3-22.7C366.1 9.3 349.9 0 349.7 0c-.1.1-2.9 1.7-6.2 3.7z"/></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><ellipse fill="#664500" cx="11.5" cy="16.5" rx="2.5" ry="3.5"/><path fill="#664500" d="M28.457 17.797c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.145.591.175.142.426.147.61.014.012-.009 1.262-.902 3.702-.902 2.426 0 3.674.881 3.702.901.088.066.194.099.298.099.11 0 .221-.037.312-.109.177-.142.238-.386.145-.594zM5.999 12.458c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4 3.262-4.35 7.616-4.4 7.8-4.4.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.156.002-3.569.086-6.205 3.6-.195.262-.496.4-.8.4zm23.002 2.125c-.305 0-.604-.138-.801-.4-2.592-3.457-6.961-2.627-7.004-2.62-.547.108-1.068-.243-1.177-.784-.108-.542.243-1.068.784-1.177.231-.047 5.657-1.072 8.996 3.38.332.442.242 1.069-.2 1.4-.179.137-.389.201-.598.201zm-5.747 8.994c-.188-.11-.432-.087-.597.06-.01.008-1.013.863-4.657.863-3.641 0-4.646-.854-4.646-.854-.159-.16-.404-.19-.6-.082-.195.111-.293.339-.238.557.01.044 1.144 4.379 5.484 4.379s5.474-4.335 5.485-4.379c.053-.213-.044-.431-.231-.544z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,648 +0,0 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Astronaute - Astroport One - PROFIL MadeInZion - </title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="assets/icons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="assets/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="assets/icons/favicon-16x16.png">
<link rel="manifest" href="assets/icons/manifest.json">
<link rel="mask-icon" href="assets/icons/safari-pinned-tab.svg" color="#5bbad5">
<link rel="shortcut icon" href="assets/icons/favicon.ico">
<meta name="msapplication-config" content="assets/icons/browserconfig.xml">
<meta name="theme-color" content="#5fcbcf">
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/simplemde.min.css">
<script src="assets/js/simplemde.min.js"></script>
<script>
(function() {
var Utilities = {
isMobileOrTablet : function() {
var check = false;
(function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);
return check;
},
hasClass : (el, className) => {
if(!el)
return;
if (el.classList)
return el.classList.contains(className)
else
return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'))
},
addClass : (el, className) => {
if(!el)
return;
if (el.classList)
el.classList.add(className)
else if (!hasClass(el, className))
el.className += " " + className
},
removeClass : (el, className) => {
if(!el)
return;
if (el.classList)
el.classList.remove(className)
else if (hasClass(el, className)) {
var reg = new RegExp('(\\s|^)' + className + '(\\s|$)')
el.className=el.className.replace(reg, ' ')
}
}
};
var FilesOverlay = {
isImage : false,
initialize : function() {
if(!document.querySelector('#image-overlay'))
return;
var self = this;
// Fixes the sticky hover effects in iOS
document.querySelector('#upload').addEventListener('click', () => {
setTimeout(() => {
this.className = '';
}, 300);
});
document.querySelector('#background').addEventListener('change', (event) => {
if(!event.target)
return;
var files = event.target.files;
if(files.count == 0)
return;
var file = files[0];
if(!file)
return;
// Remove the extension from the file
var name = file.name.replace(/\.[^/.]+$/, "");
IPFessay.files[file.name.toLowerCase()] = file;
var md_text = (this.isImage ? '![](' + file.name + ')' : '[' + file.name + '](' + file.name + ')');
var pos = IPFessay.simplemde.codemirror.getCursor();
IPFessay.simplemde.codemirror.setSelection(pos, pos);
IPFessay.simplemde.codemirror.replaceSelection(md_text);
this.closeOverlay();
});
var tabs = document.querySelectorAll('#image-overlay .tab');
for(var i = 0; i < tabs.length; i++) {
tabs[i].addEventListener('click', function(event) {
var tab = this.dataset.tab;
if(Utilities.hasClass(this, 'active'))
return;
var tabs = document.querySelectorAll('#image-overlay .tab');
for(var k = 0; k < tabs.length; k++) {
var localTab = tabs[k];
if(localTab.dataset.tab.localeCompare(tab) == 0)
Utilities.addClass(localTab, 'active');
else
Utilities.removeClass(localTab, 'active');
}
var tabContents = document.querySelectorAll('#image-overlay [data-tabcontent]');
for(var j = 0; j < tabContents.length; j++) {
var tabContent = tabContents[j];
if(tabContent.dataset.tabcontent.localeCompare(tab) == 0)
Utilities.addClass(tabContent, 'active');
else
Utilities.removeClass(tabContent, 'active');
}
document.querySelector('#form-messages').innerHTML = '';
});
}
document.querySelector('#image-overlay form').addEventListener('submit', (event) => {
event.stopPropagation();
event.preventDefault();
var imageURL = document.getElementById('image_url').value;
var md_text = (this.isImage ? '![](' + imageURL + ')' : '[' + imageURL + '](' + imageURL + ')');
var pos = IPFessay.simplemde.codemirror.getCursor();
IPFessay.simplemde.codemirror.setSelection(pos, pos);
IPFessay.simplemde.codemirror.replaceSelection(md_text);
this.closeOverlay();
return false;
});
document.querySelector('#image-overlay').addEventListener('click', function(event) {
if(event.target != this)
return;
self.closeOverlay();
});
document.querySelector('#image-overlay .new-hash').addEventListener('submit', (event) => {
event.stopPropagation();
event.preventDefault();
return false;
});
document.addEventListener('keyup', (event) => {
if(this.isOverlayOpen && event.keyCode == 27)
this.closeOverlay();
});
var closeButtons = document.querySelectorAll('#image-overlay .closeoverlay');
for(i = 0; i < closeButtons.length; i++ )
closeButtons[i].addEventListener('click', () => { this.closeOverlay(); });
},
startUploading : function() {
document.querySelector('#background').disabled = 'disabled';
Utilities.addClass(document.querySelector('#upload'), 'uploading');
document.querySelector('#upload').innerHTML = 'Uploading...';
},
endUploading : function() {
document.querySelector('#background').disabled = '';
Utilities.removeClass(document.querySelector('#upload'), 'uploading');
document.querySelector('#upload').innerHTML = 'Upload';
},
openOverlay : function() {
document.getElementById('background').accept = (this.isImage ? 'image/*' : '');
Utilities.addClass(document.body, 'noscroll');
Utilities.addClass(document.querySelector('#image-overlay'), 'open');
setTimeout(() => {
if(!Utilities.isMobileOrTablet())
document.querySelector('#image_url').focus();
}, 100);
this.isOverlayOpen = true;
},
closeOverlay : function() {
Utilities.removeClass(document.body, 'noscroll');
Utilities.removeClass(document.querySelector('#image-overlay'), 'open');
Utilities.removeClass(document.querySelector('.overlay .pin-stats'), 'open');
Utilities.removeClass(document.querySelector('.field[data-name="hash"]'), 'error');
Utilities.removeClass(document.querySelector('.field[data-name="name"]'), 'error');
document.querySelector('#form-messages').innerHTML = '';
document.querySelector('#image_url').value = '';
this.isOverlayOpen = false;
}
};
var IPFessay = {
files : {},
initialize : function() {
var textArea = document.querySelector('#text-input');
this.simplemde = new SimpleMDE({
autofocus: true,
element: textArea,
toolbar: [
"bold", "italic", "heading", "|",
"quote", "unordered-list", "ordered-list", "|",
"link", "image", "table", "code", "|",
"preview", "side-by-side", "fullscreen", "|",
"guide"
],
});
this.simplemde.codemirror.on("beforeChange", (event, change) => {
if(!change.text || change.text.length == 0)
return;
var changeText = change.text[0];
var isImageButton = (changeText.length > 0 && "![](http://)".localeCompare(changeText) == 0);
var isLinkButton = (changeText.length > 0 && "[](http://)".localeCompare(changeText) == 0);
if(isImageButton || isLinkButton) {
FilesOverlay.isImage = isImageButton;
FilesOverlay.openOverlay();
change.cancel();
}
});
document.addEventListener('keydown', (event) => {
if ((event.ctrlKey || event.metaKey) &&
(event.keyCode == 13 || event.keyCode == 10))
this.publishEssay();
});
document.addEventListener('keyup', (event) => {
if(!this.overlayLoading && event.keyCode == 27)
this.closeOverlay();
});
document.querySelector('#overlay button').addEventListener('click', () => {
this.closeOverlay();
});
document.querySelector('.button-publish').addEventListener('click', () => {
this.publishEssay();
});
},
ipfsPUT : function(hash, data, filename, success) {
var req = new XMLHttpRequest();
req.onreadystatechange = () => {
if(req.readyState != XMLHttpRequest.DONE)
return;
if(req.status >= 200 && req.status < 300) {
var hash = req.getResponseHeader("Ipfs-Hash");
success && success(hash);
}
else
this.showError();
};
req.onerror = (error) => { this.showError(); };
req.open("PUT", "/ipfs/" + hash + "/" + filename, true);
req.setRequestHeader("Content-type", "text/html");
req.send(data);
},
uploadFiles : function(hash, files, callback) {
if(files.length == 0) {
callback && callback(hash);
return;
}
// Get the first file
var file = files[0];
var filename = undefined;
if(typeof file == 'string')
filename = 'index.html';
else
filename = file.name;
// Remove it from the files array
files.splice(files.indexOf(file),1);
this.ipfsPUT(hash, file, filename, (new_hash) => {
this.uploadFiles(new_hash, files, callback);
});
},
publishEssay : function() {
this.openOverlay();
this.simplemde.codemirror.save();
var md = document.querySelector('#text-input').value;
// Get the generated HTML
var mdHTML = this.simplemde.options.previewRender(md);
// Create a temp element
var div = document.createElement('div');
div.innerHTML = mdHTML;
var title = undefined;
if(div.children.length > 0 && div.children[0].tagName.match("^[hH][123]$"))
title = div.children[0].innerText;
var renderedPage = this.renderPage(mdHTML, title);
var addedFiles = [];
addedFiles.push(renderedPage);
// Look for images and links in the markdown file
var re = /(\[.*?\]\()(.+?)(\))/g;
while ((matches = re.exec(md)) !== null) {
if(matches.length < 3)
continue;
var filename = matches[2].toLowerCase();
// Cross match them with the ones in the files dictionary
if(filename in this.files)
addedFiles.push(this.files[filename]);
}
this.uploadFiles(
"QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn", // Empty folder hash
addedFiles,
(hash) => {
this.showLink(hash, title);
this.primeCaches(hash);
});
},
showError : function() {
this.closeOverlay();
setTimeout(() => {
alert('There was an error communicating with the IPFS gateway API.\n\n' +
'Please ensure the daemon is running, ipfs daemon --writable');
}, 500);
},
openOverlay : function() {
document.body.className = 'noscroll';
document.querySelector('#overlay').style.display = 'block';
document.querySelector('#overlay .loading').style.display = 'block';
document.querySelector('#overlay section').style.display = 'none';
this.overlayLoading = true;
},
closeOverlay : function() {
document.body.className = '';
document.querySelector('#overlay').style.display = 'none';
document.querySelector('#overlay section').style.display = 'none';
},
primeCaches : function(hash) {
// Make background GET requests to some public gateways just to
// add the file to their caches.
[
"gateway.ipfs.io",
// "hardbin.com",
"ipfs.eternum.io",
// "cloudflare-ipfs.com",
// "ipfs.infura.io",
"tube.copylaradio.com",
].forEach(function(gateway) {
var req = new XMLHttpRequest();
req.open("GET", "https://" + gateway + "/ipfs/" + hash);
req.send();
});
},
showLink : function(hash, title) {
var pinName = 'MadeInZion';
if(title)
pinName = title;
this.overlayLoading = false;
document.querySelector('#overlay .loading').style.display = 'none';
document.querySelector('#overlay section').style.display = 'block';
document.querySelector('#overlay a#essay-link').href = "http://localhost:8080/ipfs/" + hash;
document.querySelector('#overlay a#essay-link').innerText = "http://localhost:8080/ipfs/" + hash;
document.querySelector('#overlay a#eternum-link').href = "https://tube.copylaradio.com/ipfs/" + hash;
document.querySelector('#overlay a#eternum-link').innerText = "https://tube.copylaradio.com/ipfs/" + hash;
document.querySelector('#overlay #essay-pin').innerHTML = '<a href="https://www.eternum.io/pin/' + hash + '/?name=' + pinName + '" target="_blank">https://www.eternum.io/pin/' + hash + '/</a>';
document.querySelector('#overlay #pin-link').innerText = "$ ipfs pin add " + hash;
},
renderPage: function(mdHTML, title) {
var pageTitle = 'Profil Astronaute';
if(title)
pageTitle = title;
return '<html>' +
'<head>' +
'<meta name="viewport" content="width=device-width, initial-scale=1">' +
'<link rel="stylesheet" href="/ipfs/QmSMwjABWVBsnS3Gha3xmjb5zKYndvFrS74iCAwykQCqcY/typesettings-1.2-min.css">' +
'<title>' + pageTitle + '</title>' +
'<style>' +
'footer {padding: 3em 0; text-align: center; font-size: 1.4em; border-top: 1px solid #e1e1e1;}' +
'a:hover { color: #222; border-bottom-color: #555; }' +
'@media only screen and (min-width: 1441px) { .typesettings { font-size: 2.4em; } }' +
'.typesettings { max-width: 33em; margin: 0 auto; }' +
'a { color: #aeaeae; border-bottom: 1px dotted #aeaeae; text-decoration: none; }' +
'</style>' +
'</head>' +
'<body>' +
'<article class="typesettings golden">' +
mdHTML +
'</article>' +
// '<footer><a href="https://ipfessay.stavros.io/">Publish your own essay with IPFessay</a>' +
// ' | <a href="https://gitlab.com/stavros/IPFessay">Gitlab</a></footer>' +
'</body>' +
'</html>';
}
};
window.IPFessay = IPFessay;
window.FilesOverlay = FilesOverlay;
})();
window.addEventListener('DOMContentLoaded', () => {
IPFessay.initialize();
FilesOverlay.initialize();
});
</script>
</head>
<body>
<header>
<img src="assets/images/logo.svg" width="100"/>
<h1>Astroport ONE</h1>
<h2>Identité Numérique Libre</h2>
<span class="attr">
<a href="https://oasis.astroport.com">Blog</a> |
<a href="https://www.youtube.com/channel/UCgbd28yps5uF3NWDq-FLE9A">Youtube</a>
</span>
</header>
<article>
<textarea id="text-input" style="width: 100%;" oninput="this.editor.update()" rows="15" cols="60">
# _PLAYER_ / _PSEUDO_
Astronaute, décrivez-vous...
Qui. Quand. Quoi. Où. Pourquoi?
## Savoir-faire
exemple
* Bois (cousu, vis, emboitement
* Soudure
_VIDEOS_
## Matos
exemple
1. Van : RENAULT TRAFIC
2. Perçeuse Visseuse sans fil : HITACHI
_PHOTOS_
~~~
Astronaute de la communauté MadeInzion. Voyagez entre les stations Astroport.
Votre identité souveraine s'inscrit de façon inaliénable sur IPFS
~~~
</textarea>
</article>
<footer>
<button class="button-publish pure-button">Publier</button>
</footer>
<div id="overlay">
<span class="loading"><em>Chargement...</em></span>
<section>
<h3>Astroport One - Astronaute</h3>
<div>
<p>
Voici votre lien permanent, infalsifiable enregsitré sur IPFS:
</p>
<a id="essay-link" class="essayaddr" href="" target="_blank"></a>
<p>
Vous pouvez le faire publier sur le bootstrap astrXbian :
</p>
<a id="eternum-link" class="essayaddr" href="" target="_blank"></a>
</div>
<div class="note">
<p>
<strong>NOTE: Ceci est un document numérique officiel MadeInZion.</strong>
<br>Bienvenue extraterrestre, bricoleur de génie, ingénieur, inventeur, rêveur...
Autonomie et mode de vie en Forêt Jardin, œuvre collective de terraformation.
Aucune carte d'identité requise. Participez au jeu... Rejoignez la communauté des créateurs.
</p>
<p>Vous pouvez épingler votre profil avec la commande :</p>
<code id="pin-link"></code>
<p>
Connectez-votre station et profitez du service <a href="https://tube.copylaradio.com/"
target="_blank">CopyLaRadio</a>.
</p>
<p id="essay-pin"></p>
</div>
<button class="pure-button">Fermer</button>
</section>
</div>
<div class="overlay" id="image-overlay">
<div class="new-hash overlay-body">
<div class="tabs">
<a href="javascript:void(0);" data-tab="link" class="tab active">Lien</a>
<a href="javascript:void(0);" data-tab="upload" class="tab">Depuis votre ordinateur</a>
</div>
<div id="form-messages"></div>
<form data-tabcontent="link" class="active">
<div class="fields">
<div class="field" data-name="hash">
<label for="image_url">URL</label>
<input required type="text" id="image_url"/>
</div>
</div>
<div>
<button class="pure-button prominent" type="submit">Attacher</button>
</div>
<span class="closeoverlay">Fermer</span>
</form>
<div data-tabcontent="upload">
<div>
<label for="background" id="upload" class="prominent pure-button">Envoyer et Attacher</label>
<input type="file" accept="image/*" id="background"/>
</div>
<span class="closeoverlay">Fermer</span>
</div>
</div>
</div>
</body>
</html>

View File

@ -2,187 +2,45 @@
<html>
<head>
<meta charset="utf-8">
<title>[BunkerBOX] Home _WHO_</title>
<title>'Moa' _PLAYER_ 'qo-op' [_PSEUDO_] Astronaute / Astroport.ONE</title>
<link rel="icon" type="image/png" href="styles/logo.png" />
<link rel="stylesheet" href="styles/decoration.css" type="text/css" />
<link rel="stylesheet" href="styles/layout.css" type="text/css" />
<link rel="stylesheet" href="styles/video-js.css" type="text/css" />
<link rel="stylesheet" href="styles/forest.css" type="text/css" />
<link rel="stylesheet" href="styles/tagcloud.css" type="text/css" />
<link rel="stylesheet" href="styles/decoration.css" type="text/css" />
<link rel="stylesheet" href="styles/font-awesome.min.css" type="text/css" />
<link rel="stylesheet" href="styles/video-wall.css" type="text/css" />
<script src="js/jquery.min.js"></script>
<script src="js/video.min.js"></script>
<script src="js/pagination.min.js"></script>
<script src="js/tagcloud.js"></script>
<link rel="stylesheet" href="styles/pagination.css" />
<script src="js/jquery.min.js"></script>
<script src="js/mustache.min.js"></script>
<script src="js/video-wall.js"></script>
<script src="js/videojs-contrib-hls.min.js"></script>
</head>
<body>
<header>
<h6>
<a href="_IPNSL_" target="bunker"> "<span>BunkerBOX</span>"</a> /ipfs/
</h6>
</header>
<main>
<div class="row">
<article>
<div class="row justify-center">
<h1 class="video-title">
<a href="https://git.p2p.legal/qo-op/bunkerbox" target="code">'BunkerBOX' est une extension de l'hebergement 'Crowdbunker'</a>.<br>
<a target="code" href="http://opencollective.com/monnaie-libre/projects/bunker-box">Copiez, conservez, partagez, diffusez vos chaines vidéos et multimédia dans IPFS!<br>
Prenez possession des clefs. Rendez in-censurable, in-arrêtable la liberté d'expression.</a>
</h1>
</div>
</article>
<div class="column">
<iframe src="http://127.0.0.1:8080/ipns/_MOANS_" id="iframe1" style="height:100%;width:100%;border:none;overflow:hidden;"></iframe>
</div>
<div class="column">
<iframe src="http://127.0.0.1:8080/ipns/_QOOPNS_" id="iframe2" style="height:100%;width:100%;border:none;overflow:hidden;"></iframe>
</div>
<center>
<div class="row justify-center">
<video
id="vbunk"
class="video-js vjs-theme-forest"
controls
preload="auto"
width="auto" height="360"
poster="_VUID_.jpg"
>
<source src="_VUID_.m3u8" type="application/x-mpegURL" />
<p class="vjs-no-js">
Activer JavaScript SVP
</p>
</video>
</div>
<p class="video-title">
_TITLE_
</p>
</center>
<div id="videosList"><div class="wrapper"></div></div>
<center>
<div id="channels" class="row justify-center"></div>
</center>
<article>
<div class="row justify-center">
<p><b>Activez votre Journal, récupérez la clef de votre canal !</b>
<br>
<ul>
<li>Débutant, sous Windows ou Mac ? Installez IPFS Desktop à votre OS: <a href="https://github.com/ipfs/ipfs-desktop/releases" target="code">IPFS Desktop</a></li>
<li>Plus aguerri ou sous Linux? Ajoutez 'go-ipfs' à votre système: <a href="https://github.com/ipfs/go-ipfs/releases" target="code">go-ipfs</a></li>
<li>Rendez votre navigateur compatible avec le compagnon IPFS <a href="https://github.com/ipfs/ipfs-companion/releases" target="code"><b>ipfs-companion</b></a> !!</li>
</ul>
Bunker BOX ready ?<br>
<b>Contactez support@qo-op.com</b><br>
</p>
</div>
</article>
<script>
$('#iframe1').load(function () {
$(this).height($(this).contents().height());
});
$('#iframe2').load(function () {
$(this).height($(this).contents().height());
});
</script>
<div id="calendarList"><div class="wrapper thumbnail"></div></div>
<center>
<h6>
<a href="_IPNSL_"> _\/_ </a> powered by <a href="https://astroport.com"><span>"</span>Astroport<span>"</span></a>
</h6>
</center>
</main>
</body>
<script>
var player = videojs('vbunk', {
});
</script>
<script>
$.getJSON('./history.json', function (json) {
$('#videosList').pagination({
dataSource: json.Videos,
pageSize: 1,
callback: function(data, pagination) {
var wrapper = $('#videosList .wrapper').empty();
$.each(data, function (i, f) {
$('#videosList .wrapper').append('<ul><li>' + f.link + '</li></ul>');
});
}
});
});
$.getJSON('./calendar.json', function (json) {
$('#calendarList').pagination({
dataSource: json.History,
pageSize: 1,
callback: function(data, pagination) {
var wrapper = $('#calendarList .wrapper').empty();
$.each(data, function (i, f) {
$('#calendarList .wrapper').append('<ul><li>' + f.link + '</li></ul>');
});
}
});
});
var arrTimes = [];
var i = 0; // start
var timesToTest = 5;
var tThreshold = 150; //ms
var testImage = "https://tube.copylaradio.com/ipfs/QmUUyiuCM4yXgaeGyqC2SVUUXZksuxhDfHQYpUpZPuL2oS/astroport.jpg"; // small image in your server
var dummyImage = new Image();
var isConnectedFast = false;
testLatency(function(avg){
isConnectedFast = (avg <= tThreshold);
/** output */
document.body.appendChild(
document.createTextNode("Time: " + (avg.toFixed(2)) + "ms - Bunker BOX ready ? " + isConnectedFast)
);
});
/** test and average time took to download image from server, called recursively timesToTest times */
function testLatency(cb) {
var tStart = new Date().getTime();
if (i<timesToTest-1) {
dummyImage.src = testImage + '?t=' + tStart;
dummyImage.onload = function() {
var tEnd = new Date().getTime();
var tTimeTook = tEnd-tStart;
arrTimes[i] = tTimeTook;
testLatency(cb);
i++;
};
} else {
/** calculate average of array items then callback */
var sum = arrTimes.reduce(function(a, b) { return a + b; });
var avg = sum / arrTimes.length;
cb(avg);
}
}
$(document).ready(function() {
let options = {
container: {
width: 630,
backgroundColor: '#000000',
//fontFamily: '"Times New Roman", Times, serif',
},
tag: {
format: '<a href="{tag.link}">{tag.name}</a>: {tag.weight}',
maxFontSize: 41, // max font size in pixels
minFontSize: 8, // min font size in pixels
textShadow: true // enable text shadow
},
_TAGCLOUD_
}
$('#channels').tagCloud(options);
});
</script>
<!-- Matomo Tag Manager -->
<script>
var _mtm = window._mtm = window._mtm || [];
_mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'});
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src='https://piwik.p2p.legal/js/container_XDhfGZPj.js'; s.parentNode.insertBefore(g,s);
</script>
<!-- End Matomo Tag Manager -->
</html>

View File

@ -377,7 +377,7 @@ Error message and password prompt
{"title":"$:/_demostyles","created":"20220403181300247","modified":"20220426042440947","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".youtube-outer , .tc-tiddler-frame.flex .tc-tiddler-body .tc-tiddler-body-flex {\n\tz-index: 0;\n\twidth: 100%;\n height: 100%;\n position: relative;\n}\n\n.youtube-inner , .tc-tiddler-body-before-flex {\n height: 0px;\n padding-bottom: 56.25%;\n}\n\n.youtube-inner iframe , .youtube-inner img , .tc-tiddler-body-after-flex {\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.youtube-text {\n\toverflow-y: -webkit-paged-x;\n}\n\n.tc-red-icon svg {\nfill: red;\n}\n\n.big-icon, .big-icon svg {\n\tfont-size:10rem !important;\n}\n\n.green-icon {\n\tcolor: \u003C\u003Ccolour download-background>>;\n}\n\n.green-icon svg {\n\tfill: \u003C\u003Ccolour download-background>>;\n}\n\n.small-svg svg {\nwidth: 30px;\nheight: 30px;\n}\n\n.tc-user-panel-container .stream-node-block input.tc-edit-texteditor,\n.tc-user-panel-container .stream-node-block textarea.tc-edit-texteditor,\n.tc-user-panel-container .stream-node-block iframe.tc-edit-texteditor {\n\tbackground: \u003C\u003Ccolor page-background>> !important;\n\tmargin-top:0;\n\tmargin-bottom: -2em;\n}","revision":"0","bag":"default"},
{"title":"$:/_streams-sidebar-demo","created":"20220424075455451","modified":"20220426061602260","tags":"$:/tags/SideBarSegment/User","type":"text/vnd.tiddlywiki","text":"\\define transclude-root-tiddler()\n{{$(rootTiddler)$||$:/plugins/sq/streams/stream-view-template}}\n{{$(rootTiddler)$||$:/plugins/sq/streams/breadcrumbs-view-template}}\n\\end\n\nStreams Root Tiddler: \u003C$edit-text tiddler=\"$:/SidebarStreams/RootTiddler\" tag=\"input\" default=\"\" placeholder=\"title of root tiddler\"/>\n\n\u003C$set name=\"rootTiddler\" value={{{ [[$:/SidebarStreams/RootTiddler]get[text]] }}}>\n\u003C\u003Ctransclude-root-tiddler>>\n\u003C/$set>","revision":"0","bag":"default"},
{"text":"[\n {\n \"title\": \"Ceci nest pas une pipe.\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Ceci nest pas une pipe.\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Ceci nest pas une pipe.\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Ceci nest pas une pipe.\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Ceci nest pas une pipe.\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Ceci nest pas une pipe.\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Ceci nest pas une pipe.\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Ceci nest pas une pipe.\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n },\n {\n \"title\": \"Keyboard Shortcuts\"\n },\n {\n \"title\": \"The Great Wave off the Coast of Kanagawa\"\n }\n]","type":"application/json","created":"20220403170334039","current-tiddler":"The Great Wave off the Coast of Kanagawa","modified":"20220403170653421","title":"$:/ColumnHistoryList","revision":"0","bag":"default"},
{"created":"20220420032054311","title":"$:/columns","active-column":"2","list":"1 2","modified":"20220504010227444","type":"text/vnd.tiddlywiki","revision":"0","bag":"default"},
{"created":"20220420032054311","title":"$:/columns","active-column":"1","list":"1","modified":"20220504183330746","type":"text/vnd.tiddlywiki","revision":"0","bag":"default"},
{"created":"20220504003553035","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption","modified":"20220504003553035","tags":"$:/ipfs/core"},
{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home","created":"20220425152240985","modified":"20220425152243125","type":"text/vnd.tiddlywiki","text":"hide","revision":"0","bag":"default"},
{"created":"20220504003535076","text":"show","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import","modified":"20220504003535076"},
@ -439,7 +439,7 @@ Error message and password prompt
{"title":"$:/SidebarStreams/RootTiddler","created":"20220424080142542","modified":"20220425083143181","type":"text/vnd.tiddlywiki","revision":"0","bag":"default"},
{"created":"20220504002459026","title":"$:/SiteSubtitle","text":"votre carnet de notes interplanétaire","modified":"20220504002508196"},
{"created":"20220409192509107","title":"$:/SiteTitle","modified":"20220504002435939","type":"text/vnd.tiddlywiki","text":"Astronaute ''{{moa!!pseudo}}''","revision":"0","bag":"default"},
{"created":"20220504003706614","title":"$:/state/notebook-sidebar","text":"no","modified":"20220504005933102"},
{"created":"20220504003706614","title":"$:/state/notebook-sidebar","text":"no","modified":"20220504183340584"},
{"created":"20220504005028935","title":"$:/state/notebook-sidebar-section","text":"$:/core/ui/SideBar/Recent","modified":"20220504005031781"},
{"created":"20220504001141679","title":"$:/state/panel/visibility","text":"no","modified":"20220504003830349"},
{"created":"20220504002254925","title":"$:/state/tab--1963855381","text":"$:/core/ui/ControlPanel/Palette","modified":"20220504011320416"},
@ -450,8 +450,8 @@ Error message and password prompt
{"created":"20220504002003357","title":"$:/state/user-panel/visibility","text":"no","modified":"20220504003142773"},
{"title":"$:/status/RequireReloadDueToPluginChange","text":"no"},
{"title":"$:/Story/Default","bottom-right-panel":"yes","columns":"1 2 3","created":"20220428183227840","dragging-enable":"yes","follow-active-column":"no","hide-scrollbars":"no","horizontal-columns":"2","modified":"20220428183227841","no-tiddler-box-shadows":"no","palette":"$:/palettes/Vanilla","panel-position":"right","panel-show-numbers":"no","panel-width-above-1170px":"35%","panel-width-below-1170px":"50%","panel-width-below-768px":"90%","river-obscured":"yes","scroll-snap-type":"none","show-edit-preview-per-tiddler":"yes","story-1":"Palettes Tips [[Ceci nest pas une pipe.]] [[Configuration Options]]","story-2":"[[The plugin]] [[Keyboard Shortcuts]] [[The Birth of Venus]] [[Star me on GitHub]]","story-3":"[[Responsive Video]] [[Differences between FireFox and Chromium]] [[The Great Wave off the Coast of Kanagawa]]","story-river-padding":"15","tiddler-border":"1","tiddler-margin":"10","type":"text/vnd.tiddlywiki","view":"vertical","revision":"0","bag":"default"},
{"created":"20220504012357902","title":"$:/StoryList","text":"","list":"Astroport_Final.mp4","modified":"20220504012357902"},
{"created":"20220409124735965","title":"$:/StoryList-2","list":"moa","modified":"20220504012356226","type":"text/vnd.tiddlywiki","revision":"0","bag":"default"},
{"title":"$:/StoryList","text":"","list":"moa"},
{"created":"20220409124735965","title":"$:/StoryList-2","list":"$:/ControlPanel moa","modified":"20220504183321052","type":"text/vnd.tiddlywiki","revision":"0","bag":"default"},
{"title":"$:/StoryList-24","list":"","type":"text/vnd.tiddlywiki","revision":"0","bag":"default"},
{"title":"$:/StoryList-3","created":"20220402104129655","list":"[[Responsive Video]] [[Differences between FireFox and Chromium]] [[The Great Wave off the Coast of Kanagawa]]","modified":"20220501113142260","type":"text/vnd.tiddlywiki","revision":"0","bag":"default"},
{"title":"$:/StoryList-4","created":"20220410070906948","list":"","modified":"20220419230323165","type":"text/vnd.tiddlywiki","revision":"0","bag":"default"},

File diff suppressed because one or more lines are too long

View File

@ -1,191 +1,205 @@
:root {
--rouge: hsl(0, 98.8%, 33.5%);
--rouge-fonce: hsl(0, 75%, 33.5%);
--noir-complet: black;
--noir-fonce: hsl(0, 30%, 2.1%);
--noir-moyen: hsl(0, 15%, 3.1%);
--noir-clair: hsl(0, 5%, 7.1%);
--blanc: hsla(0, 0%, 100%, 1);
--blanc-fort: hsla(0, 0%, 100%, 0.75);
--blanc-semi-transparent: hsla(0, 0%, 100%, 0.25);
--rouge: hsl(0, 98.8%, 33.5%);
--rouge-fonce: hsl(0, 75%, 33.5%);
--noir-complet: black;
--noir-fonce: hsl(0, 30%, 2.1%);
--noir-moyen: hsl(0, 15%, 3.1%);
--noir-clair: hsl(0, 5%, 7.1%);
--blanc: hsla(0, 0%, 100%, 1);
--blanc-fort: hsla(0, 0%, 100%, 0.75);
--blanc-semi-transparent: hsla(0, 0%, 100%, 0.25);
}
html,body{
width: 100%;
height: 100%;
}
.row {
display: flex;
height: 100%;
}
.column {
flex: 50%;
height: 100%;
}
body {
background: var(--noir-fonce);
color: white;
font-family: Roboto,sans-serif;
background: var(--noir-fonce);
color: white;
font-family: Roboto,sans-serif;
}
header {
background: var(--noir-clair);
background: var(--noir-clair);
}
header * {
color: var(--rouge);
text-decoration: none;
color: var(--rouge);
text-decoration: none;
}
header span {
color: white;
color: white;
}
#pinFilter ul li a {
background-color: var(--blanc);
background-color: var(--blanc);
}
#pinFilter ul li.selected a {
background-color: var(--rouge);
background-color: var(--rouge);
}
ul#tagsList,
ul#narrowingTags {
list-style: none;
margin-left: 0;
padding-left: 0;
list-style: none;
margin-left: 0;
padding-left: 0;
}
ul#tagsList li,
ul#narrowingTags li {
display: inline-block;
display: inline-block;
}
ul#tagsList a,
ul#tagsList a:visited {
text-decoration: none;
color: var(--rouge-fonce);
text-decoration: none;
color: var(--rouge-fonce);
}
#narrowingTags a,
#narrowingTags a,
#narrowingTags a:visited {
text-decoration: none;
color: inherit;
text-decoration: none;
color: inherit;
}
#narrowingTags li {
border-radius: 1rem;
border-radius: 1rem;
}
#narrowingTags li.selected {
background-color: var(--rouge-fonce);
color: var(--blanc);
border: 0.125rem solid var(--noir-clair);
background-color: var(--rouge-fonce);
color: var(--blanc);
border: 0.125rem solid var(--noir-clair);
}
#tagsList,
#tagsList,
#narrowingTags {
display: flex;
flex-direction: row;
flex-wrap: wrap;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
#tagsList li.station,
#tagsList li.station,
#narrowingTags li.station {
order: 1;
order: 1;
}
#tagsList li.station,
#tagsList li.station,
#narrowingTags li.station {
background-image: url("logo.png");
background-repeat: no-repeat;
background-position: left middle;
background-size: contain;
padding-left: 2em;
order: 1;
background-image: url("logo.png");
background-repeat: no-repeat;
background-position: left middle;
background-size: contain;
padding-left: 2em;
order: 1;
}
#narrowingTags li.selectable {
background-color: var(--noir-fonce);
color: var(--rouge-fonce);
border: 0.125rem solid var(--noir-clair);
background-color: var(--noir-fonce);
color: var(--rouge-fonce);
border: 0.125rem solid var(--noir-clair);
}
#videosList > li {
background: var(--noir-clair);
border-color: var(--rouge);
border-style: solid;
background: var(--noir-clair);
border-color: var(--rouge);
border-style: solid;
}
.video-title,
.video-title a,
.video-title a:visited {
color: white;
font-weight: bold;
text-decoration: none;
word-break: break-all;
color: white;
font-weight: bold;
text-decoration: none;
word-break: break-all;
}
#videosList .thumbnail {
background-color: var(--noir-complet);
background-color: var(--noir-complet);
}
#videosList > li ul.tags li a,
#videosList > li ul.tags li a,
#videosList > li ul.tags li a:visited {
text-decoration: none;
text-decoration: none;
}
#videosList > li ul.tags li.selectable a,
#videosList > li ul.tags li.selectable a,
#videosList > li ul.tags li.selectable a:visited {
color: var(--blanc-semi-transparent);
color: var(--blanc-semi-transparent);
}
#videosList > li ul.tags li.selectable a:hover {
color: var(--blanc-fort);
color: var(--blanc-fort);
}
#videosList > li ul.tags li.selected a,
#videosList > li ul.tags li.selected a,
#videosList > li ul.tags li.selected a:visited {
color: var(--blanc-fort);
color: var(--blanc-fort);
}
article {
background: var(--noir-clair);
background: var(--noir-clair);
}
article video {
background: black;
background: black;
}
article .video-title {
font-weight: bold;
font-weight: bold;
}
#successMsg {
opacity: 0;
transition: opacity 1s;
opacity: 0;
transition: opacity 1s;
}

View File

@ -1,250 +1,250 @@
body {
margin: 0;
padding: 0;
margin: 0;
padding: 0;
}
header {
overflow: hidden;
padding: 1rem 0.666rem 1.333rem;
margin-bottom: 2rem;
overflow: hidden;
padding: 1rem 0.666rem 1.333rem;
margin-bottom: 2rem;
}
header > * {
font-size: 1.5rem;
margin: 0;
padding: 0;
font-size: 1.5rem;
margin: 0;
padding: 0;
}
header > .sitetitle {
margin-bottom: 0.25rem;
margin-bottom: 0.25rem;
}
header > .sitetitle span {
border-bottom-style: solid;
border-bottom-color: var(--pink);
border-bottom-style: solid;
border-bottom-color: var(--pink);
}
header .usp {
font-size: 0.95rem;
font-size: 0.95rem;
}
main {
width: 95%;
margin: auto;
width: 95%;
margin: auto;
}
body.home main {
display: grid;
grid-gap: 1rem 1rem;
grid-auto-flow: row;
grid-template-columns: 998px auto;
grid-template-areas: "c m";
display: grid;
grid-gap: 1rem 1rem;
grid-auto-flow: row;
grid-template-columns: 998px auto;
grid-template-areas: "c m";
}
body.home main > #menu {
grid-area: m;
grid-area: m;
}
body.home main > ul#videosList {
grid-area: c;
grid-area: c;
}
aside#menu > div {
position: sticky;
top: 2rem;
position: sticky;
top: 2rem;
}
#pinFilter ul {
margin: 0;
padding: 0;
list-style: none;
font-size: 3rem;
display: flex;
margin: 0;
padding: 0;
list-style: none;
font-size: 3rem;
display: flex;
}
#pinFilter ul li a span {
display: none;
display: none;
}
#pinFilter ul li a {
display: inline-block;
height: 3rem;
width: 3rem;
border: 1px solid red;
background-repeat: no-repeat;
display: inline-block;
height: 3rem;
width: 3rem;
border: 1px solid red;
background-repeat: no-repeat;
}
#pinFilter ul li#filter_pinned a {
background-image: url("font-awesome/hdd.svg");
background-position: center center;
background-size: 2.5rem;
background-image: url("font-awesome/hdd.svg");
background-position: center center;
background-size: 2.5rem;
}
#pinFilter ul li#filter_notpinned a {
background-image: url("font-awesome/cloud.svg");
background-position: center center;
background-size: 2.5rem;
background-image: url("font-awesome/cloud.svg");
background-position: center center;
background-size: 2.5rem;
}
#pinFilter ul li#filter_both a {
background-image: url("font-awesome/hdd.svg"),
url("font-awesome/cloud.svg");
background-position: bottom 0.25rem left 0.25rem,
top 0.25rem right 0.25rem;
background-size: 1.75rem,
1.75rem;
background-image: url("font-awesome/hdd.svg"),
url("font-awesome/cloud.svg");
background-position: bottom 0.25rem left 0.25rem,
top 0.25rem right 0.25rem;
background-size: 1.75rem,
1.75rem;
}
#tagsList li,
#tagsList li,
#narrowingTags li {
padding: 0.125rem 0.5rem;
margin: 0.25rem 0.25rem;
padding: 0.125rem 0.5rem;
margin: 0.25rem 0.25rem;
}
#videosList {
display: grid;
grid-gap: 1rem 1rem;
grid-auto-flow: row;
grid-template-columns: 322px 322px 322px;
display: grid;
grid-gap: 1rem 1rem;
grid-auto-flow: row;
grid-template-columns: 322px 322px 322px;
list-style: none;
margin: 0;
padding: 0;
justify-content: center;
align-content: start
list-style: none;
margin: 0;
padding: 0;
justify-content: center;
align-content: start
}
#videosList > li {
border-radius: 0.25rem;
border-width: 1px;
overflow: hidden;
border-radius: 0.25rem;
border-width: 1px;
overflow: hidden;
}
#videosList .thumbnail {
text-align: center;
height: 180px;
margin-top: 0;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
height: 180px;
margin-top: 0;
display: flex;
justify-content: center;
align-items: center;
}
#videosList .thumbnail img {
max-height: 180px;
width: auto;
max-height: 180px;
width: auto;
}
#videosList .video-title {
padding: 0.5rem 1rem;
padding: 0.5rem 1rem;
}
#videosList > li ul.tags {
padding: 0;
margin: 0;
list-style: none;
padding: 0;
margin: 0;
list-style: none;
}
#videosList > li ul.tags li {
display: inline-block;
display: inline-block;
}
#videosList > li ul.tags li:after {
content: ", ";
content: ", ";
}
#videosList > li ul.tags li:last-of-type:after {
content: "";
content: "";
}
article {
border-radius: 0.25rem;
width: 58.3%;
margin: auto;
overflow: hidden;
border-radius: 0.25rem;
width: 58.3%;
margin: auto;
overflow: hidden;
}
article video {
width: 100%;
max-height: calc(100vh - 14rem);
width: 100%;
max-height: calc(100vh - 14rem);
}
article .video-title {
padding: 1rem 1rem;
font-size: 1.25rem;
margin: 0;
padding: 1rem 1rem;
font-size: 1.25rem;
margin: 0;
}
form.add-video {
position: absolute;
top: 0.50rem;
right: 0.50rem;
position: absolute;
top: 0.50rem;
right: 0.50rem;
}
form.add-video input {
height: 2rem;
padding: 0.25rem 0.5rem;
box-sizing: border-box;
border-width: 0.125rem;
border-radius: 0.5rem;
height: 2rem;
padding: 0.25rem 0.5rem;
box-sizing: border-box;
border-width: 0.125rem;
border-radius: 0.5rem;
}
form label {
display: none;
display: none;
}
form label input {
width: 50%;
width: 50%;
}
form.add-video .confirmation {
margin: 0.5rem 0;
font-size: 0.85rem;
text-align: center;
margin: 0.5rem 0;
font-size: 0.85rem;
text-align: center;
}
footer {
display: none;
display: none;
}

View File

@ -60,8 +60,8 @@ moa=$(ipfs key list -l | grep -w moa_$PLAYER | cut -d ' ' -f 1)
zenity --question --width 300 --text "$PSEUDO souhaitez-vous ouvrir votre journal 'qo-op' (niveau 0) ?"
# Récupération de la clef du capitaine PLAYER ( identique à celle du démon IPFS )
qo-op=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f 1)
[ $? == 0 ] && xdg-open "http://127.0.0.1:8080/ipns/$qo-op"
qoop=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f 1)
[ $? == 0 ] && xdg-open "http://127.0.0.1:8080/ipns/$qoop"
# TODO: fabriquer une interface où passer d'un journal à l'autre, y glisser déposer, etc ...
# Le journal transmit par la balise IPFS est celui de la clef PLAYER du CAPTAIN.