Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
805558f4e0 | ||
|
|
687bd4ace1 | ||
|
|
f03b03a9ce | ||
|
|
da35e6ed8a | ||
|
|
6cddd7cbfe | ||
|
|
1e6d79af3c | ||
|
|
e731ee38a4 | ||
|
|
bee572f031 | ||
|
|
1a1d7709e6 | ||
|
|
64b91b9185 | ||
|
|
895280fed7 | ||
|
|
5546bacae8 | ||
|
|
172f4d80fe | ||
|
|
3204af9ad6 | ||
|
|
4bc6b7ba48 | ||
|
|
3173fd4b21 | ||
|
|
6deb8a3b95 |
17
README.md
17
README.md
@@ -1,11 +1,16 @@
|
|||||||
|
This project is no longer supported
|
||||||
|
===================================
|
||||||
|
|
||||||
|
Thank you for your support over the years, but as of 10/07/21 this project is no longer supported. It still works perfectly fine, so feel free to download it and use it, but it will no longer receive any updates (and it hasn't done in years anyway!). If anybody would like to fork the repo and continue the project, feel free to do so.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
Infinity Squared
|
Infinity Squared
|
||||||
================
|
================
|
||||||
|
|
||||||
[](https://www.paypal.me/tomslominski)
|
[Download](https://github.com/tomslominski/infinity-squared/releases)
|
||||||
|
|
||||||
[Latest release](https://github.com/tomslominski/infinity-squared/releases)
|
A beautiful public page theme for YOURLS, carefully crafted by [Tom Slominski](https://slomin.ski/). It can be used to give the public access to your short domain, not just registered users.
|
||||||
|
|
||||||
A beautiful public page theme for YOURLS, carefully crafted by [Tom Slominski](http://tomslominski.net/). It can be used to give the public access to your short domain, not just registered users.
|
|
||||||
|
|
||||||

|

|
||||||
###### Front page of Infinity Squared 2.0
|
###### Front page of Infinity Squared 2.0
|
||||||
@@ -23,13 +28,13 @@ Features
|
|||||||
|
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
1. Download the latest [release](https://github.com/tomslominski/infinity-squared/releases) from GitHub and enter the folder which houses `index.php`.
|
1. Download the [latest release](https://github.com/tomslominski/infinity-squared/releases/latest) from GitHub and enter the folder which houses `index.php`.
|
||||||
2. Upload all of the files into the directory where you've installed YOURLS. It doesn't have any additional requirements. If you can run YOURLS, you can run ∞²! Some of the files might collide with the files YOURLS also provides, like `README.md`. You can choose to replace them or not, it doesn't matter.
|
2. Upload all of the files into the directory where you've installed YOURLS. It doesn't have any additional requirements. If you can run YOURLS, you can run ∞²! Some of the files might collide with the files YOURLS also provides, like `README.md`. You can choose to replace them or not, it doesn't matter.
|
||||||
3. Rename `public/config-sample.php` to `public/config.php` and make ∞² suit you.
|
3. Rename `public/config-sample.php` to `public/config.php` and make ∞² suit you.
|
||||||
|
|
||||||
Upgrade
|
Upgrade
|
||||||
-------
|
-------
|
||||||
1. Download the latest [release](https://github.com/tomslominski/infinity-squared/releases) from GitHub and enter the folder which houses `index.php`.
|
1. Download the [latest release](https://github.com/tomslominski/infinity-squared/releases/latest) from GitHub and enter the folder which houses `index.php`.
|
||||||
2. Remember to do a backup before you make any changes on your server.
|
2. Remember to do a backup before you make any changes on your server.
|
||||||
3. Replace all of the files from the downloaded release with the release on your server. **Remember that if you've made any changes to the core theme files, they will be overwritten, so be careful!** A `config.php` is not provided with the release, so you don't need to worry about loosing your settings.
|
3. Replace all of the files from the downloaded release with the release on your server. **Remember that if you've made any changes to the core theme files, they will be overwritten, so be careful!** A `config.php` is not provided with the release, so you don't need to worry about loosing your settings.
|
||||||
4. Copy over any new settings from `config-sample.php` into your own `config.php`.
|
4. Copy over any new settings from `config-sample.php` into your own `config.php`.
|
||||||
|
|||||||
26
footer.php
26
footer.php
@@ -10,24 +10,30 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="content site-footer">
|
<footer class="content site-footer">
|
||||||
<p><?php yourls_e( 'Powered by <a href="http://yourls.org/">YOURLS</a>. Designed by <a href="http://tomslominski.net/">Tom Slominski</a>.', 'isq_translation') ?> <a class="icon-github" href="https://github.com/tomslominski/infinity-squared"><?php include('public/images/github.svg'); ?></a></p>
|
<p><?php yourls_e( 'Powered by <a href="http://yourls.org/">YOURLS</a>.</p>
|
||||||
<?php if ( !empty(ISQ::$recaptcha['sitekey']) && !empty(ISQ::$recaptcha['secret']) ) { ?>
|
<?php if( 'recaptcha' == is_get_antispam_method() || 'recaptcha_v3' == is_get_antispam_method() ) : ?>
|
||||||
<p class="recaptcha-cookie"><?php yourls_e('This site uses cookies for Google reCAPTCHA','isq_translation')?>.<p>
|
<p class="recaptcha-cookie"><?php yourls_e('This site uses cookies for Google reCAPTCHA','isq_translation'); ?>.<p>
|
||||||
<?php }; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php global $dependencies; ?>
|
<?php global $dependencies; ?>
|
||||||
|
|
||||||
<?php if ( in_array( 'clipboard.js', $dependencies ) ) { ?>
|
<?php if( in_array( 'recaptcha_v3', $dependencies ) ) : ?>
|
||||||
<script src="public/js/clipboard.min.js"></script>
|
<script type="text/template" id="recaptcha-sitekey"><?php echo ISQ::$recaptcha_v3['sitekey']; ?></script>
|
||||||
<script src="public/js/app.js"></script>
|
<script src="https://www.google.com/recaptcha/api.js?render=<?php echo ISQ::$recaptcha_v3['sitekey']; ?>"></script>
|
||||||
<?php }
|
<?php elseif( in_array( 'recaptcha', $dependencies ) ) : ?>
|
||||||
|
|
||||||
if ( in_array( 'reCAPTCHA', $dependencies ) ) { ?>
|
|
||||||
<script src="https://www.google.com/recaptcha/api.js"></script>
|
<script src="https://www.google.com/recaptcha/api.js"></script>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if( in_array( 'clipboard.js', $dependencies ) ) { ?>
|
||||||
|
<script src="public/js/clipboard.min.js"></script>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if( in_array( 'recaptcha_v3', $dependencies ) || in_array( 'clipboard.js', $dependencies ) ) : ?>
|
||||||
|
<script src="public/js/app.js"></script>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -10,7 +10,10 @@ if( @include dirname(__FILE__) . '/public/config.php' ) {
|
|||||||
include( dirname(__FILE__) . '/public/config-sample.php' );
|
include( dirname(__FILE__) . '/public/config-sample.php' );
|
||||||
}
|
}
|
||||||
|
|
||||||
class ISQ { public static $general = array(), $links = array(), $social = array(), $recaptcha = array(); }
|
class ISQ { public static $general = array(), $links = array(), $social = array(), $recaptcha = array(), $recaptcha_v3 = array(); }
|
||||||
|
|
||||||
|
// Load functions
|
||||||
|
require_once( dirname(__FILE__) . '/public/functions.php' );
|
||||||
|
|
||||||
// Default dependencies
|
// Default dependencies
|
||||||
$dependencies = array();
|
$dependencies = array();
|
||||||
|
|||||||
42
index.php
42
index.php
@@ -30,28 +30,34 @@ $title = isset( $_REQUEST['title'] ) ? yourls_sanitize_title( $_REQUEST['title
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
if ( function_exists( 'yourls_is_valid_user' ) && yourls_is_valid_user() == 1 ) {
|
switch( is_get_antispam_method() ) {
|
||||||
|
case 'login': ?>
|
||||||
|
<input type="hidden" name="antispam_method" value="user_login" class="hidden">
|
||||||
|
<?php break;
|
||||||
|
|
||||||
echo '<input type="hidden" name="antispam_method" value="user_login" class="hidden">';
|
case 'recaptcha_v3':
|
||||||
|
$dependencies[] = 'recaptcha_v3';
|
||||||
|
?>
|
||||||
|
<input type="hidden" name="antispam_method" value="recaptcha_v3" class="hidden">
|
||||||
|
<input type="hidden" name="recaptcha_token" id="recaptcha_token" class="hidden">
|
||||||
|
<?php break;
|
||||||
|
|
||||||
} else if ( !empty(ISQ::$recaptcha['sitekey']) && !empty(ISQ::$recaptcha['secret']) ) {
|
case 'recaptcha':
|
||||||
|
$dependencies[] = 'recaptcha';
|
||||||
|
?>
|
||||||
|
<input type="hidden" name="antispam_method" value="recaptcha" class="hidden">
|
||||||
|
|
||||||
$dependencies[] = 'reCAPTCHA';
|
<div class="form-item recaptcha-container">
|
||||||
|
<p><label class="primary" title=""><?php yourls_e( 'Verification', 'isq_translation'); ?></label></p>
|
||||||
echo '<input type="hidden" name="antispam_method" value="recaptcha" class="hidden">';
|
<p><label class="secondary"><?php yourls_e( 'reCAPTCHA verification used to ensure you are not a bot.', 'isq_translation'); ?></label></p>
|
||||||
?>
|
<div class="g-recaptcha" data-sitekey="<?php echo ISQ::$recaptcha['sitekey']; ?>"></div>
|
||||||
<div class="form-item recaptcha-container">
|
</div>
|
||||||
<p><label class="primary" title=""><?php yourls_e( 'Verification', 'isq_translation'); ?></label></p>
|
<?php break;
|
||||||
<p><label class="secondary"><?php yourls_e( 'reCAPTCHA verification used to ensure you are not a bot.', 'isq_translation'); ?></label></p>
|
|
||||||
<div class="g-recaptcha" data-sitekey="<?php echo ISQ::$recaptcha['sitekey']; ?>"></div>
|
|
||||||
</div>
|
|
||||||
<?php
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
echo '<input type="hidden" name="antispam_method" value="basic" class="hidden">';
|
|
||||||
echo '<input type="hidden" name="basic_antispam" class="hidden">';
|
|
||||||
|
|
||||||
|
default: ?>
|
||||||
|
<input type="hidden" name="antispam_method" value="basic" class="hidden">
|
||||||
|
<input type="hidden" name="basic_antispam" class="hidden">
|
||||||
|
<?php break;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ ISQ::$links = array(
|
|||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'name' => 'Tom Slominski',
|
'name' => 'Tom Slominski',
|
||||||
'link' => 'http://tomslominski.net/'
|
'link' => 'https://slomin.ski/'
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'name' => yourls__( 'Get ∞²!', 'isq_translation' ),
|
'name' => yourls__( 'Get ∞²!', 'isq_translation' ),
|
||||||
@@ -52,4 +52,11 @@ ISQ::$recaptcha = array(
|
|||||||
'secret' => ''
|
'secret' => ''
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Separate API keys for reCAPTCHA v3
|
||||||
|
ISQ::$recaptcha_v3 = array(
|
||||||
|
'sitekey' => '',
|
||||||
|
'secret' => '',
|
||||||
|
'threshold' => '0.5',
|
||||||
|
);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
67
public/functions.php
Normal file
67
public/functions.php
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return which method is being used for preventing spam,
|
||||||
|
* based on the site config.
|
||||||
|
*
|
||||||
|
* @return string login/recaptcha_v3/recaptcha/basic
|
||||||
|
*/
|
||||||
|
function is_get_antispam_method() {
|
||||||
|
if( 1 == yourls_is_valid_user() ) {
|
||||||
|
return 'login';
|
||||||
|
} elseif( isset( ISQ::$recaptcha_v3['sitekey'] ) && ISQ::$recaptcha_v3['sitekey'] && isset( ISQ::$recaptcha_v3['secret'] ) && ISQ::$recaptcha_v3['secret'] ) {
|
||||||
|
return 'recaptcha_v3';
|
||||||
|
} elseif( isset( ISQ::$recaptcha['sitekey'] ) && ISQ::$recaptcha['sitekey'] && isset( ISQ::$recaptcha['secret'] ) && ISQ::$recaptcha['secret'] ) {
|
||||||
|
return 'recaptcha';
|
||||||
|
} else {
|
||||||
|
return 'basic';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Terminate the request without shortening the URL and
|
||||||
|
* display an error.
|
||||||
|
*
|
||||||
|
* @param string $message Error message.
|
||||||
|
* @param string $action Action message, defaults to "Go home".
|
||||||
|
*/
|
||||||
|
function display_error( $message, $action = null ) {
|
||||||
|
echo '<div class="content error">';
|
||||||
|
echo '<p class="message">' . $message . '</p>';
|
||||||
|
|
||||||
|
echo '<p class="action">';
|
||||||
|
if( !empty( $action ) ) {
|
||||||
|
echo $action;
|
||||||
|
} else {
|
||||||
|
echo '<a href="' . YOURLS_SITE . '" class="button">' . yourls__( '← Go home and try again', 'isq_translation' ) . '</a>';
|
||||||
|
}
|
||||||
|
echo '</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
include('footer.php');
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get remote file, either using CURL or file_get_contents
|
||||||
|
* depending on server configuration.
|
||||||
|
*
|
||||||
|
* @param string $url Remote file URL.
|
||||||
|
* @return string Remote file contents.
|
||||||
|
*/
|
||||||
|
function get_remote_file( $url ) {
|
||||||
|
if( function_exists( 'curl_init' ) ) {
|
||||||
|
$curl = curl_init();
|
||||||
|
curl_setopt( $curl, CURLOPT_URL, $url );
|
||||||
|
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
|
||||||
|
$output = curl_exec( $curl );
|
||||||
|
curl_close( $curl );
|
||||||
|
return $output;
|
||||||
|
} elseif( ini_get( 'allow_url_fopen' ) ) {
|
||||||
|
return file_get_contents( $url );
|
||||||
|
} else {
|
||||||
|
display_error( yourls__( 'Your server doesn\'t support reCAPTCHA. Ask your host to install cURL or turn on allow_url_fopen.', 'isq_translation' ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,3 +48,14 @@ if( document.querySelectorAll( '.copy-button' ).length > 0 ) {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// reCAPTCHA
|
||||||
|
if( 'object' === typeof grecaptcha ) {
|
||||||
|
grecaptcha.ready( function() {
|
||||||
|
var sitekey = document.querySelectorAll( '#recaptcha-sitekey' )[0].innerHTML;
|
||||||
|
|
||||||
|
grecaptcha.execute( sitekey, {action: 'homepage'} ).then( function( token ) {
|
||||||
|
document.querySelectorAll( '#recaptcha_token' )[0].value = token;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
BIN
public/languages/isq_translation-de_DE.mo
Normal file
BIN
public/languages/isq_translation-de_DE.mo
Normal file
Binary file not shown.
173
public/languages/isq_translation-de_DE.po
Normal file
173
public/languages/isq_translation-de_DE.po
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: POEditor.com\n"
|
||||||
|
"Project-Id-Version: infinitysqaure\n"
|
||||||
|
"Language: de\n"
|
||||||
|
|
||||||
|
#: footer.php:3
|
||||||
|
msgid "The bookmarklet"
|
||||||
|
msgstr "Das Lesezeichen"
|
||||||
|
|
||||||
|
#: footer.php:5
|
||||||
|
msgid "Save this as a bookmark."
|
||||||
|
msgstr "Speichere dies als Lesezeichen."
|
||||||
|
|
||||||
|
#: footer.php:6
|
||||||
|
msgid "Add this to your bookmarks or drag it to your bookmarks bar to quickly access shortening functions."
|
||||||
|
msgstr "Füge dies zu deinen Lesezeichen hinzu oder ziehe es in deine Lesezeichenleiste, um schnell auf die Verkürzungsfunktionen zuzugreifen."
|
||||||
|
|
||||||
|
#: footer.php:7 index.php:59
|
||||||
|
msgid "Shorten"
|
||||||
|
msgstr "Verkürzen"
|
||||||
|
|
||||||
|
#: footer.php:8
|
||||||
|
msgid "This bookmarklet takes the page URL and title and opens a new tab, where you can fill out a CAPTCHA. If you have selected text before using the bookmarklet, that will be used as the keyword."
|
||||||
|
msgstr "Dieses Lesezeichen verwendet die Seiten-URL und den Titel und öffnet eine neue Registerkarte, auf der Sie ein CAPTCHA ausfüllen können. Wenn du vor der Verwendung des Lesezeichens Text ausgewählt hast, wird dieser als Schlüsselwort verwendet."
|
||||||
|
|
||||||
|
#: footer.php:9
|
||||||
|
msgid "Support for bookmarklets on mobile varies. For example, they work on Chrome for Android but you have to add and sync them from your desktop."
|
||||||
|
msgstr "Die Unterstützung für Lesezeichen auf Mobilgeräten ist unterschiedlich. Zum Beispiel funktionieren sie unter Chrome für Android, aber Sie müssen sie von Ihrem Desktop aus hinzufügen und synchronisieren."
|
||||||
|
|
||||||
|
#: footer.php:13
|
||||||
|
msgid "Powered by <a href=\"http://yourls.org/\">YOURLS</a>. Designed by <a href=\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
msgstr "Unterstützt von <a href=\"http://yourls.org/\"> YOURLS </a>. Entworfen von <a href=\"http://tomslominski.net/\"> Tom Slominski </a>."
|
||||||
|
|
||||||
|
#: footer.php:15
|
||||||
|
msgid "This site uses cookies for Google reCAPTCHA"
|
||||||
|
msgstr "Diese Website verwendet Cookies für Google reCAPTCHA"
|
||||||
|
|
||||||
|
#: index.php:10
|
||||||
|
msgid "Enter a new URL to shorten"
|
||||||
|
msgstr "Gebe eine neue URL zum Kürzen ein"
|
||||||
|
|
||||||
|
#: index.php:13
|
||||||
|
msgid "Long URL"
|
||||||
|
msgstr "Lange URL"
|
||||||
|
|
||||||
|
#: index.php:14
|
||||||
|
msgid "Paste the long URL here. This is required."
|
||||||
|
msgstr "Füge hier die lange URL ein. Dies ist erforderlich."
|
||||||
|
|
||||||
|
#: index.php:20
|
||||||
|
msgid "Custom keyword"
|
||||||
|
msgstr "Benutzerdefiniertes Schlüsselwort"
|
||||||
|
|
||||||
|
#: index.php:21
|
||||||
|
msgid "A keyword replaces the default short string."
|
||||||
|
msgstr "Ein Schlüsselwort ersetzt die Standard-Kurzzeichenfolge."
|
||||||
|
|
||||||
|
#: index.php:26
|
||||||
|
msgid "Custom title"
|
||||||
|
msgstr "Benutzerdefinierter Titel"
|
||||||
|
|
||||||
|
#: index.php:27
|
||||||
|
msgid "Optional title used when sharing a link from YOURLS using social sharers."
|
||||||
|
msgstr "Optionaler Titel, der verwendet wird, wenn ein Link von YOURLS mithilfe von Social Sharern freigegeben wird."
|
||||||
|
|
||||||
|
#: index.php:44
|
||||||
|
msgid "Verification"
|
||||||
|
msgstr "Überprüfung"
|
||||||
|
|
||||||
|
#: index.php:45
|
||||||
|
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
||||||
|
msgstr "Die reCAPTCHA-Überprüfung wird verwendet, um sicherzustellen, dass du kein Bot bist."
|
||||||
|
|
||||||
|
#: public/config-sample.php:26
|
||||||
|
msgid "Get ∞²!"
|
||||||
|
msgstr "Hole dir ∞²!"
|
||||||
|
|
||||||
|
#: public/config-sample.php:30
|
||||||
|
msgid "Admin area"
|
||||||
|
msgstr "Admin-Bereich"
|
||||||
|
|
||||||
|
#: result.php:12
|
||||||
|
msgid "← Go home and try again"
|
||||||
|
msgstr "& larr; Geh nach Hause und versuche es erneut"
|
||||||
|
|
||||||
|
#: result.php:22
|
||||||
|
msgid "You haven't entered a URL to shorten."
|
||||||
|
msgstr "Du hast keine zu verkürzende URL eingegeben."
|
||||||
|
|
||||||
|
#: result.php:27
|
||||||
|
msgid "The keyword %1$s is reserved."
|
||||||
|
msgstr "Das Schlüsselwort% 1 $ s ist reserviert."
|
||||||
|
|
||||||
|
#: result.php:32
|
||||||
|
msgid "The keyword %1$s is taken."
|
||||||
|
msgstr "Das Schlüsselwort% 1 $ s wird verwendet."
|
||||||
|
|
||||||
|
#: result.php:50
|
||||||
|
msgid "Are you a bot? Google certainly thinks you are."
|
||||||
|
msgstr "Bist du ein Bot? Google glaubt sicherlich, dass du einer bist."
|
||||||
|
|
||||||
|
#: result.php:58
|
||||||
|
msgid "Are you a bot? The verification was not completed successfully."
|
||||||
|
msgstr "Bist du ein Bot? Die Überprüfung wurde nicht erfolgreich abgeschlossen."
|
||||||
|
|
||||||
|
#: result.php:64
|
||||||
|
msgid "Are you a bot? No antispam protection was completed successfully."
|
||||||
|
msgstr "Bist du ein Bot? Es wurde kein Antispam-Schutz erfolgreich abgeschlossen."
|
||||||
|
|
||||||
|
#: result.php:84
|
||||||
|
msgid "The URL could not be shortened."
|
||||||
|
msgstr "Die URL konnte nicht gekürzt werden."
|
||||||
|
|
||||||
|
#: result.php:101
|
||||||
|
msgid "Your short URL"
|
||||||
|
msgstr "Deine kurze URL"
|
||||||
|
|
||||||
|
#: result.php:105
|
||||||
|
msgid "Original URL"
|
||||||
|
msgstr "Ursprüngliche URL"
|
||||||
|
|
||||||
|
#: result.php:108 result.php:124 result.php:139
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "In die Zwischenablage kopieren"
|
||||||
|
|
||||||
|
#: result.php:109 result.php:125 result.php:140
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "In die Zwischenablage kopiert"
|
||||||
|
|
||||||
|
#: result.php:111 result.php:127 result.php:142
|
||||||
|
msgid "Press ⌘+C to copy"
|
||||||
|
msgstr "Drücke zum Kopieren ⌘ + C."
|
||||||
|
|
||||||
|
#: result.php:112 result.php:128 result.php:143
|
||||||
|
msgid "Press Ctrl+C to copy"
|
||||||
|
msgstr "Drücke zum Kopieren Strg + C."
|
||||||
|
|
||||||
|
#: result.php:113 result.php:129 result.php:144
|
||||||
|
msgid "Tap copy"
|
||||||
|
msgstr "Tippe auf Kopieren"
|
||||||
|
|
||||||
|
#: result.php:114 result.php:130 result.php:145
|
||||||
|
msgid "Failed to copy"
|
||||||
|
msgstr "Kopieren fehlgeschlagen"
|
||||||
|
|
||||||
|
#: result.php:121
|
||||||
|
msgid "Short URL"
|
||||||
|
msgstr "Kurze URL"
|
||||||
|
|
||||||
|
#: result.php:136
|
||||||
|
msgid "Stats"
|
||||||
|
msgstr "Statistiken"
|
||||||
|
|
||||||
|
#: result.php:153
|
||||||
|
msgid "Share"
|
||||||
|
msgstr "Teilen"
|
||||||
|
|
||||||
|
#: result.php:154
|
||||||
|
msgid "Share your short URL"
|
||||||
|
msgstr "Teile deine kurze URL"
|
||||||
|
|
||||||
|
#: result.php:175
|
||||||
|
msgid "QR code"
|
||||||
|
msgstr "QR-Code"
|
||||||
|
|
||||||
|
#: result.php:176
|
||||||
|
msgid "Share your link with external devices"
|
||||||
|
msgstr "Teile deinen Link mit externen Geräten"
|
||||||
|
|
||||||
Binary file not shown.
220
public/languages/isq_translation-ru_RU.po
Normal file
220
public/languages/isq_translation-ru_RU.po
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"POT-Creation-Date: 2016-11-27 12:21+0300\n"
|
||||||
|
"PO-Revision-Date: 2016-11-27 20:56+0300\n"
|
||||||
|
"Last-Translator: Pavel Mezhuev <pavel@onlyfriends.info>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: ru_RU\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 1.8.11\n"
|
||||||
|
"X-Poedit-Basepath: ../../..\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||||
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
"X-Poedit-KeywordsList: yourls_e;yourls__\n"
|
||||||
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
"X-Poedit-SearchPath-0: trunk\n"
|
||||||
|
"X-Poedit-SearchPathExcluded-0: trunk/js\n"
|
||||||
|
"X-Poedit-SearchPathExcluded-1: trunk/admin\n"
|
||||||
|
"X-Poedit-SearchPathExcluded-2: trunk/includes\n"
|
||||||
|
"X-Poedit-SearchPathExcluded-3: trunk/yourls-*.php\n"
|
||||||
|
|
||||||
|
#: footer.php:3
|
||||||
|
msgid "The bookmarklet"
|
||||||
|
msgstr "Букмарклет"
|
||||||
|
|
||||||
|
#: footer.php:5
|
||||||
|
msgid "Save this as a bookmark."
|
||||||
|
msgstr "Сохраните это как закладку"
|
||||||
|
|
||||||
|
#: footer.php:6
|
||||||
|
msgid ""
|
||||||
|
"Add this to your bookmarks or drag it to your bookmarks bar to quickly "
|
||||||
|
"access shortening functions."
|
||||||
|
msgstr ""
|
||||||
|
"Перетащите это на панель закладок для быстрого доступа к функции сокращения "
|
||||||
|
"ссылок."
|
||||||
|
|
||||||
|
#: footer.php:7 index.php:59
|
||||||
|
msgid "Shorten"
|
||||||
|
msgstr "Сократить"
|
||||||
|
|
||||||
|
#: footer.php:8
|
||||||
|
msgid ""
|
||||||
|
"This bookmarklet takes the page URL and title and opens a new tab, where you "
|
||||||
|
"can fill out a CAPTCHA. If you have selected text before using the "
|
||||||
|
"bookmarklet, that will be used as the keyword."
|
||||||
|
msgstr ""
|
||||||
|
"Букмарклет позволяет быстро создать короткую ссылку, использую адрес и "
|
||||||
|
"заголовок текущей страницы. Если перед использованием букмарклета выделить "
|
||||||
|
"на странице текст, то он будет использован как ключевое слово."
|
||||||
|
|
||||||
|
#: footer.php:9
|
||||||
|
msgid ""
|
||||||
|
"Support for bookmarklets on mobile varies. For example, they work on Chrome "
|
||||||
|
"for Android but you have to add and sync them from your desktop."
|
||||||
|
msgstr ""
|
||||||
|
"Поддержка букмарклетов на мобильных устройствах не гарантируются. Например, "
|
||||||
|
"они работают в Chrome для Android, но сперва вы должны добавить их на "
|
||||||
|
"стационарном компьютере и провести синхронизацию."
|
||||||
|
|
||||||
|
#: footer.php:13
|
||||||
|
msgid ""
|
||||||
|
"Powered by <a href=\"http://yourls.org/\">YOURLS</a>. Designed by <a href="
|
||||||
|
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
msgstr ""
|
||||||
|
"Работает на <a href=\"http://yourls.org/\">YOURLS</a>. Дизайн <a href="
|
||||||
|
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
|
||||||
|
#: footer.php:15
|
||||||
|
msgid "This site uses cookies for Google reCAPTCHA"
|
||||||
|
msgstr "Этот сайт использует куки-файлы для Google reCAPTCHA"
|
||||||
|
|
||||||
|
#: index.php:10
|
||||||
|
msgid "Enter a new URL to shorten"
|
||||||
|
msgstr "Пожалуйста, введите URL"
|
||||||
|
|
||||||
|
#: index.php:13
|
||||||
|
msgid "Long URL"
|
||||||
|
msgstr "Исходная ссылка"
|
||||||
|
|
||||||
|
#: index.php:14
|
||||||
|
msgid "Paste the long URL here. This is required."
|
||||||
|
msgstr "Укажите ссылку, которую требуется сократить. Обязательно к заполнению."
|
||||||
|
|
||||||
|
#: index.php:20
|
||||||
|
msgid "Custom keyword"
|
||||||
|
msgstr "Ключевое слово"
|
||||||
|
|
||||||
|
#: index.php:21
|
||||||
|
msgid "A keyword replaces the default short string."
|
||||||
|
msgstr "Заменяет короткий адрес по умолчанию."
|
||||||
|
|
||||||
|
#: index.php:26
|
||||||
|
msgid "Custom title"
|
||||||
|
msgstr "Наименование"
|
||||||
|
|
||||||
|
#: index.php:27
|
||||||
|
msgid ""
|
||||||
|
"Optional title used when sharing a link from YOURLS using social sharers."
|
||||||
|
msgstr "При размещении ссылки в социальных сетях."
|
||||||
|
|
||||||
|
#: index.php:44
|
||||||
|
msgid "Verification"
|
||||||
|
msgstr "Проверка"
|
||||||
|
|
||||||
|
#: index.php:45
|
||||||
|
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
||||||
|
msgstr "reCAPTCHA используется для защиты от спама."
|
||||||
|
|
||||||
|
#: public/config-sample.php:26
|
||||||
|
msgid "Get ∞²!"
|
||||||
|
msgstr "Получить ∞²!"
|
||||||
|
|
||||||
|
#: public/config-sample.php:30
|
||||||
|
msgid "Admin area"
|
||||||
|
msgstr "Администратор"
|
||||||
|
|
||||||
|
#: result.php:12
|
||||||
|
msgid "← Go home and try again"
|
||||||
|
msgstr "← Вернуться и попробовать снова"
|
||||||
|
|
||||||
|
#: result.php:22
|
||||||
|
msgid "You haven't entered a URL to shorten."
|
||||||
|
msgstr "Вы не указали ссылку, которую требуется сократить."
|
||||||
|
|
||||||
|
#: result.php:27
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is reserved."
|
||||||
|
msgstr "Ключевое слово %1$s зарезервировано."
|
||||||
|
|
||||||
|
#: result.php:32
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is taken."
|
||||||
|
msgstr "Ключевое слово %1$s уже используется."
|
||||||
|
|
||||||
|
#: result.php:50
|
||||||
|
msgid "Are you a bot? Google certainly thinks you are."
|
||||||
|
msgstr "Вы бот? Пожалуйста вернитесь и попробуйте снова."
|
||||||
|
|
||||||
|
#: result.php:58
|
||||||
|
msgid "Are you a bot? The verification was not completed successfully."
|
||||||
|
msgstr "Вы бот? Проверка не была успешно завершена."
|
||||||
|
|
||||||
|
#: result.php:64
|
||||||
|
msgid "Are you a bot? No antispam protection was completed successfully."
|
||||||
|
msgstr "Вы бот? Проверка не была успешно завершена."
|
||||||
|
|
||||||
|
#: result.php:84
|
||||||
|
msgid "The URL could not be shortened."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:101
|
||||||
|
msgid "Your short URL"
|
||||||
|
msgstr "Ваша короткая ссылка"
|
||||||
|
|
||||||
|
#: result.php:105
|
||||||
|
msgid "Original URL"
|
||||||
|
msgstr "Исходная ссылка"
|
||||||
|
|
||||||
|
#: result.php:108 result.php:124 result.php:139
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "Скопировать в буфер обмена"
|
||||||
|
|
||||||
|
#: result.php:109 result.php:125 result.php:140
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "Cкопировано в буфер обмена"
|
||||||
|
|
||||||
|
#: result.php:111 result.php:127 result.php:142
|
||||||
|
msgid "Press ⌘+C to copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:112 result.php:128 result.php:143
|
||||||
|
msgid "Press Ctrl+C to copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:113 result.php:129 result.php:144
|
||||||
|
msgid "Tap copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:114 result.php:130 result.php:145
|
||||||
|
msgid "Failed to copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:121
|
||||||
|
msgid "Short URL"
|
||||||
|
msgstr "Короткая ссылка"
|
||||||
|
|
||||||
|
#: result.php:136
|
||||||
|
msgid "Stats"
|
||||||
|
msgstr "Статистика"
|
||||||
|
|
||||||
|
#: result.php:153
|
||||||
|
msgid "Share"
|
||||||
|
msgstr "Поделиться"
|
||||||
|
|
||||||
|
#: result.php:154
|
||||||
|
msgid "Share your short URL"
|
||||||
|
msgstr "Поделиться короткой ссылкой в социальных сетях"
|
||||||
|
|
||||||
|
#: result.php:175
|
||||||
|
msgid "QR code"
|
||||||
|
msgstr "QR-код"
|
||||||
|
|
||||||
|
#: result.php:176
|
||||||
|
msgid "Share your link with external devices"
|
||||||
|
msgstr "Поделиться короткой ссылкой с другим устройством"
|
||||||
|
|
||||||
|
#~ msgid "Copied!"
|
||||||
|
#~ msgstr "Скопировано!"
|
||||||
|
|
||||||
|
#~ msgid "← Go back and try again"
|
||||||
|
#~ msgstr "← Вернуться и попробовать снова"
|
||||||
|
|
||||||
|
#~ msgid "The keyword %1$s is restricted."
|
||||||
|
#~ msgstr "Ключевое слово %1$s запрещено."
|
||||||
|
|
||||||
|
#~ msgid "Click on a link and press Ctrl+C to quickly copy it."
|
||||||
|
#~ msgstr "Для копирования щёлкните по ссылке и нажмите Ctrl+C."
|
||||||
BIN
public/languages/isq_translation-zh_CN.mo
Normal file
BIN
public/languages/isq_translation-zh_CN.mo
Normal file
Binary file not shown.
204
public/languages/isq_translation-zh_CN.po
Normal file
204
public/languages/isq_translation-zh_CN.po
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Infinity Squared\n"
|
||||||
|
"POT-Creation-Date: 2019-05-26 04:25+0800\n"
|
||||||
|
"PO-Revision-Date: 2019-05-26 04:55+0800\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 2.2.3\n"
|
||||||
|
"X-Poedit-KeywordsList: yourls__;yourls_e;yourls_s;yourls_se;"
|
||||||
|
"yourls_esc_attr__;yourls_esc_html__;yourls_x;yourls_ex;yourls_esc_attr_x;"
|
||||||
|
"yourls_esc_html_x;yourls_n:1,2;yourls_nx:1,2;yourls_n_noop:1,2;"
|
||||||
|
"yourls_nx_noop:1,2\n"
|
||||||
|
"X-Poedit-Basepath: ../..\n"
|
||||||
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
"Last-Translator: wordlesswind <i@qingly.me>\n"
|
||||||
|
"Language: zh_CN\n"
|
||||||
|
"X-Poedit-SearchPath-0: public/languages\n"
|
||||||
|
"X-Poedit-SearchPath-1: .\n"
|
||||||
|
|
||||||
|
#: footer.php:3
|
||||||
|
msgid "The bookmarklet"
|
||||||
|
msgstr "书签"
|
||||||
|
|
||||||
|
#: footer.php:5
|
||||||
|
msgid "Save this as a bookmark."
|
||||||
|
msgstr "将其另存为书签。"
|
||||||
|
|
||||||
|
#: footer.php:6
|
||||||
|
msgid ""
|
||||||
|
"Add this to your bookmarks or drag it to your bookmarks bar to quickly "
|
||||||
|
"access shortening functions."
|
||||||
|
msgstr "将其添加到书签或将其拖拽到书签栏中,以便快速访问缩短功能。"
|
||||||
|
|
||||||
|
#: footer.php:7 index.php:59
|
||||||
|
msgid "Shorten"
|
||||||
|
msgstr "缩短"
|
||||||
|
|
||||||
|
#: footer.php:8
|
||||||
|
msgid ""
|
||||||
|
"This bookmarklet takes the page URL and title and opens a new tab, where you "
|
||||||
|
"can fill out a CAPTCHA. If you have selected text before using the "
|
||||||
|
"bookmarklet, that will be used as the keyword."
|
||||||
|
msgstr ""
|
||||||
|
"此书签会获取页面的URL和标题,并打开一个新标签页,您可以在其中填写验证码。如果"
|
||||||
|
"您在使用书签之前选择了文本,那么它将成为关键字。"
|
||||||
|
|
||||||
|
#: footer.php:9
|
||||||
|
msgid ""
|
||||||
|
"Support for bookmarklets on mobile varies. For example, they work on Chrome "
|
||||||
|
"for Android but you have to add and sync them from your desktop."
|
||||||
|
msgstr ""
|
||||||
|
"对移动设备上的书签的支持各不相同。例如,它们适用于 Android 的 Chrome,但您必"
|
||||||
|
"须从桌面添加并同步它们。"
|
||||||
|
|
||||||
|
#: footer.php:13
|
||||||
|
msgid ""
|
||||||
|
"Powered by <a href=\"http://yourls.org/\">YOURLS</a>. Designed by <a href="
|
||||||
|
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
msgstr ""
|
||||||
|
"由 <a href=\"http://yourls.org/\">YOURLS</a> 驱动。由 <a href=\"http://"
|
||||||
|
"tomslominski.net/\">Tom Slominski </a>设计。"
|
||||||
|
|
||||||
|
#: footer.php:15
|
||||||
|
msgid "This site uses cookies for Google reCAPTCHA"
|
||||||
|
msgstr "本网站需要 cookies 来使用 Google reCAPTCHA"
|
||||||
|
|
||||||
|
#: index.php:10
|
||||||
|
msgid "Enter a new URL to shorten"
|
||||||
|
msgstr "输入要缩短的新网址"
|
||||||
|
|
||||||
|
#: index.php:13
|
||||||
|
msgid "Long URL"
|
||||||
|
msgstr "长网址"
|
||||||
|
|
||||||
|
#: index.php:14
|
||||||
|
msgid "Paste the long URL here. This is required."
|
||||||
|
msgstr "必须在此粘贴长网址。"
|
||||||
|
|
||||||
|
#: index.php:20
|
||||||
|
msgid "Custom keyword"
|
||||||
|
msgstr "自定义关键字"
|
||||||
|
|
||||||
|
#: index.php:21
|
||||||
|
msgid "A keyword replaces the default short string."
|
||||||
|
msgstr "关键字将替换默认的短字符串。"
|
||||||
|
|
||||||
|
#: index.php:26
|
||||||
|
msgid "Custom title"
|
||||||
|
msgstr "自定义标题"
|
||||||
|
|
||||||
|
#: index.php:27
|
||||||
|
msgid ""
|
||||||
|
"Optional title used when sharing a link from YOURLS using social sharers."
|
||||||
|
msgstr "可选标题,在 YOURLS 使用 social sharers 分享链接时采用"
|
||||||
|
|
||||||
|
#: index.php:44
|
||||||
|
msgid "Verification"
|
||||||
|
msgstr "验证"
|
||||||
|
|
||||||
|
#: index.php:45
|
||||||
|
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
||||||
|
msgstr "reCAPTCHA 验证用于确保您不是机器人。"
|
||||||
|
|
||||||
|
#: public/config-sample.php:26
|
||||||
|
msgid "Get ∞²!"
|
||||||
|
msgstr "获取 ∞²!"
|
||||||
|
|
||||||
|
#: public/config-sample.php:30
|
||||||
|
msgid "Admin area"
|
||||||
|
msgstr "管理界面"
|
||||||
|
|
||||||
|
#: result.php:12
|
||||||
|
msgid "← Go home and try again"
|
||||||
|
msgstr "返回首页并再试一次"
|
||||||
|
|
||||||
|
#: result.php:22
|
||||||
|
msgid "You haven't entered a URL to shorten."
|
||||||
|
msgstr "您尚未输入要缩短的网址。"
|
||||||
|
|
||||||
|
#: result.php:27
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is reserved."
|
||||||
|
msgstr "关键字 %1$s 已被保留。"
|
||||||
|
|
||||||
|
#: result.php:32
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is taken."
|
||||||
|
msgstr "关键字 %1$s 已被使用。"
|
||||||
|
|
||||||
|
#: result.php:50
|
||||||
|
msgid "Are you a bot? Google certainly thinks you are."
|
||||||
|
msgstr "您是机器人吗?Google 毫无疑问地认为您是。"
|
||||||
|
|
||||||
|
#: result.php:58
|
||||||
|
msgid "Are you a bot? The verification was not completed successfully."
|
||||||
|
msgstr "您是机器人吗? 验证没有顺利完成。"
|
||||||
|
|
||||||
|
#: result.php:64
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Are you a bot? No antispam protection was completed successfully."
|
||||||
|
msgstr "您是机器人吗?防垃圾邮件保护已成功完成。"
|
||||||
|
|
||||||
|
#: result.php:84
|
||||||
|
msgid "The URL could not be shortened."
|
||||||
|
msgstr "该网址无法被缩短。"
|
||||||
|
|
||||||
|
#: result.php:101
|
||||||
|
msgid "Your short URL"
|
||||||
|
msgstr "您的短网址"
|
||||||
|
|
||||||
|
#: result.php:105
|
||||||
|
msgid "Original URL"
|
||||||
|
msgstr "原始网址"
|
||||||
|
|
||||||
|
#: result.php:108 result.php:124 result.php:139
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "复制到剪贴板"
|
||||||
|
|
||||||
|
#: result.php:109 result.php:125 result.php:140
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "已复制到剪贴板"
|
||||||
|
|
||||||
|
#: result.php:111 result.php:127 result.php:142
|
||||||
|
msgid "Press ⌘+C to copy"
|
||||||
|
msgstr "按 ⌘+ C 进行复制"
|
||||||
|
|
||||||
|
#: result.php:112 result.php:128 result.php:143
|
||||||
|
msgid "Press Ctrl+C to copy"
|
||||||
|
msgstr "按 Ctrl + C 进行复制"
|
||||||
|
|
||||||
|
#: result.php:113 result.php:129 result.php:144
|
||||||
|
msgid "Tap copy"
|
||||||
|
msgstr "点击复制"
|
||||||
|
|
||||||
|
#: result.php:114 result.php:130 result.php:145
|
||||||
|
msgid "Failed to copy"
|
||||||
|
msgstr "无法复制"
|
||||||
|
|
||||||
|
#: result.php:121
|
||||||
|
msgid "Short URL"
|
||||||
|
msgstr "短网址"
|
||||||
|
|
||||||
|
#: result.php:136
|
||||||
|
msgid "Stats"
|
||||||
|
msgstr "统计"
|
||||||
|
|
||||||
|
#: result.php:153
|
||||||
|
msgid "Share"
|
||||||
|
msgstr "分享"
|
||||||
|
|
||||||
|
#: result.php:154
|
||||||
|
msgid "Share your short URL"
|
||||||
|
msgstr "分享您的短网址"
|
||||||
|
|
||||||
|
#: result.php:175
|
||||||
|
msgid "QR code"
|
||||||
|
msgstr "二维码"
|
||||||
|
|
||||||
|
#: result.php:176
|
||||||
|
msgid "Share your link with external devices"
|
||||||
|
msgstr "与外部设备分享您的链接"
|
||||||
82
result.php
82
result.php
@@ -1,23 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
include('header.php');
|
include('header.php');
|
||||||
|
|
||||||
function display_error( $message, $action = null ) {
|
|
||||||
echo '<div class="content error">';
|
|
||||||
echo '<p class="message">' . $message . '</p>';
|
|
||||||
|
|
||||||
echo '<p class="action">';
|
|
||||||
if( !empty( $action ) ) {
|
|
||||||
echo $action;
|
|
||||||
} else {
|
|
||||||
echo '<a href="' . YOURLS_SITE . '" class="button">' . yourls__( '← Go home and try again', 'isq_translation' ) . '</a>';
|
|
||||||
}
|
|
||||||
echo '</p>';
|
|
||||||
echo '</div>';
|
|
||||||
|
|
||||||
include('footer.php');
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( empty( $_REQUEST['url'] ) ) {
|
if ( empty( $_REQUEST['url'] ) ) {
|
||||||
display_error( yourls__( 'You haven\'t entered a URL to shorten.', 'isq_translation' ) );
|
display_error( yourls__( 'You haven\'t entered a URL to shorten.', 'isq_translation' ) );
|
||||||
};
|
};
|
||||||
@@ -35,34 +18,45 @@ if ( !empty( $_REQUEST['keyword'] ) && yourls_keyword_is_taken( $_REQUEST['keywo
|
|||||||
// Check what CAPTCHA method was used
|
// Check what CAPTCHA method was used
|
||||||
$antispam_method = $_REQUEST['antispam_method'];
|
$antispam_method = $_REQUEST['antispam_method'];
|
||||||
|
|
||||||
if ( $antispam_method == 'user_login' ) {
|
switch( is_get_antispam_method() ) {
|
||||||
|
case 'login':
|
||||||
|
if( !yourls_is_valid_user() ) {
|
||||||
|
display_error( yourls__( 'You are not logged in - please go back and try again.', 'isq_translation' ) );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// User is logged into YOURLS
|
case 'recaptcha_v3':
|
||||||
|
$recaptcha_data = get_remote_file( 'https://www.google.com/recaptcha/api/siteverify?secret=' . ISQ::$recaptcha_v3['secret'] . '&response=' . $_POST['recaptcha_token'] );
|
||||||
|
$recaptcha = json_decode( $recaptcha_data );
|
||||||
|
|
||||||
} else if ( $antispam_method == 'recaptcha' ) {
|
if( $recaptcha->success != true || $recaptcha->action != 'homepage' || $recaptcha->score < ISQ::$recaptcha_v3['threshold'] ) {
|
||||||
|
display_error( yourls__( 'Are you a bot? Google certainly thinks you are.', 'isq_translation' ) );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// Google reCAPTCHA is enabled
|
case 'recaptcha':
|
||||||
$recaptcha_data = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . ISQ::$recaptcha['secret'] . '&response=' . $_REQUEST['g-recaptcha-response']);
|
// Google reCAPTCHA is enabled
|
||||||
$recaptcha_json = json_decode($recaptcha_data, TRUE);
|
$recaptcha_data = get_remote_file( 'https://www.google.com/recaptcha/api/siteverify?secret=' . ISQ::$recaptcha['secret'] . '&response=' . $_POST['g-recaptcha-response'] );
|
||||||
|
$recaptcha_json = json_decode( $recaptcha_data, true );
|
||||||
|
|
||||||
// What happens when the reCAPTCHA was completed incorrectly
|
// What happens when the reCAPTCHA was completed incorrectly
|
||||||
if ( $recaptcha_json['success'] != 'true' ) {
|
if ( $recaptcha_json['success'] != 'true' ) {
|
||||||
display_error( yourls__( 'Are you a bot? Google certainly thinks you are.', 'isq_translation' ) );
|
display_error( yourls__( 'Are you a bot? Google certainly thinks you are.', 'isq_translation' ) );
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
} else if ( $antispam_method == 'basic' ) {
|
case 'basic':
|
||||||
|
// Basic antispam protection fallback
|
||||||
// Basic antispam protection fallback
|
// What happens when it was not completed correctly
|
||||||
// What happens when it was not completed correctly
|
if( !empty( $_POST['basic_antispam'] ) ) {
|
||||||
if ( $_REQUEST['basic_antispam'] != "" ) {
|
display_error( yourls__( 'Are you a bot? The anti-spam check was not completed successfully.', 'isq_translation' ) );
|
||||||
display_error( yourls__( 'Are you a bot? The verification was not completed successfully.', 'isq_translation' ) );
|
}
|
||||||
}
|
break;
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// No antispam protection was detected
|
|
||||||
display_error( yourls__( 'Are you a bot? No antispam protection was completed successfully.', 'isq_translation' ) );
|
|
||||||
|
|
||||||
|
default:
|
||||||
|
// No anti-spam check was completed at all
|
||||||
|
display_error( yourls__( 'Are you a bot? No anti-spam check was completed successfully.', 'isq_translation' ) );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get parameters -- they will all be sanitized in yourls_add_new_link()
|
// Get parameters -- they will all be sanitized in yourls_add_new_link()
|
||||||
@@ -131,7 +125,7 @@ $dependencies[] = 'clipboard.js';
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-item half-width right">
|
<div class="form-item half-width right">
|
||||||
<label for="stats" class="primary"><?php /* translators: This is short for statistics */ yourls_e( 'Stats', 'isq_translation'); ?></label>
|
<label for="stats" class="primary"><?php /* translators: This is short for statistics */ yourls_e( 'Stats', 'isq_translation'); ?></label>
|
||||||
<div class="input-with-copy">
|
<div class="input-with-copy">
|
||||||
@@ -162,19 +156,19 @@ $dependencies[] = 'clipboard.js';
|
|||||||
|
|
||||||
if ( ISQ::$social['tumblr'] ) { echo '<span onclick="window.open(\'http://www.tumblr.com/share/link?url=' . $encoded_shorturl . '&name=' . $encoded_title . '\',\'_blank\',\'width=550,height=380\')" class="button social-button tumblr" title="Share on Tumblr">' . file_get_contents('public/images/tumblr.svg') . '</span>'; }
|
if ( ISQ::$social['tumblr'] ) { echo '<span onclick="window.open(\'http://www.tumblr.com/share/link?url=' . $encoded_shorturl . '&name=' . $encoded_title . '\',\'_blank\',\'width=550,height=380\')" class="button social-button tumblr" title="Share on Tumblr">' . file_get_contents('public/images/tumblr.svg') . '</span>'; }
|
||||||
|
|
||||||
if ( ISQ::$social['linkedin'] ) { echo '<span onclick="window.open(\'https://www.linkedin.com/shareArticle?mini=true&url=' . $encoded_shorturl . '&title=' . $encoded_title . '\',\'_blank\',\'width=550,height=380\')" class="button social-button linkedin" title="Share on LinkedIn">' . file_get_contents('public/images/linkedin.svg') . '</span>'; }
|
if ( ISQ::$social['linkedin'] ) { echo '<span onclick="window.open(\'https://www.linkedin.com/shareArticle?mini=true&url=' . $encoded_shorturl . '&title=' . $encoded_title . '\',\'_blank\',\'width=550,height=380\')" class="button social-button linkedin" title="Share on LinkedIn">' . file_get_contents('public/images/linkedin.svg') . '</span>'; }
|
||||||
|
|
||||||
if ( ISQ::$social['googleplus'] ) { echo '<span onclick="window.open(\'https://plus.google.com/share?url=' . $encoded_shorturl . '\',\'_blank\',\'width=550,height=380\')" class="button social-button googleplus" title="Share on Google+">' . file_get_contents('public/images/googleplus.svg') . '</span>'; }
|
if ( ISQ::$social['googleplus'] ) { echo '<span onclick="window.open(\'https://plus.google.com/share?url=' . $encoded_shorturl . '\',\'_blank\',\'width=550,height=380\')" class="button social-button googleplus" title="Share on Google+">' . file_get_contents('public/images/googleplus.svg') . '</span>'; }
|
||||||
|
|
||||||
if ( ISQ::$social['vk'] ) { echo '<span onclick="window.open(\'https://vk.com/share.php?url=' . $encoded_shorturl . '\',\'_blank\',\'width=550,height=380\')" class="button social-button vk" title="Share on VK">' . file_get_contents('public/images/vk.svg') . '</span>'; }
|
if ( ISQ::$social['vk'] ) { echo '<span onclick="window.open(\'https://vk.com/share.php?url=' . $encoded_shorturl . '\',\'_blank\',\'width=550,height=380\')" class="button social-button vk" title="Share on VK">' . file_get_contents('public/images/vk.svg') . '</span>'; }
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if ( ISQ::$general['qr'] ) : ?>
|
<?php if ( ISQ::$general['qr'] ) : ?>
|
||||||
<!-- QR code -->
|
<!-- QR code -->
|
||||||
<h2><?php yourls_e( 'QR code', 'isq_translation' ); ?></h2>
|
<h2><?php yourls_e( 'QR code', 'isq_translation' ); ?></h2>
|
||||||
<p><?php yourls_e( 'Share your link with external devices', 'isq_translation' ); ?></p>
|
<p><?php yourls_e( 'Share your link with external devices', 'isq_translation' ); ?></p>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
// PHP QR Code is LGPL licensed
|
// PHP QR Code is LGPL licensed
|
||||||
include('public/phpqrcode/qrlib.php');
|
include('public/phpqrcode/qrlib.php');
|
||||||
|
|||||||
Reference in New Issue
Block a user