Fix all existing links and redirection to ?do=login

This commit is contained in:
ArthurHoaro 2020-01-23 20:05:41 +01:00
parent dd51f653d0
commit 9e4cc28e29
6 changed files with 31 additions and 31 deletions

View file

@ -159,7 +159,7 @@ function checkDateFormat($format, $string)
*/ */
function generateLocation($referer, $host, $loopTerms = array()) function generateLocation($referer, $host, $loopTerms = array())
{ {
$finalReferer = '?'; $finalReferer = './?';
// No referer if it contains any value in $loopCriteria. // No referer if it contains any value in $loopCriteria.
foreach (array_filter($loopTerms) as $value) { foreach (array_filter($loopTerms) as $value) {

View file

@ -7,8 +7,8 @@ Note that only the `default` theme supports translations.
### Contributing ### Contributing
We encourage the community to contribute to Shaarli's translation either by improving existing We encourage the community to contribute to Shaarli's translation either by improving existing
translations or submitting a new language. translations or submitting a new language.
Contributing to the translation does not require development skill. Contributing to the translation does not require development skill.
@ -21,8 +21,8 @@ First, install [Poedit](https://poedit.net/) tool.
Poedit will extract strings to translate from the PHP source code. Poedit will extract strings to translate from the PHP source code.
**Important**: due to the usage of a template engine, it's important to generate PHP cache files to extract **Important**: due to the usage of a template engine, it's important to generate PHP cache files to extract
every translatable string. every translatable string.
You can either use [this script](https://gist.github.com/ArthurHoaro/5d0323f758ab2401ef444a53f54e9a07) (recommended) You can either use [this script](https://gist.github.com/ArthurHoaro/5d0323f758ab2401ef444a53f54e9a07) (recommended)
or visit every template page in your browser to generate cache files, while logged in. or visit every template page in your browser to generate cache files, while logged in.
@ -41,7 +41,7 @@ http://<replace_domain>/?do=daily
http://<replace_domain>/?post http://<replace_domain>/?post
http://<replace_domain>/?do=export http://<replace_domain>/?do=export
http://<replace_domain>/?do=import http://<replace_domain>/?do=import
http://<replace_domain>/?do=login http://<replace_domain>/login
http://<replace_domain>/?do=picwall http://<replace_domain>/?do=picwall
http://<replace_domain>/?do=pluginadmin http://<replace_domain>/?do=pluginadmin
http://<replace_domain>/?do=tagcloud http://<replace_domain>/?do=tagcloud
@ -50,8 +50,8 @@ http://<replace_domain>/?do=taglist
#### Improve existing translation #### Improve existing translation
In Poedit, click on "Edit a Translation", and from Shaarli's directory open In Poedit, click on "Edit a Translation", and from Shaarli's directory open
`inc/languages/<lang>/LC_MESSAGES/shaarli.po`. `inc/languages/<lang>/LC_MESSAGES/shaarli.po`.
The existing list of translatable strings should have been loaded, then click on the "Update" button. The existing list of translatable strings should have been loaded, then click on the "Update" button.
@ -63,20 +63,20 @@ Save when you're done, then you can submit a pull request containing the updated
#### Add a new language #### Add a new language
Open Poedit and select "Create New Translation", then from Shaarli's directory open Open Poedit and select "Create New Translation", then from Shaarli's directory open
`inc/languages/<lang>/LC_MESSAGES/shaarli.po`. `inc/languages/<lang>/LC_MESSAGES/shaarli.po`.
Then select the language you want to create. Then select the language you want to create.
Click on `File > Save as...`, and save your file in `<shaarli directory>/inc/language/<new language>/LC_MESSAGES/shaarli.po`. Click on `File > Save as...`, and save your file in `<shaarli directory>/inc/language/<new language>/LC_MESSAGES/shaarli.po`.
`<new language>` here should be the language code respecting the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) `<new language>` here should be the language code respecting the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2)
format in lowercase (e.g. `de` for German). format in lowercase (e.g. `de` for German).
Then click on the "Update" button, and you can start to translate every available string. Then click on the "Update" button, and you can start to translate every available string.
Save when you're done, then you can submit a pull request containing the new `shaarli.po`. Save when you're done, then you can submit a pull request containing the new `shaarli.po`.
### Theme translations ### Theme translations
Theme translation extensions are loaded automatically if they're present. Theme translation extensions are loaded automatically if they're present.
@ -85,7 +85,7 @@ As a theme developer, all you have to do is to add the `.po` and `.mo` compiled
tpl/<theme name>/language/<lang>/LC_MESSAGES/<theme name>.po tpl/<theme name>/language/<lang>/LC_MESSAGES/<theme name>.po
tpl/<theme name>/language/<lang>/LC_MESSAGES/<theme name>.mo tpl/<theme name>/language/<lang>/LC_MESSAGES/<theme name>.mo
Where `<lang>` is the ISO 3166-1 alpha-2 language code. Where `<lang>` is the ISO 3166-1 alpha-2 language code.
Read the following section "Extend Shaarli's translation" to learn how to generate those files. Read the following section "Extend Shaarli's translation" to learn how to generate those files.
### Extend Shaarli's translation ### Extend Shaarli's translation
@ -106,7 +106,7 @@ First, create your translation files tree directory:
Your `.po` files must be named like your domain. E.g. if your translation domain is `my_theme`, then your file will be Your `.po` files must be named like your domain. E.g. if your translation domain is `my_theme`, then your file will be
`my_theme.po`. `my_theme.po`.
Users have to register your extension in their configuration with the parameter Users have to register your extension in their configuration with the parameter
`translation.extensions.<domain>: <translation files path>`. `translation.extensions.<domain>: <translation files path>`.
Example: Example:
@ -151,11 +151,11 @@ When you're done, open Poedit and load translation strings from sources:
1. `File > New` 1. `File > New`
2. Choose your language 2. Choose your language
3. Save your `PO` file in `<your_module>/languages/<language code>/LC_MESSAGES/my_theme.po`. 3. Save your `PO` file in `<your_module>/languages/<language code>/LC_MESSAGES/my_theme.po`.
4. Go to `Catalog > Properties...` 4. Go to `Catalog > Properties...`
5. Fill the `Translation Properties` tab 5. Fill the `Translation Properties` tab
6. Add your source path in the `Sources Paths` tab 6. Add your source path in the `Sources Paths` tab
7. In the `Sources Keywords` tab uncheck "Also use default keywords" and add the following lines: 7. In the `Sources Keywords` tab uncheck "Also use default keywords" and add the following lines:
``` ```
my_theme_t my_theme_t
my_theme_t:1,2 my_theme_t:1,2

View file

@ -252,7 +252,7 @@ function isLoggedIn()
// Optional redirect after login: // Optional redirect after login:
if (isset($_GET['post'])) { if (isset($_GET['post'])) {
$uri = '?post='. urlencode($_GET['post']); $uri = './?post='. urlencode($_GET['post']);
foreach (array('description', 'source', 'title', 'tags') as $param) { foreach (array('description', 'source', 'title', 'tags') as $param) {
if (!empty($_GET[$param])) { if (!empty($_GET[$param])) {
$uri .= '&'.$param.'='.urlencode($_GET[$param]); $uri .= '&'.$param.'='.urlencode($_GET[$param]);
@ -263,22 +263,22 @@ function isLoggedIn()
} }
if (isset($_GET['edit_link'])) { if (isset($_GET['edit_link'])) {
header('Location: ?edit_link='. escape($_GET['edit_link'])); header('Location: ./?edit_link='. escape($_GET['edit_link']));
exit; exit;
} }
if (isset($_POST['returnurl'])) { if (isset($_POST['returnurl'])) {
// Prevent loops over login screen. // Prevent loops over login screen.
if (strpos($_POST['returnurl'], 'do=login') === false) { if (strpos($_POST['returnurl'], '/login') === false) {
header('Location: '. generateLocation($_POST['returnurl'], $_SERVER['HTTP_HOST'])); header('Location: '. generateLocation($_POST['returnurl'], $_SERVER['HTTP_HOST']));
exit; exit;
} }
} }
header('Location: ?'); header('Location: ./?');
exit; exit;
} else { } else {
$loginManager->handleFailedLogin($_SERVER); $loginManager->handleFailedLogin($_SERVER);
$redir = '&username='. urlencode($_POST['login']); $redir = '?username='. urlencode($_POST['login']);
if (isset($_GET['post'])) { if (isset($_GET['post'])) {
$redir .= '&post=' . urlencode($_GET['post']); $redir .= '&post=' . urlencode($_GET['post']);
foreach (array('description', 'source', 'title', 'tags') as $param) { foreach (array('description', 'source', 'title', 'tags') as $param) {
@ -288,7 +288,7 @@ function isLoggedIn()
} }
} }
// Redirect to login screen. // Redirect to login screen.
echo '<script>alert("'. t("Wrong login/password.") .'");document.location=\'?do=login'.$redir.'\';</script>'; echo '<script>alert("'. t("Wrong login/password.") .'");document.location=\'./login'.$redir.'\';</script>';
exit; exit;
} }
} }
@ -923,7 +923,7 @@ function renderPage($conf, $pluginManager, $bookmarkService, $history, $sessionM
// Show login screen, then redirect to ?post=... // Show login screen, then redirect to ?post=...
if (isset($_GET['post'])) { if (isset($_GET['post'])) {
header( // Redirect to login page, then back to post link. header( // Redirect to login page, then back to post link.
'Location: ?do=login&post='.urlencode($_GET['post']). 'Location: /login?post='.urlencode($_GET['post']).
(!empty($_GET['title'])?'&title='.urlencode($_GET['title']):''). (!empty($_GET['title'])?'&title='.urlencode($_GET['title']):'').
(!empty($_GET['description'])?'&description='.urlencode($_GET['description']):''). (!empty($_GET['description'])?'&description='.urlencode($_GET['description']):'').
(!empty($_GET['tags'])?'&tags='.urlencode($_GET['tags']):''). (!empty($_GET['tags'])?'&tags='.urlencode($_GET['tags']):'').
@ -934,7 +934,7 @@ function renderPage($conf, $pluginManager, $bookmarkService, $history, $sessionM
showLinkList($PAGE, $bookmarkService, $conf, $pluginManager, $loginManager); showLinkList($PAGE, $bookmarkService, $conf, $pluginManager, $loginManager);
if (isset($_GET['edit_link'])) { if (isset($_GET['edit_link'])) {
header('Location: ?do=login&edit_link='. escape($_GET['edit_link'])); header('Location: /login?edit_link='. escape($_GET['edit_link']));
exit; exit;
} }
@ -1890,7 +1890,7 @@ function install($conf, $sessionManager, $loginManager)
echo '<script>alert(' echo '<script>alert('
.'"Shaarli is now configured. ' .'"Shaarli is now configured. '
.'Please enter your login/password and start shaaring your bookmarks!"' .'Please enter your login/password and start shaaring your bookmarks!"'
.');document.location=\'?do=login\';</script>'; .');document.location=\'./login\';</script>';
exit; exit;
} }

View file

@ -203,7 +203,7 @@ public function testGenerateLocation()
public function testGenerateLocationLoop() public function testGenerateLocationLoop()
{ {
$ref = 'http://localhost/?test'; $ref = 'http://localhost/?test';
$this->assertEquals('?', generateLocation($ref, 'localhost', array('test'))); $this->assertEquals('./?', generateLocation($ref, 'localhost', array('test')));
} }
/** /**
@ -212,7 +212,7 @@ public function testGenerateLocationLoop()
public function testGenerateLocationOut() public function testGenerateLocationOut()
{ {
$ref = 'http://somewebsite.com/?test'; $ref = 'http://somewebsite.com/?test';
$this->assertEquals('?', generateLocation($ref, 'localhost')); $this->assertEquals('./?', generateLocation($ref, 'localhost'));
} }

View file

@ -60,7 +60,7 @@
</li> </li>
{else} {else}
<li class="pure-menu-item pure-u-lg-0 shaarli-menu-mobile" id="shaarli-menu-mobile-login"> <li class="pure-menu-item pure-u-lg-0 shaarli-menu-mobile" id="shaarli-menu-mobile-login">
<a href="?do=login" class="pure-menu-link">{'Login'|t}</a> <a href="/login" class="pure-menu-link">{'Login'|t}</a>
</li> </li>
{/if} {/if}
</ul> </ul>
@ -80,7 +80,7 @@
</li> </li>
{if="!$is_logged_in"} {if="!$is_logged_in"}
<li class="pure-menu-item" id="shaarli-menu-desktop-login"> <li class="pure-menu-item" id="shaarli-menu-desktop-login">
<a href="?do=login" class="pure-menu-link" <a href="/login" class="pure-menu-link"
data-open-id="header-login-form" data-open-id="header-login-form"
id="login-button" aria-label="{'Login'|t}" title="{'Login'|t}"> id="login-button" aria-label="{'Login'|t}" title="{'Login'|t}">
<i class="fa fa-user" aria-hidden="true"></i> <i class="fa fa-user" aria-hidden="true"></i>

View file

@ -25,7 +25,7 @@
<li><a href="?do=tools">Tools</a></li> <li><a href="?do=tools">Tools</a></li>
<li><a href="?do=addlink">Add link</a></li> <li><a href="?do=addlink">Add link</a></li>
{else} {else}
<li><a href="?do=login">Login</a></li> <li><a href="/login">Login</a></li>
{/if} {/if}
<li><a href="{$feedurl}?do=rss{$searchcrits}" class="nomobile">RSS Feed</a></li> <li><a href="{$feedurl}?do=rss{$searchcrits}" class="nomobile">RSS Feed</a></li>
{if="$showatom"} {if="$showatom"}