Massive Update!

This commit is contained in:
Sophia Atkinson 2023-01-22 21:16:44 -08:00
parent 5ceb51541f
commit bab787cdf2
58 changed files with 10618 additions and 3462 deletions

View File

@ -2,24 +2,24 @@
## Based on Sleeky by Flynntes
### The Sleeky frontend isn't dark mode, so I made it dark mode.
### The Sleeky frontend isn't dark mode, so I made it dark mode
### I have also fixed some errors that some users have received
![Opera Snapshot_2022-04-19_173050_local satki net](https://user-images.githubusercontent.com/61561333/164122994-384b5b1f-d217-4aaf-9e7b-ef4c94139535.png)
### I have also fixed some errors that some users have received
![Demo Img](https://linustechtips.xyz/nirO5/fUYAhera56.png/raw)
## Quick Start
1. Get a YOURLS install up and running.
2. Clone this repo.
2. Move the contents of the `sleeky-frontend` directory to the root of your YOURLS installation.
3. Open the frontend/config.php file and change the values to suit (Remember to setup reCAPTCHA).
2. Move all contents of the zip to the root of your YOURLS installation.
3. Overwrite all contents or it might break.
4. Open the frontend/config.php file and change the values to suit (Remember to setup reCAPTCHA).
*Sleeky frontend is now installed a ready*
4. Move the `sleeky-backend` folder to the `user/plugins/` folder of your YOURLS installation.
5. Activate the plugin in the YOURLS admin area (`sho.rt/admin/plugins.php`). The plugin will show as Sleeky Backend.
5. Activate the plugin in the YOURLS admin area (`sho.rt/admin/plugins.php`). The plugin will show as DarkSleeky Backend.
6. Done. Sleeky is now installed
## Help
Need a hand? I would love to help you out! Message Me on discord (SophiaXD#3076). Alternatively, you could open an issue on GitHub.
Need a hand? I would love to help you out! Message Me on discord (SophiaXD#3076). Alternatively, you could open an issue on git.oldgate.org.
I will have long term support for this theme.

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 341 B

View File

@ -13,10 +13,16 @@ define('shortTitle', 'DarkSleeky');
define('description', 'A quick description on why your site is so fantastic, what it does and why people should definitely start using it. Oh, and how its free.');
// The favicon for your site
define('favicon', '/frontend/assets/img/favicon.ico');
define('favicon', '/frontend/assets/img/favicon-16.webp');
// Logo for your site, displayed on home page
define('logo', '/frontend/assets/img/logo-black.png');
// Keywords for site
define('keywords', 'Test, 123, Example');
// OG Image for site
define('ogimg', 'YOUR_OGIMG_COVER');
// Wordmark for homepage
define('wordmark', 'WORDMARK_FOR_HOMEPAGE');
// Enable reCAPTCHA V3
// It is highly recommended you use reCAPTCHA V3. It will stop spam. You can get a site and secret key from here: https://www.google.com/recaptcha/admin/create
@ -36,8 +42,8 @@ define('enableCustomURL', true);
// Set a primary colour to be used. Default: #007bff
// Here are some other colours you could try:
// #f44336: red, #9c27b0: purple, #00bcd4: teal, #ff5722: orange
define('colour', '#7289DA');
// Firewatch BG define('backgroundImage', 'https://sop.wtf/frontend/bgs/hyju.webp');
define('color', '#7289DA');
// Optional
// Set a background image to be used.
// default: unsplash.com random daily photo of the day

File diff suppressed because it is too large Load Diff

View File

@ -5,14 +5,18 @@
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-patible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="<?php echo description ?>">
<link rel="icon" href="<?php echo favicon ?>">
<meta name="keywords" content="<?php echo keywords ?>">
<meta property="og:url" content="<?php $YOURLS_SITE ?>">
<meta property="og:type" content="website">
<meta property="og:title" content="<?php echo title?>">
<meta property="og:description" content="<?php echo description ?>">
<meta property="og:image" content="<?php echo ogimg ?>">
<title><?php echo title ?></title>
<link rel="stylesheet" href="<?php echo $YOURLS_SITE ?>/frontend/dist/styles.css">
<link rel="stylesheet" href="<?php $YOURLS_SITE ?>/frontend/dist/styles.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css" integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY=" crossorigin="anonymous">
<?php if (defined('backgroundImage')) : ?>
<style>
@ -24,22 +28,8 @@
<?php else : ?>
<style>
body {
background-color: <?php echo colour ?>;
background-color: <?php echo color ?>;
}
</style>
<?php endif; ?>
<style>
.btn-primary {
background-color: <?php echo colour ?>;
border-color: <?php echo colour ?>;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
background-color: <?php echo adjustBrightness(colour, -15) ?>;
border-color: <?php echo adjustBrightness(colour, -15) ?>;
}
</style>
</head>

148
frontend/index.php Normal file
View File

@ -0,0 +1,148 @@
<?php include 'frontend/header.php'; ?>
<body>
<?php
// Start YOURLS engine
require_once( dirname(__FILE__).'/includes/load-yourls.php' );
// URL of the public interface
$page = YOURLS_SITE . '/index.php' ;
// Make variables visible to function & UI
$shorturl = $message = $title = $status = '';
// Part to be executed if FORM has been submitted
if ( isset( $_REQUEST['url'] ) && $_REQUEST['url'] != 'http://' ) {
if (enableRecaptcha) {
// Use reCAPTCHA
$token = $_POST['token'];
$action = $_POST['action'];
// call curl to POST request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('secret' => recaptchaV3SecretKey, 'response' => $token)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$arrResponse = json_decode($response, true);
// verify the response
if($arrResponse["success"] == '1' && $arrResponse["action"] == $action && $arrResponse["score"] >= 0.5) {
// reCAPTCHA succeeded
shorten();
} else {
// reCAPTCHA failed
$message = "reCAPTCHA failed";
}
} else {
// Don't use reCAPTCHA
shorten();
}
}
function shorten() {
// Get parameters -- they will all be sanitized in yourls_add_new_link()
$url = $_REQUEST['url'];
$keyword = isset( $_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : '' ;
$title = isset( $_REQUEST['title'] ) ? $_REQUEST['title'] : '' ;
$text = isset( $_REQUEST['text'] ) ? $_REQUEST['text'] : '' ;
// Create short URL, receive array $return with various information
$return = yourls_add_new_link( $url, $keyword, $title );
// Make visible to UI
global $shorturl, $message, $status, $title;
$shorturl = isset( $return['shorturl'] ) ? $return['shorturl'] : '';
$message = isset( $return['message'] ) ? $return['message'] : '';
$title = isset( $return['title'] ) ? $return['title'] : '';
$status = isset( $return['status'] ) ? $return['status'] : '';
// Stop here if bookmarklet with a JSON callback function ("instant" bookmarklets)
if( isset( $_GET['jsonp'] ) && $_GET['jsonp'] == 'yourls' ) {
$short = $return['shorturl'] ? $return['shorturl'] : '';
$message = "Short URL (Ctrl+C to copy)";
header('Content-type: application/json');
echo yourls_apply_filter( 'bookmarklet_jsonp', "yourls_callback({'short_url':'$short','message':'$message'});" );
die();
}
}
?>
<div class="container-fluid h-100">
<div class="row justify-content-center align-items-center h-100">
<div class="col-12 col-lg-10 col-xl-8 col-xxl-5 mt-5">
<div class="card border-0 mt-5">
<?php if( isset($status) && $status == 'success' ): ?>
<?php $url = preg_replace("(^https?://)", "", $shorturl ); ?>
<div class="close-container text-end mt-3 me-3">
<button type="button" class="btn-close" id="close-shortened-screen" aria-label="Close"></button>
</div>
<div class="card-body px-5 pb-5">
<h2 class="text-uppercase text-center">Your shortened link</h2>
<div class="row justify-content-center">
<div class="col-10">
<div class="input-group input-group-block mt-4 mb-3">
<input type="text" autocomplete="off" class="form-control text-uppercase" value="<?php echo $shorturl; ?>" required>
<button class="btn btn-primary text-uppercase py-2 px-5 mt-2 mt-md-0" type="submit" id="copy-button" data-shorturl="<?php echo $shorturl; ?>">Copy</button>
</div>
<span class="info">QR Code &amp; See Link Preview <a href="<?php echo $shorturl; ?>~"><?php echo $url; ?>~</a></span>
</div>
</div>
</div>
<?php else: ?>
<div class="text-center">
</div>
<div class="card-body px-md-5">
<img class="wordmark" src="<?php echo wordmark ?>" alt="Wordmark">
<?php if ( isset( $_REQUEST['url'] ) && $_REQUEST['url'] != 'http://' ): ?>
<?php if (strpos($message,'added') === false): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<span>Oh no, <?php echo $message; ?>!</span>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>
<?php endif; ?>
<form id="shortenlink" method="post" action="">
<div class="input-group input-group-block mt-4 mb-3">
<input type="url" autocomplete="off" name="url" id="url" class="form-control text-uppercase" placeholder="PASTE URL, SHORTEN &amp; SHARE" aria-label="PASTE URL, SHORTEN &amp; SHARE" aria-describedby="shorten-button" required>
<input class="btn btn-primary text-uppercase py-2 px-4 mt-2 mt-md-0" type="submit" id="shorten-button" value="Shorten" />
</div>
<?php if (enableCustomURL): ?>
<a class="btn btn-sm btn-white text-white-50 text-uppercase" data-bs-toggle="collapse" href="#customise-link" role="button" aria-expanded="false" aria-controls="customise-link">
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSIjZmZmIj48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48cGF0aCBkPSJNMjIuNyAxOWwtOS4xLTkuMWMuOS0yLjMuNC01LTEuNS02LjktMi0yLTUtMi40LTcuNC0xLjNMOSA2IDYgOSAxLjYgNC43Qy40IDcuMS45IDEwLjEgMi45IDEyLjFjMS45IDEuOSA0LjYgMi40IDYuOSAxLjVsOS4xIDkuMWMuNC40IDEgLjQgMS40IDBsMi4zLTIuM2MuNS0uNC41LTEuMS4xLTEuNHoiLz48L3N2Zz4=" alt="Options"> Customise Link
</a>
<div class="collapse" id="customise-link">
<div class="mt-2 card card-body">
<div class="d-flex align-items-center">
<span class="me-2"><?php echo preg_replace("(^https?://)", "", YOURLS_SITE ); ?>/</span>
<input type="text" name="keyword" class="form-control form-control-sm text-uppercase" placeholder="CUSTOM URL" autocomplete="off" aria-label="CUSTOM URL">
</div>
</div>
</div>
<?php endif; ?>
</form>
</div>
<?php endif; ?>
</div>
<div class="d-flex flex-column flex-md-row align-items-center my-3">
<span class="text-white fw-light"><i class="fa fa-cc-cc" aria-hidden="true"></i><?php echo date("Y"); ?> <?php echo shortTitle ?></span>
<div class="ms-3">
<?php foreach ($footerLinks as $key => $val): ?>
<a class="bold-link me-3 text-white text-decoration-none" href="<?php echo $val ?>"><span><?php echo $key ?></span></a>
<?php endforeach ?>
</div>
</div>
</div>
</div>
</div>
<?php include 'frontend/footer.php'; ?>
</body>
</html>

18
frontend/package-lock.json generated Normal file
View File

@ -0,0 +1,18 @@
{
"name": "sleeky-frontend",
"version": "2.5.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"bootstrap": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ=="
},
"popper.js": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
"integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
}
}
}

62
images/accept.svg Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="accept.svg"
id="svg6"
version="1.1"
width="24"
viewBox="0 0 24 24"
height="24"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
inkscape:document-rotation="0"
inkscape:current-layer="svg6"
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:cy="12"
inkscape:cx="-5.8474577"
inkscape:zoom="9.8333333"
showgrid="false"
id="namedview8"
inkscape:window-height="1017"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
id="path2"
fill="none"
d="M 0,0 H 24 V 24 H 0 Z" />
<path
style="fill:#7289da;fill-opacity:1"
id="path4"
d="M 9,16.2 4.8,12 3.4,13.4 9,19 21,7 19.6,5.6 Z" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

62
images/bg.svg Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="bg.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview8"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-5.8474577"
inkscape:cy="12"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path2" />
<path
d="M 12,5.83 15.17,9 16.58,7.59 12,3 7.41,7.59 8.83,9 Z M 12,18.17 8.83,15 7.42,16.41 12,21 16.59,16.41 15.17,15 Z"
id="path4"
style="fill:#7289da;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

62
images/cancel.svg Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="cancel.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview8"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-5.8474577"
inkscape:cy="12"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M 12,2 C 6.47,2 2,6.47 2,12 2,17.53 6.47,22 12,22 17.53,22 22,17.53 22,12 22,6.47 17.53,2 12,2 Z M 17,15.59 15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 Z"
id="path2"
style="fill:#7289da;fill-opacity:1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

62
images/chart_bar.svg Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="chart_bar.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview8"
showgrid="false"
inkscape:zoom="19.666667"
inkscape:cx="-7.1967591"
inkscape:cy="8.9930972"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M 5,9.2 H 8 V 19 H 5 Z M 10.6,5 h 2.8 v 14 h -2.8 z m 5.6,8 H 19 v 6 h -2.8 z"
id="path2"
style="fill:#7289da;fill-opacity:1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

78
images/chart_bar_add.svg Normal file
View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="chart_bar_add.svg"
id="svg6"
version="1.1"
width="24"
viewBox="0 0 24 24"
height="24"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
inkscape:document-rotation="0"
inkscape:current-layer="svg6"
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:cy="23.569387"
inkscape:cx="2.2441598"
inkscape:zoom="16"
showgrid="false"
id="namedview8"
inkscape:window-height="1017"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
style="fill:#7289da;fill-opacity:1"
id="path2"
d="M 5,9.2 H 8 V 19 H 5 Z M 10.6,5 h 2.8 v 14 h -2.8 z m 5.6,8 H 19 v 6 h -2.8 z" />
<path
id="path4"
fill="none"
d="M 0,0 H 24 V 24 H 0 Z" />
<circle
r="2.6246843"
cy="18.085155"
cx="14.813288"
id="path831"
style="fill:#4e5d94;fill-opacity:1;stroke-width:3.77953;stroke-linecap:square;paint-order:markers fill stroke" />
<g
transform="translate(0.01867423,-0.02564251)"
style="font-style:normal;font-weight:normal;font-size:7.56178px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.756178"
id="text835"
aria-label="+">
<path
id="path837"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.56178px;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.756178"
d="m 17.268438,18.605563 h -1.967983 v 1.949521 h -1.011683 v -1.949521 h -1.967983 v -0.98953 h 1.967983 v -1.949521 h 1.011683 v 1.949521 h 1.967983 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

82
images/copy.svg Normal file
View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="copy.svg"
id="svg6"
version="1.1"
width="35"
viewBox="0 0 35 16"
height="16"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
inkscape:document-rotation="0"
inkscape:current-layer="svg6"
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:cy="-24.96283"
inkscape:cx="-46.183128"
inkscape:zoom="4"
showgrid="false"
id="namedview8"
inkscape:window-height="1017"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff"
showguides="true"
inkscape:guide-bbox="true"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
style="fill:#7289da;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 0,8.3515411 14.084746,0.35154108 H 35 V 16.351541 H 14.084746 Z"
id="path849" />
<g
aria-label="COPY"
transform="matrix(0.65687347,0,0,1.5223632,0,0.35154108)"
id="text853"
style="font-style:normal;font-weight:normal;font-size:14.4876px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.482922">
<path
d="m 15.358873,10.726745 q -1.174288,0 -2.171726,-0.346628 Q 12.196784,10.03349 11.482308,9.3473099 10.767831,8.6611297 10.371686,7.6353962 9.9826146,6.6096628 9.9826146,5.2655983 q 0,-1.2521021 0.3749234,-2.2707615 0.374923,-1.0186594 1.089399,-1.7472839 0.686181,-0.70032831 1.697766,-1.08232558 1.01866,-0.38199728 2.221244,-0.38199728 0.664958,0 1.19551,0.0778143 0.537625,0.07074024 0.990363,0.19099864 0.473959,0.13440645 0.855957,0.30418301 0.389071,0.16270255 0.679106,0.30418302 V 3.2141315 H 18.775626 Q 18.577553,3.0443549 18.27337,2.8109121 17.976261,2.5774694 17.594264,2.3511006 17.205193,2.1247319 16.752455,1.9691033 16.299718,1.8134748 15.783314,1.8134748 q -0.572996,0 -1.0894,0.1839246 -0.516403,0.1768506 -0.954993,0.594218 -0.417367,0.4032194 -0.679106,1.0681776 -0.254665,0.6649582 -0.254665,1.6128774 0,0.9903633 0.275887,1.6553215 0.282961,0.6649582 0.707402,1.0469555 0.431516,0.3890713 0.962068,0.5588478 0.530551,0.1627026 1.046955,0.1627026 0.495182,0 0.976215,-0.1485545 0.488108,-0.1485545 0.898401,-0.4032194 0.346627,-0.2051467 0.643736,-0.4385894 0.297109,-0.2334428 0.488108,-0.4032194 h 0.282961 v 2.5183524 q -0.396145,0.1768506 -0.756921,0.3324795 -0.360775,0.155628 -0.75692,0.268813 -0.516404,0.148554 -0.969141,0.226368 -0.452738,0.07781 -1.245028,0.07781 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.4876px;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.482922"
id="path855" />
<path
d="m 31.339092,5.2585243 q 0,2.5183524 -1.443101,4.0038974 -1.4431,1.4784713 -3.989749,1.4784713 -2.539574,0 -3.982675,-1.4784713 -1.443101,-1.485545 -1.443101,-4.0038974 0,-2.5395745 1.443101,-4.0109714 1.443101,-1.47847091 3.982675,-1.47847091 2.532501,0 3.982675,1.47847091 1.450175,1.4713969 1.450175,4.0109714 z m -3.600678,2.6669069 q 0.396146,-0.4810336 0.587144,-1.1318438 0.190999,-0.6578842 0.190999,-1.5421371 0,-0.9479192 -0.219295,-1.6128774 -0.219295,-0.6649582 -0.572996,-1.0752516 -0.360775,-0.4244414 -0.834735,-0.61544 -0.466885,-0.1909987 -0.976215,-0.1909987 -0.516404,0 -0.976215,0.1839246 -0.452738,0.1839247 -0.834735,0.6083661 -0.353701,0.3961453 -0.58007,1.0964736 -0.219295,0.6932543 -0.219295,1.6128774 0,0.9408451 0.212221,1.6058034 0.219295,0.6578842 0.572996,1.0752515 0.353701,0.4173674 0.827661,0.6154401 0.473959,0.1980727 0.997437,0.1980727 0.523478,0 0.997437,-0.1980727 0.47396,-0.2051467 0.827661,-0.6295881 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.4876px;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.482922"
id="path857" />
<path
d="m 42.098682,3.3131678 q 0,0.7074024 -0.247591,1.3865086 Q 41.6035,5.3717087 41.143689,5.8315202 40.5141,6.4540343 39.735958,6.7723654 38.964889,7.0906964 37.811823,7.0906964 H 36.121132 V 10.521598 H 33.404707 V -0.01162327 h 4.470783 q 1.004511,0 1.690691,0.17685059 0.693255,0.16977656 1.223806,0.51640372 0.636662,0.41736736 0.969142,1.06817756 0.339553,0.6508102 0.339553,1.5633592 z m -2.808388,0.063666 q 0,-0.4456635 -0.240516,-0.7639945 Q 38.809261,2.2874344 38.49093,2.160102 38.066488,1.9903254 37.663269,1.9761774 37.26005,1.9549553 36.588017,1.9549553 h -0.466885 v 3.1550145 h 0.778142 q 0.693255,0 1.138918,-0.084888 0.452738,-0.084888 0.756921,-0.3395531 0.261739,-0.2263688 0.374923,-0.5376258 0.120258,-0.3183311 0.120258,-0.7710691 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.4876px;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.482922"
id="path859" />
<path
d="M 53.282712,-0.01162327 49.399073,6.4469603 V 10.521598 H 46.682648 V 6.5742927 l -3.947305,-6.58591597 h 3.084274 l 2.277836,4.07463757 2.200021,-4.07463757 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.4876px;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';fill:#ffffff;fill-opacity:1;stroke-width:0.482922"
id="path861" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

58
images/delete.svg Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="delete.svg"
id="svg6"
version="1.1"
width="16"
viewBox="0 0 16 16"
height="16"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
inkscape:document-rotation="0"
inkscape:current-layer="svg6"
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:cy="14.778455"
inkscape:cx="6.5688882"
inkscape:zoom="19.666667"
showgrid="false"
id="namedview8"
inkscape:window-height="1017"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
style="fill:#7289da;fill-opacity:1;stroke-width:0.888889"
id="path2"
d="M 2.6666669,14.222222 C 2.6666669,15.2 3.4666669,16 4.4444447,16 h 7.1111113 c 0.977778,0 1.777778,-0.8 1.777778,-1.777778 V 3.5555556 H 2.6666669 Z M 14.222222,0.8888889 H 11.111111 L 10.222222,0 H 5.777778 L 4.8888891,0.8888889 H 1.777778 v 1.7777778 h 12.444444 z" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

62
images/desc.svg Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="desc.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview8"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-5.8474577"
inkscape:cy="12"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M 7.41,8.59 12,13.17 16.59,8.59 18,10 12,16 6,10 Z"
id="path2"
style="fill:#7289da;fill-opacity:1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

62
images/error.svg Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="error.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview8"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-5.8474577"
inkscape:cy="12"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path2" />
<path
d="M 1,21 H 23 L 12,2 Z m 12,-3 h -2 v -2 h 2 z m 0,-4 h -2 v -4 h 2 z"
id="path4"
style="fill:#7289da;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

120
images/facebook.svg Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Capa_1"
x="0px"
y="0px"
viewBox="0 0 131072 262144"
xml:space="preserve"
sodipodi:docname="facebook.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
width="131072"
height="262144"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata43"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs41" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview39"
showgrid="false"
inkscape:zoom="0.4609375"
inkscape:cx="-124.74576"
inkscape:cy="256"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<g
id="g6"
style="fill:#7289da;fill-opacity:1"
transform="translate(-65536)">
<g
id="g4"
style="fill:#7289da;fill-opacity:1">
<path
d="m 288,176 v -64 c 0,-17.664 14.336,-32 32,-32 h 32 V 0 h -64 c -53.024,0 -96,42.976 -96,96 v 80 h -64 v 80 h 64 v 256 h 96 V 256 h 64 l 32,-80 z"
id="path2"
style="fill:#7289da;fill-opacity:1" />
</g>
</g>
<g
id="g8"
transform="translate(-65536)">
</g>
<g
id="g10"
transform="translate(-65536)">
</g>
<g
id="g12"
transform="translate(-65536)">
</g>
<g
id="g14"
transform="translate(-65536)">
</g>
<g
id="g16"
transform="translate(-65536)">
</g>
<g
id="g18"
transform="translate(-65536)">
</g>
<g
id="g20"
transform="translate(-65536)">
</g>
<g
id="g22"
transform="translate(-65536)">
</g>
<g
id="g24"
transform="translate(-65536)">
</g>
<g
id="g26"
transform="translate(-65536)">
</g>
<g
id="g28"
transform="translate(-65536)">
</g>
<g
id="g30"
transform="translate(-65536)">
</g>
<g
id="g32"
transform="translate(-65536)">
</g>
<g
id="g34"
transform="translate(-65536)">
</g>
<g
id="g36"
transform="translate(-65536)">
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

29
images/favicon.svg Normal file
View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="16"
height="16"
viewBox="0 0 16 16"
version="1.1"
id="svg1043"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata1047"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs943" /><g
data-v-423bf9ae=""
id="62c7ef45-a183-45fe-ae54-0717e1cc9b4a"
transform="matrix(0.17360918,0,0,0.18888344,-0.6805458,-1.4440776)"
stroke="none"
fill="#000000"
style="fill:#ffffff"><path
d="M 76.31,35.389 H 47.45 c -9.202,0 -16.853,6.692 -18.39,15.46 h 10.653 c 1.267,-3.025 4.257,-5.156 7.737,-5.156 h 28.86 c 4.625,0 8.389,3.76 8.389,8.385 v 7.838 c 0,4.625 -3.764,8.387 -8.389,8.387 H 47.45 c -0.062,0 -0.12,-0.017 -0.182,-0.018 H 30.764 c 3.077,6.111 9.392,10.322 16.687,10.322 h 28.86 c 10.306,0 18.69,-8.385 18.69,-18.691 V 54.078 C 95,43.774 86.616,35.389 76.31,35.389 Z"
id="path450"
style="fill:#ffffff" /><path
d="m 29.527,64.611 10e-4,0.004 H 40.97 L 40.966,64.611 H 52.55 c 9.234,0 16.904,-6.739 18.404,-15.553 H 60.315 c -1.246,3.072 -4.252,5.249 -7.766,5.249 h -9.538 v 0.004 H 23.831 V 54.307 H 23.69 a 8.304,8.304 0 0 1 -1.917,-0.242 c -3.7,-0.872 -6.471,-4.183 -6.471,-8.146 v -7.838 c 0,-4.625 3.764,-8.385 8.389,-8.385 h 28.86 c 0.059,0 0.114,0.016 0.173,0.017 H 69.238 C 66.161,23.603 59.846,19.392 52.551,19.392 H 23.69 C 13.384,19.394 5,27.779 5,38.082 v 7.838 c 0,9.778 7.55,17.812 17.124,18.612 0.518,0.043 1.037,0.079 1.566,0.079 z"
id="path452"
style="fill:#ffffff" /></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

70
images/filter.svg Normal file
View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
enable-background="new 0 0 24 24"
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg10"
sodipodi:docname="filter.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata16">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs14" />
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview12"
showgrid="false"
inkscape:zoom="17.708333"
inkscape:cx="12.140926"
inkscape:cy="10.60272"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g8"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<g
id="g8">
<path
d="m 0,0 h 24 m 0,24 H 0"
fill="none"
id="path2" />
<path
d="M 0.255,1.61 C 2.275,4.2 6.005,9 6.005,9 v 6 c 0,0.55 0.45,1 1,1 h 2 c 0.55,0 1,-0.45 1,-1 V 9 c 0,0 3.72,-4.8 5.74,-7.39 C 16.255,0.95 15.785,0 14.955,0 H 1.045 c -0.83,0 -1.3,0.95 -0.79,1.61 z"
id="path4"
style="fill:#7289da;fill-opacity:1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path6" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

3
images/index.php Normal file
View File

@ -0,0 +1,3 @@
<?php
header("HTTP/1.0 403 Not Found");
?>

62
images/pencil.svg Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="pencil.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview8"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-5.8474577"
inkscape:cy="12"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M 3,17.25 V 21 H 6.75 L 17.81,9.94 14.06,6.19 Z M 20.71,7.04 c 0.39,-0.39 0.39,-1.02 0,-1.41 L 18.37,3.29 C 17.98,2.9 17.35,2.9 16.96,3.29 l -1.83,1.83 3.75,3.75 z"
id="path2"
style="fill:#7289da;fill-opacity:1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path4" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

65
images/share.svg Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="24"
viewBox="0 0 24 24"
width="24"
version="1.1"
id="svg6"
sodipodi:docname="share.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
inkscape:export-filename="share.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview8"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-5.8474577"
inkscape:cy="12"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<path
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path2" />
<path
d="m 18,16.08 c -0.76,0 -1.44,0.3 -1.96,0.77 L 8.91,12.7 C 8.96,12.47 9,12.24 9,12 9,11.76 8.96,11.53 8.91,11.3 L 15.96,7.19 C 16.5,7.69 17.21,8 18,8 19.66,8 21,6.66 21,5 21,3.34 19.66,2 18,2 c -1.66,0 -3,1.34 -3,3 0,0.24 0.04,0.47 0.09,0.7 L 8.04,9.81 C 7.5,9.31 6.79,9 6,9 4.34,9 3,10.34 3,12 c 0,1.66 1.34,3 3,3 0.79,0 1.5,-0.31 2.04,-0.81 l 7.12,4.16 c -0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92 0,-1.61 -1.31,-2.92 -2.92,-2.92 z"
id="path4"
style="fill:#7289da;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

80
images/twitter.svg Normal file
View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Capa_1"
x="0px"
y="0px"
viewBox="0 0 262144 262144"
xml:space="preserve"
sodipodi:docname="twitter.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
width="262144"
height="262144"
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"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata43"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs41" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview39"
showgrid="false"
inkscape:zoom="0.4609375"
inkscape:cx="-124.74576"
inkscape:cy="256"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1"
inkscape:document-rotation="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1" />
<g
id="g6"
style="fill:#7289da;fill-opacity:1">
<g
id="g4"
style="fill:#7289da;fill-opacity:1">
<path
d="m 512,97.248 c -19.04,8.352 -39.328,13.888 -60.48,16.576 21.76,-12.992 38.368,-33.408 46.176,-58.016 -20.288,12.096 -42.688,20.64 -66.56,25.408 C 411.872,60.704 384.416,48 354.464,48 296.352,48 249.568,95.168 249.568,152.992 c 0,8.32 0.704,16.32 2.432,23.936 C 164.736,172.672 87.52,130.848 35.648,67.136 26.592,82.848 21.28,100.832 21.28,120.192 c 0,36.352 18.72,68.576 46.624,87.232 -16.864,-0.32 -33.408,-5.216 -47.424,-12.928 0,0.32 0,0.736 0,1.152 0,51.008 36.384,93.376 84.096,103.136 -8.544,2.336 -17.856,3.456 -27.52,3.456 -6.72,0 -13.504,-0.384 -19.872,-1.792 13.6,41.568 52.192,72.128 98.08,73.12 -35.712,27.936 -81.056,44.768 -130.144,44.768 -8.608,0 -16.864,-0.384 -25.12,-1.44 C 46.496,446.88 101.6,464 161.024,464 c 193.152,0 298.752,-160 298.752,-298.688 0,-4.64 -0.16,-9.12 -0.384,-13.568 C 480.224,136.96 497.728,118.496 512,97.248 Z"
id="path2"
style="fill:#7289da;fill-opacity:1" />
</g>
</g>
<g
style="fill:#ff0000;fill-opacity:1"
id="g1956"
transform="matrix(0.86810312,0,0,0.86815918,51.999458,48.388091)"><path
d="M 285.08,230.397 456.218,59.27 c 6.076,-6.077 6.076,-15.911 0,-21.986 L 423.511,4.565 c -2.913,-2.911 -6.866,-4.55 -10.992,-4.55 -4.127,0 -8.08,1.639 -10.993,4.55 L 230.388,175.705 59.25,4.565 c -2.913,-2.911 -6.866,-4.55 -10.993,-4.55 -4.126,0 -8.08,1.639 -10.992,4.55 L 4.558,37.284 c -6.077,6.075 -6.077,15.909 0,21.986 L 175.696,230.398 4.575,401.505 c -6.074,6.077 -6.074,15.911 0,21.986 l 32.709,32.719 c 2.911,2.911 6.865,4.55 10.992,4.55 4.127,0 8.08,-1.639 10.994,-4.55 L 230.387,285.09 401.505,456.21 c 2.913,2.911 6.866,4.55 10.993,4.55 4.128,0 8.081,-1.639 10.992,-4.55 l 32.709,-32.719 c 6.074,-6.075 6.074,-15.909 0,-21.986 z"
id="path1948"
style="fill:#ff0000;fill-opacity:1" /></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

274
images/yourls-logo.svg Normal file
View File

@ -0,0 +1,274 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="512"
height="210"
viewBox="0 0 512 210"
version="1.1"
id="svg104"
sodipodi:docname="yourls-logo.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview106"
pagecolor="#ffffff"
bordercolor="#111111"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="1.6724733"
inkscape:cx="228.40425"
inkscape:cy="204.48757"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="1072"
inkscape:window-maximized="1"
inkscape:current-layer="g100" />
<defs
id="defs4">
<path
d="M24.896 15.55h23.08c1.601 0 2.9-1.3 2.9-2.905a2.903 2.903 0 00-2.9-2.906h-23.08c-1.602 0-2.9 1.3-2.9 2.906a2.903 2.903 0 002.9 2.905z"
id="a" />
<path
id="b"
d="M35.515 15.726H3v14.026h32.515v15.726L59.954 22.74 35.514 0z" />
</defs>
<g
fill="none"
fill-rule="evenodd"
id="g102">
<path
d="M121.616 119.57a64.31 64.31 0 01-7.095 8.91 49.85 49.85 0 01-15.462 25.467 49.586 49.586 0 01-32.864 12.399 49.639 49.639 0 01-32.886-12.412 49.755 49.755 0 01-15.46-25.481 64.31 64.31 0 01-7.07-8.883C3.63 108.748-.034 96.074.054 82.762L.16 65.697c.099-27.418 22.356-49.599 49.78-49.599 5.576 0 11.063.929 16.258 2.723a49.777 49.777 0 0116.257-2.723c27.425 0 49.682 22.18 49.781 49.599l.106 17.065c.087 13.312-3.576 25.986-10.726 36.808zm28.233 28.606c-36.428 0-65.959-29.531-65.959-65.96 0-36.428 29.53-65.959 65.96-65.959 36.427 0 65.958 29.531 65.958 65.96 0 36.428-29.53 65.959-65.959 65.959zm99.855-131.919c27.406 0 49.622 22.217 49.622 49.622v16.31c0 36.433-29.608 65.933-66.092 65.933-36.483 0-66.092-29.5-66.092-65.932V65.88c0-27.406 22.217-49.623 49.622-49.623 5.654 0 11.215.958 16.47 2.807a49.615 49.615 0 0116.47-2.807zm49.463 131.812c-27.408 0-49.622-22.218-49.622-49.633l.004-16.642c.678-36.01 29.399-64.848 65.143-65.525a66.91 66.91 0 011.266-.012h11.845c27.406 0 49.622 22.217 49.622 49.622a49.47 49.47 0 01-11.534 31.809 49.701 49.701 0 01-18.875 13.953c-5.793 21.075-25.098 36.428-47.85 36.428zM377.957 0c27.405 0 49.622 22.217 49.622 49.622V98.47c0 27.426-22.207 49.652-49.622 49.652-27.406 0-49.623-22.216-49.623-49.622V49.622C328.334 22.217 350.551 0 377.957 0zm73.158 148.282h-21.73c-27.494 0-49.781-22.29-49.781-49.785 0-3.753.42-7.475 1.248-11.103a49.864 49.864 0 01-.825-17.584c3.618-30.603 29.596-53.712 60.462-53.712h21.73c27.494 0 49.78 22.29 49.78 49.785 0 3.753-.42 7.475-1.248 11.102a49.864 49.864 0 01.826 17.585c-3.619 30.603-29.597 53.712-60.462 53.712z"
fill="#4393BB"
fill-rule="nonzero"
id="path6"
style="fill:#7289da;fill-opacity:1" />
<path
d="M118.104 82.853c.07 10.485-2.772 20.399-8.367 28.868a50.206 50.206 0 01-8.334 9.667c-2.393 17.373-17.218 30.718-35.207 30.72-17.998-.002-32.87-13.38-35.218-30.733a50.205 50.205 0 01-8.319-9.654c-5.596-8.469-8.436-18.383-8.367-28.868l.106-17.088c.062-19.58 15.955-35.429 35.543-35.429a35.47 35.47 0 0116.257 3.93 35.47 35.47 0 0116.257-3.93c19.588 0 35.48 15.848 35.543 35.43l.106 17.087zm31.745 51.084c-28.564 0-51.72-23.156-51.72-51.72 0-28.565 23.156-51.721 51.72-51.721 28.565 0 51.72 23.156 51.72 51.72 0 28.565-23.155 51.721-51.72 51.721zm99.855-103.441c19.542 0 35.384 15.842 35.384 35.383v16.31c0 28.572-23.236 51.695-51.854 51.695-28.617 0-51.853-23.123-51.853-51.694V65.88c0-19.542 15.842-35.384 35.384-35.384a35.313 35.313 0 0116.47 4.06 35.311 35.311 0 0116.47-4.06zm49.463 103.335c-19.543 0-35.384-15.843-35.384-35.391l.005-16.51c.532-28.257 23.116-50.894 51.174-51.425.332-.006.664-.01.996-.01h11.845c19.542 0 35.384 15.843 35.384 35.384 0 17.258-12.355 31.63-28.703 34.754-1.129 18.524-16.51 33.198-35.317 33.198zm78.79-119.593c19.541 0 35.383 15.842 35.383 35.384V98.47c0 19.565-15.834 35.414-35.383 35.414-19.542 0-35.384-15.842-35.384-35.384V49.622c0-19.542 15.842-35.384 35.384-35.384zm119.805 73.85c0 1.58-.105 3.156-.314 4.719-2.728 23.461-22.634 41.236-46.333 41.236h-21.73c-19.63 0-35.543-15.915-35.543-35.546 0-3.817.607-7.556 1.772-11.103a35.53 35.53 0 01-1.772-11.101c0-1.58.105-3.157.314-4.72 2.728-23.461 22.633-41.237 46.333-41.237h21.73c19.63 0 35.543 15.916 35.543 35.547 0 3.816-.607 7.556-1.772 11.102a35.53 35.53 0 011.772 11.102z"
fill="#FFF"
fill-rule="nonzero"
id="path8" />
<path
d="M481.64 76.986a22.265 22.265 0 012.946 11.101c0 1.034-.071 2.064-.213 3.082-1.9 16.838-16.17 29.698-33.258 29.698h-21.73c-12.354 0-22.367-10.017-22.367-22.37 0-4.04 1.071-7.831 2.945-11.103a22.265 22.265 0 01-2.945-11.101c0-1.034.071-2.064.212-3.082 1.9-16.839 16.17-29.699 33.259-29.699h21.73c12.354 0 22.367 10.017 22.367 22.37 0 4.041-1.071 7.832-2.945 11.104z"
fill="#4393BB"
fill-rule="nonzero"
id="path10"
style="fill:#7289da;fill-opacity:1" />
<path
d="M454.09 88.087a8.129 8.129 0 1116.156 1.285c-.992 9.694-9.179 17.257-19.131 17.257h-21.73a8.13 8.13 0 01-8.129-8.132 8.13 8.13 0 018.13-8.132h22.42c1.258 0 2.28-1.02 2.284-2.278zm-16.576-11.794a8.129 8.129 0 11-16.157-1.285c.993-9.695 9.18-17.257 19.132-17.257h21.73a8.13 8.13 0 018.128 8.132 8.13 8.13 0 01-8.128 8.132h-22.42a2.285 2.285 0 00-2.285 2.278z"
fill="#FFF"
id="path12" />
<path
d="M355.749 49.622c0-12.265 9.943-22.208 22.208-22.208 12.265 0 22.207 9.943 22.207 22.208V98.47c0 12.295-9.942 22.238-22.207 22.238s-22.208-9.943-22.208-22.208V49.622z"
fill="#4393BB"
fill-rule="nonzero"
id="path14"
style="fill:#7289da;fill-opacity:1" />
<path
d="M369.828 49.622a8.129 8.129 0 1116.257 0V98.5a8.129 8.129 0 11-16.257-.053V49.622z"
fill="#FFF"
id="path16" />
<path
d="M321.375 98.448c0 12.265-9.943 22.207-22.208 22.207-12.265 0-22.208-9.943-22.208-22.212l.005-16.388c.397-21.079 17.298-37.98 38.247-38.376.249-.005.498-.007.747-.007h11.845c12.265 0 22.208 9.942 22.208 22.207s-9.943 22.208-22.208 22.208h-6.427l-.001 10.361z"
fill="#4393BB"
fill-rule="nonzero"
id="path18"
style="fill:#7289da;fill-opacity:1" />
<path
d="M307.296 98.447l.001-16.257a8.182 8.182 0 018.183-8.182h12.323a8.129 8.129 0 100-16.257h-11.845c-.16 0-.32.001-.48.004-13.383.254-24.188 11.027-24.44 24.408v16.284a8.129 8.129 0 0016.258 0z"
fill="#FFF"
id="path20" />
<g
id="g26">
<path
d="M249.704 43.672c12.265 0 22.208 9.942 22.208 22.207v16.31c0 21.294-17.337 38.52-38.678 38.52-21.34 0-38.677-17.226-38.677-38.52V65.88c0-12.265 9.943-22.207 22.208-22.207 6.532 0 12.406 2.82 16.47 7.31 4.063-4.49 9.937-7.31 16.47-7.31z"
fill="#4393BB"
fill-rule="nonzero"
id="path22"
style="fill:#7289da;fill-opacity:1" />
<path
d="M241.576 82.19h-.006a8.341 8.341 0 01-16.67 0l-.007-16.31a8.129 8.129 0 10-16.257 0v16.31c0 13.497 11.013 24.439 24.598 24.439 13.586 0 24.599-10.942 24.599-24.44V65.88a8.129 8.129 0 00-16.257 0v16.31z"
fill="#FFF"
id="path24" />
</g>
<g
id="g32">
<path
d="M149.85 120.761c-21.289 0-38.546-17.257-38.546-38.545 0-21.287 17.257-38.544 38.545-38.544s38.545 17.257 38.545 38.544c0 21.288-17.257 38.545-38.545 38.545z"
fill="#4393BB"
fill-rule="nonzero"
id="path28"
style="fill:#7289da;fill-opacity:1" />
<path
d="M149.85 106.523c-13.425 0-24.307-10.883-24.307-24.307s10.882-24.306 24.306-24.306c13.424 0 24.306 10.882 24.306 24.306 0 13.424-10.882 24.307-24.306 24.307zm.026-16.204a8.129 8.129 0 100-16.258 8.129 8.129 0 000 16.258z"
fill="#FFF"
id="path30" />
</g>
<g
id="g38">
<path
d="M82.455 43.512c12.335 0 22.337 9.985 22.367 22.313l.106 17.113c.053 7.883-2.037 15.242-6.184 21.52-2.704 4.091-6.145 7.533-10.18 10.299v1.686c0 12.473-10.012 22.487-22.367 22.488-12.353 0-22.366-10.014-22.366-22.367v-1.807c-4.035-2.766-7.475-6.208-10.179-10.3-4.148-6.277-6.237-13.636-6.184-21.52l.106-17.112c.03-12.328 10.032-22.313 22.367-22.313 6.404 0 12.18 2.692 16.257 7.005a22.304 22.304 0 0116.257-7.005z"
fill="#4393BB"
fill-rule="nonzero"
id="path34"
style="fill:#7289da;fill-opacity:1" />
<path
d="M58.07 116.564a8.129 8.129 0 0016.256 0v-10.387a29.353 29.353 0 004.202-1.926c3.337-1.887 6.195-4.403 8.336-7.642 2.533-3.834 3.861-8.412 3.826-13.579l-.106-17.15a8.129 8.129 0 10-16.258 0V81.5c.004.537-.01 1.017-.047 1.455a8.129 8.129 0 11-16.162 0 16.127 16.127 0 01-.047-1.456V65.88a8.129 8.129 0 10-16.258 0l-.106 17.151c-.035 5.167 1.293 9.745 3.826 13.579 2.14 3.24 4.999 5.755 8.336 7.642 1.32.746 2.757 1.39 4.202 1.926v10.387z"
fill="#FFF"
id="path36" />
</g>
<g
id="g100">
<path
d="M117.946 158.852h16.043c11.034 0 19.979 8.945 19.979 19.979 0 11.034-8.945 19.978-19.979 19.978h-16.043c-11.034 0-19.978-8.944-19.978-19.978s8.944-19.979 19.978-19.979zm0 12.815a7.164 7.164 0 100 14.328h16.043a7.164 7.164 0 000-14.328h-16.043z"
fill="#026090"
id="path40"
style="fill:#4e5d94;fill-opacity:1" />
<path
d="M117.52 160.501c-10.123 0-18.329 8.207-18.329 18.33 0 10.123 8.206 18.33 18.33 18.33h16.894c10.123 0 18.33-8.207 18.33-18.33 0-10.123-8.207-18.33-18.33-18.33H117.52zm0-2.71h16.895c11.62 0 21.04 9.42 21.04 21.04s-9.42 21.039-21.04 21.039H117.52c-11.62 0-21.039-9.42-21.039-21.04 0-11.619 9.42-21.038 21.04-21.038zm0 16.205a4.835 4.835 0 000 9.67h16.895a4.835 4.835 0 100-9.67H117.52zm0-2.71h16.895a7.544 7.544 0 010 15.089H117.52a7.544 7.544 0 010-15.089z"
fill="#FFF"
fill-rule="nonzero"
id="path42" />
<path
d="M180.123 159.292h15.69c10.791 0 19.539 8.748 19.539 19.539 0 10.79-8.748 19.539-19.539 19.539h-15.69c-10.791 0-19.54-8.748-19.54-19.54 0-10.79 8.749-19.538 19.54-19.538zm0 12.532a7.006 7.006 0 100 14.013h15.69a7.006 7.006 0 100-14.013h-15.69z"
fill="#026090"
id="path44"
style="fill:#4e5d94;fill-opacity:1" />
<path
d="M179.52 160.501c-10.123 0-18.329 8.207-18.329 18.33 0 10.123 8.206 18.33 18.33 18.33h16.894c10.123 0 18.33-8.207 18.33-18.33 0-10.123-8.207-18.33-18.33-18.33H179.52zm0-2.71h16.895c11.62 0 21.04 9.42 21.04 21.04s-9.42 21.039-21.04 21.039H179.52c-11.62 0-21.039-9.42-21.039-21.04 0-11.619 9.42-21.038 21.04-21.038zm0 16.205a4.835 4.835 0 000 9.67h16.895a4.835 4.835 0 100-9.67H179.52zm0-2.71h16.895a7.544 7.544 0 010 15.089H179.52a7.544 7.544 0 010-15.089z"
fill="#FFF"
fill-rule="nonzero"
id="path46" />
<path
d="M241.946 158.852h16.043c11.034 0 19.979 8.945 19.979 19.979 0 11.034-8.945 19.978-19.979 19.978h-16.043c-11.034 0-19.978-8.944-19.978-19.978s8.944-19.979 19.978-19.979zm0 12.815a7.164 7.164 0 100 14.328h16.043a7.164 7.164 0 000-14.328h-16.043z"
fill="#026090"
id="path48"
style="fill:#4e5d94;fill-opacity:1" />
<path
d="M241.52 160.501c-10.123 0-18.329 8.207-18.329 18.33 0 10.123 8.206 18.33 18.33 18.33h16.894c10.123 0 18.33-8.207 18.33-18.33 0-10.123-8.207-18.33-18.33-18.33H241.52zm0-2.71h16.895c11.62 0 21.04 9.42 21.04 21.04s-9.42 21.039-21.04 21.039H241.52c-11.62 0-21.039-9.42-21.039-21.04 0-11.619 9.42-21.038 21.04-21.038zm0 16.205a4.835 4.835 0 000 9.67h16.895a4.835 4.835 0 100-9.67H241.52zm0-2.71h16.895a7.544 7.544 0 010 15.089H241.52a7.544 7.544 0 010-15.089z"
fill="#FFF"
fill-rule="nonzero"
id="path50" />
<path
d="M305.09 159.21h15.756c10.837 0 19.622 8.784 19.622 19.62 0 10.837-8.785 19.622-19.622 19.622H305.09c-10.836 0-19.621-8.785-19.621-19.621 0-10.837 8.785-19.622 19.621-19.622zm0 12.585a7.036 7.036 0 100 14.072h15.756a7.036 7.036 0 000-14.072H305.09z"
fill="#026090"
id="path52"
style="fill:#4e5d94;fill-opacity:1" />
<path
d="M304.52 160.501c-10.123 0-18.329 8.207-18.329 18.33 0 10.123 8.206 18.33 18.33 18.33h16.894c10.123 0 18.33-8.207 18.33-18.33 0-10.123-8.207-18.33-18.33-18.33H304.52zm0-2.71h16.895c11.62 0 21.04 9.42 21.04 21.04s-9.42 21.039-21.04 21.039H304.52c-11.62 0-21.039-9.42-21.039-21.04 0-11.619 9.42-21.038 21.04-21.038zm0 16.205a4.835 4.835 0 000 9.67h16.895a4.835 4.835 0 100-9.67H304.52zm0-2.71h16.895a7.544 7.544 0 010 15.089H304.52a7.544 7.544 0 010-15.089z"
fill="#FFF"
fill-rule="nonzero"
id="path54" />
<path
d="M137.975 185.02h38.465a6.19 6.19 0 000-12.379h-38.465a6.19 6.19 0 000 12.38z"
stroke="#FFF"
stroke-width="2.71"
id="path56" />
<path
d="M137.975 183.665h38.465a4.835 4.835 0 100-9.669h-38.465a4.835 4.835 0 000 9.67z"
fill="#026090"
id="path58"
style="fill:#7289da;fill-opacity:1" />
<path
d="M199.976 186.375a7.544 7.544 0 010-15.088h38.465a7.544 7.544 0 110 15.088h-38.465z"
fill="#FFF"
fill-rule="nonzero"
id="path60" />
<path
d="M199.976 183.665h38.465a4.835 4.835 0 100-9.669h-38.465a4.835 4.835 0 000 9.67z"
fill="#026090"
id="path62"
style="fill:#7289da;fill-opacity:1" />
<path
d="M199.976 183.665h38.465a4.835 4.835 0 100-9.669h-38.465a4.835 4.835 0 000 9.67z"
id="path64" />
<path
d="M261.977 186.375a7.544 7.544 0 110-15.088h38.465a7.544 7.544 0 010 15.088h-38.465z"
fill="#FFF"
fill-rule="nonzero"
id="path66" />
<path
d="M261.977 183.665h38.465a4.835 4.835 0 000-9.669h-38.465a4.835 4.835 0 000 9.67z"
id="path68" />
<path
d="M261.977 183.665h38.465a4.835 4.835 0 000-9.669h-38.465a4.835 4.835 0 000 9.67z"
fill="#026090"
id="path70"
style="fill:#7289da;fill-opacity:1" />
<g
id="g88">
<path
d="M469.73 166.686h9.736c6.696 0 12.124 5.437 12.124 12.145 0 6.707-5.428 12.144-12.124 12.144h-9.737c-6.696 0-12.124-5.437-12.124-12.144 0-6.708 5.428-12.145 12.124-12.145zm0 7.79a4.351 4.351 0 00-4.348 4.355 4.351 4.351 0 004.347 4.355h9.737a4.351 4.351 0 004.347-4.355 4.351 4.351 0 00-4.347-4.355h-9.737z"
fill="#026090"
id="path72"
style="fill:#4e5d94;fill-opacity:1" />
<path
d="M469.529 167.815c-6.074 0-10.998 4.932-10.998 11.016s4.924 11.016 10.998 11.016h10.137c6.074 0 10.998-4.932 10.998-11.016s-4.924-11.016-10.998-11.016h-10.137zm0-1.629h10.137c6.972 0 12.623 5.661 12.623 12.645 0 6.983-5.651 12.644-12.623 12.644h-10.137c-6.972 0-12.623-5.66-12.623-12.644s5.651-12.645 12.623-12.645zm0 9.74c-1.602 0-2.9 1.3-2.9 2.905a2.903 2.903 0 002.9 2.905h10.137c1.602 0 2.9-1.3 2.9-2.905a2.903 2.903 0 00-2.9-2.906h-10.137zm0-1.63h10.137a4.53 4.53 0 014.527 4.535 4.53 4.53 0 01-4.527 4.534h-10.137a4.53 4.53 0 01-4.527-4.534 4.53 4.53 0 014.527-4.534z"
fill="#FFF"
fill-rule="nonzero"
id="path74" />
<path
d="M432.574 167.038h9.454c6.502 0 11.773 5.28 11.773 11.793 0 6.513-5.27 11.793-11.773 11.793h-9.454c-6.502 0-11.773-5.28-11.773-11.793 0-6.513 5.271-11.793 11.773-11.793zm0 7.564a4.225 4.225 0 00-4.221 4.229 4.225 4.225 0 004.221 4.228h9.454a4.225 4.225 0 004.222-4.228 4.225 4.225 0 00-4.222-4.229h-9.454z"
fill="#026090"
id="path76"
style="fill:#4e5d94;fill-opacity:1" />
<path
d="M432.233 167.815c-6.074 0-10.998 4.932-10.998 11.016s4.924 11.016 10.998 11.016h10.137c6.074 0 10.997-4.932 10.997-11.016s-4.923-11.016-10.997-11.016h-10.137zm0-1.629h10.137c6.971 0 12.623 5.661 12.623 12.645 0 6.983-5.652 12.644-12.623 12.644h-10.137c-6.972 0-12.624-5.66-12.624-12.644s5.652-12.645 12.624-12.645zm0 9.74c-1.602 0-2.901 1.3-2.901 2.905a2.903 2.903 0 002.9 2.905h10.138c1.602 0 2.9-1.3 2.9-2.905a2.903 2.903 0 00-2.9-2.906h-10.137zm0-1.63h10.137a4.53 4.53 0 014.526 4.535 4.53 4.53 0 01-4.526 4.534h-10.137a4.53 4.53 0 01-4.527-4.534 4.53 4.53 0 014.527-4.534z"
fill="#FFF"
fill-rule="nonzero"
id="path78" />
<path
d="M444.505 183.365a4.53 4.53 0 01-4.526-4.534 4.53 4.53 0 014.526-4.534h23.08a4.53 4.53 0 014.526 4.534 4.53 4.53 0 01-4.526 4.534h-23.08z"
fill="#FFF"
fill-rule="nonzero"
id="path80"
style="fill:#7289da;fill-opacity:1" />
<g
transform="translate(419.61 166.186)"
id="g86">
<use
fill="#026090"
xlink:href="#a"
id="use82"
style="fill:#7289da;fill-opacity:1" />
<path
stroke="#FFF"
stroke-width="1.626"
d="M24.896 16.363h23.08a3.716 3.716 0 003.713-3.718 3.716 3.716 0 00-3.714-3.719H24.896a3.716 3.716 0 00-3.714 3.719 3.716 3.716 0 003.714 3.718z"
id="path84" />
</g>
</g>
<g
fill-rule="nonzero"
id="g98">
<path
d="M381.463 171.818v-12.38c0-2.923 3.486-4.442 5.627-2.45l24.44 22.74a3.347 3.347 0 010 4.9l-24.44 22.74c-2.14 1.991-5.627.473-5.627-2.451v-12.38h-29.167a3.347 3.347 0 01-3.348-3.346v-14.026a3.347 3.347 0 013.348-3.347h29.167z"
id="path90" />
<g
stroke-linecap="square"
stroke-linejoin="round"
transform="translate(348.948 156.039)"
id="g96">
<use
fill="#4393BB"
fill-rule="evenodd"
xlink:href="#b"
id="use92"
style="fill:#7289da;fill-opacity:1" />
<path
stroke="#FFF"
stroke-width="1.806"
d="M34.611 14.823H2.097v15.832H34.61v16.897l1.519-1.413L60.57 23.4l.71-.661-.71-.661L36.13-.662 34.61-2.073v16.897z"
id="path94" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

148
index.php Normal file
View File

@ -0,0 +1,148 @@
<?php include 'frontend/header.php'; ?>
<body>
<?php
// Start YOURLS engine
require_once( dirname(__FILE__).'/includes/load-yourls.php' );
// URL of the public interface
$page = YOURLS_SITE . '/index.php' ;
// Make variables visible to function & UI
$shorturl = $message = $title = $status = '';
// Part to be executed if FORM has been submitted
if ( isset( $_REQUEST['url'] ) && $_REQUEST['url'] != 'http://' ) {
if (enableRecaptcha) {
// Use reCAPTCHA
$token = $_POST['token'];
$action = $_POST['action'];
// call curl to POST request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('secret' => recaptchaV3SecretKey, 'response' => $token)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$arrResponse = json_decode($response, true);
// verify the response
if($arrResponse["success"] == '1' && $arrResponse["action"] == $action && $arrResponse["score"] >= 0.5) {
// reCAPTCHA succeeded
shorten();
} else {
// reCAPTCHA failed
$message = "reCAPTCHA failed";
}
} else {
// Don't use reCAPTCHA
shorten();
}
}
function shorten() {
// Get parameters -- they will all be sanitized in yourls_add_new_link()
$url = $_REQUEST['url'];
$keyword = isset( $_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : '' ;
$title = isset( $_REQUEST['title'] ) ? $_REQUEST['title'] : '' ;
$text = isset( $_REQUEST['text'] ) ? $_REQUEST['text'] : '' ;
// Create short URL, receive array $return with various information
$return = yourls_add_new_link( $url, $keyword, $title );
// Make visible to UI
global $shorturl, $message, $status, $title;
$shorturl = isset( $return['shorturl'] ) ? $return['shorturl'] : '';
$message = isset( $return['message'] ) ? $return['message'] : '';
$title = isset( $return['title'] ) ? $return['title'] : '';
$status = isset( $return['status'] ) ? $return['status'] : '';
// Stop here if bookmarklet with a JSON callback function ("instant" bookmarklets)
if( isset( $_GET['jsonp'] ) && $_GET['jsonp'] == 'yourls' ) {
$short = $return['shorturl'] ? $return['shorturl'] : '';
$message = "Short URL (Ctrl+C to copy)";
header('Content-type: application/json');
echo yourls_apply_filter( 'bookmarklet_jsonp', "yourls_callback({'short_url':'$short','message':'$message'});" );
die();
}
}
?>
<div class="container-fluid h-100">
<div class="row justify-content-center align-items-center h-100">
<div class="col-12 col-lg-10 col-xl-8 col-xxl-5 mt-5">
<div class="card border-0 mt-5">
<?php if( isset($status) && $status == 'success' ): ?>
<?php $url = preg_replace("(^https?://)", "", $shorturl ); ?>
<div class="close-container text-end mt-3 me-3">
<button type="button" class="btn-close" id="close-shortened-screen" aria-label="Close"></button>
</div>
<div class="card-body px-5 pb-5">
<h2 class="text-uppercase text-center">Your shortened link</h2>
<div class="row justify-content-center">
<div class="col-10">
<div class="input-group input-group-block mt-4 mb-3">
<input type="text" autocomplete="off" class="form-control text-uppercase" value="<?php echo $shorturl; ?>" required>
<button class="btn btn-primary text-uppercase py-2 px-5 mt-2 mt-md-0" type="submit" id="copy-button" data-shorturl="<?php echo $shorturl; ?>">Copy</button>
</div>
<span class="info">QR Code &amp; See Link Preview <a href="<?php echo $shorturl; ?>~"><?php echo $url; ?>~</a></span>
</div>
</div>
</div>
<?php else: ?>
<div class="text-center">
</div>
<div class="card-body px-md-5">
<img class="wordmark" src="<?php echo wordmark ?>" alt="Wordmark">
<?php if ( isset( $_REQUEST['url'] ) && $_REQUEST['url'] != 'http://' ): ?>
<?php if (strpos($message,'added') === false): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<span>Oh no, <?php echo $message; ?>!</span>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>
<?php endif; ?>
<form id="shortenlink" method="post" action="">
<div class="input-group input-group-block mt-4 mb-3">
<input type="url" autocomplete="off" name="url" id="url" class="form-control text-uppercase" placeholder="PASTE URL, SHORTEN &amp; SHARE" aria-label="PASTE URL, SHORTEN &amp; SHARE" aria-describedby="shorten-button" required>
<input class="btn btn-primary text-uppercase py-2 px-4 mt-2 mt-md-0" type="submit" id="shorten-button" value="Shorten" />
</div>
<?php if (enableCustomURL): ?>
<a class="btn btn-sm btn-white text-white-50 text-uppercase" data-bs-toggle="collapse" href="#customise-link" role="button" aria-expanded="false" aria-controls="customise-link">
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSIjZmZmIj48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48cGF0aCBkPSJNMjIuNyAxOWwtOS4xLTkuMWMuOS0yLjMuNC01LTEuNS02LjktMi0yLTUtMi40LTcuNC0xLjNMOSA2IDYgOSAxLjYgNC43Qy40IDcuMS45IDEwLjEgMi45IDEyLjFjMS45IDEuOSA0LjYgMi40IDYuOSAxLjVsOS4xIDkuMWMuNC40IDEgLjQgMS40IDBsMi4zLTIuM2MuNS0uNC41LTEuMS4xLTEuNHoiLz48L3N2Zz4=" alt="Options"> Customise Link
</a>
<div class="collapse" id="customise-link">
<div class="mt-2 card card-body">
<div class="d-flex align-items-center">
<span class="me-2"><?php echo preg_replace("(^https?://)", "", YOURLS_SITE ); ?>/</span>
<input type="text" name="keyword" class="form-control form-control-sm text-uppercase" placeholder="CUSTOM URL" autocomplete="off" aria-label="CUSTOM URL">
</div>
</div>
</div>
<?php endif; ?>
</form>
</div>
<?php endif; ?>
</div>
<div class="d-flex flex-column flex-md-row align-items-center my-3">
<span class="text-white fw-light"><i class="fa fa-cc-cc" aria-hidden="true"></i><?php echo date("Y"); ?> <?php echo shortTitle ?></span>
<div class="ms-3">
<?php foreach ($footerLinks as $key => $val): ?>
<a class="bold-link me-3 text-white text-decoration-none" href="<?php echo $val ?>"><span><?php echo $key ?></span></a>
<?php endforeach ?>
</div>
</div>
</div>
</div>
</div>
<?php include 'frontend/footer.php'; ?>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,144 +0,0 @@
// Sleeky Admin Theme
// 2019 Flynn Tesoriero
console.log("Sleeky Admin Theme Running");
$( document ).ready(function() {
// Get the theme URL
var url;
if ($('meta[name=pluginURL]').attr("content")) {
url = $('meta[name=pluginURL]').attr("content");
} else {
// If for some reason we can't find the URL attribute
url = "/user/plugins/sleeky_backend";
}
// Detect theme
var theme;
if ($('meta[name=sleeky_theme]').attr("content") == 'light') {
theme = "light";
} else if ($('meta[name=sleeky_theme]').attr("content") == 'dark') {
theme = "dark";
}
console.log("Theme is", theme)
// Update favicon
$('link[rel="shortcut icon"]').attr('href', url + "/assets/img/favicon.ico");
// Update meta viewport
$('head').append('<meta name="viewport" content="width=device-width, initial-scale=1.0">');
// Detect pages
if ($("body").hasClass("login")) {
// Login page
console.log("Login page");
if (theme == "light") {
$("#login").prepend(`<img class="login-logo" src="${url}/assets/img/logo_black.png">`);
} else if (theme == "dark") {
$("#login").prepend(`<img class="login-logo" src="${url}/assets/img/logo_white.png">`);
}
} else if ($("body").hasClass("index")) {
// Index page
console.log("Index page");
handleNav()
// Hide YOURLS new URL section
$("#new_url").hide();
// Grab the nonce id
var nonce = $("#nonce-add").val();
// Remove the YOURLS new URL Section
$("#new_url").remove();
// Create the sleeky new URL section from the template
$("nav").append($('<div>').load(`${url}/assets/html/form.html`, function () {
$("#nonce-add").val(nonce);
}));
} else if ($("body").hasClass("tools")) {
// Tools page
console.log("Tools page");
handleNav()
} else if ($("body").hasClass("plugins")) {
// Plugins page
console.log("Plugins page");
handleNav()
} else if ($("body").hasClass("plugin_page_sleeky_settings")) {
// Tools page
console.log("Sleeky Settings Page");
handleNav()
$("#ui_selector").val($("#ui_selector").attr("value"));
} else if ($("body").hasClass("infos")) {
// Information page
console.log("Information page");
handleNav()
$("#historical_clicks li").each(function (index) {
if (index % 2 != 0) {
$("#historical_clicks li").eq(index).css("background", "");
}
})
// Update tab headers
var titles = ['Statistics', 'Location', 'Sources']
for (let i = 0; i < 3; i++) {
$($('#headers > li')[i]).find('h2').text(titles[i]);
}
} else {
console.warn("Unknown page");
handleNav();
}
function handleNav() {
// Add logo
$("#wrap").prepend(`<img class="logo" src="${url}/assets/img/logo_white.png">`);
// Add mobile nav hamburger
$("#wrap").prepend(`<div class="nav-open" id="navOpen"><i class="material-icons">menu</i></div>`);
// Add frontend link
$('#admin_menu').append('<li class="admin_menu_toplevel frontend_link"><a href="/"><i class="material-icons">arrow_back</i> Frontend Interface</a></li>');
// admin_menu
$('#navOpen').on('click', function() {
$('#admin_menu').slideToggle();
})
$(window).resize(function () {
if ($(window).width() > 899) {
$('#admin_menu').show();
} else {
$('#admin_menu').hide();
}
});
}
// Update P elements
$("p").each(function (index) {
if (/Display/.test($(this).text()) || /Overall/.test($(this).text())) {
// Move info on index page to the bottom
$("main").append("<p>" + $(this).html() + "</p>");
$(this).remove();
} else if (/Powered by/.test($(this).text())) {
// Update footer
var content = $(this).html();
var i = 77
var updated_content = "Running on" + content.slice(13, i) + '& <a href="https://sleeky.flynntes.com/" title="Sleeky">Sleeky</a>' + content.slice(i-1)
$(this).html(updated_content);
}
});
});

View File

@ -1,147 +0,0 @@
<?php
/*
Plugin Name: Sleeky Backend
Plugin URI: https://sleeky.flynntes.com
Description: UI overhaul of the YOURLS backend
Version: 2.4.1
Author: Flynn Tesoriero
Author URI: https://flynntes.com
*/
// No direct call
if( !defined( 'YOURLS_ABSPATH' ) ) die();
// Plugin location URL
$url = yourls_plugin_url( __DIR__ );
yourls_add_action( 'html_head', 'init' );
function init()
{
echo <<<HEAD
<style>body {background: unset;}</style>
HEAD;
}
// Inject Sleeky files
yourls_add_action( 'html_head', 'sleeky_head_scripts' );
function sleeky_head_scripts() {
// This is so the user doesn't have to reload page twice in settings screen
if (isset( $_POST['theme_choice'] )) {
// User has just changed theme
if ($_POST['theme_choice'] == "light") {
setTheme("light");
} else {
setTheme("dark");
}
} else {
// User has not just changed theme
if (yourls_get_option( 'theme_choice' ) == "light") {
setTheme("light");
} else {
setTheme("dark");
}
}
}
// Inject Sleeky files
function setTheme($theme) {
$url = yourls_plugin_url( __DIR__ );
if ($theme == "light") {
echo <<<HEAD
<link rel="stylesheet" href="$url/assets/css/light.css">
<link rel="stylesheet" href="$url/assets/css/animate.min.css">
<script src="$url/assets/js/theme.js"></script>
<meta name="sleeky_theme" content="light">
HEAD;
} else if ($theme == "dark") {
echo <<<HEAD
<link rel="stylesheet" href="$url/assets/css/dark.css">
<link rel="stylesheet" href="$url/assets/css/animate.min.css">
<script src="$url/assets/js/theme.js"></script>
<meta name="sleeky_theme" content="dark">
HEAD;
}
}
// Inject information and options into the frontend
yourls_add_action( 'html_head', 'addOptions' );
function addOptions()
{
$url = yourls_plugin_url( __DIR__ );
echo <<<HEAD
<meta name="pluginURL" content="$url">
HEAD;
}
// Register our plugin admin page
yourls_add_action( 'plugins_loaded', 'sleeky_add_settings' );
function sleeky_add_settings() {
yourls_register_plugin_page( 'sleeky_settings', 'Sleeky Settings', 'sleeky_do_settings_page' );
// parameters: page slug, page title, and function that will display the page itself
}
// Display admin page
function sleeky_do_settings_page() {
// Check if a form was submitted
if( isset( $_POST['theme_choice'] ) ) {
// Check nonce
yourls_verify_nonce( 'sleeky_settings' );
// Process form
sleeky_settings_update();
}
// Get value from database
$theme_choice = yourls_get_option( 'theme_choice' );
// Create nonce
$nonce = yourls_create_nonce( 'sleeky_settings' );
echo <<<HTML
<main>
<h2>Sleeky Settings</h2>
<form method="post">
<input type="hidden" name="nonce" value="$nonce" />
<p>
<label>Theme</label>
<select name="theme_choice" size="1" value="$theme_choice" id="ui_selector">
<option value="dark">Dark</option>
<option value="light">Light</option>
</select>
</p>
<p><input type="submit" value="Save" class="button" /></p>
</form>
</main>
HTML;
}
// Update option in database
function sleeky_settings_update() {
$in = $_POST['theme_choice'];
if( $in ) {
// Validate theme_choice. ALWAYS validate and sanitize user input.
// Here, we want an integer
// $in = intval( $in);
if ($in == "light" or $in == "dark") {
// Update value in database
yourls_update_option( 'theme_choice', $in );
} else {
echo "Error";
}
}
}
// Hide admin links for non-authenticated users
if (yourls_is_valid_user() != 1) {
echo <<<HEAD
<style>ul#admin_menu li:not(.frontend_link) {display: none}</style>
HEAD;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,150 +0,0 @@
<?php include 'frontend/header.php'; ?>
<body>
<?php
// Start YOURLS engine
require_once( dirname(__FILE__).'/includes/load-yourls.php' );
// URL of the public interface
$page = YOURLS_SITE . '/index.php' ;
// Make variables visible to function & UI
$shorturl = $message = $title = $status = '';
// Part to be executed if FORM has been submitted
if ( isset( $_REQUEST['url'] ) && $_REQUEST['url'] != 'http://' ) {
if (enableRecaptcha) {
// Use reCAPTCHA
$token = $_POST['token'];
$action = $_POST['action'];
// call curl to POST request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('secret' => recaptchaV3SecretKey, 'response' => $token)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$arrResponse = json_decode($response, true);
// verify the response
if($arrResponse["success"] == '1' && $arrResponse["action"] == $action && $arrResponse["score"] >= 0.5) {
// reCAPTCHA succeeded
shorten();
} else {
// reCAPTCHA failed
$message = "reCAPTCHA failed";
}
} else {
// Don't use reCAPTCHA
shorten();
}
}
function shorten() {
// Get parameters -- they will all be sanitized in yourls_add_new_link()
$url = $_REQUEST['url'];
$keyword = isset( $_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : '' ;
$title = isset( $_REQUEST['title'] ) ? $_REQUEST['title'] : '' ;
$text = isset( $_REQUEST['text'] ) ? $_REQUEST['text'] : '' ;
// Create short URL, receive array $return with various information
$return = yourls_add_new_link( $url, $keyword, $title );
// Make visible to UI
global $shorturl, $message, $status, $title;
$shorturl = isset( $return['shorturl'] ) ? $return['shorturl'] : '';
$message = isset( $return['message'] ) ? $return['message'] : '';
$title = isset( $return['title'] ) ? $return['title'] : '';
$status = isset( $return['status'] ) ? $return['status'] : '';
// Stop here if bookmarklet with a JSON callback function ("instant" bookmarklets)
if( isset( $_GET['jsonp'] ) && $_GET['jsonp'] == 'yourls' ) {
$short = $return['shorturl'] ? $return['shorturl'] : '';
$message = "Short URL (Ctrl+C to copy)";
header('Content-type: application/json');
echo yourls_apply_filter( 'bookmarklet_jsonp', "yourls_callback({'short_url':'$short','message':'$message'});" );
die();
}
}
?>
<div class="container-fluid h-100">
<div class="row justify-content-center align-items-center h-100">
<div class="col-12 col-lg-10 col-xl-8 col-xxl-5 mt-5">
<div class="card border-0 mt-5">
<?php if( isset($status) && $status == 'success' ): ?>
<?php $url = preg_replace("(^https?://)", "", $shorturl ); ?>
<div class="close-container text-end mt-3 me-3">
<button type="button" class="btn-close" id="close-shortened-screen" aria-label="Close"></button>
</div>
<div class="card-body px-5 pb-5">
<h2 class="text-uppercase text-center">Your shortened link</h2>
<div class="row justify-content-center">
<div class="col-10">
<div class="input-group input-group-block mt-4 mb-3">
<input type="text" class="form-control text-uppercase" value="<?php echo $shorturl; ?>" required>
<button class="btn btn-primary text-uppercase py-2 px-5 mt-2 mt-md-0" type="submit" id="copy-button" data-shorturl="<?php echo $shorturl; ?>">Copy</button>
</div>
<span class="info">View info &amp; stats at <a href="<?php echo $shorturl; ?>+"><?php echo $url; ?>+</a></span>
</div>
</div>
</div>
<?php else: ?>
<div class="text-center">
<img src="<?php echo YOURLS_SITE ?><?php echo logo ?>" alt="Logo" width="95px" class="mt-n5">
</div>
<div class="card-body px-md-5">
<p><?php echo description ?></p>
<?php if ( isset( $_REQUEST['url'] ) && $_REQUEST['url'] != 'http://' ): ?>
<?php if (strpos($message,'added') === false): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<span>Oh no, <?php echo $message; ?>!</span>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>
<?php endif; ?>
<form id="shortenlink" method="post" action="">
<div class="input-group input-group-block mt-4 mb-3">
<input type="url" name="url" id="url" class="form-control text-uppercase" placeholder="PASTE URL, SHORTEN &amp; SHARE" aria-label="PASTE URL, SHORTEN &amp; SHARE" aria-describedby="shorten-button" required>
<input class="btn btn-primary text-uppercase py-2 px-4 mt-2 mt-md-0" type="submit" id="shorten-button" value="Shorten" />
</div>
<?php if (enableCustomURL): ?>
<a class="btn btn-sm btn-white text-black-50 text-uppercase" data-bs-toggle="collapse" href="#customise-link" role="button" aria-expanded="false" aria-controls="customise-link">
<img src="<?php echo YOURLS_SITE ?>/frontend/assets/svg/custom-url.svg" alt="Options"> Customise Link
</a>
<div class="collapse" id="customise-link">
<div class="mt-2 card card-body">
<div class="d-flex align-items-center">
<span class="me-2"><?php echo preg_replace("(^https?://)", "", YOURLS_SITE ); ?>/</span>
<input type="text" name="keyword" class="form-control form-control-sm text-uppercase" placeholder="CUSTOM URL" aria-label="CUSTOM URL">
</div>
</div>
</div>
<?php endif; ?>
</form>
</div>
<?php endif; ?>
</div>
<div class="d-flex flex-column flex-md-row align-items-center my-3">
<span class="text-white fw-light">&copy;<?php echo date("Y"); ?> <?php echo shortTitle ?></span>
<div class="ms-3">
<?php foreach ($footerLinks as $key => $val): ?>
<a class="bold-link me-3 text-white text-decoration-none" href="<?php echo $val ?>"><span><?php echo $key ?></span></a>
<?php endforeach ?>
</div>
</div>
</div>
</div>
</div>
<?php include 'frontend/footer.php'; ?>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,986 @@
@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800");
@import url("https://fonts.googleapis.com/icon?family=Material+Icons");
::-webkit-scrollbar
{display:none}
body {
background-color: #1d1d1d;
display: inline;
max-width: 100%;
}
.datepicker tbody td {
width: 24px;
height: 24px;
border: 1px solid #ffffff40;
font: 11px/22px Arial, Helvetica, sans-serif;
text-align: center;
background: #1D1D1D;
}
.datepicker {
border-collapse: collapse;
border: 2px solid #ffffff40;
position: absolute;
width: 215px;
}
.datepicker th, .datepicker tfoot td {
background: #1D1D1D;
font: 10px/18px Verdana, Arial, Helvetica, sans-serif;
color: #ffffffff;
}
.datepicker{
background-color: #1D1D1D;
}
table thead tr.controls th{
background-color: #1D1D1D;
}
tr.days th{
background-color: #313131;
color: #fff;
}
tbody tr td.date{
background-color: #313131;
color: #fff;
}
.datepicker tbody td.date.chosen {
font-weight: bold;
background-color: #4E5D94;
color: #fff;
}
.datepicker tbody td.date.over {
background-color: #7289DA;
}
div,
p,
td,
input,
p {
font-family: 'Open Sans', sans-serif !important;
}
h1,
h2 {
color: #ececec;
}
p {
color: #dcdcdc;
}
a,
a:link,
a:active,
a:visited {
color: #DCDCDC;
text-decoration: none;
}
a:hover {
color: #b9b9b9;
transition: 0.4s all;
}
input {
padding: 10px;
border: none !important;
background: #313131 !important;
color: #dcdcdc !important;
font-size: 1em !important;
outline: none;
margin: 0px 5px !important;
border-radius: 0 !important;
}
input.button,
input.submit,
input[type="submit"] {
border-left: 7px solid #7289DA !important;
background: #313131 !important;
font-weight: 600;
transition: 0.3s all !important;
cursor: pointer;
}
input.button:hover,
input.submit:hover,
input[type="submit"]:hover {
background: #4E5D94 !important;
}
input[type="button"]:disabled,
input[type="submit"]:disabled {
cursor: not-allowed;
}
input.text,
input[type="text"] {
border: 1px solid #ffffff40 !important;
transition: 0.4s all;
}
input.text:active,
input.text:focus {
border: 1px solid #7289DA !important;
}
select {
width: 150px;
padding: 5px 35px 5px 10px;
border: none;
border-radius: 0;
height: 26px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
color: #dcdcdc;
background: url(data:image/png;base64,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) 96%/15% no-repeat #313131;
margin: 5px 10px;
transition: 0.4s all;
outline: none;
}
select:hover {
background: url(data:image/png;base64,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) 96%/15% no-repeat #313131;
}
#javascript_error {
background: red;
color: white;
padding: 20px;
margin-top: 10px;
}
.jquery-notify-bar {
color: #fff;
text-shadow: none;
border: none;
opacity: 1;
box-shadow: none;
font-size: 1.1em;
font-weight: 500;
position: static;
margin-top: 30px;
margin-bottom: -45px;
padding: 10px;
}
.jquery-notify-bar a,
.jquery-notify-bar a:link,
.jquery-notify-bar a:active,
.jquery-notify-bar a:visited {
color: white;
}
.jquery-notify-bar.error,
.jquery-notify-bar.fail {
background-color: #FF9800;
color: white;
}
.jquery-notify-bar.success {
color: white;
background-color: #4CAF50;
}
.login #wrap {
margin: auto;
}
.login label {
font-size: 1em;
font-weight: 600;
}
.login .login-logo {
width: 200px;
margin: 30px auto;
display: flex;
}
.login input.text {
width: 270px !important;
}
.login input.button {
font-weight: 600;
padding: 10px 25px;
margin-top: 15px !important;
font-weight: 600;
}
.login input.button else {
background: #313131 !important;
border-left: 7px solid #7289DA !important;
}
.login input.button:hover {
background: #4E5D94 !important;
}
.login .error {
padding: 10px;
background: #7289DA;
color: white;
position: fixed;
top: 0;
left: 0;
width: 100%;
margin: 0;
text-align: center;
}
.index #add-url {
width: 200px;
}
.index #new_url_form {
box-sizing: border-box;
overflow: hidden;
}
.index #new_url {
border: none;
background: #232323;
text-align: left;
}
.index #new_url input.button {
margin-top: 10px !important;
}
.index #new_url div {
background: #232323;
padding: 4px;
padding-top: 0px;
}
a#longurl{
word-wrap: break-word;
}
body.infos.mobile{
max-width: 100%;
}
table{
max-width: 100%;
}
div#tabs,
div.wrap_unfloat{
max-width: 100%;
}
.index .create {
background: #7289DA !important;
width: 150px;
font-size: 1.3em !important;
border: none !important;
font-weight: 700;
text-align: center;
margin-top: 10px !important;
margin-left: 20px !important;
}
.index .top {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 50px;
background: #232323;
}
.index .top label {
font-size: 1em;
font-weight: 600;
color: #dcdcdc;
}
.index .top input.text {
width: 360px;
padding: 4px;
font-weight: 200;
font-size: 1em !important;
background: #464646 !important;
}
.index .top .short {
padding-left: 10px;
}
.index .top #add-keyword {
width: 100px;
}
.index .top input.button {
font-weight: 500;
padding: 5px 10px;
font-size: 1em !important;
margin-left: 10px !important;
background: #464646 !important;
}
.index .top input.button:hover {
background: #4E5D94 !important;
}
.index .top #new_url_form {
margin-left: 260px;
padding: 12px;
}
.index table.tblSorter {
background-color: #232323;
color: #dcdcdc;
}
table tbody{
max-width: 100%;
}
.index table.tblSorter a {
color: #dcdcdc;
}
.index table.tblSorter small a {
color: gray;
}
.index table.tblSorter thead tr .tablesorter-header {
padding: 10px;
}
.index table.tblSorter tfoot tr {
background-color: #232323;
}
.index table.tblSorter thead tr th,
.index table.tblSorter tfoot tr th,
.index table.tblSorter th.header {
background-color: transparent;
border: none;
padding: 4px;
}
.index table.tblSorter thead tr .tablesorter-headerAsc,
.index table.tblSorter thead tr .tablesorter-headerDesc {
background-color: #464646 !important;
}
.index table.tblSorter tbody td {
color: #dcdcdc;
padding: 5px;
background-color: #313131;
vertical-align: middle;
transition: 0.4s all;
}
.index table.tblSorter tbody tr:hover td {
background-color: #464646 !important;
}
.index table.tblSorter tbody tr.normal-row td {
background: #313131;
}
.index table.tblSorter .keyword {
border-left: 7px solid #7289DA;
}
.index table.tblSorter input.text {
padding: 5px;
margin: 8px 5px !important;
}
.index table.tblSorter .navigation .nav_link a {
background: #313131;
border: none;
}
.index table.tblSorter .navigation .nav_link a:hover {
background: #464646;
}
.index table.tblSorter tr.edit-row td {
background: #232323 !important;
}
.index table.tblSorter td.actions .button_stats {
background: #7289DA url(../img/stats.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
border: none;
padding: 3px;
border-radius: 2px;
}
.index table.tblSorter td.actions .button_stats:hover {
background: #4E5D94 url(../img/stats.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
}
.index table.tblSorter td.actions .button_share {
background: #7289DA url(../img/share.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
border: none;
padding: 3px;
border-radius: 2px;
}
.index table.tblSorter td.actions .button_share:hover {
background: #4E5D94 url(../img/share.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
}
.index table.tblSorter td.actions .button_edit {
background: #7289DA url(../img/edit.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
border: none;
padding: 3px;
border-radius: 2px;
}
.index table.tblSorter td.actions .button_edit:hover {
background: #4E5D94 url(../img/edit.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
}
.index table.tblSorter td.actions .button_delete {
background: red url(../img/delete.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
border: none;
padding: 3px;
border-radius: 2px;
}
.index table.tblSorter td.actions .button_delete:hover {
background: #c00 url(../img/delete.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
}
nav {
background: #232323;
height: 100%;
position: fixed;
top: 0;
left: 0;
padding: 50px 30px;
width: 200px;
z-index: 10;
}
nav li#admin_menu_logout_link {
font-size: 1.3em;
}
nav ul#admin_menu li:hover {
list-style-type: none;
color: #b9b9b9;
}
nav ul#admin_menu li {
color: #ececec;
padding: 5px 0;
}
nav #admin_menu_logout_link:hover {
color: #ececec !important;
}
nav .admin_menu_sublevel {
font-weight: 100;
margin-left: -20px;
}
nav .material-icons {
font-size: 1em;
vertical-align: middle;
margin-top: -1px;
}
nav ul {
list-style-type: none;
}
img.logo {
width: 150px;
position: fixed;
top: 0;
left: 0;
background: #7289DA;
padding: 9px 90px 8px 20px;
z-index: 20;
}
.nav-open {
color: white;
position: fixed;
top: 0;
right: 0;
z-index: 30;
padding: 10px 15px;
cursor: pointer;
display: none;
}
.nav-open i {
font-size: 2em;
line-height: 30px;
}
header {
display: none;
}
#wrap #tabs {
min-width: 580px;
}
#wrap #tabs .tab {
background: #313131 !important;
}
#wrap #tabs .wrap_unfloat {
margin-bottom: -5px;
}
#wrap #tabs ul#headers {
border: none;
padding: 0px;
}
#wrap #tabs li {
color: #dcdcdc;
}
#wrap #tabs #historical_clicks li:hover {
background: #0a0a0a !important;
}
#wrap #tabs ul#headers li a,
#wrap #tabs #stats_lines li a {
outline: none;
border: none;
border-radius: 0;
background: #313131;
color: #dcdcdc;
padding: 10px 15px 7px 25px;
}
#wrap #tabs ul#headers li a:hover,
#wrap #tabs #stats_lines li a:hover {
background: #0a0a0a;
}
#wrap #tabs ul#headers li a h2,
#wrap #tabs #stats_lines li a h2 {
font-weight: 400;
font-size: 1em;
}
#wrap #tabs ul#headers li a.selected,
#wrap #tabs #stats_lines li a.selected {
background: #464646;
border-bottom: 2px solid #7289DA;
}
#wrap #tabs ul#headers li a.selected:hover,
#wrap #tabs #stats_lines li a.selected:hover {
background: #000;
}
#wrap #tabs #stats_lines li a {
padding: 7px 15px;
}
#wrap #tabs ul.toggle_display {
border: none;
}
#wrap #tabs svg ellipse {
fill: #7289DA;
}
body.index #wrap {
padding-top: 50px;
}
#wrap {
background: none;
margin-left: 270px;
border: none;
color: #dcdcdc;
max-width: 100%;
}
.notice {
width: calc(100% - 22px);
margin: 0;
padding: 0;
border-radius: 0;
background: #7289DA;
border: 1px solid #7289DA;
padding: 10px;
}
.notice p {
color: white;
}
#shareboxes {
margin-top: -10px;
}
#sharebox {
width: 558px;
margin-right: 0px;
}
div.share {
background: #232323;
border-radius: 0;
border: none;
padding: 0px 20px 10px;
margin-top: 10px;
}
textarea.blacklist-domains {
background-color: #313131;
color: #fff;
border: none;
height: 400px;
max-width: 100%;
}
textarea.blacklist-ips {
background-color: #313131;
color: #fff;
border: none;
width: 320px;
max-width: 100%;
height: 125px;
}
textarea.blacklist-domains::-webkit-scrollbar {
display: none;
}
textarea.blacklist-ips::-webkit-scrollbar {
display: none;
}
div.share textarea {
background: #313131;
color: #dcdcdc;
border: none;
padding: 3px;
outline: none;
margin: 1px !important;
}
div.share #charcount {
padding-left: 5px;
color: #dcdcdc;
}
div.share #share_links a {
color: #dcdcdc;
}
.sub_wrap,
.plugins main,
.plugin_page_sleeky_settings main,
code {
background: #232323;
padding: 10px;
padding: 5px 25px;
max-width: 100%;
}
.sub_wrap span,
.plugins main span,
.plugin_page_sleeky_settings main span,
code span {
background: #ffffff33;
}
.sub_wrap code,
.sub_wrap tt,
.plugins main code,
.plugins main tt,
.plugin_page_sleeky_settings main code,
.plugin_page_sleeky_settings main tt,
code code,
code tt {
background: #7289DA;
}
.sub_wrap a.bookmarklet,
.plugins main a.bookmarklet,
.plugin_page_sleeky_settings main a.bookmarklet,
code a.bookmarklet {
border: none;
background: #fff url(/images/favicon.gif) 4px center no-repeat;
color: #3c3c3c;
border-radius: 1px;
padding: 7px 7px 7px 25px;
color: #333 !important;
}
.sub_wrap a.bookmarklet:hover,
.plugins main a.bookmarklet:hover,
.plugin_page_sleeky_settings main a.bookmarklet:hover,
code a.bookmarklet:hover {
background: #e0e0e0 url(/images/favicon.gif) 4px center no-repeat;
}
.sub_wrap table.tblSorter,
.plugins main table.tblSorter,
.plugin_page_sleeky_settings main table.tblSorter,
code table.tblSorter {
background: #232323;
}
.sub_wrap table.tblSorter a,
.plugins main table.tblSorter a,
.plugin_page_sleeky_settings main table.tblSorter a,
code table.tblSorter a {
color: #dcdcdc;
}
.sub_wrap table.tblSorter a:hover,
.plugins main table.tblSorter a:hover,
.plugin_page_sleeky_settings main table.tblSorter a:hover,
code table.tblSorter a:hover {
color: #909090;
}
.sub_wrap table.tblSorter thead tr th,
.sub_wrap table.tblSorter tfoot tr th,
.sub_wrap table.tblSorter th.header,
.plugins main table.tblSorter thead tr th,
.plugins main table.tblSorter tfoot tr th,
.plugins main table.tblSorter th.header,
.plugin_page_sleeky_settings main table.tblSorter thead tr th,
.plugin_page_sleeky_settings main table.tblSorter tfoot tr th,
.plugin_page_sleeky_settings main table.tblSorter th.header,
code table.tblSorter thead tr th,
code table.tblSorter tfoot tr th,
code table.tblSorter th.header {
border: none;
background-color: #313131;
padding: 10px;
}
.sub_wrap table.tblSorter tbody td,
.plugins main table.tblSorter tbody td,
.plugin_page_sleeky_settings main table.tblSorter tbody td,
code table.tblSorter tbody td {
background: #464646;
color: #dcdcdc;
}
#filter_options {
padding: 0px 10px !important;
}
body>div>pre {
overflow-x: scroll;
padding-left: 290px;
}
#footer {
position: fixed;
bottom: 0;
width: 230px;
color: #DCDCDC;
padding: 10px;
text-align: left;
z-index: 10;
}
#footer p {
background: none;
border: none;
font-size: 1em;
}
#footer p a {
background: none;
padding-left: 0;
color: #dcdcdc;
}
#footer p a:hover {
color: #DCDCDC;
}
@media (max-width: 899px) {
body.index #wrap {
padding-top: 210px;
}
body.tools #wrap,
body.plugins #wrap,
body.plugin_page_sleeky_settings #wrap {
padding-top: 50px;
}
#wrap {
margin-left: 0;
}
#wrap main {
overflow-x: scroll;
}
img.logo {
padding: 9px 100% 8px 20px;
}
.nav-open {
display: block;
}
nav {
height: 0;
padding: 0;
width: 0;
}
nav ul#admin_menu {
position: fixed;
top: 0;
left: 0;
z-index: 9999 !important;
width: 100%;
height: 100%;
padding: 50px;
display: none;
background: #232323;
}
nav ul#admin_menu li {
color: white;
}
nav ul#admin_menu a,
nav ul#admin_menu a:link,
nav ul#admin_menu a:active,
nav ul#admin_menu a:visited {
color: white;
}
.index .top {
display: block;
margin-top: 50px;
width: 100vw;
height: auto;
}
.index .top form {
margin-left: 0 !important;
}
.index .top #new_url_form {
min-width: unset;
height: auto;
}
.index .top .short {
padding: 0;
}
.index .top #add-url,
.index .top #add-keyword {
width: calc(100% - 10px);
margin: 10px 0px !important;
}
.index .top input.button {
margin: 0 !important;
width: 100%;
}
.index table.tblSorter {
min-width: 600px;
}
.index table.tblSorter td.actions .button_stats {
background-size: 15px;
margin: 3px;
}
.index table.tblSorter td.actions .button_share {
background-size: 15px;
margin: 3px;
}
.index table.tblSorter td.actions .button_edit {
background-size: 15px;
margin: 3px;
}
.index table.tblSorter td.actions .button_delete {
background-size: 15px;
margin: 3px;
}
#copybox {
width: 100%;
}
.jquery-notify-bar {
margin-top: 210px;
margin-bottom: -210px;
width: calc(100vw - 20px);
}
.jquery-notify-bar a {
margin-left: -30px;
}
#footer {
display: none;
}
.infos #wrap {
margin-top: 30px;
}
.infos #wrap #headers li {
margin: 0;
display: inline-block;
}
.infos #tabs {
min-width: initial;
}
.infos #tabs .tab {
overflow: scroll;
}
.infos #tabs ul#headers {
margin: 20px 0;
}
.infos #tabs ul#headers li a {
padding: 10px 5px;
}
.infos #tabs ul#headers li h2 {
margin: 0;
}
body>div>pre {
padding-left: 20px;
}
}
h2.linkpre{
padding-top: 20px;
}
strong.qrurl{
max-width: 100%;
word-wrap: break-word;
}

View File

@ -0,0 +1,872 @@
@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800");
@import url("https://fonts.googleapis.com/icon?family=Material+Icons");
body {
background-color: #efefef;
display: inline
}
div,
p,
td,
input,
p {
font-family: 'Open Sans', sans-serif !important
}
h1,
h2 {
color: #1d1d1d
}
p {
color: #313131
}
a,
a:link,
a:active,
a:visited {
color: #828282;
text-decoration: none
}
a:hover {
color: #000;
transition: 0.4s all
}
input {
padding: 10px;
border: none !important;
background: #fff !important;
color: #313131 !important;
font-size: 1em !important;
outline: none;
margin: 0px 5px !important;
border-radius: 0 !important;
border-radius: 3px !important
}
input.button,
input.submit,
input[type="submit"] {
border-left: 7px solid #007bff !important;
background: #fff !important;
font-weight: 600;
transition: 0.3s all !important;
cursor: pointer;
background: #007bff !important;
border-left: none !important;
color: white !important;
font-weight: 700
}
input.button:hover,
input.submit:hover,
input[type="submit"]:hover {
background: #0056b3 !important;
background: #0056b3 !important
}
input[type="button"]:disabled,
input[type="submit"]:disabled {
cursor: not-allowed
}
input.text,
input[type="text"] {
border: 1px solid rgba(255, 255, 255, 0.25) !important;
transition: 0.4s all
}
select {
width: 150px;
padding: 5px 35px 5px 10px;
border: none;
border-radius: 0;
height: 26px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
color: #313131;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAeCAYAAADZ7LXbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAKRJREFUeNrs1TEKwkAQheEvIoI2nsk7qFdIq1hoJ3gCC5sUVpY23sDKXnvrYOUBbGITG0kQjQriPlgYhmF/3ryFjbIs82nVfEEBEiAB8k+Q+q1IkqSDNVq4lMy3scIkjuP0FSdbjNHMLys6OwyQVlnXEsOS2QP6OL8jkzlmd70jus86eBT8FIu8PqGXg6oFX6ARGthgX+V1ReFnDJAACZAfhFwHAJI7HF2lZGQaAAAAAElFTkSuQmCC) 96%/15% no-repeat #fff;
margin: 5px 10px;
transition: 0.4s all;
outline: none
}
select:hover {
background: url(data:image/png;base64,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) 96%/15% no-repeat #fff
}
#javascript_error {
background: red;
color: white;
padding: 20px;
margin-top: 10px
}
.jquery-notify-bar {
color: #fff;
text-shadow: none;
border: none;
opacity: 1;
box-shadow: none;
font-size: 1.1em;
font-weight: 500;
position: static;
margin-top: 30px;
margin-bottom: -45px;
padding: 10px
}
.jquery-notify-bar a,
.jquery-notify-bar a:link,
.jquery-notify-bar a:active,
.jquery-notify-bar a:visited {
color: white
}
.jquery-notify-bar.error,
.jquery-notify-bar.fail {
background-color: #FF9800;
color: white
}
.jquery-notify-bar.success {
color: white;
background-color: #4CAF50
}
.login #wrap {
margin: auto
}
.login label {
font-size: 1em;
font-weight: 600
}
.login .login-logo {
width: 150px;
margin: 30px auto;
display: flex
}
.login input.text {
width: 270px !important
}
.login input.button {
font-weight: 600;
padding: 10px 25px;
margin-top: 15px !important;
font-weight: 600;
background: #007bff !important
}
.login input.button else {
background: #fff !important;
border-left: 7px solid #007bff !important
}
.login input.button:hover {
background: #0062cc !important
}
.login .error {
padding: 10px;
background: #007bff;
color: white;
position: fixed;
top: 0;
left: 0;
width: 100%;
margin: 0;
text-align: center
}
.index #add-url {
width: 200px
}
.index #new_url_form {
box-sizing: border-box;
overflow: hidden
}
.index #new_url {
border: none;
background: #f7f7f7;
text-align: left
}
.index #new_url input.button {
margin-top: 10px !important
}
.index #new_url div {
background: #f7f7f7;
padding: 4px;
padding-top: 0px
}
.index .create {
background: #007bff !important;
width: 150px;
font-size: 1.3em !important;
border: none !important;
font-weight: 700;
text-align: center;
margin-top: 10px !important;
margin-left: 20px !important
}
.index .top {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 50px;
background: #0062cc
}
.index .top label {
font-size: 1em;
font-weight: 600;
color: #313131;
color: #f7f7f7
}
.index .top input.text {
width: 360px;
padding: 4px;
font-weight: 200;
font-size: 1em !important;
background: #f7f7f7 !important
}
.index .top .short {
padding-left: 10px
}
.index .top #add-keyword {
width: 100px
}
.index .top input.button {
font-weight: 500;
padding: 5px 10px;
font-size: 1em !important;
margin-left: 10px !important;
background: #e8e8e8 !important;
background: #f7f7f7 !important;
font-weight: 700;
color: #007bff !important
}
.index .top input.button:hover {
background: #0062cc !important;
background: #e6e6e6 !important
}
.index .top #new_url_form {
margin-left: 260px;
padding: 12px
}
.index table.tblSorter {
background-color: #f7f7f7;
color: #313131
}
.index table.tblSorter a {
color: #313131
}
.index table.tblSorter small a {
color: gray
}
.index table.tblSorter thead tr .tablesorter-header {
padding: 10px
}
.index table.tblSorter tfoot tr {
background-color: #f7f7f7
}
.index table.tblSorter thead tr th,
.index table.tblSorter tfoot tr th,
.index table.tblSorter th.header {
background-color: transparent;
border: none;
padding: 4px
}
.index table.tblSorter thead tr .tablesorter-headerAsc,
.index table.tblSorter thead tr .tablesorter-headerDesc {
background-color: #e8e8e8 !important
}
.index table.tblSorter tbody td {
color: #313131;
padding: 5px;
background-color: #fff;
vertical-align: middle;
transition: 0.4s all
}
.index table.tblSorter tbody tr:hover td {
background-color: #e8e8e8 !important
}
.index table.tblSorter tbody tr.normal-row td {
background: #fff
}
.index table.tblSorter .keyword {
border-left: 7px solid #007bff
}
.index table.tblSorter input.text {
padding: 5px;
margin: 8px 5px !important
}
.index table.tblSorter .navigation .nav_link a {
background: #fff;
border: none
}
.index table.tblSorter .navigation .nav_link a:hover {
background: #e8e8e8
}
.index table.tblSorter tr.edit-row td {
background: #f7f7f7 !important
}
.index table.tblSorter td.actions .button_stats {
background: #007bff url(../img/stats.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
border: none;
padding: 3px;
border-radius: 2px
}
.index table.tblSorter td.actions .button_stats:hover {
background: #0062cc url(../img/stats.png) 0px center no-repeat;
background-size: 23px;
background-position: center
}
.index table.tblSorter td.actions .button_share {
background: #007bff url(../img/share.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
border: none;
padding: 3px;
border-radius: 2px
}
.index table.tblSorter td.actions .button_share:hover {
background: #0062cc url(../img/share.png) 0px center no-repeat;
background-size: 23px;
background-position: center
}
.index table.tblSorter td.actions .button_edit {
background: #007bff url(../img/edit.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
border: none;
padding: 3px;
border-radius: 2px
}
.index table.tblSorter td.actions .button_edit:hover {
background: #0062cc url(../img/edit.png) 0px center no-repeat;
background-size: 23px;
background-position: center
}
.index table.tblSorter td.actions .button_delete {
background: red url(../img/delete.png) 0px center no-repeat;
background-size: 23px;
background-position: center;
border: none;
padding: 3px;
border-radius: 2px
}
.index table.tblSorter td.actions .button_delete:hover {
background: #c00 url(../img/delete.png) 0px center no-repeat;
background-size: 23px;
background-position: center
}
nav {
background: #f7f7f7;
height: 100%;
position: fixed;
top: 0;
left: 0;
padding: 50px 30px;
width: 200px;
z-index: 10
}
nav li#admin_menu_logout_link {
font-size: 1.3em
}
nav ul#admin_menu li:hover {
list-style-type: none;
color: #000
}
nav ul#admin_menu li {
color: #1d1d1d;
padding: 5px 0
}
nav #admin_menu_logout_link:hover {
color: #1d1d1d !important
}
nav .admin_menu_sublevel {
font-weight: 100;
margin-left: -20px
}
nav .material-icons {
font-size: 1em;
vertical-align: middle;
margin-top: -1px
}
nav ul {
list-style-type: none
}
img.logo {
width: 90px;
position: fixed;
top: 0;
left: 0;
background: #007bff;
padding: 9px 150px 8px 20px;
z-index: 20
}
.nav-open {
color: white;
position: fixed;
top: 0;
right: 0;
z-index: 30;
padding: 10px 15px;
cursor: pointer;
display: none
}
.nav-open i {
font-size: 2em;
line-height: 30px
}
header {
display: none
}
#wrap #tabs {
min-width: 580px
}
#wrap #tabs .tab {
background: #fff !important
}
#wrap #tabs .wrap_unfloat {
margin-bottom: -5px
}
#wrap #tabs ul#headers {
border: none;
padding: 0px
}
#wrap #tabs li {
color: #313131
}
#wrap #tabs #historical_clicks li:hover {
background: #dedede !important
}
#wrap #tabs ul#headers li a,
#wrap #tabs #stats_lines li a {
outline: none;
border: none;
border-radius: 0;
background: #fff;
color: #313131;
padding: 10px 15px 7px 25px
}
#wrap #tabs ul#headers li a:hover,
#wrap #tabs #stats_lines li a:hover {
background: #dedede
}
#wrap #tabs ul#headers li a h2,
#wrap #tabs #stats_lines li a h2 {
font-weight: 400;
font-size: 1em
}
#wrap #tabs ul#headers li a.selected,
#wrap #tabs #stats_lines li a.selected {
background: #e8e8e8;
border-bottom: 2px solid #007bff
}
#wrap #tabs ul#headers li a.selected:hover,
#wrap #tabs #stats_lines li a.selected:hover {
background: #d1d1d1
}
#wrap #tabs #stats_lines li a {
padding: 7px 15px
}
#wrap #tabs ul.toggle_display {
border: none
}
#wrap #tabs svg ellipse {
fill: #007bff
}
body.index #wrap {
padding-top: 50px
}
#wrap {
background: none;
margin-left: 270px;
border: none;
color: #313131;
max-width: 100%
}
.notice {
width: calc(100% - 22px);
margin: 0;
padding: 0;
border-radius: 0;
background: #007bff;
border: 1px solid #007bff;
padding: 10px
}
.notice p {
color: white
}
#shareboxes {
margin-top: -10px
}
#sharebox {
width: 558px;
margin-right: 0px
}
div.share {
background: #f7f7f7;
border-radius: 0;
border: none;
padding: 0px 20px 10px;
margin-top: 10px
}
div.share textarea {
background: #fff;
color: #313131;
border: none;
padding: 3px;
outline: none;
margin: 1px !important
}
div.share #charcount {
padding-left: 5px;
color: #313131
}
div.share #share_links a {
color: #313131
}
.sub_wrap,
.plugins main,
.plugin_page_sleeky_settings main,
code {
background: #f7f7f7;
padding: 10px;
padding: 5px 25px;
max-width: 100%
}
.sub_wrap span,
.plugins main span,
.plugin_page_sleeky_settings main span,
code span {
background: rgba(255, 255, 255, 0.2)
}
.sub_wrap code,
.sub_wrap tt,
.plugins main code,
.plugins main tt,
.plugin_page_sleeky_settings main code,
.plugin_page_sleeky_settings main tt,
code code,
code tt {
background: rgba(0, 123, 255, 0.7);
background: rgba(35, 185, 222, 0.5)
}
.sub_wrap a.bookmarklet,
.plugins main a.bookmarklet,
.plugin_page_sleeky_settings main a.bookmarklet,
code a.bookmarklet {
border: none;
background: #fff url(/images/favicon.gif) 4px center no-repeat;
color: #3c3c3c;
border-radius: 1px;
padding: 7px 7px 7px 25px;
color: #333 !important
}
.sub_wrap a.bookmarklet:hover,
.plugins main a.bookmarklet:hover,
.plugin_page_sleeky_settings main a.bookmarklet:hover,
code a.bookmarklet:hover {
background: #e0e0e0 url(/images/favicon.gif) 4px center no-repeat
}
.sub_wrap table.tblSorter,
.plugins main table.tblSorter,
.plugin_page_sleeky_settings main table.tblSorter,
code table.tblSorter {
background: #f7f7f7
}
.sub_wrap table.tblSorter a,
.plugins main table.tblSorter a,
.plugin_page_sleeky_settings main table.tblSorter a,
code table.tblSorter a {
color: #313131
}
.sub_wrap table.tblSorter a:hover,
.plugins main table.tblSorter a:hover,
.plugin_page_sleeky_settings main table.tblSorter a:hover,
code table.tblSorter a:hover {
color: #000
}
.sub_wrap table.tblSorter thead tr th,
.sub_wrap table.tblSorter tfoot tr th,
.sub_wrap table.tblSorter th.header,
.plugins main table.tblSorter thead tr th,
.plugins main table.tblSorter tfoot tr th,
.plugins main table.tblSorter th.header,
.plugin_page_sleeky_settings main table.tblSorter thead tr th,
.plugin_page_sleeky_settings main table.tblSorter tfoot tr th,
.plugin_page_sleeky_settings main table.tblSorter th.header,
code table.tblSorter thead tr th,
code table.tblSorter tfoot tr th,
code table.tblSorter th.header {
border: none;
background-color: #fff;
padding: 10px
}
.sub_wrap table.tblSorter tbody td,
.plugins main table.tblSorter tbody td,
.plugin_page_sleeky_settings main table.tblSorter tbody td,
code table.tblSorter tbody td {
background: #e8e8e8;
color: #313131
}
#filter_options {
padding: 0px 10px !important
}
body>div>pre {
overflow-x: scroll;
padding-left: 290px
}
#footer {
position: fixed;
bottom: 0;
width: 230px;
color: #828282;
padding: 10px;
text-align: left;
z-index: 10
}
#footer p {
background: none;
border: none;
font-size: 1em
}
#footer p a {
background: none;
padding-left: 0;
color: #313131
}
#footer p a:hover {
color: #828282
}
@media (max-width: 899px) {
body.index #wrap {
padding-top: 210px
}
body.tools #wrap,
body.plugins #wrap,
body.plugin_page_sleeky_settings #wrap {
padding-top: 50px
}
#wrap {
margin-left: 0
}
#wrap main {
overflow-x: scroll
}
img.logo {
padding: 9px 100% 8px 20px
}
.nav-open {
display: block
}
nav {
height: 0;
padding: 0;
width: 0
}
nav ul#admin_menu {
position: fixed;
top: 0;
left: 0;
z-index: 9999 !important;
width: 100%;
height: 100%;
padding: 50px;
display: none;
background: #0062cc
}
nav ul#admin_menu li {
color: white
}
nav ul#admin_menu a,
nav ul#admin_menu a:link,
nav ul#admin_menu a:active,
nav ul#admin_menu a:visited {
color: white
}
.index .top {
display: block;
margin-top: 50px;
width: 100vw;
height: auto
}
.index .top form {
margin-left: 0 !important
}
.index .top #new_url_form {
min-width: unset;
height: auto
}
.index .top .short {
padding: 0
}
.index .top #add-url,
.index .top #add-keyword {
width: calc(100% - 10px);
margin: 10px 0px !important
}
.index .top input.button {
margin: 0 !important;
width: 100%
}
.index table.tblSorter {
min-width: 600px
}
.index table.tblSorter td.actions .button_stats {
background-size: 15px;
margin: 3px
}
.index table.tblSorter td.actions .button_share {
background-size: 15px;
margin: 3px
}
.index table.tblSorter td.actions .button_edit {
background-size: 15px;
margin: 3px
}
.index table.tblSorter td.actions .button_delete {
background-size: 15px;
margin: 3px
}
#copybox {
width: 100%
}
.jquery-notify-bar {
margin-top: 210px;
margin-bottom: -210px;
width: calc(100vw - 20px)
}
.jquery-notify-bar a {
margin-left: -30px
}
#footer {
display: none
}
.infos #wrap {
margin-top: 30px
}
.infos #wrap #headers li {
margin: 0;
display: inline-block
}
.infos #tabs {
min-width: initial
}
.infos #tabs .tab {
overflow: scroll
}
.infos #tabs ul#headers {
margin: 20px 0
}
.infos #tabs ul#headers li a {
padding: 10px 5px
}
.infos #tabs ul#headers li h2 {
margin: 0
}
body>div>pre {
padding-left: 20px
}
}

View File

@ -7,7 +7,7 @@ $theme: "dark";
$lightest: #464646;
$light: #313131;
$default: #232323;
$darker: #1d1d1d;
$darker: #121212;
$darkest: #161616;
// Accents

View File

@ -1,10 +1,10 @@
<div class="top" id="add">
<form id="new_url_form" action="javascript:add_link();" method="get">
<label>Link</label>
<input type="url" id="add-url" name="url" value="" class="text" placeholder="e.g. sleeky.flynntes.com" required>
<input type="url" id="add-url" name="url" value="" class="text" placeholder="e.g. a.domain.com" required autocomplete="off">
<label class="short">Short URL</label>
<input type="text" id="add-keyword" name="keyword" value="" class="text" placeholder="e.g. theme">
<input type="hidden" id="nonce-add" name="nonce-add" value="">
<input type="button" id="add-button" name="add-button" value="Shorten" class="button" onclick="add_link();">
<input type="text" id="add-keyword" name="keyword" value="" class="text" placeholder="e.g. theme" autocomplete="off">
<input type="hidden" id="nonce-add" name="nonce-add" value="" autocomplete="off">
<input type="button" id="add-button" name="add-button" value="Shorten" class="button" autocomplete="off" onclick="add_link();">
</form>
</div>

View File

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 228 B

View File

Before

Width:  |  Height:  |  Size: 239 B

After

Width:  |  Height:  |  Size: 239 B

View File

Before

Width:  |  Height:  |  Size: 496 B

After

Width:  |  Height:  |  Size: 496 B

View File

Before

Width:  |  Height:  |  Size: 243 B

After

Width:  |  Height:  |  Size: 243 B

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,79 @@
<?php
/*
Plugin Name: DarkSleeky Backend
Plugin URI: https://sophia.wtf
Description: UI overhaul of the YOURLS backend
Version: 2.4.1
Author: Sophia Atkinson
Author URI: https://sophia.wtf
*/
// No direct call
if( !defined( 'YOURLS_ABSPATH' ) ) die();
// Plugin location URL
$url = yourls_plugin_url( __DIR__ );
yourls_add_action( 'html_head', 'init' );
function init()
{
echo <<<HEAD
<style>body {background: unset;}</style>
HEAD;
}
// Inject Sleeky files
yourls_add_action( 'html_head', 'sleeky_head_scripts' );
function sleeky_head_scripts() {
// This is so the user doesn't have to reload page twice in settings screen
if (isset( $_POST['theme_choice'] )) {
// User has just changed theme
if ($_POST['theme_choice'] == "light") {
setTheme("light");
} else {
setTheme("dark");
}
} else {
// User has not just changed theme
if (yourls_get_option( 'theme_choice' ) == "light") {
setTheme("light");
} else {
setTheme("dark");
}
}
}
// Inject Sleeky files
function setTheme($theme) {
$url = yourls_plugin_url( __DIR__ );
if ($theme == "light") {
echo <<<HEAD
<link rel="stylesheet" href="$url/assets/css/light.css">
<link rel="stylesheet" href="$url/assets/css/animate.min.css">
<script src="$url/assets/js/theme.js"></script>
<meta name="sleeky_theme" content="light">
HEAD;
} else if ($theme == "dark") {
echo <<<HEAD
<link rel="stylesheet" href="$url/assets/css/dark.css">
<link rel="stylesheet" href="$url/assets/css/animate.min.css">
<script src="$url/assets/js/theme.js"></script>
<meta name="sleeky_theme" content="dark">
HEAD;
}
}
// Inject information and options into the frontend
yourls_add_action( 'html_head', 'addOptions' );
function addOptions()
{
$url = yourls_plugin_url( __DIR__ );
echo <<<HEAD
<meta name="pluginURL" content="$url">
HEAD;
}