diff options
-rw-r--r-- | .readthedocs.yml | 15 | ||||
-rw-r--r-- | AUTHORS | 13 | ||||
-rw-r--r-- | CHANGELOG.md | 5 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | application/Router.php | 6 | ||||
-rw-r--r-- | assets/default/js/base.js | 22 | ||||
-rw-r--r-- | assets/default/scss/shaarli.scss | 12 | ||||
-rw-r--r-- | doc/md/Download-and-Installation.md | 6 | ||||
-rw-r--r-- | inc/languages/fr/LC_MESSAGES/shaarli.po | 3 | ||||
-rw-r--r-- | index.php | 47 | ||||
-rw-r--r-- | tpl/default/linklist.html | 37 | ||||
-rw-r--r-- | tpl/default/linklist.paging.html | 24 | ||||
-rw-r--r-- | tpl/default/page.footer.html | 4 | ||||
-rw-r--r-- | tpl/default/page.header.html | 31 | ||||
-rw-r--r-- | tpl/default/tag.sort.html | 6 |
15 files changed, 176 insertions, 57 deletions
diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 00000000..09e5a6a5 --- /dev/null +++ b/.readthedocs.yml | |||
@@ -0,0 +1,15 @@ | |||
1 | # .readthedocs.yml | ||
2 | # Read the Docs configuration file | ||
3 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details | ||
4 | |||
5 | # Required | ||
6 | version: 2 | ||
7 | |||
8 | # Build documentation with MkDocs | ||
9 | mkdocs: | ||
10 | configuration: mkdocs.yml | ||
11 | |||
12 | # Optionally set the version of Python and requirements required to build your docs | ||
13 | # https://github.com/rtfd/readthedocs.org/issues/5250 | ||
14 | python: | ||
15 | version: 3.5 \ No newline at end of file | ||
@@ -1,13 +1,15 @@ | |||
1 | 687 ArthurHoaro <arthur@hoa.ro> | 1 | 734 ArthurHoaro <arthur@hoa.ro> |
2 | 355 VirtualTam <virtualtam@flibidi.net> | 2 | 400 VirtualTam <virtualtam@flibidi.net> |
3 | 195 nodiscc <nodiscc@gmail.com> | 3 | 215 nodiscc <nodiscc@gmail.com> |
4 | 56 Sébastien Sauvage <sebsauvage@sebsauvage.net> | 4 | 56 Sébastien Sauvage <sebsauvage@sebsauvage.net> |
5 | 15 Florian Eula <eula.florian@gmail.com> | 5 | 15 Florian Eula <eula.florian@gmail.com> |
6 | 13 Emilien Klein <emilien@klein.st> | 6 | 13 Emilien Klein <emilien@klein.st> |
7 | 12 Nicolas Danelon <hi@nicolasmd.com.ar> | 7 | 12 Nicolas Danelon <hi@nicolasmd.com.ar> |
8 | 9 Willi Eggeling <thewilli@gmail.com> | 8 | 9 Willi Eggeling <thewilli@gmail.com> |
9 | 8 Christophe HENRY <christophe.henry@sbgodin.fr> | 9 | 8 Christophe HENRY <christophe.henry@sbgodin.fr> |
10 | 7 Luce Carević <lcarevic@access42.net> | ||
10 | 6 B. van Berkum <dev@dotmpe.com> | 11 | 6 B. van Berkum <dev@dotmpe.com> |
12 | 6 llune <llune@users.noreply.github.com> | ||
11 | 5 Lucas Cimon <lucas.cimon@gmail.com> | 13 | 5 Lucas Cimon <lucas.cimon@gmail.com> |
12 | 5 Mark Schmitz <kramred@gmail.com> | 14 | 5 Mark Schmitz <kramred@gmail.com> |
13 | 5 kalvn <kalvnthereal@gmail.com> | 15 | 5 kalvn <kalvnthereal@gmail.com> |
@@ -15,7 +17,7 @@ | |||
15 | 4 David Sferruzza <david.sferruzza@gmail.com> | 17 | 4 David Sferruzza <david.sferruzza@gmail.com> |
16 | 4 Immánuel Fodor <immanuelfactor+github@gmail.com> | 18 | 4 Immánuel Fodor <immanuelfactor+github@gmail.com> |
17 | 3 Teromene <teromene@teromene.fr> | 19 | 3 Teromene <teromene@teromene.fr> |
18 | 3 llune <llune@users.noreply.github.com> | 20 | 2 Alexandre G.-Raymond <alex@ndre.gr> |
19 | 2 Chris Kuethe <chris.kuethe@gmail.com> | 21 | 2 Chris Kuethe <chris.kuethe@gmail.com> |
20 | 2 Felix Bartels <felix@host-consultants.de> | 22 | 2 Felix Bartels <felix@host-consultants.de> |
21 | 2 Knah Tsaeb <Knah-Tsaeb@knah-tsaeb.org> | 23 | 2 Knah Tsaeb <Knah-Tsaeb@knah-tsaeb.org> |
@@ -27,11 +29,12 @@ | |||
27 | 2 julienCXX <software@chmodplusx.eu> | 29 | 2 julienCXX <software@chmodplusx.eu> |
28 | 2 philipp-r <philipp-r@users.noreply.github.com> | 30 | 2 philipp-r <philipp-r@users.noreply.github.com> |
29 | 2 pips <pips@e5150.fr> | 31 | 2 pips <pips@e5150.fr> |
32 | 2 trailjeep <trailjeep@gmail.com> | ||
30 | 1 Adrien Oliva <adrien.oliva@yapbreak.fr> | 33 | 1 Adrien Oliva <adrien.oliva@yapbreak.fr> |
31 | 1 Adrien le Maire <adrien@alemaire.be> | 34 | 1 Adrien le Maire <adrien@alemaire.be> |
32 | 1 Alexandre G.-Raymond <alex@ndre.gr> | ||
33 | 1 Alexis J <alexis@effingo.be> | 35 | 1 Alexis J <alexis@effingo.be> |
34 | 1 Angristan <angristan@users.noreply.github.com> | 36 | 1 Angristan <angristan@users.noreply.github.com> |
37 | 1 Bish Erbas <42714627+bisherbas@users.noreply.github.com> | ||
35 | 1 BoboTiG <bobotig@gmail.com> | 38 | 1 BoboTiG <bobotig@gmail.com> |
36 | 1 Bronco <bronco@warriordudimanche.net> | 39 | 1 Bronco <bronco@warriordudimanche.net> |
37 | 1 Buster One <37770318+buster-one@users.noreply.github.com> | 40 | 1 Buster One <37770318+buster-one@users.noreply.github.com> |
diff --git a/CHANGELOG.md b/CHANGELOG.md index ada0f109..865e0370 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md | |||
@@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) | |||
5 | and this project adheres to [Semantic Versioning](http://semver.org/). | 5 | and this project adheres to [Semantic Versioning](http://semver.org/). |
6 | 6 | ||
7 | 7 | ||
8 | ## [v0.10.4](https://github.com/shaarli/Shaarli/releases/tag/v0.10.4) - 2019-04-16 | ||
9 | ### Fixed | ||
10 | - Fix thumbnails disabling if PHP GD is not installed | ||
11 | - Fix a warning if links sticky status isn't set | ||
12 | |||
8 | ## [v0.10.3](https://github.com/shaarli/Shaarli/releases/tag/v0.10.3) - 2019-02-23 | 13 | ## [v0.10.3](https://github.com/shaarli/Shaarli/releases/tag/v0.10.3) - 2019-02-23 |
9 | ### Added | 14 | ### Added |
10 | - Add OpenGraph metadata tags on permalink page | 15 | - Add OpenGraph metadata tags on permalink page |
@@ -9,7 +9,7 @@ _It is designed to be personal (single-user), fast and handy._ | |||
9 | [![](https://img.shields.io/badge/stable-v0.9.7-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.9.7) | 9 | [![](https://img.shields.io/badge/stable-v0.9.7-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.9.7) |
10 | [![](https://img.shields.io/travis/shaarli/Shaarli/stable.svg?label=stable)](https://travis-ci.org/shaarli/Shaarli) | 10 | [![](https://img.shields.io/travis/shaarli/Shaarli/stable.svg?label=stable)](https://travis-ci.org/shaarli/Shaarli) |
11 | • | 11 | • |
12 | [![](https://img.shields.io/badge/latest-v0.10.3-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.10.3) | 12 | [![](https://img.shields.io/badge/latest-v0.10.4-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.10.4) |
13 | [![](https://img.shields.io/travis/shaarli/Shaarli/latest.svg?label=latest)](https://travis-ci.org/shaarli/Shaarli) | 13 | [![](https://img.shields.io/travis/shaarli/Shaarli/latest.svg?label=latest)](https://travis-ci.org/shaarli/Shaarli) |
14 | • | 14 | • |
15 | [![](https://img.shields.io/badge/master-v0.11.x-blue.svg)](https://github.com/shaarli/Shaarli) | 15 | [![](https://img.shields.io/badge/master-v0.11.x-blue.svg)](https://github.com/shaarli/Shaarli) |
diff --git a/application/Router.php b/application/Router.php index 05877acd..d7187487 100644 --- a/application/Router.php +++ b/application/Router.php | |||
@@ -38,6 +38,8 @@ class Router | |||
38 | 38 | ||
39 | public static $PAGE_DELETELINK = 'delete_link'; | 39 | public static $PAGE_DELETELINK = 'delete_link'; |
40 | 40 | ||
41 | public static $PAGE_CHANGE_VISIBILITY = 'change_visibility'; | ||
42 | |||
41 | public static $PAGE_PINLINK = 'pin'; | 43 | public static $PAGE_PINLINK = 'pin'; |
42 | 44 | ||
43 | public static $PAGE_EXPORT = 'export'; | 45 | public static $PAGE_EXPORT = 'export'; |
@@ -149,6 +151,10 @@ class Router | |||
149 | return self::$PAGE_DELETELINK; | 151 | return self::$PAGE_DELETELINK; |
150 | } | 152 | } |
151 | 153 | ||
154 | if (isset($get[self::$PAGE_CHANGE_VISIBILITY])) { | ||
155 | return self::$PAGE_CHANGE_VISIBILITY; | ||
156 | } | ||
157 | |||
152 | if (startsWith($query, 'do=' . self::$PAGE_PINLINK)) { | 158 | if (startsWith($query, 'do=' . self::$PAGE_PINLINK)) { |
153 | return self::$PAGE_PINLINK; | 159 | return self::$PAGE_PINLINK; |
154 | } | 160 | } |
diff --git a/assets/default/js/base.js b/assets/default/js/base.js index 99e03370..d5c29c69 100644 --- a/assets/default/js/base.js +++ b/assets/default/js/base.js | |||
@@ -466,6 +466,28 @@ function init(description) { | |||
466 | }); | 466 | }); |
467 | } | 467 | } |
468 | 468 | ||
469 | const changeVisibilityButtons = document.querySelectorAll('.actions-change-visibility'); | ||
470 | if (changeVisibilityButtons != null && token != null) { | ||
471 | [...changeVisibilityButtons].forEach((button) => { | ||
472 | button.addEventListener('click', (event) => { | ||
473 | event.preventDefault(); | ||
474 | const visibility = event.target.getAttribute('data-visibility'); | ||
475 | |||
476 | const links = []; | ||
477 | const linkCheckedCheckboxes = document.querySelectorAll('.link-checkbox:checked'); | ||
478 | [...linkCheckedCheckboxes].forEach((checkbox) => { | ||
479 | links.push({ | ||
480 | id: checkbox.value, | ||
481 | title: document.querySelector(`.linklist-item[data-id="${checkbox.value}"] .linklist-link`).innerHTML, | ||
482 | }); | ||
483 | }); | ||
484 | |||
485 | const ids = links.map(item => item.id); | ||
486 | window.location = `?change_visibility&token=${token.value}&newVisibility=${visibility}&ids=${ids.join('+')}`; | ||
487 | }); | ||
488 | }); | ||
489 | } | ||
490 | |||
469 | /** | 491 | /** |
470 | * Select all button | 492 | * Select all button |
471 | */ | 493 | */ |
diff --git a/assets/default/scss/shaarli.scss b/assets/default/scss/shaarli.scss index b14052ed..a529f01c 100644 --- a/assets/default/scss/shaarli.scss +++ b/assets/default/scss/shaarli.scss | |||
@@ -716,11 +716,19 @@ body, | |||
716 | } | 716 | } |
717 | } | 717 | } |
718 | 718 | ||
719 | .label { | ||
720 | font-family: Arial, sans-serif; | ||
721 | font-size: .65em; | ||
722 | } | ||
723 | |||
719 | .label-private { | 724 | .label-private { |
720 | border: solid 1px $orange; | 725 | border: solid 1px $orange; |
721 | color: $orange; | 726 | color: $orange; |
722 | font-family: Arial, sans-serif; | 727 | } |
723 | font-size: .65em; | 728 | |
729 | .label-sticky { | ||
730 | border: solid 1px $blue; | ||
731 | color: $blue; | ||
724 | } | 732 | } |
725 | } | 733 | } |
726 | 734 | ||
diff --git a/doc/md/Download-and-Installation.md b/doc/md/Download-and-Installation.md index 1c4ad947..8c9e8a32 100644 --- a/doc/md/Download-and-Installation.md +++ b/doc/md/Download-and-Installation.md | |||
@@ -24,11 +24,11 @@ Using one of the following methods: | |||
24 | 24 | ||
25 | In most cases, you should download the latest Shaarli release from the [releases](https://github.com/shaarli/Shaarli/releases) page. Download our **shaarli-full** archive to include dependencies. | 25 | In most cases, you should download the latest Shaarli release from the [releases](https://github.com/shaarli/Shaarli/releases) page. Download our **shaarli-full** archive to include dependencies. |
26 | 26 | ||
27 | The current latest released version is `v0.10.3` | 27 | The current latest released version is `v0.10.4` |
28 | 28 | ||
29 | ```bash | 29 | ```bash |
30 | $ wget https://github.com/shaarli/Shaarli/releases/download/v0.10.3/shaarli-v0.10.3-full.zip | 30 | $ wget https://github.com/shaarli/Shaarli/releases/download/v0.10.4/shaarli-v0.10.4-full.zip |
31 | $ unzip shaarli-v0.10.3-full.zip | 31 | $ unzip shaarli-v0.10.4-full.zip |
32 | $ mv Shaarli /path/to/shaarli/ | 32 | $ mv Shaarli /path/to/shaarli/ |
33 | ``` | 33 | ``` |
34 | 34 | ||
diff --git a/inc/languages/fr/LC_MESSAGES/shaarli.po b/inc/languages/fr/LC_MESSAGES/shaarli.po index 102c80da..649f6dd5 100644 --- a/inc/languages/fr/LC_MESSAGES/shaarli.po +++ b/inc/languages/fr/LC_MESSAGES/shaarli.po | |||
@@ -1255,6 +1255,9 @@ msgstr "" | |||
1255 | #~ msgid "Selection" | 1255 | #~ msgid "Selection" |
1256 | #~ msgstr "Choisir" | 1256 | #~ msgstr "Choisir" |
1257 | 1257 | ||
1258 | #~ msgid "Select all" | ||
1259 | #~ msgstr "Tout sélectionner" | ||
1260 | |||
1258 | #~ msgid "Public" | 1261 | #~ msgid "Public" |
1259 | #~ msgstr "Publics" | 1262 | #~ msgstr "Publics" |
1260 | 1263 | ||
@@ -1266,6 +1266,51 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, | |||
1266 | exit; | 1266 | exit; |
1267 | } | 1267 | } |
1268 | 1268 | ||
1269 | // -------- User clicked either "Set public" or "Set private" bulk operation | ||
1270 | if ($targetPage == Router::$PAGE_CHANGE_VISIBILITY) { | ||
1271 | if (! $sessionManager->checkToken($_GET['token'])) { | ||
1272 | die(t('Wrong token.')); | ||
1273 | } | ||
1274 | |||
1275 | $ids = trim($_GET['ids']); | ||
1276 | if (strpos($ids, ' ') !== false) { | ||
1277 | // multiple, space-separated ids provided | ||
1278 | $ids = array_values(array_filter(preg_split('/\s+/', escape($ids)))); | ||
1279 | } else { | ||
1280 | // only a single id provided | ||
1281 | $ids = [$ids]; | ||
1282 | } | ||
1283 | |||
1284 | // assert at least one id is given | ||
1285 | if (!count($ids)) { | ||
1286 | die('no id provided'); | ||
1287 | } | ||
1288 | // assert that the visibility is valid | ||
1289 | if (!isset($_GET['newVisibility']) || !in_array($_GET['newVisibility'], ['public', 'private'])) { | ||
1290 | die('invalid visibility'); | ||
1291 | } else { | ||
1292 | $private = $_GET['newVisibility'] === 'private'; | ||
1293 | } | ||
1294 | foreach ($ids as $id) { | ||
1295 | $id = (int) escape($id); | ||
1296 | $link = $LINKSDB[$id]; | ||
1297 | $link['private'] = $private; | ||
1298 | $pluginManager->executeHooks('save_link', $link); | ||
1299 | $LINKSDB[$id] = $link; | ||
1300 | } | ||
1301 | $LINKSDB->save($conf->get('resource.page_cache')); // save to disk | ||
1302 | |||
1303 | $location = '?'; | ||
1304 | if (isset($_SERVER['HTTP_REFERER'])) { | ||
1305 | $location = generateLocation( | ||
1306 | $_SERVER['HTTP_REFERER'], | ||
1307 | $_SERVER['HTTP_HOST'] | ||
1308 | ); | ||
1309 | } | ||
1310 | header('Location: ' . $location); // After deleting the link, redirect to appropriate location | ||
1311 | exit; | ||
1312 | } | ||
1313 | |||
1269 | // -------- User clicked the "EDIT" button on a link: Display link edit form. | 1314 | // -------- User clicked the "EDIT" button on a link: Display link edit form. |
1270 | if (isset($_GET['edit_link'])) { | 1315 | if (isset($_GET['edit_link'])) { |
1271 | $id = (int) escape($_GET['edit_link']); | 1316 | $id = (int) escape($_GET['edit_link']); |
@@ -1888,7 +1933,7 @@ $app->group('/api/v1', function () { | |||
1888 | $this->put('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:putTag')->setName('putTag'); | 1933 | $this->put('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:putTag')->setName('putTag'); |
1889 | $this->delete('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:deleteTag')->setName('deleteTag'); | 1934 | $this->delete('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:deleteTag')->setName('deleteTag'); |
1890 | 1935 | ||
1891 | $this->get('/history', '\Shaarli\Api\Controllers\History:getHistory')->setName('getHistory'); | 1936 | $this->get('/history', '\Shaarli\Api\Controllers\HistoryController:getHistory')->setName('getHistory'); |
1892 | })->add('\Shaarli\Api\ApiMiddleware'); | 1937 | })->add('\Shaarli\Api\ApiMiddleware'); |
1893 | 1938 | ||
1894 | $response = $app->run(true); | 1939 | $response = $app->run(true); |
diff --git a/tpl/default/linklist.html b/tpl/default/linklist.html index d7005c21..a2aaac82 100644 --- a/tpl/default/linklist.html +++ b/tpl/default/linklist.html | |||
@@ -94,7 +94,7 @@ | |||
94 | {'tagged'|t} | 94 | {'tagged'|t} |
95 | {loop="$exploded_tags"} | 95 | {loop="$exploded_tags"} |
96 | <span class="label label-tag" title="{'Remove tag'|t}"> | 96 | <span class="label label-tag" title="{'Remove tag'|t}"> |
97 | <a href="?removetag={function="urlencode($value)"}">{$value}<span class="remove"><i class="fa fa-times"></i></span></a> | 97 | <a href="?removetag={function="urlencode($value)"}">{$value}<span class="remove"><i class="fa fa-times" aria-hidden="true"></i></span></a> |
98 | </span> | 98 | </span> |
99 | {/loop} | 99 | {/loop} |
100 | {/if} | 100 | {/if} |
@@ -146,13 +146,14 @@ | |||
146 | </div> | 146 | </div> |
147 | {/if} | 147 | {/if} |
148 | 148 | ||
149 | {if="$is_logged_in"} | 149 | <div class="linklist-item-editbuttons"> |
150 | <div class="linklist-item-editbuttons"> | 150 | {if="$value.sticky"} |
151 | {if="$value.private"} | 151 | <span class="label label-sticky">{$strSticky}</span> |
152 | <span class="label label-private">{$strPrivate}</span> | 152 | {/if} |
153 | {/if} | 153 | {if="$value.private"} |
154 | </div> | 154 | <span class="label label-private">{$strPrivate}</span> |
155 | {/if} | 155 | {/if} |
156 | </div> | ||
156 | 157 | ||
157 | <h2> | 158 | <h2> |
158 | <a href="{$value.real_url}"> | 159 | <a href="{$value.real_url}"> |
@@ -195,18 +196,18 @@ | |||
195 | <input type="checkbox" class="link-checkbox" value="{$value.id}"> | 196 | <input type="checkbox" class="link-checkbox" value="{$value.id}"> |
196 | </span> | 197 | </span> |
197 | <span class="linklist-item-infos-controls-item ctrl-edit"> | 198 | <span class="linklist-item-infos-controls-item ctrl-edit"> |
198 | <a href="?edit_link={$value.id}" title="{$strEdit}"><i class="fa fa-pencil-square-o edit-link"></i></a> | 199 | <a href="?edit_link={$value.id}" aria-label="{$strEdit}" title="{$strEdit}"><i class="fa fa-pencil-square-o edit-link" aria-hidden="true"></i></a> |
199 | </span> | 200 | </span> |
200 | <span class="linklist-item-infos-controls-item ctrl-delete"> | 201 | <span class="linklist-item-infos-controls-item ctrl-delete"> |
201 | <a href="?delete_link&lf_linkdate={$value.id}&token={$token}" | 202 | <a href="?delete_link&lf_linkdate={$value.id}&token={$token}" aria-label="{$strDelete}" |
202 | title="{$strDelete}" class="delete-link pure-u-0 pure-u-lg-visible confirm-delete"> | 203 | title="{$strDelete}" class="delete-link pure-u-0 pure-u-lg-visible confirm-delete"> |
203 | <i class="fa fa-trash"></i> | 204 | <i class="fa fa-trash" aria-hidden="true"></i> |
204 | </a> | 205 | </a> |
205 | </span> | 206 | </span> |
206 | <span class="linklist-item-infos-controls-item ctrl-pin"> | 207 | <span class="linklist-item-infos-controls-item ctrl-pin"> |
207 | <a href="?do=pin&id={$value.id}&token={$token}" | 208 | <a href="?do=pin&id={$value.id}&token={$token}" |
208 | title="{$strToggleSticky}" class="pin-link {if="$value.sticky"}pinned-link{/if} pure-u-0 pure-u-lg-visible"> | 209 | title="{$strToggleSticky}" aria-label="{$strToggleSticky}" class="pin-link {if="$value.sticky"}pinned-link{/if} pure-u-0 pure-u-lg-visible"> |
209 | <i class="fa fa-thumb-tack"></i> | 210 | <i class="fa fa-thumb-tack" aria-hidden="true"></i> |
210 | </a> | 211 | </a> |
211 | </span> | 212 | </span> |
212 | </div> | 213 | </div> |
@@ -248,10 +249,10 @@ | |||
248 | {ignore}do not add space or line break between these div - Firefox issue{/ignore} | 249 | {ignore}do not add space or line break between these div - Firefox issue{/ignore} |
249 | class="linklist-item-infos-url pure-u-lg-5-12 pure-u-1"> | 250 | class="linklist-item-infos-url pure-u-lg-5-12 pure-u-1"> |
250 | <a href="{$value.real_url}" title="{$value.title}"> | 251 | <a href="{$value.real_url}" title="{$value.title}"> |
251 | <i class="fa fa-link"></i> {$value.url} | 252 | <i class="fa fa-link" aria-hidden="true"></i> {$value.url} |
252 | </a> | 253 | </a> |
253 | <div class="linklist-item-buttons pure-u-0 pure-u-lg-visible"> | 254 | <div class="linklist-item-buttons pure-u-0 pure-u-lg-visible"> |
254 | <a href="#" title="{$strFold}" class="fold-button"><i class="fa fa-chevron-up"></i></a> | 255 | <a href="#" aria-label="{$strFold}" title="{$strFold}" class="fold-button"><i class="fa fa-chevron-up" aria-hidden="true"></i></a> |
255 | </div> | 256 | </div> |
256 | </div> | 257 | </div> |
257 | <div class="mobile-buttons pure-u-1 pure-u-lg-0"> | 258 | <div class="mobile-buttons pure-u-1 pure-u-lg-0"> |
@@ -264,12 +265,12 @@ | |||
264 | {/if} | 265 | {/if} |
265 | {if="$is_logged_in"} | 266 | {if="$is_logged_in"} |
266 | · | 267 | · |
267 | <a href="?delete_link&lf_linkdate={$value.id}&token={$token}" | 268 | <a href="?delete_link&lf_linkdate={$value.id}&token={$token}" aria-label="{$strDelete}" |
268 | title="{$strDelete}" class="delete-link confirm-delete"> | 269 | title="{$strDelete}" class="delete-link confirm-delete"> |
269 | <i class="fa fa-trash"></i> | 270 | <i class="fa fa-trash" aria-hidden="true"></i> |
270 | </a> | 271 | </a> |
271 | · | 272 | · |
272 | <a href="?edit_link={$value.id}" title="{$strEdit}"><i class="fa fa-pencil-square-o edit-link"></i></a> | 273 | <a href="?edit_link={$value.id}" aria-label="{$strEdit}" title="{$strEdit}"><i class="fa fa-pencil-square-o edit-link" aria-hidden="true"></i></a> |
273 | {/if} | 274 | {/if} |
274 | </div> | 275 | </div> |
275 | </div> | 276 | </div> |
diff --git a/tpl/default/linklist.paging.html b/tpl/default/linklist.paging.html index fe665a84..4e50495a 100644 --- a/tpl/default/linklist.paging.html +++ b/tpl/default/linklist.paging.html | |||
@@ -6,21 +6,21 @@ | |||
6 | {'Filters'|t} | 6 | {'Filters'|t} |
7 | </span> | 7 | </span> |
8 | {if="$is_logged_in"} | 8 | {if="$is_logged_in"} |
9 | <a href="?visibility=private" title="{'Only display private links'|t}" | 9 | <a href="?visibility=private" aria-label="{'Only display private links'|t}" title="{'Only display private links'|t}" |
10 | class="{if="$visibility==='private'"}filter-on{else}filter-off{/if}" | 10 | class="{if="$visibility==='private'"}filter-on{else}filter-off{/if}" |
11 | ><i class="fa fa-user-secret"></i></a> | 11 | ><i class="fa fa-user-secret" aria-hidden="true"></i></a> |
12 | <a href="?visibility=public" title="{'Only display public links'|t}" | 12 | <a href="?visibility=public" aria-label="{'Only display public links'|t}" title="{'Only display public links'|t}" |
13 | class="{if="$visibility==='public'"}filter-on{else}filter-off{/if}" | 13 | class="{if="$visibility==='public'"}filter-on{else}filter-off{/if}" |
14 | ><i class="fa fa-globe"></i></a> | 14 | ><i class="fa fa-globe" aria-hidden="true"></i></a> |
15 | {/if} | 15 | {/if} |
16 | <a href="?untaggedonly" title="{'Filter untagged links'|t}" | 16 | <a href="?untaggedonly" aria-label="{'Filter untagged links'|t}" title="{'Filter untagged links'|t}" |
17 | class={if="$untaggedonly"}"filter-on"{else}"filter-off"{/if} | 17 | class={if="$untaggedonly"}"filter-on"{else}"filter-off"{/if} |
18 | ><i class="fa fa-tag"></i></a> | 18 | ><i class="fa fa-tag" aria-hidden="true"></i></a> |
19 | <a href="#" title="{'Select all'|t}" | 19 | <a href="#" aria-label="{'Select all'|t}" title="{'Select all'|t}" |
20 | class="filter-off select-all-button" | 20 | class="filter-off select-all-button" |
21 | ><i class="fa fa-check-square-o"></i></a> | 21 | ><i class="fa fa-check-square-o" aria-hidden="true"></i></a> |
22 | <a href="#" class="filter-off fold-all pure-u-lg-0" title="{'Fold all'|t}"> | 22 | <a href="#" class="filter-off fold-all pure-u-lg-0" aria-label="{'Fold all'|t}" title="{'Fold all'|t}"> |
23 | <i class="fa fa-chevron-up"></i> | 23 | <i class="fa fa-chevron-up" aria-hidden="true"></i> |
24 | </a> | 24 | </a> |
25 | {loop="$action_plugin"} | 25 | {loop="$action_plugin"} |
26 | {$value.attr.class=isset($value.attr.class) ? $value.attr.class : ''} | 26 | {$value.attr.class=isset($value.attr.class) ? $value.attr.class : ''} |
@@ -59,8 +59,8 @@ | |||
59 | <form method="GET" class="pure-u-0 pure-u-lg-visible"> | 59 | <form method="GET" class="pure-u-0 pure-u-lg-visible"> |
60 | <input type="text" name="linksperpage" placeholder="133"> | 60 | <input type="text" name="linksperpage" placeholder="133"> |
61 | </form> | 61 | </form> |
62 | <a href="#" class="filter-off fold-all pure-u-0 pure-u-lg-visible" title="{'Fold all'|t}"> | 62 | <a href="#" class="filter-off fold-all pure-u-0 pure-u-lg-visible" aria-label="{'Fold all'|t}" title="{'Fold all'|t}"> |
63 | <i class="fa fa-chevron-up"></i> | 63 | <i class="fa fa-chevron-up" aria-hidden="true"></i> |
64 | </a> | 64 | </a> |
65 | </div> | 65 | </div> |
66 | </div> | 66 | </div> |
diff --git a/tpl/default/page.footer.html b/tpl/default/page.footer.html index 5af39be7..f7ae2b84 100644 --- a/tpl/default/page.footer.html +++ b/tpl/default/page.footer.html | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | <div class="pure-g"> | 3 | <div class="pure-g"> |
4 | <div class="pure-u-2-24"></div> | 4 | <div class="pure-u-2-24"></div> |
5 | <div id="footer" class="pure-u-20-24 footer-container"> | 5 | <footer id="footer" class="pure-u-20-24 footer-container" role="contentinfo"> |
6 | <strong><a href="https://github.com/shaarli/Shaarli">Shaarli</a></strong> | 6 | <strong><a href="https://github.com/shaarli/Shaarli">Shaarli</a></strong> |
7 | {if="$is_logged_in===true"} | 7 | {if="$is_logged_in===true"} |
8 | {$version} | 8 | {$version} |
@@ -13,7 +13,7 @@ | |||
13 | {loop="$plugins_footer.text"} | 13 | {loop="$plugins_footer.text"} |
14 | {$value} | 14 | {$value} |
15 | {/loop} | 15 | {/loop} |
16 | </div> | 16 | </footer> |
17 | <div class="pure-u-2-24"></div> | 17 | <div class="pure-u-2-24"></div> |
18 | </div> | 18 | </div> |
19 | 19 | ||
diff --git a/tpl/default/page.header.html b/tpl/default/page.header.html index 4f6dd4d8..2832ebbb 100644 --- a/tpl/default/page.header.html +++ b/tpl/default/page.header.html | |||
@@ -20,7 +20,7 @@ | |||
20 | {if="$is_logged_in || $openshaarli"} | 20 | {if="$is_logged_in || $openshaarli"} |
21 | <li class="pure-menu-item"> | 21 | <li class="pure-menu-item"> |
22 | <a href="?do=addlink" class="pure-menu-link" id="shaarli-menu-shaare"> | 22 | <a href="?do=addlink" class="pure-menu-link" id="shaarli-menu-shaare"> |
23 | <i class="fa fa-plus" ></i> {'Shaare'|t} | 23 | <i class="fa fa-plus" aria-hidden="true"></i> {'Shaare'|t} |
24 | </a> | 24 | </a> |
25 | </li> | 25 | </li> |
26 | <li class="pure-menu-item" id="shaarli-menu-tools"> | 26 | <li class="pure-menu-item" id="shaarli-menu-tools"> |
@@ -67,27 +67,27 @@ | |||
67 | <li class="pure-menu-item" id="shaarli-menu-desktop-search"> | 67 | <li class="pure-menu-item" id="shaarli-menu-desktop-search"> |
68 | <a href="#" class="pure-menu-link subheader-opener" | 68 | <a href="#" class="pure-menu-link subheader-opener" |
69 | data-open-id="search" | 69 | data-open-id="search" |
70 | id="search-button" title="{'Search'|t}"> | 70 | id="search-button" aria-label="{'Search'|t}" title="{'Search'|t}"> |
71 | <i class="fa fa-search"></i> | 71 | <i class="fa fa-search" aria-hidden="true"></i> |
72 | </a> | 72 | </a> |
73 | </li> | 73 | </li> |
74 | <li class="pure-menu-item" id="shaarli-menu-desktop-rss"> | 74 | <li class="pure-menu-item" id="shaarli-menu-desktop-rss"> |
75 | <a href="?do={$feed_type}{$searchcrits}" class="pure-menu-link" title="{'RSS Feed'|t}"> | 75 | <a href="?do={$feed_type}{$searchcrits}" class="pure-menu-link" title="{'RSS Feed'|t}" aria-label="{'RSS Feed'|t}"> |
76 | <i class="fa fa-rss"></i> | 76 | <i class="fa fa-rss" aria-hidden="true"></i> |
77 | </a> | 77 | </a> |
78 | </li> | 78 | </li> |
79 | {if="!$is_logged_in"} | 79 | {if="!$is_logged_in"} |
80 | <li class="pure-menu-item" id="shaarli-menu-desktop-login"> | 80 | <li class="pure-menu-item" id="shaarli-menu-desktop-login"> |
81 | <a href="?do=login" class="pure-menu-link" | 81 | <a href="?do=login" class="pure-menu-link" |
82 | data-open-id="header-login-form" | 82 | data-open-id="header-login-form" |
83 | id="login-button" title="{'Login'|t}"> | 83 | id="login-button" aria-label="{'Login'|t}" title="{'Login'|t}"> |
84 | <i class="fa fa-user"></i> | 84 | <i class="fa fa-user" aria-hidden="true"></i> |
85 | </a> | 85 | </a> |
86 | </li> | 86 | </li> |
87 | {else} | 87 | {else} |
88 | <li class="pure-menu-item" id="shaarli-menu-desktop-logout"> | 88 | <li class="pure-menu-item" id="shaarli-menu-desktop-logout"> |
89 | <a href="?do=logout" class="pure-menu-link" title="{'Logout'|t}"> | 89 | <a href="?do=logout" class="pure-menu-link" aria-label="{'Logout'|t}" title="{'Logout'|t}"> |
90 | <i class="fa fa-sign-out"></i> | 90 | <i class="fa fa-sign-out" aria-hidden="true"></i> |
91 | </a> | 91 | </a> |
92 | </li> | 92 | </li> |
93 | {/if} | 93 | {/if} |
@@ -118,7 +118,18 @@ | |||
118 | <div id="actions" class="subheader-form"> | 118 | <div id="actions" class="subheader-form"> |
119 | <div class="pure-g"> | 119 | <div class="pure-g"> |
120 | <div class="pure-u-1"> | 120 | <div class="pure-u-1"> |
121 | <a href="" id="actions-delete" class="button">{'Delete'|t}</a> | 121 | <a href="" id="actions-delete" class="button"> |
122 | <i class="fa fa-trash"></i> | ||
123 | {'Delete'|t} | ||
124 | </a> | ||
125 | <a href="" class="actions-change-visibility button" data-visibility="public"> | ||
126 | <i class="fa fa-globe"></i> | ||
127 | {'Set public'|t} | ||
128 | </a> | ||
129 | <a href="" class="actions-change-visibility button" data-visibility="private"> | ||
130 | <i class="fa fa-user-secret"></i> | ||
131 | {'Set private'|t} | ||
132 | </a> | ||
122 | </div> | 133 | </div> |
123 | </div> | 134 | </div> |
124 | </div> | 135 | </div> |
diff --git a/tpl/default/tag.sort.html b/tpl/default/tag.sort.html index 89acda0d..d24c9f64 100644 --- a/tpl/default/tag.sort.html +++ b/tpl/default/tag.sort.html | |||
@@ -1,8 +1,8 @@ | |||
1 | <div class="pure-g"> | 1 | <div class="pure-g"> |
2 | <div class="pure-u-1 pure-alert pure-alert-success tag-sort"> | 2 | <div class="pure-u-1 pure-alert pure-alert-success tag-sort"> |
3 | {'Sort by:'|t} | 3 | {'Sort by:'|t} |
4 | <a href="?do=tagcloud" title="cloud">{'Cloud'|t}</a> · | 4 | <a href="?do=tagcloud">{'Cloud'|t}</a> · |
5 | <a href="?do=taglist&sort=usage" title="cloud">{'Most used'|t}</a> · | 5 | <a href="?do=taglist&sort=usage">{'Most used'|t}</a> · |
6 | <a href="?do=taglist&sort=alpha" title="cloud">{'Alphabetical'|t}</a> | 6 | <a href="?do=taglist&sort=alpha">{'Alphabetical'|t}</a> |
7 | </div> | 7 | </div> |
8 | </div> \ No newline at end of file | 8 | </div> \ No newline at end of file |