kalender_localstorage.php
Quell Code
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" >
<TITLE>STARTSEITE Laufender Kalender - Frameset</TITLE>
</HEAD>
<FRAMESET COLS="76%,*" id="KalenderFrame" NAME="KalenderFrame">
<div>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" >
<title>Continuous Calendar</title>
<link rel="stylesheet" type="text/css" href="calendar23.css" />
<script language="javascript" type="text/javascript">
<!--
function stoperror()
{return true}
window.onerror=stoperror;
// -->
</script>
</head><body>
<script type="text/javascript" src="calendar23.js"></script>
</div>
<div>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" >
<TITLE>Laufender Kalender - Rechts Oben</TITLE>
<STYLE type="text/css">
body
{
padding:0px;
margin:7px;
}
.pfeil
{
font-family:'Times New Roman',Times,serif;
font-size:small;
font-stretch:ultra-condensed;
font-weight:bold;
vertical-align:sub;
}
.pfeil SUP
{
font-size:larger;
font-stretch:ultra-condensed;
font-weight:bold;
-color:red;
}
.pfeil A
{
text-decoration:none;
}
.combine A
{
text-decoration:none;
}
input[type="radio"]
{
margin-top: 7px;
margin-left: -10px;
text-align: left;
vertical-align: text-bottom;
}
label
{
display:inline-block;
position:relative;
padding-left:0px;
margin-left:0px;
}
</STYLE>
<SCRIPT language="JavaScript" type="text/javascript">
<!--
function stoperror()
{return true}
window.onerror=stoperror;
var Position = window.location.href.lastIndexOf("/");
var ElternPfad = window.location.href.slice(0, Position);
var ElternDatei = window.location.href.slice(0, Position) + "/js-kalenderfenster.html";
var OfflineFehlerMeldung = "- Einige der Funktionen sind hier in diesem Modus außer Kraft gesetzt -\n\n" +
"Den Admin - Bereich bitte durch Ziehen am Fensterbalken \=\=\=\= \nunterhalb des Pfeils \`\'\´mit der Maus nach unten öffnen \n\n" +
"Ggf. zum Exportieren den rechten Druckbereich benutzen \n\(markieren und kopieren\)" +
"";
if (navigator.cookieEnabled == false)
{
document.writeln("<CENTER><B><FONT FACE=\"Arial\" Size=\"2\" Color=\"red\"> Bitte Cookies aktivieren! </FONT></B></CENTER> <P>");
}
function los()
{
if (document.forms.Loeschen.Abfrage.checked)
{
Prf = confirm("NOTIZEN LÖSCHEN BESTÄTIGEN");
if (Prf == false)
{
document.forms.Loeschen.reset();
}
else
{
alert("Alte Notizen werden gelöscht");
LoeschFkt=window.open("calendar_app_2_5.html", "_top");
}
}
}
function ResizeFrameRO()
{
if (document.getElementById)
{
// Catch Chrome Offline Error:
try {parent.document;}
catch(err)
{
alert (OfflineFehlerMeldung);
}
parent.document.getElementById("TerminFrame").rows = "50%,*,110";
}
}
function go()
{
if ((localStorage) && (document.forms.FormOR.elements.aktiv.checked == true))
{
// secWert for ONLINE
secWert = "8d8aa782";
localStorage.setItem("secNr", secWert);
}
if ((localStorage) && (document.forms.FormOR.elements.aktiv.checked == false))
{
secWert = "0000000";
localStorage.setItem("secNr", secWert);
}
location.reload();
}
// ---------------------------------------------------------------------------
// http://www.bennadel.com/blog/1433-ask-ben-splitting-strings-in-javascript-to-form-new-variables.htm
// This will take a string that is formatted as a delimited
// list of values and store those values into the given
// variable names in the given container.
function SetVariables(
strList, // The list of values.
arrLabels, // The array of new variable names.
strDelimiter, // OPTIONAL - defaults to "|".
objContainer // OPTIONAL - defaults to "window".
){
// Check to see if there is a defined container.
// If not then default the container to window.
// This is basically where any "unscoped" variable
// resides naturally.
if (!objContainer){
objContainer = window;
}
// Check to see if a delmiter was passed. If not,
// then define a default one.
if (!strDelimiter){
strDelimiter = "|";
}
// Now that we have our values defaults, we are
// going to split the string into an array using
// the given delimiter. Escape the delimiter in case
// it's a special regEx value.
var arrValues = strList.split(
new RegExp( ("\\" + strDelimiter), "gi" )
);
// Loop over the values and assign them to the
// labels passed in. Do this in order. In the loop
// conidition, make sure that we stay in bounds for
// both the value array and the variable name array.
for (
var i = 0 ;
(
(i < arrValues.length) &&
(i < arrLabels.length)
);
i++
){
// Store the new value in the container
objContainer[ arrLabels[ i ] ] = arrValues[ i ];
}
// No need to pass back container as it is an object
// and will be passed by reference; but, let's just
// pass it back for good measure.
return( objContainer );
}
// ---------------------------------------------------------------------------
// NOTIZEN EXPORTIEREN
// Nicht auf export.html externalisieren- Fehlfunktion
// Variablen definieren:
var EintragString;
var EintragDatum;
var Exportfenster;
var PlusEins;
var TeilA;
var TeilB;
var TeilC;
var Ort = " für: <BR>" + ElternPfad + " ";
// var Browser = "<BR> im " + navigator.appName + " ";
// window.navigator.userAgent
var Browser = "<BR> im " + navigator.appCodeName + " " + navigator.appVersion + " ";
var Dahin = "calendar_app_2_3";
var Nachricht =
"Den Inhalt der Seite bitte MARKIEREN und KOPIEREN und / oder ALS TEXT zum (re-) importieren speichern!<BR>" +
"- Sind ALLE TERMINE AUSGEFÜLLT? Sind Einträge mehrfach vorhanden? <BR>" +
"- Bei FEHLFUNKTION die Funktion erneut aufrufen; vor dem zweiten Versuch ggf. den Kalender neu starten. <BR>" +
"- Achtung: Die Termine werden ALPHANUMERISCH SORTIERT aufgeführt: Jahr_Monat_Tag INHALT <BR><BR>" +
"Aufgelistet werden die eingetragenen Termine " + Ort + Browser + ":<BR><BR>" +
" ";
var ExportUrl = "export.html";
var ExportFensterPlatz = "CA3";
var FNull ="0";
var splitter = "##=##"; // Intern; darf im N-Text nicht vorkommen (OK - N-Text wird encodiert)
var trenner = ": "; // Extern; ist sichtbar - mit Import abgleichen
// Make new empty Array
var Allenotizen=[];
var Alleposten =[];
var count = window.localStorage.length;
// alert(count);
function Darstellen(Wo)
{
// Kalender aktualisieren (verhindert doppelte Darstellung)
location.reload();
// Catch Chrome Offline Error:
try {parent.document;}
catch(err)
{
alert (OfflineFehlerMeldung);
}
// Bremst Chrome Offline anschließend absichtlich aus:
var XXX = parent.document;
if (Wo=="oben")
{
ExportUrl = "export.html";
ExportFensterPlatz = "_top";
Dahin = "js-kalenderfenster";
}
if (Wo=="links")
{
ExportUrl = "export.html";
ExportFensterPlatz = "CA3";
Dahin = "calendar_app_2_3";
}
// Einträge holen und mit dem Index kombinieren:
for(var y = 0; y < count; y++)
{
var keyname = window.localStorage.key(y);
var inhalt = window.localStorage.getItem(keyname);
// N-Text wird encodiert, um störende Sonderzeichen darin zu maskieren:
inhalt = encodeURIComponent(inhalt);
// Fill var Array
Allenotizen.push(keyname+splitter+inhalt);
}
Allenotizen.sort();
Allenotizen.reverse();
// Erstes Element = nextidweg (nur: do it)
var nextidweg = Allenotizen.shift();
// Teilt in Einträge in solche mit und ohne Datum
for(var i = 0; i < Allenotizen.length; i++)
{
// I: Ordnet alle Inhalte OHNE DATUM (==Items) dem einzelnen Item zu
// Prüft ob erstes Zeichen [0] keine Zahl ist
if (isNaN(Number(Allenotizen[i].charAt(0))))
{
// Make Array
var AllenotizenItem = Allenotizen[i].split(splitter);
var Posten = AllenotizenItem[0];
var Posteninhalt = AllenotizenItem[1];
// Aktivieren: [Keyname] (:ask-ben)
SetVariables(Posteninhalt,[Posten]);
// Jeweilige "Posten" als Variable mit Posteninhalt setzen:
Posten = Posteninhalt;
}
else
// II: Ordnet alle Inhalte MIT DATUM dem einzelnen Datum zu
{
// Make Array
var AllenotizenI = Allenotizen[i].split(splitter);
var Datum = (AllenotizenI[0]);
var AllenotizenRest = (AllenotizenI[1]);
// Dem Datum zugeordnete mehrere einzelne Items trennen:
// Make Array
// var Werte = AllenotizenRest.split(","); // Nein:
// Werte sind noch encodiert!
var Werte = AllenotizenRest.split("%2C");
for(var w = 0; w < Werte.length; w++)
{
var Einzelwerte = Werte[w];
var Posten = Einzelwerte;
// Aktivieren: [Einzelwerte] (:ask-ben) retour!
// Jeweilige "Posten", zugehörig dem Datum, als Variable mit dem Wert Posteninhalt(ItemXXX) von 'ohne Datum' evaluieren:
Posten = eval(Einzelwerte);
// Einzelne Paare von Datum und Posten zusammenfügen:
EintragString = Datum + trenner + Posten;
// Paar von Datum und Posten vorbereiten zum sortieren: Jahr-Monat-Tag:
// Datum am Anfang jeweils neu sortieren
// Gegebenes Format für Juli: 6_20_2015 + trenner + Notiz (N-Text)
// Zuerst im noch führenden Monat eine führende Null einbringen, um die Position des ersten "_" eindeutig zu machen:
if (EintragString.charAt(1) =="_") // prüft ob zweites Zeichen "_" ist
{
// Dann führende null Monat:
EintragString= FNull.concat(EintragString);
}
// Dann die Monats-Zahl um 1 erhöhen:
TeilA=EintragString.slice(0, 2); // 2 wg. führender Null und Monat=10, 11 (Nov,Dez)
TeilB=EintragString.slice(2);
// String zu Zahl und wieder zurück:
// PlusEins= Number(TeilA)+1;
// PlusEins= parseInt(TeilA, 10)+1;
PlusEins= parseInt(TeilA)+1;
PlusEins= PlusEins.toString();
EintragString=PlusEins.concat(TeilB);
// Nun ggf erneut eine führende Null im Monat einbringen, da die Rechenoperation diese entfernt hat:
// Zuerst im Monat eine führende Null einbringen:
if (EintragString.charAt(1) =="_") // prüft ob zweites Zeichen "_" ist
{
// Dann führende null Monat:
EintragString= FNull.concat(EintragString);
}
// Nun ggf. im Tagf eine führende Null einbringen:
if (EintragString.charAt(4) =="_") // prüft ob fünftes Zeichen "_" ist
{
// Dann führende null Tag:
TeilA=EintragString.slice(0, 3);
TeilB=EintragString.slice(3);
TagMitNull= TeilA.concat(FNull);
EintragString= TagMitNull.concat(TeilB);
}
// Jetzt für Alle: Die Jahresangabe nach vorne setzen:
TeilA=EintragString.slice(0, 5); // Monat und Tag ohne End_
TeilB=EintragString.slice(6, 10); // Jahr
TeilC=EintragString.slice(10); // Rest
// TeilA= TeilA.concat("_");
TeilB= TeilB.concat("_");
EintragDatum= TeilB.concat(TeilA); //Jahr , Monat, Tag
EintragString= EintragDatum.concat(TeilC);
// Und nun ALLE Einträge in einem Array sammeln und sortieren lassen:
// Fill var Array
Alleposten.push(EintragString);
Alleposten.sort();
// Alleposten.reverse();
}
} // Ende else
} // Ende Allenotizen
Exportfenster=window.open(ExportUrl, ExportFensterPlatz);
Exportfenster.document.writeln('<P> Notizen-Ausgabe <P>');
Exportfenster.document.write(Nachricht);
Exportfenster.document.write("<P>\<\; - \<A HREF\=\"" + Dahin + "\.html\"\>zurück zum Kalender\<\/A\><P>");
Exportfenster.focus();
// Zeilenwechsel schreiben:
Exportfenster.document.write("<P>");
Exportfenster.document.write("<BR>");
// Zuletzt die Einträge streng alphanumerisch sortiert ausgeben:
for(var i = 0; i < Alleposten.length; i++)
{
// Exportfenster.document.write(Alleposten[i]);
// Erst hier decodiert: /OK
Exportfenster.document.write(decodeURIComponent(Alleposten[i]));
Exportfenster.document.write("<BR>");
}
Exportfenster.document.write("<P> - ");
Exportfenster.document.write(i);
if (i==1)
{Exportfenster.document.write(" gültiger Eintrag -");}
else
{Exportfenster.document.write(" gültige Einträge -");}
if (i>10)
{Exportfenster.document.write("<BR><BR><P>\<\; - \<A HREF\=\"" + Dahin + "\.html\"\>zurück zum Kalender\<\/A\><BR><BR><P>");}
else
{Exportfenster.document.write("<BR><BR><P>");}
// Beendet die Verarbeitung - offline
if (window.location.protocol == "file:")
{
Exportfenster.location.reload();
}
Exportfenster.window.scrollTo(0, 0);
Exportfenster.document.close();
}
//add data (07 Juli! 2015):
// window.localStorage.setItem('item4', 'value');
// window.localStorage.setItem('6_20_2015', 'item4');
// Wonach richtet sich die itemNr?
// remove data (07 Juli! 2015):
// window.localStorage.removeItem('item4');
// window.localStorage.removeItem('value');
// window.localStorage.removeItem('6_20_2015');
// window.localStorage.removeItem('item4');
// -->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff" onload="document.forms.Loeschen.reset();window.scrollTo(0, 0);" NOonClick="ResizeFrameRO();">
<CENTER>
<P ALIGN=Center>
<NOSCRIPT>
<B><FONT FACE="Arial" Size="2" Color="red"> Bitte Javascript aktivieren! </FONT></B> <P>
</NOSCRIPT>
<SPAN class="combine"><SPAN class="pfeil"><A href="javascript:ResizeFrameRO()">\<SUP>|</SUP>/</SPAN>
<FONT FACE="Arial" Size="2"> <U>Admin</U></A></FONT</SPAN><FONT FACE="Arial" Size="2">
<A HREF="http://erleuchtet.kilu.de/kalender/kalender.html" Target="_top">JS-Terminkalender
Info</A></FONT> <BR>
<BR>
<SMALL>Original von
<A HREF="http://madebyevan.com/calendar/" Target="_top">Evan
Wallace</A></SMALL> <BR>
<SMALL> Custom Version 1.2.5 <BR>
JHR 2013-2017 </SMALL>
<P>
<BR>
<FORM Name="Loeschen">
<FONT FACE="Arial" Size="2">
<INPUT type="checkbox" value="OK" name="Abfrage" >[ Wirklich! ]
alle <A HREF="http://erleuchtet.kilu.de/kalender/kalender.html" target="_top">Notizen der letzten Zeit</A> bis
heute <B>unwiderruflich</B> löschen<BR>
<INPUT TYPE=button VALUE="löschen" Onclick="javascript:los();">
<BR clear=all>
<BR>
<BR>
<A HREF="javascript:Darstellen('links');">Notizen exportieren - links</A>
<BR>
<A HREF="javascript:Darstellen('oben');">Notizen exportieren - oben</A>
<BR>
<BR>
<A HREF="import.html" target="CA3"><NOBR>Notizen importieren</NOBR></A> &
<A HREF="import.html" target="CA3"><NOBR>Daten anzeigen</NOBR></A>
<BR>
<BR>
Alles <A HREF="javascript:parent.location.reload();"><B>aktualisieren</B></A> mit der Taste
[<U>F5</U>] <BR>
Neu laden</A> mit [STRG] oder [Shift] + [<U>F5</U>]
</FONT>
</FORM>
<P>
<BR>
<FONT FACE="Arial" Size="2">
<SMALL>
Bisher wurden
<!-- Start of StatCounter Code for Default Guide ONLINE -->
<DIV style="line-height:0.5em;">
<SCRIPT type="text/javascript">
<!-- //
// New Script
var Unsichtbar;
document.writeln ('<P>');
var secWert = "8d8aa782";
if ((localStorage) && (localStorage.getItem("secNr")))
{
var LSW = localStorage.getItem("secNr");
secWert = LSW;
// var KPT = localStorage.removeItem("secNr");
}
else if (!(localStorage))
{alert ("Die notwendige Funktion `Local Storage´ steht hier nicht zur Verfügung: \n\nEntweder den Browser wechseln oder den Kalender online betreiben");}
if (secWert ==0)
{
Unsichtbar=1;
document.writeln ('<BR>');
}
else
{Unsichtbar=0;}
// CounterProj_ONline
var sc_project=9222559;
var sc_invisible=Unsichtbar;
var sc_security=secWert;
var scJsHost = (("https:" == document.location.protocol) ?
"https://secure." : "http://www.");
document.write("<sc"+"ript type='text/javascript' src='" +
scJsHost+
"statcounter.com/counter/counter.js'></"+"script>");
document.writeln ('<P>');
// -->
</SCRIPT>
<noscript>
<DIV class="statcounter">
<A title="web analytics" href="http://statcounter.com/" target="_blank"><IMG
class="statcounter" src="http://c.statcounter.com/9222559/0/8d8aa782/0/"
alt="web analytics"></A>
</DIV>
<P>
</noscript>
<!-- End of StatCounter Code for Default Guide -->
Aufrufe gezählt
<BR>
<BR>
<!-- A HREF="http://statcounter.com/" target="statcounter">von Statcounter</A -->
<P>
<FORM Name="FormOR" >
<SCRIPT type="text/javascript">
<!-- //
// Zähler secWert
var secWert;
if (localStorage)
{
document.writeln ('<INPUT type="checkbox" name="aktiv" > Zähler ist aktiv');
document.writeln ('<INPUT TYPE=button Name="blocker" Value="Ändern" Onclick="javascript\:go()\;">');
}
if (secWert ==0)
{document.forms.FormOR.elements.aktiv.checked = false;}
else
{document.forms.FormOR.elements.aktiv.checked = true;}
// Fensterwahl:
var LSF;
function Fenstersetzen()
{
// Get values (MSIE)
for (var i = 0; i < 2; i++)
{
if (document.forms.FormOR.elements.Suchfenster[i].checked)
{
// do whatever you want with the checked radio
// alert(document.forms.FormOR.elements.Suchfenster[i].value);
localStorage.setItem("SuchfensterWahl", document.forms.FormOR.elements.Suchfenster[i].value);
// only one radio can be logically checked, don't check the rest
break;
}
}
location.reload();
}
document.writeln ('<P><BR><BR><BR>Suchergebnisse öffnen in:<BR>');
document.writeln ('<BR><LABEL><INPUT type="radio" name="Suchfenster" value="_top"> Diesem Fenster</LABEL>' );
document.writeln ('<BR><LABEL><INPUT type="radio" name="Suchfenster" value="_blank" > Neuem Fenster </LABEL>');
if ((localStorage) && (localStorage.getItem("SuchfensterWahl")))
{
var LSF = localStorage.getItem("SuchfensterWahl");
// var KPT = localStorage.removeItem("SuchfensterWahl");
}
// Default
if (LSF =="_blank")
{document.forms.FormOR.elements.Suchfenster[1].checked = true;}
else
{document.forms.FormOR.elements.Suchfenster[0].checked = true;}
if (localStorage)
{document.writeln ('<P><INPUT TYPE=button Name="setzer" Value="Setzen" Onclick="javascript\:Fenstersetzen()\;">');}
// -->
</SCRIPT>
</SMALL>
</DIV>
<BR clear=all>
<BR>
<BR>
</FORM>
</FONT>
</CENTER>
</BODY></HTML>
</div>
<div>
<script language="javascript" type="text/javascript">
<!--
function stoperror()
{return true}
window.onerror=stoperror;
function ResizeFrameA24()
{
if (document.getElementById)
{
parent.document.getElementById("TerminFrame").rows = "40,*,110";
}
}
// -->
</script>
</head>
<body onClick="ResizeFrameA24();">
<script type="text/javascript" src="calendar24.js"></script>
<noscript>Please enable JavaScript. This calendar requires JavaScript to work.</noscript>
</body></html>
</div>
<div><
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" >
<TITLE>Laufender Kalender - Rechts Unten</TITLE>
<STYLE type="text/css">
.all
{
padding: 0;
margin: 0;
}
</STYLE>
<SCRIPT language="JavaScript" type="text/javascript">
<!--
function stoperror()
{return true}
window.onerror=stoperror;
function ResizeFrameRU()
{
if (document.getElementById)
{
parent.document.getElementById("TerminFrame").rows = "40,*,110";
}
}
var mtarget = "_top";
function newtarget()
{
// Get values (MSIE)
if (parent.frames.RO.document.forms.FormOR.elements.Suchfenster[1].checked)
{mtarget = parent.frames.RO.document.forms.FormOR.elements.Suchfenster[1].value;}
else
{mtarget = "_top";}
document.forms[0].target = mtarget;
}
// -->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff" class="all" onClick="ResizeFrameRU();">
<!-- Search Google -->
<DIV ALIGN=CENTER class="all">
<CENTER>
<FORM method="get" action="http://www.google.de/search" target="_top" class="all">
<IMG SRC="http://www.google.com/logos/Logo_40wht.gif" class="all">
<BR clear=all class="all">
<INPUT type="text" name="q" size="23" maxlength="255" value="Suchbegriffe eingeben"
onfocus="this.value = ''" class="all">
<BR clear=all class="all">
<INPUT type="submit" value="Google Suche" class="all" onclick="newtarget()">
</FORM>
</CENTER>
</DIV>
<!-- Search Google -->
</BODY></HTML>
/div>
</FRAMESET>
</FRAMESET>
<NOFRAMES>
<BODY>
No frames - No games
<P>
</BODY></NOFRAMES></HTML>
Comments