separate tahta and ssavpn from main page

This commit is contained in:
Aliberk Sandıkçı 2023-12-30 17:41:21 +03:00
parent b118403675
commit d12692d246
Signed by: asandikci
GPG key ID: 25C67A03B5666BC1
49 changed files with 17 additions and 3074 deletions

View file

@ -1,19 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
function downloadURI(uri, name) {
var link = document.createElement("a");
link.download = name;
link.href = uri;
link.click();
}
downloadURI("https://asandikci.com/iflpanel/ssavpn/file/in/secured/apks/ssa-vpn-signed.apk","ssa-vpn-signed.apk")
window.location.replace("https://asandikci.com/iflpanel/ssavpn/")
</script>
</head>
</html>

View file

@ -1,19 +0,0 @@
async function copy2Clipboard(id) {
var copyText = document.getElementById(id);
// copyText.select();
// copyText.setSelectionRange(0, 99999); // For mobile devices
navigator.clipboard.writeText(copyText.innerHTML);
var tooltip = document.getElementById(id+'-tip');
tooltip.innerHTML = "Kopyalandı! ";
tooltip.style.display = 'inherit';
tooltip.style.color = 'green';
tooltip.style.fontSize = "smaller";
await new Promise(r => setTimeout(r, 2000));
tooltip.style.display= 'none';
}

View file

@ -1,12 +0,0 @@
.copy_element {
color: orange;
cursor: copy;
}
.copy_element:hover::before {
content: "Kopyala: ";
color: #00adb5;
font-weight: 400;
justify-self: center;
font-size: medium;
}

View file

@ -1,414 +0,0 @@
.ssavpn-logo:before {
display: inline-block;
position: absolute;
width: 48px;
height: 48px;
background-size: 48px;
background-repeat: no-repeat;
left: 10%;
z-index: 10;
content: " ";
background-image: url("https://vpn.iflpanel.com/assets/iflpanel/ssavpn48x48.png");
}
.android-logo:before {
display: inline-block;
position: absolute;
width: 48px;
height: 48px;
background-size: 48px;
background-repeat: no-repeat;
left: 10%;
z-index: 10;
content: " ";
background-image: url("/assets/images/misc/android-logo.png");
}
@keyframes shake-x {
0% {
transform: translate(0, 0);
}
5% {
transform: translate(5px, 0);
}
10% {
transform: translate(0, 0);
}
15% {
transform: translate(5px, 0);
}
20% {
transform: translate(0, 0);
}
25% {
transform: translate(5px, 0);
}
30% {
transform: translate(0, 0);
}
100% {
transform: translate(0, 0);
}
}
.HIDDEN {
display: none;
}
html,
body {
display: flex;
flex-direction: column;
box-sizing: border-box;
height: 100%;
padding: 0;
margin: 0;
font-family: "Noto Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", Arial, "Helvetica Neue", sans-serif;
background-color: #131a21;
color: #EEEEEE;
}
html header,
body header {
display: flex;
align-items: center;
justify-content: left;
padding: 0px 10px;
min-height: 60px;
background-color: #131a21;
border-bottom: #00ADB5 0.2vh solid;
user-select: none;
}
html header #hlogo > img,
body header #hlogo > img {
max-height: 45px;
max-width: 200px;
margin-top: 5px;
padding: auto;
}
html nav,
body nav {
display: flex;
flex-direction: row;
margin-left: auto;
}
html nav ul,
body nav ul {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: center;
column-gap: 20px;
box-sizing: border-box;
margin: 0px;
padding: 0px;
list-style-type: none;
}
html article,
body article {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: start;
gap: 10px;
width: auto;
min-height: 100%;
box-sizing: border-box;
}
html article h1,
body article h1 {
align-self: center;
text-align: center;
font-size: xx-large;
}
html article h2,
body article h2 {
align-self: center;
text-align: center;
font-size: x-large;
text-decoration: underline;
text-wrap: balance;
}
html article h3,
body article h3 {
align-self: center;
}
html article.plain,
body article.plain {
background-color: #393E46;
border: #10161d double 3px;
padding: 10px;
}
html article.sections,
body article.sections {
margin-block-start: 10px;
}
html article.sections > .section,
body article.sections > .section {
display: flex;
flex-direction: column;
align-self: center;
box-sizing: border-box;
width: 95vw;
background-color: #393E46;
}
html article.sections > .section:first-child,
body article.sections > .section:first-child {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
}
html article.sections > .section:last-child,
body article.sections > .section:last-child {
border-top-right-radius: 0px;
border-top-left-radius: 0px;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
html article.sections > .section:only-child,
body article.sections > .section:only-child {
border-top-right-radius: 10px;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
html article.sections > .section .grid,
body article.sections > .section .grid {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: center;
column-gap: 20px;
box-sizing: border-box;
margin: 0px;
padding: 0px;
list-style-type: none;
}
html article.sections > .section .grid .element,
body article.sections > .section .grid .element {
width: 90%;
box-sizing: border-box;
padding: 0rem 0;
margin: 0.5rem 0;
position: relative;
text-align: center;
border: #EEEEEE groove 2px;
background-color: #222831;
}
html article.sections > .section .grid .element:first-child,
body article.sections > .section .grid .element:first-child {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
}
html article.sections > .section .grid .element:last-child,
body article.sections > .section .grid .element:last-child {
border-top-right-radius: 0px;
border-top-left-radius: 0px;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
html article.sections > .section .grid .element:only-child,
body article.sections > .section .grid .element:only-child {
border-top-right-radius: 10px;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
html article.sections > .section .grid .element p,
body article.sections > .section .grid .element p {
padding: 0 0.5rem;
flex-grow: 1;
}
html article.sections > .section .grid .element p.explanation,
body article.sections > .section .grid .element p.explanation {
margin-top: 3px;
}
html article.sections > .section .grid .element h3.with-explanation,
body article.sections > .section .grid .element h3.with-explanation {
font-size: x-large;
margin-bottom: 0;
}
html article.sections > .section .grid > .hover,
body article.sections > .section .grid > .hover {
transition: transform 1.2s cubic-bezier(0.075, 0.82, 0.165, 1);
}
html article.sections > .section .grid > .hover:hover,
body article.sections > .section .grid > .hover:hover {
transform: translateX(15px);
}
@media screen and (min-width: 768px) {
html article.sections > .section .grid2x2 > .element,
body article.sections > .section .grid2x2 > .element {
width: 45%;
}
html article.sections > .section .grid2x2 > .element:first-child,
body article.sections > .section .grid2x2 > .element:first-child {
border-top-right-radius: 0px;
border-top-left-radius: 10px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
html article.sections > .section .grid2x2 > .element:nth-child(2),
body article.sections > .section .grid2x2 > .element:nth-child(2) {
border-top-right-radius: 10px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
html article.sections > .section .grid2x2 > .element:nth-last-child(2),
body article.sections > .section .grid2x2 > .element:nth-last-child(2) {
border-top-right-radius: 0px;
border-top-left-radius: 0px;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 0px;
}
html article.sections > .section .grid2x2 > .element:last-child,
body article.sections > .section .grid2x2 > .element:last-child {
border-top-right-radius: 0px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 10px;
}
html article.sections > .section .grid2x2 > .hover:hover,
body article.sections > .section .grid2x2 > .hover:hover {
transform: translateY(-15px);
}
}
html article.sections > .section .grid-img > .element,
body article.sections > .section .grid-img > .element {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
}
html article.sections > .section .grid-img > .element div.block,
body article.sections > .section .grid-img > .element div.block {
flex-grow: 2;
display: block;
}
html article.sections > .section .grid-img > .element div.block > h3,
body article.sections > .section .grid-img > .element div.block > h3 {
text-align: center;
text-wrap: balance;
font-size: x-large;
}
html article.sections > .section .grid-img > .element img,
body article.sections > .section .grid-img > .element img {
margin-left: 1vw;
width: 50px;
}
html article.sections > .section .grid-plain > .element,
body article.sections > .section .grid-plain > .element {
width: 80%;
border: none;
background-color: inherit;
list-style-type: disc;
text-align: justify;
text-align-last: left;
line-break: loose;
}
html article.sections > .section > .note,
body article.sections > .section > .note {
font-style: italic;
text-align: center;
margin: 1vh 1vw;
}
html article.sections > .section > .note > .symbol,
body article.sections > .section > .note > .symbol {
display: inline-block;
animation: shake-x 4.72s ease infinite;
transform-origin: 50% 50%;
}
html footer,
body footer {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-evenly;
min-height: 50px;
background-color: #10161d;
border-top: #00ADB5 0.2vh solid;
margin-top: auto;
margin-block-start: 10px;
padding-top: 10px;
}
html footer div,
body footer div {
text-align: center;
}
html a,
body a {
background-color: transparent;
text-decoration: none;
}
html a:link,
body a:link {
color: #00ADB5;
}
html a:visited,
body a:visited {
color: #129da3;
}
html a:hover,
body a:hover {
color: #00adb5;
text-decoration: underline;
}
html a:active,
body a:active {
color: #2d8488;
}
html .main-scrollable,
body .main-scrollable {
height: 100%;
overflow-y: auto;
-ms-overflow-style: none;
scrollbar-width: none;
}
html .main-scrollable::-webkit-scrollbar,
body .main-scrollable::-webkit-scrollbar {
display: none;
}
html .tooltip,
body .tooltip {
position: relative;
display: inline-block;
}
html .tooltip .tooltiptext,
body .tooltip .tooltiptext {
visibility: hidden;
width: 140px;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px;
position: absolute;
z-index: 1;
bottom: 150%;
left: 50%;
margin-left: -75px;
opacity: 0;
transition: opacity 0.3s;
}
html .tooltip .tooltiptext::after,
body .tooltip .tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #555 transparent transparent transparent;
}
html .tooltip:hover .tooltiptext,
body .tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
/*# sourceMappingURL=main.css.map */

View file

@ -1 +0,0 @@
{"version":3,"sourceRoot":"","sources":["../scss/_images.scss","../scss/_animation.scss","../scss/main.scss","../scss/_fonts.scss","../scss/_colors.scss","../scss/_header.scss","../scss/_nav.scss","../scss/_article.scss","../scss/_utils.scss","../scss/_footer.scss","../scss/_copy.scss"],"names":[],"mappings":"AAGE;EACE;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;;AAbF;EACE;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;;AChBJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;;AClBJ;EACE;;;AAGF;AAAA;EAEE;EACA;EAEA;EACA;EAEA;EACA;EAEA,aC3BM;ED4BN,kBEjBS;EFkBT,OEXa;;AFeb;AAAA;EG9BA;EACA;EACA;EAEA;EACA;EAEA,kBDCS;ECAT;EAEA;;AAEA;AAAA;EACE;EACA;EACA;EACA;;AHmBF;AAAA;EIrCA;EACA;EACA;;AAEA;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;;AJ0BF;AAAA;EKtCA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AAEA;AAAA;EACE;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;;ALiBA;AAAA;EKZF,kBHfa;EGgBb;EACA;;ALcE;AAAA;EKVF;;AAEA;AAAA;EACE;EACA;EACA;EAEA;EACA;EAEA,kBH/BW;;AIVb;AAAA;EACE,wBDyCgC;ECxChC,yBDwCgC;ECvChC;EACA;;AAGF;AAAA;EACE;EACA;EACA,2BDgCgC;EC/BhC,4BD+BgC;;AC5BlC;AAAA;EACE,yBD2BgC;EC1BhC,wBD0BgC;ECzBhC,2BDyBgC;ECxBhC,4BDwBgC;;AAGhC;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAEA;AAAA;EACE;EACA;EACA;EACA;EACA;EAEA;EAEA;EACA,kBH5DO;;AITb;AAAA;EACE,wBDqEoC;ECpEpC,yBDoEoC;ECnEpC;EACA;;AAGF;AAAA;EACE;EACA;EACA,2BD4DoC;EC3DpC,4BD2DoC;;ACxDtC;AAAA;EACE,yBDuDoC;ECtDpC,wBDsDoC;ECrDpC,2BDqDoC;ECpDpC,4BDoDoC;;AAEhC;AAAA;EACE;EACA;;AAEA;AAAA;EACE;;AAIJ;AAAA;EACE;EACA;;AAIJ;AAAA;EACE;;AAEA;AAAA;EACE;;AAMJ;EACE;AAAA;IACE;;EC3ER;AAAA;IACE;IACA,wBD0E+B;ICzE/B;IACA;;EAGF;AAAA;IACE,yBDoE+B;ICnE/B;IACA;IACA;;EAGF;AAAA;IACE;IACA;IACA,2BD2D+B;IC1D/B;;EAGF;AAAA;IACE;IACA;IACA;IACA,4BDmD+B;;EAIzB;AAAA;IACE;;;AAQN;AAAA;EACE;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;AAEA;AAAA;EACE;EACA;EACA;;AAIJ;AAAA;EACE;EACA;;AAOJ;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAKJ;AAAA;EAOE;EACA;EACA;;AARA;AAAA;EACE;EACA;EACA;;AL5GN;AAAA;EOtDA;EACA;EACA;EACA;EAEA;EACA,kBLCS;EKAT;EAEA;EACA;EAEA;;AAEA;AAAA;EACE;;AP4CF;AAAA;EACE;EACA;;AAEA;AAAA;EACE,OE9CS;;AFiDX;AAAA;EACE;;AAGF;AAAA;EACE;EACA;;AAGF;AAAA;EACE;;AAIJ;AAAA;EACE;EACA;EMjFF;EACA;;AALA;AAAA;EACE;;AEDF;AAAA;EACE;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA","file":"main.css"}

View file

@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="200mm"
height="200mm"
viewBox="0 0 200 200"
version="1.1"
id="svg1"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
sodipodi:docname="ssavpn.svg"
inkscape:export-filename="ssavpn48x48.png"
inkscape:export-xdpi="6.0959997"
inkscape:export-ydpi="6.0959997"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="0.35355339"
inkscape:cx="96.166522"
inkscape:cy="386.0803"
inkscape:window-width="1366"
inkscape:window-height="739"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:export-bgcolor="#ffffff00" />
<defs
id="defs1">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect4"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
radius="0"
unit="px"
method="auto"
mode="F"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<g
id="g4"
transform="translate(-86.163789,-27.213761)"
style="fill:#d40000" />
<path
style="fill:#b3b3b3;stroke:#000000;stroke-width:1.865;stroke-opacity:0.97813344"
d="M 6.1040265,195 61.040265,105 12.208053,75.000001 54.936238,5 70.196305,5 27.468119,75.000001 76.300331,105 21.364093,195 Z"
id="path37"
sodipodi:nodetypes="ccccccccc" />
<path
style="fill:#666666;stroke:#000000;stroke-width:1.865;stroke-opacity:0.98773342;fill-opacity:1"
d="M 30.520132,195 85.456371,105 36.624159,75.000002 79.352344,5.0000008 H 94.612411 L 51.884225,75.000002 100.71644,105 45.780199,195 Z"
id="path64"
sodipodi:nodetypes="ccccccccc" />
<path
style="fill:#d40000;stroke:#000000;stroke-width:1.865;stroke-opacity:0.98453319"
d="M 74.469123,83.000001 122.08053,5 l 0,25 -36.624159,60.000001 z"
id="path65"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#d40000;stroke:#000000;stroke-width:1.865;stroke-opacity:0.97493327"
d="M 189.22482,195 122.08053,5.0000001 V 30 l 57.98825,85 z"
id="path66"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#800000;stroke:#000000;stroke-width:1.45751;stroke-opacity:0.98933333"
d="m 109.72093,107.88517 h 43.08179 L 158.95725,120 H 97.41186 Z"
id="path67" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="200mm"
height="200mm"
viewBox="0 0 200 200"
version="1.1"
id="svg1"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
sodipodi:docname="ssavpn.svg"
inkscape:export-filename="ssavpn48x48.png"
inkscape:export-xdpi="6.0959997"
inkscape:export-ydpi="6.0959997"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="0.35355339"
inkscape:cx="96.166522"
inkscape:cy="386.0803"
inkscape:window-width="1366"
inkscape:window-height="739"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:export-bgcolor="#ffffff00" />
<defs
id="defs1">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect4"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
radius="0"
unit="px"
method="auto"
mode="F"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<g
id="g4"
transform="translate(-86.163789,-27.213761)"
style="fill:#d40000" />
<path
style="fill:#b3b3b3;stroke:#000000;stroke-width:1.865;stroke-opacity:0.97813344"
d="M 6.1040265,195 61.040265,105 12.208053,75.000001 54.936238,5 70.196305,5 27.468119,75.000001 76.300331,105 21.364093,195 Z"
id="path37"
sodipodi:nodetypes="ccccccccc" />
<path
style="fill:#666666;stroke:#000000;stroke-width:1.865;stroke-opacity:0.98773342;fill-opacity:1"
d="M 30.520132,195 85.456371,105 36.624159,75.000002 79.352344,5.0000008 H 94.612411 L 51.884225,75.000002 100.71644,105 45.780199,195 Z"
id="path64"
sodipodi:nodetypes="ccccccccc" />
<path
style="fill:#d40000;stroke:#000000;stroke-width:1.865;stroke-opacity:0.98453319"
d="M 74.469123,83.000001 122.08053,5 l 0,25 -36.624159,60.000001 z"
id="path65"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#d40000;stroke:#000000;stroke-width:1.865;stroke-opacity:0.97493327"
d="M 189.22482,195 122.08053,5.0000001 V 30 l 57.98825,85 z"
id="path66"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#800000;stroke:#000000;stroke-width:1.45751;stroke-opacity:0.98933333"
d="m 109.72093,107.88517 h 43.08179 L 158.95725,120 H 97.41186 Z"
id="path67" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 522 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

View file

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf8" />
</head>
<body>
<script>window.location.replace("https://vpn.asandikci.com");</script>
</body>
</html>

View file

@ -1,94 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<?php
### ERROR HANDLING ###
function warnError($errno, $errstr, $errfile, $errline)
{
echo "<br><p style='padding:0px;margin:0px;background-color:white;color:black;'><b style='color:red;'>Error:</b> [$errno] $errstr <br> in file <b style='color:blue'>$errfile</b> line <b style='color:red'>$errline</b></p>";
}
set_error_handler("warnError");
if (!$_SERVER['DOCUMENT_ROOT']) {
$_SERVER['DOCUMENT_ROOT'] = '/weblink';
}
# TODO separate file
?>
<head>
<!-- Meta Content -->
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="SSA VPN, fatih meb interneti için VPN çözümü">
<meta name="keywords" content="SSA,SSA VPN,vpn,f@tih,fatih">
<meta name="author" content="Aliberk Sandıı">
<!-- CSS Files -->
<link rel="stylesheet" type="text/css" href="./assets/css/main.css">
<title>
SSA VPN
</title>
<link rel="shortcut icon" href="assets/iflpanel/ssavpn.svg" type="image/x-icon">
</head>
<style>
.inner_button_lay {
border: 1px white solid;
border-radius: 5px;
padding: 0.7rem;
background-color: #10161d;
}
.p_inb {
margin-bottom: 2rem;
}
</style>
<body>
<header>
<a href="/iflpanel/ssavpn/" id="hlogo" class="tmpinfo" style="margin: auto;"><img src="assets/iflpanel/ssavpn.svg"></a>
<!-- <div class="tmpinfo">SSA VPN</div> -->
</header>
<div class="main-scrollable">
<article class="plain" style="text-align:center;align-items:center;">
<h1 class="glow">SSA VPN </h1>
<p style="font-size:14px;">Şifreleme sayesinde Gelişmiş Güvenlik ve Gizlilik
<br>Yüksek Hız ve Düşük Gecikme (50Mbit/s 50ms)
<br><b>Fatih/MEB interneti ile uyumlu!</b>
</p><br>
<hr style="width: 100%;margin-bottom:1rem;">
<div class="links">
<p class="p_inb"><a class="button inner_button_lay" href="./apk/"><span>Android Uygulamasını (apk) İndir</span></a></p>
<p class="p_inb"><a class="button inner_button_lay" href="./ssa-sertifika.pem"><span>SSA Sertifika</span></a></p>
<p class="p_inb"><a class="button inner_button_lay" href="./kurulum/"><span>NASIL KURULUR</span></a></p>
<p class="p_inb"><a class="button inner_button_lay" href="./odeme/"><span>ÖDEME BİLGİLERİ</span></a></p>
<p class="p_inb"><a class="button inner_button_lay" href="./tos.html"><span>Kullanıcı Sözleşmesi</span></a></p>
<p class="p_inb"><a class="button inner_button_lay" href="./privacy.html"><span>Gizlilik Politikası</span></a></p>
</div>
</article>
<footer>
<div class="tmpinfo">2023 &#x1f12f; Aliberk Sandıı</div>
</footer>
</div>
<?php
$dir = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . "/assets/js");
foreach ($dir as $file) {
if ((!$file->isDot()) && str_ends_with($file, ".js") && $file != "jquery.js") {
echo '<script src="/assets/js/' . $file . '"></script>' . PHP_EOL . ' ';
}
} ?>
</body>
</html>

View file

@ -1,95 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<?php
### ERROR HANDLING ###
function warnError($errno, $errstr, $errfile, $errline)
{
echo "<br><p style='padding:0px;margin:0px;background-color:white;color:black;'><b style='color:red;'>Error:</b> [$errno] $errstr <br> in file <b style='color:blue'>$errfile</b> line <b style='color:red'>$errline</b></p>";
}
set_error_handler("warnError");
if (!$_SERVER['DOCUMENT_ROOT']) {
$_SERVER['DOCUMENT_ROOT'] = '/weblink';
}
# TODO separate file
?>
<head>
<!-- Meta Content -->
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="SSA VPN, fatih meb interneti için VPN çözümü">
<meta name="keywords" content="SSA,SSA VPN,vpn,f@tih,fatih">
<meta name="author" content="Aliberk Sandıı">
<!-- CSS Files -->
<link rel="stylesheet" type="text/css" href="../assets/css/main.css">
<link rel="stylesheet" type="text/css" href="../assets/css/extra_without_scss.css">
<title>
Kurulum | SSA VPN
</title>
<link rel="shortcut icon" href="../assets/iflpanel/ssavpn.svg" type="image/x-icon">
</head>
<body>
<header>
<a href="/iflpanel/ssavpn/" id="hlogo" class="tmpinfo" style="margin: auto;"><img src="../assets/iflpanel/ssavpn.svg"></a>
</header>
<div class="main-scrollable">
<article class="plain" style="text-align:center;align-items:center;">
<h1>Kurulum</h1>
<hr style="width: 100%;">
<h2 id="android">Android</h2>
<ol style="text-align: left; align-self:baseline;">
<li><a href="../apk/" target="_blank">apk dosyası</a>nı indirin ve kurun</li>
<li><a href="../ssa-sertifika.pem">SSA Sertifika dosyası</a>nı indirin ve SSA VPN uygulaması ile ın</li>
<li>SSA VPN uygulamasını ın ve <b>VPN Profili Oluştur</b> butonuna tıklayın</li>
<li>Sunucu yerine <b class="copy_element" id="server_address" onclick="copy2Clipboard('server_address')">141.95.52.145</b> adresini ve kullanıcı adı/şifrenizi giriniz</li>
<li>Profil Adı kısmına <b class="copy_element" id="server_name" onclick="copy2Clipboard('server_name')">SSA VPN</b> yazınız (opsiyonel)</li>
<li>Kaydet tuşuna tıklayınız ve menüye eklenen vpn profilene bağlanmak için üstüne tıklayınız</li>
<li>Eğer karşınıza çıkarsa pil optimizasyon ve vpn bağlantısı seçeneklerine izin veriniz</li>
<li><b>Artık Kullanmaya başlayabilirsiniz !!!</b></li>
</ol>
<sup style="text-align: left; align-self:baseline;">Kolaylık olması ısından üst menüye hızlı bağlantı ikonunu ekleyebilirsiniz</sup>
<hr style="width: 100%;">
<h2 id="windows">Windows</h2>
<ol style="text-align: left; align-self:baseline;">
<li><a href="../ssa-sertifika.pem">SSA Sertifika dosyası</a>nı indirin</li>
<li><b>Bilgisayar Sertifikaları</b> uygulamasını ın</li>
<li>Soldaki Dosya Menüsünden <b>Güvenilen Kök Sertifikalar</b> seçeneğini seçin</li>
<li>Eylem Menüsünden <b>Al</b> (veya içeri aktar) seçeneğini seçin.</li>
<li>ılan pencerede ilk önce sağdan <b>tüm dosyalar</b> seçeneğini seçin, sonra ilk adımda indirdiğiniz sertifika dosyasını bulup seçin</li>
<li><b>Kontrol Paneli</b> Uygulamasını ın ve <b>İnternet ve Bağlantı Ayarları</b> kısmına gelin</li>
<li><b>Yeni bir veya bağlantı oluşturun</b> seçeneğini seçin</li>
<li><b>Bir çalışma alanına bağlanın</b> seçeneğini seçin ardından <b>Kendi internet bağlantımı kullan (VPN)</b> seçeneğini seçin</li>
<li><b>İnternet adresi</b> kısmına <b class="copy_element" onclick="copy2Clipboard('server_address')">141.95.52.145</b> adresini ve sonraki kutucuğa <b class="copy_element" onclick="copy2Clipboard('server_name')">SSA VPN</b> girin</li>
<li>Tamam tuşuna tıklayın, <b>Artık Kullanmaya başlayabilirsiniz !!!</b></li>
<li>Alt paneldeki internet kısmından kullanıcı adı ve şifrenizi girerek SSA VPN'i aktileştirebilirsiniz.</li>
</ol>
<sup style="text-align: left; align-self:baseline;">İlk iki sefer kullanıcı adı/şifre girmeniz gerekmektedir.</sup>
<sup style="text-align: left; align-self:baseline;">VPN bağlantısını kurduktan sonra internete bağlanamıyorsanız <a href="https://answers.microsoft.com/en-us/windows/forum/all/the-network-icon-shows-that-it-is-disconnected/0bca6f6a-30e4-4bc7-8f2c-1f1bd21869e9">bu linke</a> bakınız</sup>
</article>
<footer>
<div class="tmpinfo">2023 &#x1f12f; Aliberk Sandıı</div>
</footer>
</div>
<?php
$dir = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . "/assets/js");
foreach ($dir as $file) {
if ((!$file->isDot()) && str_ends_with($file, ".js") && $file != "jquery.js") {
echo '<script src="/assets/js/' . $file . '"></script>' . PHP_EOL . ' ';
}
} ?>
<script src="../assets/copy.js"></script>
</body>
</html>

View file

@ -1,78 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<?php
### ERROR HANDLING ###
function warnError($errno, $errstr, $errfile, $errline)
{
echo "<br><p style='padding:0px;margin:0px;background-color:white;color:black;'><b style='color:red;'>Error:</b> [$errno] $errstr <br> in file <b style='color:blue'>$errfile</b> line <b style='color:red'>$errline</b></p>";
}
set_error_handler("warnError");
if (!$_SERVER['DOCUMENT_ROOT']) {
$_SERVER['DOCUMENT_ROOT'] = '/weblink';
}
# TODO separate file
?>
<head>
<!-- Meta Content -->
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="SSA VPN, fatih meb interneti için VPN çözümü">
<meta name="keywords" content="SSA,SSA VPN,vpn,f@tih,fatih,ödeme,pricing">
<meta name="author" content="Aliberk Sandıı">
<!-- CSS Files -->
<link rel="stylesheet" type="text/css" href="../assets/css/main.css">
<link rel="stylesheet" type="text/css" href="../assets/css/extra_without_scss.css">
<title>
Ödeme Bilgileri | SSA VPN
</title>
<link rel="shortcut icon" href="../assets/iflpanel/ssavpn.svg" type="image/x-icon">
</head>
<body>
<header>
<a href="/iflpanel/ssavpn/" id="hlogo" class="tmpinfo" style="margin: auto;"><img src="../assets/iflpanel/ssavpn.svg"></a>
</header>
<div class="main-scrollable">
<article class="plain" style="text-align:center;align-items:center;">
<h1>Ödeme Bilgileri</h1>
<hr style="width: 100%;">
<h2>IBAN:</h2>
<h2 style="margin-top: 0px;text-decoration:none;"><b class="copy_element" id="IBAN" onclick="copy2Clipboard('IBAN')">TR63 0082 9000 0949 1444 3182 51</b><span id="IBAN-tip"></span></h2>
<hr style="width: 100%;">
<h2>Papara Numarası:</h2>
<h2 style="margin-top: 0px;text-decoration:none;"><b class="copy_element" id="Papara" onclick="copy2Clipboard('Papara')">14444318251</b><span id="Papara-tip"></span></h2>
<hr style="width: 100%;">
<p><b>"isim-soyisim, SSA VPN" şeklinde ıklama giriniz.</b></p>
<p>Mobil Cihazlar için <b>tek seferlik</b> 25<br>
Masaüstü/Laptop Cihazlar için <b>tek seferlik</b> 30<br>
Hem Mobil Hem Masaüstü/Laptop Cihazlar için (toplam 2 hesap) <b>tek seferlik</b> 40
</p>
</article>
<footer>
<div class="tmpinfo">2023 &#x1f12f; Aliberk Sandıı</div>
</footer>
</div>
<?php
$dir = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . "/assets/js");
foreach ($dir as $file) {
if ((!$file->isDot()) && str_ends_with($file, ".js") && $file != "jquery.js") {
echo '<script src="/assets/js/' . $file . '"></script>' . PHP_EOL . ' ';
}
} ?>
<script src="../assets/copy.js"></script>
</body>
</html>

View file

@ -1,71 +0,0 @@
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Gizlilik Sözleşmesi | SSA VPN</title>
</head>
<body style="background-color: rgba(15, 15, 15, 0.812); color:aliceblue;">
<h1>Gizlilik Politikası</h1>
<p>Son Güncelleme: 11/11/2023</p>
<hr>
<p> Güvenliğiniz bizim için önemli. Bu sebeple zorunlu olarak topladığımız verilerinizi şifrelemekte ve hassasiyetle
korumaktayız
</p>
<p>Biz, SSA VPN, veri sorumlusu olarak, bu gizlilik ve kişisel verilerin korunması politikası ile, hangi kişisel
verilerinizin hangi amaçla işleneceği, işlenen verilerin kimlerle ve neden paylaşılabileceği, veri işleme yöntemimiz
ve hukuki sebeplerimiz ile; işlenen verilerinize ilişkin haklarınızın neler olduğu hususunda sizleri aydınlatmayı
amaçlıyoruz.
</p>
<h2>Toplanan Kişisel Verileriniz, Toplanma Yöntemi ve Hukuki Sebebi</h2>
<p>IP adresiniz sadece sistemin gerekli bağlantıları gerçekleştirmesini sağlamak için toplanmaktadır. Otomatik veya
otomatik olmayan herhangi bir yöntem ile analitik sağlayıcılar, reklam ağları, arama bilgi sağlayıcıları, teknoloji
sağlayıcıları gibi üçüncü taraflar ile <b>paylaşılmamaktadır, işlenmemektedir</b>. Legal sebeplerden ötürü 1ay
boyunca ip adresiniz sunucumuzda şifrelenmiş bir şekilde saklanır.
</p>
<h2>Kişisel Verilerinizin İşlenme Amacı</h2>
<p>
Kişisel verileriniz <b>kullanıcıların kendi istekleri doğrultusunda</b> sistem hatalarının giderilmesi esnasında
kullanılması haricinde otomatik olarak işlenmemektedir.
</p>
<h2>Toplanan Kişisel Verilerin Kimlere ve Hangi Amaçlarla Aktarılabileceği</h2>
<p>
Bizimle paylaştığınız kişisel verileriniz (ip adresiniz); talep halinde <b>adli</b> makamlara, gerekli teknik ve
idari önlemler alınması koşulu ile aktarılabilecektir.
</p>
<h2>Kişisel Verileri İşlenen Kişi Olarak Haklarınız</h2>
<p>KVKK madde 11 uyarınca herkes, veri sorumlusuna başvurarak aşağıdaki haklarını kullanabilir:</p>
<ol style="list-style-type: lower-alpha;">
<li>Kişisel veri işlenip işlenmediğini öğrenme,</li>
<li>Kişisel verileri işlenmişse buna ilişkin bilgi talep etme,
</li>
<li>Kişisel verilerin işlenme amacını ve bunların amacına uygun kullanılıp kullanılmadığını öğrenme,</li>
<li>Yurt içinde veya yurt dışında kişisel verilerin aktarıldığı üçüncü kişileri bilme,</li>
<li>Kişisel verilerin eksik veya yanlış işlenmiş olması hâlinde bunların düzeltilmesini isteme,</li>
<li>Kişisel verilerin silinmesini veya yok edilmesini isteme,</li>
<li>(e) ve (f) bentleri uyarınca yapılan işlemlerin, kişisel verilerin aktarıldığı üçüncü kişilere bildirilmesini
isteme,</li>
<li>İşlenen verilerin münhasıran otomatik sistemler vasıtasıyla analiz edilmesi suretiyle kişinin kendisi aleyhine
bir sonucun ortaya çıkmasına itiraz etme,
</li>
<li>Kişisel verilerin kanuna aykırı olarak işlenmesi sebebiyle zarara uğraması hâlinde zararın giderilmesini talep
etme, haklarına sahiptir.</li>
</ol>
<p>Yukarıda sayılan haklarınızı kullanmak üzere <a href="mailto:contact@aliberksandikci.com.tr">contact@aliberksandikci.com.tr</a> üzerinden
bizimle iletişime geçebilirsiniz.</p>
<h2>İletişim</h2>
<p>Sizlere hizmet sunabilmek amaçlı sadece gerekli olan kişisel verilerinizin, işbu
gizlilik ve kişisel verilerin işlenmesi politikası uyarınca işlenmesini, kabul edip etmemek hususunda tamamen
özgürsünüz. vpn.iflpanel.com websitesini, SSA VPN android uygulamasını, ssa-sertifikayı veya SSA VPN hizmetlerinden
herhangi birini kullanmaya devam ettiğiniz takdirde kabul etmiş olduğunuz tarafımızca varsayılacak olup, daha
ayrıntılı bilgi için bizimle <a href="mailto:contact@aliberksandikci.com.tr">contact@aliberksandikci.com.tr</a> e-mail adresi üzerinden
iletişime geçmekten lütfen çekinmeyiniz. </p>
</body>

View file

@ -1,29 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIE8DCCAtigAwIBAgIIPlRW95un+dQwDQYJKoZIhvcNAQEMBQAwFjEUMBIGA1UE
AxMLVlBOIHJvb3QgQ0EwHhcNMjMwOTE2MDk1MjIxWhcNMzMwOTEzMDk1MjIxWjAW
MRQwEgYDVQQDEwtWUE4gcm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBAJ5NqMhiiomHbWm+K/tdgBnhJ7vO0+HekE0aze2d8d4vGNEHCWca6iCV
l6yAByP/DpK4NpqhRSvyGab/LJVtqOXO3zgH1ZVKnAH0hWVj3UZcjCYe9UPObvYb
ndLBVok451M/QbTyWptxRioXJscOXJ9DJYmenIXFgaV8+UBYlVfyldIzCeHNuroo
WRjjDMilymtvV8DY8uEX0ZgNbwXVu6iP4l2ZC4WPmMB7nl2FhflLolalNFXtYaKI
OAWND+3e+mJI03ojzYjG/XYzg2AT0AolHTATUfHBfxckl96EPk5zUQBHgoLysdHe
xPjIey376rey/7fKvATpDTZkxoOGEA8UAgyvfM0zex58z/OjsaMaRQrFNJ073pPQ
UPcvHpDDxyohx/L9nQotxBAkHEHlU9gzK1liBN2S6q/vljK/mnbQmi/aTv2wkXfN
l1DDOlnv5yTP3MfximfHMQOOazK8C5FcU1HbVnzmB4L1WCbzc8ePFXsYN50JrX9O
I47XhC096TjU7QxBQkMjAHyPUQ4yJJGneJ5ovHGDB9Wa55pLQS0lU69SnhnpM8Lt
JkG3hUo4lrlumeEiRW1jC5NswKiqFW87sNBsUZN63s5Vpuwk1bFqCzujeXaughSe
IrrevWciEzXtOglRyzdTmfRXzgc4zH//zdYKr54hjWGG245r8FQjAgMBAAGjQjBA
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS7qDly
4SuxV4eM+ZLw/D/mE28EvjANBgkqhkiG9w0BAQwFAAOCAgEAf1juSwI2kto3hn9X
uxVI40oVfzD6wOXVNWo4Brfmt/t9+1keZSrTS+fxKH9EfbDjhzZmXt1QgHgSPO1Y
g5KJiNCSfWmvaiI07+Kn4AtPSrTz6hcHM1ETC9E9IC0gFfmraAFG7gD8jQIJ+B53
7Hk3jNa1d0l+UEir+Gt2fzBRO5o307jQbsmP6scwpTzzsZLcW9ZSM/H7ZmAyB73u
aebKl/gcIm/DmgPVdhY6vZi656USR8/DOTq61GF5eA20lVE5kmCoVhdGkVUtD5Ji
5GVSBD+pGLf4WxrH7hvkfqb4G1RuhFrd+6oOESC6kdXHwB+2U2nyU1DJDpjrO64C
UKM6MzMxCEvLoSKgmumrRQfLKN7aSRbPz28t0qilzgz++mfzQEexmf9gYppsB9Qv
4j6AoSq5N0PX1FiqgmDMT7LQu/FuNKy+scgpfegjx39H5RjZpLdR5cvpVntbGvor
oYvPok+wo3kKXx6z16j9wuUV2fZoA9WAwS2rNveBss0sVyqxyK3D6pG4kvZTeF8L
xvohBPHlrIPErvtlHX6stLFjA9LE0lQzUBsDH/8CUTTHzP7q4ker09Sp5yFjctMD
ESb7TlbEXZ62CoXPJZhHXANuxr7AzObVzksUku45NwpI/Ehdh+SmZmN2wtFRdD/J
ElxksEwnDUL/QQMpQqE/fnaMeRM=
-----END CERTIFICATE-----

View file

@ -1,67 +0,0 @@
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Kullanım Koşulları | SSA VPN</title>
</head>
<body style="background-color: rgba(15, 15, 15, 0.812); color:aliceblue;">
<h1>Servis Kullanım Koşulları</h1>
<p>Son Güncelleme: 11/11/2023</p>
<hr>
<p>https://asandikci.com/iflpanel/ssavpn/ adresinde yer alan bu internet sitesini ziyaret ederek, SSA VPN Android uygulamasını
kullanarak, kullanıcı adı/parola talep ederek, ssa-sertifikayı kullanarak veya SSA VPN hizmetlerinden herhangi
birini kullanarak bu sözleşmede yazan koşulları kabul edersiniz. Bu sayfadaki herhangi bir koşulu kabul
etmiyorsanız, lütfen bu siteye ve ilgili diğer servislere olan erişiminizi sonlandırınız.
</p>
<h2>1. Gizlilik</h2>
<p>Gizlilik Politikası <a href="privacy.html">bir başka sayfada</a> mevcuttur. Sitemizi kullandığınız takdirde,
verilerinizin işlenmesinin Gizlilik Politikası'na uygun olarak gerçekleştiğini kabul edersiniz.
</p>
<h2>2. Telif Hakları</h2>
<p>Bu internet sitesindeki yer alan metinler ve kullanılan yazılım dahil, tüm içeriğin sahibi Aliberk Sandıı olup
ık lisanslıdır. Site içeriğini, <b>aslını taklit etme amacı gütmemek, ticari amaçlarla kullanmamak ve atıfta
bulunmak koşulu ile</b> herhangi bir izin olmaksızın kaynak kod içerisinden doğrudan çoğaltabilir, kopyalayabilir
veya yayabilirsiniz.
</p>
<h2>GENEL HÜKÜMLER</h2>
<ul>
<li class="element">Bir kullanıcı adı + parola ikilisi ile sadece tek bir cihazda oturum açılabilmektedir.
Tarafınıza ulaştırılan aynı doğrulama bilgileri ile farklı cihazlarda hesap açmanız bağlantı problemleri
ve kısıtlamalara yol açabilir. Bunun yerine yeni bir hesap adı isteyiniz.
</li>
<li class="element">Mobil cihazlarınız için size tahsis edilmiş hesaplar mobil cihazlarda, bilgisayar/laptop
cihazlarınız
için size tahsis ediliş hesaplar bilgisayar/laptop cihazlarınızda en optimize ve doğru şekilde çalışmaktadır.
Aksi taktirde geçici sunucu banı veya internet problemleri yaşayabilirsinizz. Hesapların açılma amacı
dışındaki bir cihazda kullanımından doğacak yükümlülüklerden SSA VPN sorumlu değildir.
</li>
<li class="element">
SSA VPN hiçbir şekilde altyapı/wifi/modem/ethernet hızı ve stabilitesinden ve çekim gücünden sorumlu
değildir. SSA VPN sadece mevcut bağlantının şifrelenerek iletilmesini sağlar.
</li>
<li class="element">
SSA VPN sunucuları Fransa ve Almanya sınırları içinde bulunmaktadır. Eğer sunucu seçiminin sizin için bir
önemi varsa hesabınızı almadan önce iletişime geçiniz!
</li>
<li class="element">
Her kullanıcı kendi kullanımından ve tükettiği/ürettiği içerikten kendisi sorumludur. Kullanıcının servisi
legal olmayan sebepler ile kullanımı SSA VPN, iflpanel, Aliberk Sandıı kuruluş ve kişileri ile
ilişkilendirilemez!
</li>
<li class="element">
Kullanıcılar Servis Kullanım koşullarının güncelliğini denetlemekle yükümlüdürler.
</li>
</ul>
</body>

View file

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
window.location.replace("https:/asandikci.com/iflpanel/ssavpn/kurulum/")
</script>
</head>
<body>
</body>
</html>

View file

@ -1,23 +0,0 @@
@charset "UTF-8";
/* 2023 Aliberk Sandıı*/
#ders-programi {
display: none;
flex-direction: column;
padding: 0px 100px;
padding-top: 10px;
}
#ders-programi img {
max-width: 1309px;
max-height: 601px;
aspect-ratio: 1309/601;
}
.min,
.sec,
.msec {
display: flex;
width: 7vw;
justify-content: center;
}
/*# sourceMappingURL=dev.css.map */

View file

@ -1 +0,0 @@
{"version":3,"sourceRoot":"","sources":["../scss/dev.scss"],"names":[],"mappings":";AAAA;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;AAAA;AAAA;EAGE;EACA;EACA","file":"dev.css"}

View file

@ -1,293 +0,0 @@
@charset "UTF-8";
/* 2023 Aliberk Sandıı*/
/* 2023 Aliberk Sandıı*/
@keyframes rain {
0% {
background-color: white;
}
25% {
background-color: red;
}
50% {
background-color: green;
}
100% {
background-color: yellow;
}
}
* {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: default;
}
body,
html {
display: flex;
flex-direction: column;
margin: 0px;
height: 100%;
width: 100%;
background-color: black;
color: aliceblue;
font-family: "Montserrat", Arial, Helvetica, sans-serif;
}
section#top {
display: flex;
justify-content: space-around;
user-select: none;
width: 100%;
height: 100px;
}
section#top .class {
display: flex;
flex-direction: column;
column-gap: 10px;
margin: 5px;
min-width: 20vw;
margin-right: auto;
font-weight: 800;
font-style: oblique;
}
section#top .clock {
display: flex;
}
section#top .clock #time {
display: flex;
align-items: center;
align-self: center;
align-content: center;
justify-items: center;
justify-self: center;
justify-content: center;
font-size: 80px;
}
section#top .toolbox {
min-width: 20vw;
margin-left: auto;
text-align: right;
display: block;
}
section#top .toolbox button {
height: 30px;
width: 30px;
line-height: 20px;
}
section#top .settings-box {
min-width: min-content;
margin-left: 0;
text-align: right;
}
section#top .settings-box button {
height: 30px;
width: 30px;
line-height: 20px;
}
section#top .settings-box #settings {
display: none;
flex-direction: column;
align-items: end;
font-size: small;
margin-top: 5px;
}
section#top .settings-box #settings form {
display: flex;
flex-direction: column;
position: absolute;
min-width: 10vw;
background-color: grey;
}
section#top .settings-box #settings form .cell {
float: left;
display: flex;
flex-direction: row;
margin-bottom: 1vh;
}
section#top .settings-box #settings form .cell input[type=checkbox] {
appearance: none;
background-color: #fff;
margin: 0;
width: 1.15em;
height: 1.15em;
border: 0.15em solid darkslateblue;
border-radius: 0.15em;
transform: translateY(-0.075em);
display: grid;
place-content: center;
outline: 0px solid white;
outline-offset: 0px;
}
section#top .settings-box #settings form .cell input[type=checkbox]::before {
content: "";
width: 0.65em;
height: 0.65em;
transform: scale(0);
transition: 120ms transform ease-in-out;
box-shadow: inset 1em 1em green;
transform-origin: bottom left;
clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}
section#top .settings-box #settings form .cell input[type=checkbox]:checked::before {
transform: scale(1);
}
section#top .settings-box #settings form .cell input[type=checkbox]:focus {
outline: max(2px, 0.15em) solid white;
outline-offset: max(2px, 0.15em);
}
section#top .settings-box #settings form .cell label {
padding-left: 5px;
display: block;
text-align: left;
align-self: center;
}
section#mid {
display: flex;
flex-direction: column;
text-align: center;
user-select: none;
}
section#mid #timers {
display: none;
flex-direction: column;
}
section#mid #timers #timers-menu ul {
display: flex;
justify-content: center;
padding: 0;
}
section#mid #timers #timers-menu ul li {
list-style-type: none;
box-sizing: border-box;
}
section#mid #timers #timers-menu ul li .pushable {
position: relative;
border: none;
background: transparent;
padding: 0;
cursor: pointer;
outline-offset: 4px;
transition: filter 250ms;
}
section#mid #timers #timers-menu ul li .shadow {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: hsla(0, 0%, 0%, 0.25);
will-change: transform;
transform: translateY(2px);
transition: transform 600ms cubic-bezier(0.3, 0.7, 0.4, 1);
}
section#mid #timers #timers-menu ul li .edge {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(to left, hsl(235, 84%, 26%) 0%, hsl(235, 84%, 26%) 8%, hsl(235, 84%, 26%) 92%, hsl(235, 84%, 26%) 100%);
}
section#mid #timers #timers-menu ul li .front {
display: block;
position: relative;
padding: 12px 42px;
color: white;
background: hsl(188, 88%, 29%);
will-change: transform;
transform: translateY(-4px);
transition: transform 600ms cubic-bezier(0.3, 0.7, 0.4, 1);
}
section#mid #timers #timers-menu ul li .pushable:hover {
filter: brightness(110%);
}
section#mid #timers #timers-menu ul li .pushable:hover .front {
transform: translateY(-6px);
transition: transform 250ms cubic-bezier(0.3, 0.7, 0.4, 1.5);
}
section#mid #timers #timers-menu ul li .pushable:active .front {
transform: translateY(-2px);
transition: transform 34ms;
}
section#mid #timers #timers-menu ul li .pushable:hover .shadow {
transform: translateY(4px);
transition: transform 250ms cubic-bezier(0.3, 0.7, 0.4, 1.5);
}
section#mid #timers #timers-menu ul li .pushable:active .shadow {
transform: translateY(1px);
transition: transform 34ms;
}
section#mid #timers #timers-menu ul li .pushable:focus:not(:focus-visible) {
outline: none;
}
section#mid #timers #timers-menu ul li .pushable-f .front,
section#mid #timers #timers-menu ul li .pushable-f .edge,
section#mid #timers #timers-menu ul li .pushable-f .shadow {
border-top-left-radius: 13px;
border-bottom-left-radius: 13px;
}
section#mid #timers #timers-menu ul li .pushable-f .edge {
background: linear-gradient(to left, hsl(235, 84%, 26%) 0%, hsl(235, 84%, 26%) 8%, hsl(235, 84%, 26%) 92%, hsl(193, 100%, 30%) 100%);
}
section#mid #timers #timers-menu ul li .pushable-l .front,
section#mid #timers #timers-menu ul li .pushable-l .edge,
section#mid #timers #timers-menu ul li .pushable-l .shadow {
border-top-right-radius: 13px;
border-bottom-right-radius: 13px;
}
section#mid #timers #timers-menu ul li .pushable-l .edge {
background: linear-gradient(to left, hsl(193, 100%, 30%) 0%, hsl(235, 84%, 26%) 8%, hsl(235, 84%, 26%) 92%, hsl(235, 84%, 26%) 100%);
}
section#mid #timers #timers-menu ul li .front {
font-size: medium;
font-weight: 500;
}
section#mid #timers #stopwatch {
display: none;
flex-direction: column;
}
section#mid #timers #stopwatch .timer {
font-size: 150px;
display: flex;
align-self: center;
}
section#mid #timers #stopwatch .timer .min,
section#mid #timers #stopwatch .timer .sec,
section#mid #timers #stopwatch .timer .msec {
width: 12vw;
}
section#mid #timers #timer {
display: none;
flex-direction: column;
}
section#mid #timers #timer .timer {
font-size: xx-large;
}
section#mid #yemek-listesi {
display: none;
flex-direction: column;
}
section#mid #animations {
display: none;
flex-direction: column;
}
section#bottom {
margin-top: auto;
}
section#bottom #rainbow {
width: 100%;
height: 20px;
animation: rain 4.72s ease infinite;
}
.kronometre {
text-align: center;
margin: auto;
font-size: 50px;
}
/*# sourceMappingURL=main.css.map */

View file

@ -1 +0,0 @@
{"version":3,"sourceRoot":"","sources":["../scss/main.scss","../scss/_animation.scss","../scss/_button.scss"],"names":[],"mappings":";AAAA;ACAA;AAEA;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;;ADZJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;;;AAMA;EACE;EACA;EACA;EAEA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAWZ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGE;EACE;EACA;EACA;;AAEA;EAEE;EACA;;AEpLV;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA,YACE;;AAGJ;EACE;EACA;EACA;EACA;EACA;EAEA;;AAOF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA,YACE;;AAGJ;EACE;;AAGF;EACE;EACA,YACE;;AAGJ;EACE;EACA;;AAGF;EACE;EACA,YACE;;AAGJ;EACE;EACA;;AAGF;EACE;;AAKA;AAAA;AAAA;EAGE;EACA;;AAGF;EACE;;AAUF;AAAA;AAAA;EAIE;EACA;;AAGF;EACE;;AFyEM;EACE;EACA;;AAOR;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EAGE;;AAKN;EACE;EACA;;AAEA;EACE;;AAMN;EACE;EACA;;AAGF;EACE;EACA;;AAMJ;EACE;;AAEA;EACE;EACA;EACA;;;AAKN;EACE;EACA;EACA","file":"main.css"}

View file

@ -1,10 +0,0 @@
.timer-action-button {
color: white;
background-color: #097a8b;
border-radius: 10px;
padding: 10px;
margin: 10px;
border-bottom-color: #0b147a;
border-right-color: #0b147a;
border-style: ridge;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 553 B

View file

@ -1,2 +0,0 @@
// 2023 © Aliberk Sandıı
// Temporary Development File

View file

@ -1,120 +0,0 @@
// 2023 © Aliberk Sandıı
// Initialize Variables / Arrays / Maps and first functions
// Import after utils, updates, and mid js files!
// CONSTANT VARIABLES
const allButtons = [
"timers-button",
"yemekhane-button",
"ders-programi",
"animation-button",
"settings-button",
"stopwatch-button",
"timer-button"
];
const allCheckboxes = [
"chx-clockSecond",
"chx-timerMsec",
"chx-devVersion",
"chx-yksTimer",
"chx-fullscreenClock",
"chx-hideHeader",
];
const midItems = ["timers", "yemek-listesi", "animations", "ders-programi"];
const timersItems = ["stopwatch", "timer"];
const schoolPeriods = {
["lessonStarts"]: ["08-40", "09-30", "10-20", "11-10", "12-00", "13-30", "14-20", "15-10"],
["lessonEnds"]: ["09-20", "10-10", "11-00", "11-50", "12-40", "14-10", "15-00", "15-50"],
};
// VARIABLES
var specialPeriods = {
["launchStart"]: "12-40",
["schoolEnds"]: "15-50",
};
var localSettings = {
["local-grade"]: "Sınıf",
["local-class"]: "Şube",
}
var curVals = [
"clockSecond",
"timerMsec",
"devVersion",
"yksTimer",
"fullscreenClock",
"hideHeader",
]
var curSeconds;
var curMin;
var curHour;
const confs = new Map();
FirstInitialization();
var t = setInterval(DEVupdateSettings, 100);
var t2 = setInterval(updateComponents, 100);
function FirstInitialization() {
getVariablesToConfig();
getFormInputs();
getURLSettings();
updateFormInputs();
// Update Beginning Components
console.log(confs.get("local-grade"));
setToID("grade", confs.get("local-grade"), "Sınıf");
setToID("class", confs.get("local-class"), "Şube");
updateComponents();
}
function getVariablesToConfig() {
addObjectToConfig(localSettings, 1);
}
function getFormInputs() {
allCheckboxes.forEach(element => {
let chx = document.getElementById(element);
if (chx.checked) {
confs.set(element.slice(4), "1");
} else {
confs.set(element.slice(4), "0");
}
});
}
function getURLSettings() {
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
addArrayToConfig(allCheckboxes, urlParams);
addArrayToConfig(curVals, urlParams);
addObjectToConfig(localSettings, urlParams);
addObjectToConfig(specialPeriods, urlParams);
}
/**
* Update form inputs with local variables and user changed options
*/
function updateFormInputs() {
confs.forEach((val, key) => {
if (allCheckboxes.includes("chx-" + key)) {
if (val == "0") {
document.getElementById("chx-" + key).checked = false;
} else {
document.getElementById("chx-" + key).checked = true;
}
}
});
}

View file

@ -1,299 +0,0 @@
// 2023 Aliberk Sandıı
// VARIABLES
var FlagSecond = 0;
var FlagSettings = 0;
var FlagTimers = 1;
var FlagExtras = 1;
var FlagTools = 1;
var FlagFullscreen = 0;
var FlagLargenClock = 0;
var MidItems = ["timers", "stopwatch", "timer", "yemek-listesi", "animations"]
// RUN FUNCTIONS ON START
updateTime();
if (FlagSettings) { toggleSettings() }
if (FlagTimers) { toggleTimers() }
// RUN FUNCTIONS PERIODICALLY
var t = setInterval(updateTime, 1000);
//
// MAIN FUNCTIONS
//
function updateTime() {
var d = new Date();
var curHour = getDigits(d.getHours(), 2);
var curMin = getDigits(d.getMinutes(), 2);
var curSeconds = getDigits(d.getSeconds(), 2);
if (FlagSecond) {
document.getElementById("time").innerHTML = curHour + "." + curMin + "." + curSeconds;
} else {
document.getElementById("time").innerHTML = curHour + "." + curMin;
}
if (curHour == 12 && (curMin >= 24 && curMin <= 30) && FlagExtras == 1) {
document.getElementById("time").style.color = "red";
document.getElementById("rainbow").style.display = "inherit";
} else {
document.getElementById("time").style.color = "inherit";
document.getElementById("rainbow").style.display = "none";
}
}
function toggleClockSeconds() {
let chx = document.getElementById("chx-clockSecond");
if (chx.checked) {
FlagSecond = 1;
} else {
FlagSecond = 0;
}
updateTime();
}
function toggleDevVersion() {
let chx = document.getElementById("chx-devVersion");
if (chx.checked) {
window.location.replace("dev.html" + window.location.search);
} else {
window.location.replace("index.html" + window.location.search);
}
}
function toggleSettings() {
let settings = document.getElementById("settings");
console.log(settings.style.display);
if (settings.style.display == "flex") {
settings.style.display = "none";
} else {
settings.style.display = "flex";
}
}
function toggleTimers(typ = "display") {
switch (typ) {
case "stopwatch":
hideMidAll("stopwatch", "timers");
toggleItem("id", "stopwatch");
break;
case "timer":
hideMidAll("timer", "timers");
toggleItem("id", "timer");
break;
default: // "display"
hideMidAll("timers");
toggleItem("id", "timers");
break;
}
}
function toggleYemekListesi() {
hideMidAll("yemek-listesi");
toggleItem("id", "yemek-listesi");
}
function toggleAnimations() {
hideMidAll("animations");
toggleItem("id", "animations");
}
function toggleExtra() {
let chx = document.getElementById("chx-closeExtra");
if (chx.checked) {
FlagExtras = 0;
} else {
FlagExtras = 1;
}
updateExtras();
}
function toggleTools() {
let chx = document.getElementById("chx-closeTools");
if (chx.checked) {
FlagTools = 0;
} else {
FlagTools = 1;
}
updateToolVisibility();
}
function toggleFullscreen() {
let chx = document.getElementById("chx-fullscreen");
if (chx.checked) {
FlagFullscreen = 1;
} else {
FlagFullscreen = 0;
}
updateFullscreen();
}
function toggleLargenClock() {
let chx = document.getElementById("chx-largenClock");
if (chx.checked) {
FlagLargenClock = 1;
} else {
FlagLargenClock = 0;
}
updateClockSize();
}
function toggleExamMode() {
let chx = document.getElementById("chx-examMode");
if (chx.checked) {
document.getElementById("chx-largenClock").checked = true;
document.getElementById("chx-closeExtra").checked = true;
document.getElementById("chx-clockSecond").checked = true;
document.getElementById("chx-closeTools").checked = true;
// document.getElementById("chx-fullscreen").checked = true;
// toggleFullscreen();
// FIXME Try, if not works open new tab and make fullscreen automatically, when exiting fullscreen actually close tab !!!
toggleExtra();
toggleLargenClock();
toggleClockSeconds();
toggleTools();
document.getElementById("header-note").style.display = "block";
} else {
document.getElementById("chx-largenClock").checked = false;
document.getElementById("chx-closeExtra").checked = false;
document.getElementById("chx-clockSecond").checked = false;
document.getElementById("chx-closeTools").checked = false;
// document.getElementById("chx-fullscreen").checked = false;
// toggleFullscreen();
toggleExtra();
toggleLargenClock();
toggleClockSeconds();
toggleTools();
document.getElementById("header-note").style.display = "none";
}
}
// -----------------------------------------
// UTILITIES
//
function getDigits(str, num) {
return ("0" + str).slice(-num);
}
/**
*
* @param {...any} except
*/
function hideMidAll(...except) {
MidItems.forEach(element => {
if (!except.includes(element)) {
document.getElementById(element).style.display = "none";
}
});
}
/**
* @param type id, class
* @param name id or class name
* @param display display type
*/
function toggleItem(type, name, display = "default") {
switch (type) {
case "id":
// TODO AUTO display type recognizer, do not require to type display type
var targetDisplay = "flex";
switch (display) {
case "absolute":
targetDisplay = "absolute";
break;
case "block":
targetDisplay = "block";
break;
default:
break;
}
var item = document.getElementById(name);
if (item.style.display == targetDisplay) {
item.style.display = "none";
} else {
item.style.display = targetDisplay;
}
break;
default:
console.error("no toggle item except ids!");
break;
}
}
function updateFullscreen() {
var elem = document.documentElement;
if (FlagFullscreen) {
console.warn("FULLSCREEN");
/* View in fullscreen */
if (elem.requestFullscreen) {
elem.requestFullscreen();
} else if (elem.webkitRequestFullscreen) { /* Safari */
elem.webkitRequestFullscreen();
} else if (elem.msRequestFullscreen) { /* IE11 */
elem.msRequestFullscreen();
}
} else {
/* Close fullscreen */
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) { /* Safari */
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) { /* IE11 */
document.msExitFullscreen();
}
}
}
function updateToolVisibility() {
var item = document.getElementsByClassName("settings-box")[0];
if (FlagTools) {
document.getElementById("toolbox").style.display = "block";
item.style.marginLeft = "0px";
item.style.minWidth = "min-content";
} else {
hideMidAll();
document.getElementById("toolbox").style.display = "none";
item.style.marginLeft = "auto";
item.style.minWidth = "20vw";
}
}
function updateExtras() {
var arr = document.getElementsByClassName("extraItem");
for (let i = 0; i < arr.length; i++) {
const element = arr[i];
if (FlagExtras) {
element.style.display = "inherit";
}
else {
element.style.display = "none";
}
}
}
function updateClockSize() {
let clock = document.getElementById("time");
let top = document.getElementById("top");
if (FlagLargenClock) {
document.getElementById("clock-divider").style.display = "none";
clock.style.fontSize="200px";
top.style.height="max-content";
} else {
document.getElementById("clock-divider").style.display = "block";
clock.style.fontSize="80px";
top.style.height="100px";
}
}

View file

@ -1,108 +0,0 @@
var curAction = "wait";
var previousAction = "wait"
var startTime = new Date();
var curTime = new Date();
var timeMS = 0;
var FlagMilisecond = 1;
var timer = document.getElementById("stopwatch").getElementsByClassName("timer")[0];
tick();
// NOT OPTIMIZED, place in start switch
var t = setInterval(tick, 10);
const sleep = ms => new Promise(r => setTimeout(r, ms));
async function Stopwatch(action) {
switch (action) {
case "start":
console.log("start function started");
if (previousAction == "start") { break; }
startTime = new Date();
curAction = "increase";
tick();
previousAction = "start";
document.getElementById("start-cro").style.color = "greenyellow";
document.getElementById("start-cro").style.borderTopColor = "greenyellow";
document.getElementById("start-cro").style.borderLeftColor = "greenyellow";
await sleep(200);
document.getElementById("start-cro").style.color = "grey";
document.getElementById("start-cro").style.borderTopColor = "grey";
document.getElementById("start-cro").style.borderLeftColor = "grey";
break;
case "stop":
curAction = "stop";
tick();
previousAction = "stop";
document.getElementById("stop-cro").style.color = "red";
document.getElementById("stop-cro").style.borderTopColor = "red";
document.getElementById("stop-cro").style.borderLeftColor = "red";
await sleep(200);
document.getElementById("stop-cro").style.color = "white";
document.getElementById("stop-cro").style.borderTopColor = "white";
document.getElementById("stop-cro").style.borderLeftColor = "white";
document.getElementById("start-cro").style.color = "white";
document.getElementById("start-cro").style.borderTopColor = "white";
document.getElementById("start-cro").style.borderLeftColor = "white";
break;
default:
// console.error("no action (old script)");
break;
}
}
function updateMsec() {
timer.getElementsByClassName("msec")[0].innerHTML = getDigits(Math.floor((timeMS / 10) % 100), 2);
}
function updateSec() {
timer.getElementsByClassName("sec")[0].innerHTML = getDigits(Math.floor((timeMS / 1000) % 60), 2);
}
function updateMin() {
timer.getElementsByClassName("min")[0].innerHTML = getDigits(Math.floor((timeMS / 1000 / 60) << 0), 2);
}
function getDigits(str, num) {
return ("0" + str).slice(-num);
}
function tick() {
switch (curAction) {
case "increase":
curTime = new Date();
timeMS = (curTime.getTime() - startTime.getTime());
if (FlagMilisecond) {
updateMsec();
}
updateSec();
updateMin();
break;
case "stop":
timer.getElementsByClassName("min")[0].innerHTML = "00";
timer.getElementsByClassName("sec")[0].innerHTML = "00";
timer.getElementsByClassName("msec")[0].innerHTML = "00";
curAction = "wait";
previousAction = "stop"
break;
default:
// console.error("no action (old script)");
break;
}
}
function toggleTimerMsec() {
let chx = document.getElementById("chx-timerMsec");
if (chx.checked) {
FlagMilisecond = 1;
timer.getElementsByClassName("msec")[0].style.display = "flex";
document.getElementById("stopwatch-msec-dot").style.display = "flex";
} else {
FlagMilisecond = 0;
timer.getElementsByClassName("msec")[0].style.display = "none";
document.getElementById("stopwatch-msec-dot").style.display = "none";
}
tick();
}

View file

@ -1,81 +0,0 @@
// OLD TIMER SCRIPT !!!
var curAction = "wait";
var previousAction = "wait"
var startTime = new Date();
var curTime = new Date();
var timeMS = 0;
var FlagMilisecond = 1;
var timer = document.getElementById("stopwatch").getElementsByClassName("timer")[0];
tick();
// NOT OPTIMIZED, place in start switch
var t = setInterval(tick, 10);
function Stopwatch(action) {
switch (action) {
case "start":
console.log("start function started");
if (previousAction == "start") { break; }
startTime = new Date();
curAction = "increase";
tick();
previousAction = "start";
break;
case "stop":
curAction = "stop";
tick();
previousAction = "stop";
break;
default:
console.warn("Stopwatch() is working, possible unoptimized, WIP!");
break;
}
}
function updateMsec() {
timer.getElementsByClassName("msec")[0].innerHTML = getDigits(Math.floor((timeMS / 10) % 100), 2);
}
function updateSec() {
timer.getElementsByClassName("sec")[0].innerHTML = getDigits(Math.floor((timeMS / 1000) % 60), 2);
}
function updateMin() {
timer.getElementsByClassName("min")[0].innerHTML = getDigits(Math.floor((timeMS / 1000 / 60) << 0), 2);
}
// no need, already in utils.js
// function getDigits(str, num) {
// return ("0" + str).slice(-num);
// }
function tick() {
switch (curAction) {
case "increase":
curTime = new Date();
timeMS = (curTime.getTime() - startTime.getTime());
if (confs.get('timerMsec') == "1") {
updateMsec();
}
updateSec();
updateMin();
break;
case "stop":
timer.getElementsByClassName("min")[0].innerHTML = "00";
timer.getElementsByClassName("sec")[0].innerHTML = "00";
timer.getElementsByClassName("msec")[0].innerHTML = "00";
curAction = "wait";
previousAction = "stop"
break;
default:
console.warn("tick() is working, possible unoptimized, WIP!");
break;
}
}

View file

@ -1,47 +0,0 @@
/**
* Update components with conf variables each second
*/
function updateComponents() {
setToID("time", updateTime());
if (curHour == 12 && (curMin >= 24 && curMin <= 30)) {
document.getElementById("time").style.color = "red";
document.getElementById("rainbow").style.display = "inherit";
} else {
document.getElementById("time").style.color = "inherit";
document.getElementById("rainbow").style.display = "none";
}
let timer = document.getElementById("stopwatch").getElementsByClassName("timer")[0];
if (confs.get("timerMsec") == 1) {
timer.getElementsByClassName("msec")[0].style.display = "flex";
document.getElementById("stopwatch-msec-dot").style.display = "flex";
} else {
timer.getElementsByClassName("msec")[0].style.display = "none";
document.getElementById("stopwatch-msec-dot").style.display = "none";
}
}
function updateTime() {
var d = new Date();
curHour = getDigits(d.getHours(), 2);
curMin = getDigits(d.getMinutes(), 2);
curSeconds = getDigits(d.getSeconds(), 2);
if (confs.get("clockSecond") == "1") {
return curHour + "." + curMin + "." + curSeconds;
} else {
return curHour + "." + curMin;
}
}
function DEVupdateSettings() {
let devData =
"<b>confs:</b> " + JSON.stringify(confs, (key, value) => (value instanceof Map ? [...value] : value)) + "<br>" +
"<b>schoolPeriods:</b> " + JSON.stringify(schoolPeriods, (key, value) => (value instanceof Map ? [...value] : value)) + "<br>" +
"<b>specialPeriods:</b> " + JSON.stringify(specialPeriods, (key, value) => (value instanceof Map ? [...value] : value)) + "<br>" +
"<b>info:</b> " + navigator.userAgent + "<br>" +
"<b>local-settings:</b>" + (urlParams = new URLSearchParams(window.location.search)) + "<br>";
document.getElementById("DEV").innerHTML = devData;
}

View file

@ -1,130 +0,0 @@
function getDigits(str, num) {
return ("0" + str).slice(-num);
}
/**
*
* @param {Object} obj
* @param {URLSearchParams} params
*/
function addObjectToConfig(obj, params) {
Object.entries(obj).forEach(element => {
const [key, value] = element;
if (params == 1) {
confs.set(key, value);
}
else if (params.has(key)) {
confs.set(key, params.get(key));
}
});
}
/**
*
* @param {Array} arr
* @param {URLSearchParams} params
*/
function addArrayToConfig(arr, params) {
arr.forEach(element => {
if (params.has(element)) {
confs.set(element, params.get(element));
}
});
}
/**
*
* @param {string} id id to be updated
* @param {string} config config to update with
* @param {any} type type
*/
function setToID(id, config, type = 0) {
let obj = document.getElementById(id)
if (obj.innerHTML != config && type == 0) {
document.getElementById(id).innerHTML = config;
} else if (typeof type === 'string') {
if (config == type) {
document.getElementById(id).innerHTML = "<span style='color:red;'>" + config + "</span>";
} else if (config != type) {
document.getElementById(id).innerHTML = config;
}
}
}
/**
* Hides all elements with matching id in a list
* @param {Array} elements element ids to hide
* @param {...any} except hide elements except these
*/
function hideAllExcept(elements, ...except) {
elements.forEach(element => {
if (!except.includes(element)) {
document.getElementById(element).style.display = "none";
}
});
}
/**
* @param {String} type id or class for getting elements to toggle
* @param {String} name id or class name
* @param {String} display display type, defaults to flex
*/
function toggleItemDisplay(type, name = "no", display = "flex") {
switch (type) {
case "auto":
if (name == "no") {
// console.log(1, event.srcElement.id); // DEPRECATED !
console.alert('dont use type auto for item display! WIP')
// get id with button/checkbox name! and auto detect
}
break;
case "id":
let item = document.getElementById(name);
if (item.style.display == display) {
item.style.display = "none";
} else {
item.style.display = display;
}
if (midItems.includes(name)) {
hideAllExcept(midItems, name);
} else if (timersItems.includes(name)) {
hideAllExcept(timersItems, name);
}
break;
default:
console.error("no toggle item except ids!");
break;
}
}
function toggleConf(type, name = "no") {
switch (type) {
case "auto":
// AUTO DETECT type, id etc.
alert("dont use auto for toggleConf");
break;
case "id-chx":
if (name != "no") {
let chx = document.getElementById("chx-" + name);
if (chx.checked) {
confs.set(name, 1);
} else {
confs.set(name, 0);
}
}
break;
default:
console.error("unvalid type");
break;
}
}
function toggleDevVersion() {
let chx = document.getElementById("chx-devVersion");
if (chx.checked) {
window.location.replace("dev.html" + window.location.search);
} else {
window.location.replace("index.html" + window.location.search);
}
}

Binary file not shown.

View file

@ -1,19 +0,0 @@
/* 2023 Aliberk Sandıı*/
@keyframes rain {
0% {
background-color: white;
}
25% {
background-color: red;
}
50% {
background-color: green;
}
100% {
background-color: yellow;
}
}

View file

@ -1,122 +0,0 @@
// CREDIT: https://www.joshwcomeau.com/animation/3d-button/
@mixin button-effect {
.pushable {
position: relative;
border: none;
background: transparent;
padding: 0;
cursor: pointer;
outline-offset: 4px;
transition: filter 250ms;
}
.shadow {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
// border-radius: 12px;
background: hsl(0deg 0% 0% / 0.25);
will-change: transform;
transform: translateY(2px);
transition:
transform 600ms cubic-bezier(.3, .7, .4, 1);
}
.edge {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
// border-radius: 12px;
background: linear-gradient(to left,
hsl(235, 84%, 26%) 0%,
hsl(235, 84%, 26%) 8%,
hsl(235, 84%, 26%) 92%,
hsl(235, 84%, 26%) 100%);
}
.front {
display: block;
position: relative;
padding: 12px 42px;
// border-radius: 12px;
// font-size: 1.25rem;
color: white;
background: hsl(188, 88%, 29%);
will-change: transform;
transform: translateY(-4px);
transition:
transform 600ms cubic-bezier(.3, .7, .4, 1);
}
.pushable:hover {
filter: brightness(110%);
}
.pushable:hover .front {
transform: translateY(-6px);
transition:
transform 250ms cubic-bezier(.3, .7, .4, 1.5);
}
.pushable:active .front {
transform: translateY(-2px);
transition: transform 34ms;
}
.pushable:hover .shadow {
transform: translateY(4px);
transition:
transform 250ms cubic-bezier(.3, .7, .4, 1.5);
}
.pushable:active .shadow {
transform: translateY(1px);
transition: transform 34ms;
}
.pushable:focus:not(:focus-visible) {
outline: none;
}
.pushable-f {
.front,
.edge,
.shadow {
border-top-left-radius: 13px;
border-bottom-left-radius: 13px;
}
.edge {
background: linear-gradient(to left,
hsl(235, 84%, 26%) 0%,
hsl(235, 84%, 26%) 8%,
hsl(235, 84%, 26%) 92%,
hsl(193, 100%, 30%) 100%);
}
}
.pushable-l {
.front,
.edge,
.shadow {
border-top-right-radius: 13px;
border-bottom-right-radius: 13px;
}
.edge {
background: linear-gradient(to left,
hsl(193, 100%, 30%) 0%,
hsl(235, 84%, 26%) 8%,
hsl(235, 84%, 26%) 92%,
hsl(235, 84%, 26%) 100%);
}
}
}

View file

@ -1,22 +0,0 @@
/* 2023 Aliberk Sandıı*/
#ders-programi {
display: none;
flex-direction: column;
padding: 0px 100px;
padding-top: 10px;
img {
max-width: 1309px;
max-height: 601px;
aspect-ratio: 1309/601;
}
}
.min,
.sec,
.msec {
display:flex;
width: 7vw;
justify-content: center;
}

View file

@ -1,253 +0,0 @@
/* 2023 Aliberk Sandıı*/
@use "button" as b;
@use "animation" as a;
* {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: default;
}
body,
html {
display: flex;
flex-direction: column;
margin: 0px;
height: 100%;
width: 100%;
background-color: black;
color: aliceblue;
font-family: "Montserrat", Arial, Helvetica, sans-serif;
}
section {
// SECTION TOP
&#top {
display: flex;
justify-content: space-around;
user-select: none;
width: 100%;
height: 100px;
.class {
display: flex;
flex-direction: column;
column-gap: 10px;
margin: 5px;
min-width: 20vw;
margin-right: auto;
font-weight: 800;
font-style: oblique;
}
.clock {
display: flex;
#time {
display: flex;
//UNNECESSARY LINES?
align-items: center;
align-self: center;
align-content: center;
justify-items: center;
justify-self: center;
justify-content: center;
font-size: 80px;
}
}
.toolbox {
min-width: 20vw;
margin-left: auto;
text-align: right;
display: block;
button {
height: 30px;
width: 30px;
line-height: 20px;
}
}
.settings-box {
min-width: min-content;
margin-left: 0;
text-align: right;
button {
height: 30px;
width: 30px;
line-height: 20px;
}
#settings {
display: none;
flex-direction: column;
align-items: end;
font-size: small;
margin-top: 5px;
form {
display: flex;
flex-direction: column;
position: absolute;
min-width: 10vw;
background-color: grey;
.cell {
float: left;
display: flex;
flex-direction: row;
margin-bottom: 1vh;
input[type="checkbox"] {
//UNNECESSARY LINES?
appearance: none;
background-color: #fff;
margin: 0;
width: 1.15em;
height: 1.15em;
border: 0.15em solid darkslateblue;
border-radius: 0.15em;
transform: translateY(-0.075em);
display: grid;
place-content: center;
outline: 0px solid white;
outline-offset: 0px;
&::before {
//UNNECESSARY LINES?
content: "";
width: 0.65em;
height: 0.65em;
transform: scale(0);
transition: 120ms transform ease-in-out;
box-shadow: inset 1em 1em green;
transform-origin: bottom left;
clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}
&:checked::before {
transform: scale(1);
}
&:focus {
outline: max(2px, 0.15em) solid white;
outline-offset: max(2px, 0.15em);
}
}
label {
padding-left: 5px;
display: block;
text-align: left;
align-self: center;
}
}
}
}
}
}
// SECTION MID
&#mid {
display: flex;
flex-direction: column;
text-align: center;
user-select: none;
#timers {
display: none;
flex-direction: column;
#timers-menu {
ul {
display: flex;
justify-content: center;
padding: 0;
li {
// padding: 1px;
list-style-type: none;
box-sizing: border-box;
@include b.button-effect;
.front {
font-size: medium;
font-weight: 500;
}
}
}
}
#stopwatch {
display: none;
flex-direction: column;
.timer {
font-size: 150px;
display: flex;
align-self: center;
.min,
.sec,
.msec {
width: 12vw;
}
}
}
#timer {
display: none;
flex-direction: column;
.timer {
font-size: xx-large;
}
}
}
#yemek-listesi {
display: none;
flex-direction: column;
}
#animations {
display: none;
flex-direction: column;
}
}
// SECTION BOTTOM
&#bottom {
margin-top: auto;
#rainbow {
width: 100%;
height: 20px;
animation: rain 4.72s ease infinite;
}
}
}
.kronometre {
text-align: center;
margin: auto;
font-size: 50px;
}

View file

@ -1,220 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="tr">
<head>
<!--!Copyright © 2023 Aliberk Sandıı -->
<!--!Copyright © 2023 iflpanel Developers -->
<meta charset="UTF-8">
<!-- Meta Content -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="iflpanel Akıllı Tahta Arkaplan Sayfası">
<meta name="keywords" content="iflpanel,akıllı tahta,arkaplan,tahta,board">
<meta name="author" content="Aliberk Sandıı">
<!-- CSS Files -->
<link rel="stylesheet" type="text/css" href="./assets/css/main.css">
<link rel="stylesheet" type="text/css" href="./assets/css/dev.css">
<title>DEV VERSION | iflpanel Tahta</title>
</head>
<body>
<!-- MAIN AREA -->
<section id="top">
<div class="class">
<span id="grade">Sınıf</span>
<span id="class">Şube</span>
<!-- DEV -->
<!-- DEV --> <span style="font-size: xx-small; line-height: 1px; color:red">(DEV VERSION)</span>
<!-- DEV -->
</div>
<div class="clock">
<h1 id="time">12.00</h1>
</div>
<div class="settings-box">
<form>
<button id="timers-button" type="button" onmouseover="toggleItemDisplay('id', 'timers')"
onclick="toggleItemDisplay('id', 'timers')">⏱</button>
<button id="yemekhane-button" type="button" onmouseover="toggleItemDisplay('id', 'yemek-listesi')"
onclick="toggleItemDisplay('id', 'yemek-listesi')">🍔</button>
<button id="ders-programi-buton" type="button" onmouseover="toggleItemDisplay('id', 'ders-programi')"
onclick="toggleItemDisplay('id', 'ders-programi')">📑</button>
<button id="animation-button" type="button" onmouseover="toggleItemDisplay('id', 'animations')"
onclick="toggleItemDisplay('id', 'animations')">🕹️</button>
<button id="settings-button" type="button" onmouseover="toggleItemDisplay('id', 'settings')"
onclick="toggleItemDisplay('id', 'settings')">⚙</button>
</form>
<div id="settings">
<form>
<div class="cell">
<input type="checkbox" id="chx-clockSecond" onchange="toggleConf('id-chx','clockSecond')" checked>
<label for="chx-clockSecond">Saniye</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-timerMsec" onchange="toggleConf('id-chx','timerMsec')" checked>
<label for="chx-timerMsec">Sayaçlarda Milisaniye</label>
</div>
<div class="cell">
<!-- onchange="toggleOther('devVersion')" -->
<input type="checkbox" id="chx-devVersion" onchange="toggleDevVersion()" checked>
<label for="chx-devVersion" style="font-size: x-small;">Geliştirici Sürümü, <br>local-settings move!</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-yksTimer" onchange="toggleConf('id-chx','yksTimer')">
<label for="chx-yksTimer">YKS Sayacı</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-fullscreenClock" onchange="toggleConf('id-chx','fullscreenClock')">
<label for="chx-fullscreenClock">Tam Ekran Saat</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-hideHeader" onchange="toggleConf('id-chx','hideHeader')">
<label for="chx-hideHeader">Üst Barı Gizle</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-oneventSecond" onchange="toggleConf('id-chx','oneventSecond')">
<label for="chx-oneventSecond" style="font-size: x-small;">Ders Sonu/Başı Saniye Göster, <br>saniye
checkboxını otomatik update et!</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-settingsMaker" onchange="toggleItemDisplay('id-chx','settingsMaker')">
<label for="chx-settingsMaker">Ayar Oluşturucuyu Göster</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-mouse" onchange="toggleConf('id-chx','mouse')">
<label for="chx-mouse">Mouse Integrasyonu</label>
</div>
</form>
</div>
</div>
</section>
<hr style="width: 30%; box-sizing: border-box;">
<!-- INTERACTIVE / FUNCTIONAL AREA -->
<section id="mid">
<div id="timers">
<div id="timers-menu">
<ul>
<li onmouseover="toggleItemDisplay('id', 'stopwatch')" onclick="toggleItemDisplay('id', 'stopwatch')">
<button id="stopwatch-button" class="pushable pushable-f">
<span class="shadow"></span>
<span class="edge"></span>
<span class="front">
Kronometre
</span>
</button>
</li>
<li id="timer-button" onmouseover="toggleItemDisplay('id', 'timer')"
onclick="toggleItemDisplay('id', 'timer')">
<button class="pushable pushable-l">
<span class="shadow"></span>
<span class="edge"></span>
<span class="front">
Zamanlayıcı
</span>
</button>
</li>
</ul>
</div>
<div id="stopwatch">
<div class="timer">
<div class="min">
00
</div>
.
<div class="sec">
00
</div>
<span id="stopwatch-msec-dot">.</span>
<div class="msec">
00
</div>
</div>
<form>
<input type="button" id="start-cro" name="start-cro" value="Başlat" onmouseover="Stopwatch('start')"
onclick="Stopwatch('start')" checked>
<input type="button" id="stop-cro" name="stop-cro" value="Durdur ve Sıfırla" onmouseover="Stopwatch('stop')"
onclick="Stopwatch('stop')" checked>
</form>
</div>
<div id="timer">
<div class="timer">
00.00.00
</div>
<p>yapım aşamasında: geriye doğru sayma özelliği</p>
</div>
</div>
<div id="yemek-listesi">
<iframe src="https://ifl.meb.k12.tr/meb_iys_dosyalar/35/06/164785/dosyalar/2023_09/26212122_EKIM_YemekListesi.pdf"
width="90%" height="800px" style="align-self:center;"></iframe>
yapım aşamasında: yemekhane listesi eklenecek
</div>
<div id="ders-programi">
<img src="image.png">
</div>
<div id="animations">
yapım aşamasında: animasyonlar / oyunlar eklenecek
</div>
</section>
<!-- NON-INTERACTIVE DECORATION AREA -->
<section id="bottom">
<hr>
<p id="debug-area"></p>
<form>
<button id="localtest" type="button" onmouseover="Localtest(0)" onclick="Localtest(0)">TEST</button>
<button id="yazdir" type="button" onmouseover="Localtest(1)" onclick="Localtest(1)">Yazdır</button>
<button id="popsound" type="button" onmouseover="Popsound()" onclick="Popsound()">POP SOUND</button>
</form>
<div id="DEV" style="font-size: x-small;"></div>
<div id="rainbow"></div>
</section>
<script>
function Localtest(a) {
if (a == 0) {
var nowdate = new Date;
localStorage.setItem("localtest", nowdate);
}
if (a == 1) {
if (localStorage.getItem("localtest") == null) {
document.getElementById("debug-area").innerHTML = "ÇALIŞMIYOR :(";
}
else {
document.getElementById("debug-area").innerHTML = localStorage.getItem("localtest");
}
}
}
function Popsound() {
var audio = new Audio('./assets/pop.mp3');
audio.play();
}
</script>
<script src="./assets/js/utils.js"></script>
<script src="./assets/js/updates.js"></script>
<script src="./assets/js/mid.js"></script>
<script src="./assets/js/initialize.js"></script>
<script src="./assets/js/timers.js"></script>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

View file

@ -1,223 +1,9 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="tr">
<head>
<!--!Copyright © 2023 Aliberk Sandıı -->
<!--!Copyright © 2023 iflpanel Developers -->
<meta charset="UTF-8" />
<!-- Meta Content -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="iflpanel Akıllı Tahta Arkaplan Sayfası" />
<meta name="keywords" content="iflpanel,akıllı tahta,arkaplan,tahta,board" />
<meta name="author" content="Aliberk Sandıı" />
<!-- CSS Files -->
<link rel="stylesheet" type="text/css" href="./assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="./assets/css/not_scss.css" />
<title>iflpanel Tahta</title>
</head>
<body>
<!-- MAIN AREA -->
<section id="top">
<div class="class">
<div>
<span class="grade">12</span> /
<span class="branch">C</span>
</div>
<div style="display:flex; align-content: center; align-items: center; margin-top: 10px;" class="extraItem">
<a href="https://asandikci.com/bagis/" target="_blank"><img src="assets/images/bagis-qr.png" width="50"></a>
<p style="align-self: center; font-style: normal; text-align: center; font-size: small;"> &nbsp; &#x1F448;
Geliştirme sürecine destek verin<br>&nbsp; &nbsp; &nbsp; (Sıradaki: <span
style="width: min-content; font-size: x-small;" id="sirada-yapilacaklar"></span>) </p>
</div>
<div id="header-note" style="display:none;">
Başarılar
</div>
</div>
<div class="clock">
<h1 id="time">12.00</h1>
</div>
<div class="toolbox" id="toolbox">
<form>
<button id="timers-button" type="button" onmouseover="toggleTimers()" onclick="toggleTimers()"></button>
</form>
</div>
<div class="settings-box">
<form>
<button id="settings-button" type="button" onmouseover="toggleSettings()" onclick="toggleSettings()"></button>
</form>
<div id="settings">
<form>
<div class="cell">
<input type="checkbox" id="chx-clockSecond" onchange="toggleClockSeconds()" />
<label for="chx-clockSecond">Saniye</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-timerMsec" onchange="toggleTimerMsec()" checked />
<label for="chx-timerMsec">Sayaçlarda Milisaniye</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-devVersion" onchange="toggleDevVersion()">
<label for="chx-devVersion">Geliştirici Sürümü</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-closeExtra" onchange="toggleExtra()">
<label for="chx-closeExtra">Ekstra Bildirimleri Kapatın</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-closeTools" onchange="toggleTools()">
<label for="chx-closeTools">Araç Çubuğunu Gizle</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-largenClock" onchange="toggleLargenClock()">
<label for="chx-largenClock">Saati Büyült</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-fullscreen" onchange="toggleFullscreen()">
<label for="chx-fullscreen">Tam Ekran</label>
</div>
<div class="cell">
<input type="checkbox" id="chx-examMode" onchange="toggleExamMode()">
<label for="chx-examMode"><b style="color:red;">Sınav Modu</b></label>
</div>
</form>
</div>
</div>
</section>
<hr style="width: 100%; box-sizing: border-box;" id="clock-divider">
<!-- INTERACTIVE / FUNCTIONAL AREA -->
<section id="mid">
<div id="timers">
<div id="timers-menu">
<ul>
<li onmouseover="toggleTimers('stopwatch')" onclick="toggleTimers('stopwatch')">
<button class="pushable pushable-f pushable-l">
<span class="shadow"></span>
<span class="edge"></span>
<span class="front">
Kronometre
</span>
</button>
</li>
<!-- <li onmouseover="toggleTimers('timer')" onclick="toggleTimers('timer')">
<button class="pushable pushable-l">
<span class="shadow"></span>
<span class="edge"></span>
<span class="front" style="padding: 1px 10px; background-color: red;">
Güvenli<br>Kronometre
</span>
</button>
</li> -->
</ul>
</div>
<div id="stopwatch">
<div class="timer">
<div class="min">
00
</div>
.
<div class="sec">
00
</div>
<span id="stopwatch-msec-dot">.</span>
<div class="msec">
00
</div>
</div>
<form>
<input class="timer-action-button" type="button" id="start-cro" name="start-cro" value="▶️ Başlat"
onmouseover="Stopwatch('start')" onclick="Stopwatch('start')" checked>
<input class="timer-action-button" type="button" id="stop-cro" name="stop-cro" value="⏸️ Durdur ve Sıfırla"
onmouseover="Stopwatch('stop')" onclick="Stopwatch('stop')" checked>
</form>
</div>
<div id="timer">
<div class="timer">
00.00.00
</div>
<p>Şu anda yapım aşamasında<br><b>sınav salonundaki akıllı tahta için 100% doğru kronometre</b></p>
</div>
</div>
<div id="yemek-listesi">
yapım aşamasında: yemekhane listesi eklenecek
</div>
<div id="animations">
yapım aşamasında: animasyonlar / oyunlar eklenecek
</div>
</section>
<!-- NON-INTERACTIVE DECORATION AREA -->
<section id="bottom">
<div id="rainbow"></div>
</section>
<script>
function b64DecodeUnicode(str) {
// Going backwards: from bytestream, to percent-encoding, to original string.
return decodeURIComponent(atob(str).split('').map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
}
var curAmount = 0
var goalAmount = 0;
let localtest = 0;
//
// PUBLIC DATA
//
let url2 = 'https://git.aliberksandikci.com.tr/api/v1/repos/asandikci.com/www/contents/public-data.json';
// let url2 = "http://127.0.0.1:PORT/public-data.json";
// localtest = 1;
fetch(url2)
.then(res => res.json())
.then(out => {
var publicjson;
if (localtest) {
publicjson = out[0]["public-todo"];
} else {
var cnt = out.content;
console.log("base64: " + cnt);
publicjson = JSON.parse(b64DecodeUnicode(cnt))[0]["public-todo"];
}
publicjson.sort(function (a, b) {
return Number(Object.keys(a)) > Number(Object.keys(b));
});
console.log(publicjson);
var curi = 0;
let i = 0;
for (i = 0; i < publicjson.length; i++) {
const element = Number(Object.keys(publicjson[i]));
if (curAmount < element) {
goalAmount = element;
curi = i;
break;
}
}
let aka = publicjson[i][goalAmount][0];
document.getElementById("sirada-yapilacaklar").innerHTML = aka.split("- ")[1];
})
.catch(err => {
throw err
});
</script>
<script src="./assets/js/old_main.js"></script>
<script src="./assets/js/old_stopwatch.js"></script>
</body>
</html>
<html>
<head>
<meta charset="utf8" />
</head>
<body>
<script>window.location.replace("https://tahta.iflpanel.com");</script>
</body>
</html>