doc/pages/02.applications/01.catalog/apps.fr.md
2021-02-11 00:02:01 +01:00

134 lines
4.6 KiB
Markdown

---
title: Catalogue d'applications
template: docs
taxonomy:
category: docs
routes:
default: '/apps'
twig_first: true
process:
twig: true
---
<div class="javascriptDisclaimer">
Cette page requiert que JavaScript soit activé pour s'afficher correctement :s.
</div>
<div class="input-group">
<span id="filter-app-icon" class="input-group-addon"><i class="fa fa-search"></i></span>
<input id="filter-app-cards" type="text" class="form-control" placeholder="Rechercher des apps..." aria-describedby="basic-addon1"/>
</div>
!!! L'équipe de packaging d'applications sera heureuse de recevoir vos commentaires ! Si vous trouvez des problèmes ou des améliorations possibles en installant une app, n'hésitez pas à contribuer en créant un ticket (issue) directement sur le dépôt de code.
! Les applications étiquettées <span class="label label-warning label-as-badge">mauvaise qualité</span> fonctionnent peut-être, mais ne respectent pas les bonnes pratiques de packaging ou ne supportent pas certaines fonctionnalités comme les sauvegardes/restauration ou l'authentication unifiée. Soyez prudent si vous les installez.
{% set catalog = read_file('/var/www/app_yunohost/apps/builds/default/doc_catalog/apps.json')|json_decode(true) %}
<div id="app-cards-list" class="app-cards-list">
{% for app_id, infos in catalog.apps %}
{% if grav.language.getActive in infos.description %}
{% set descr_lang = grav.language.getActive %}
{% else %}
{% set descr_lang = 'en' %}
{% endif %}
<div class="app-card panel panel-default" data-appid="{{ app_id }}" data-level="{{ infos.level }}">
<div class="app-title">
{% if infos.good_quality %}
<i class="fa fa-star" style="color: gold"></i>
{% endif %}
{{ infos.name }}
<span class="label label-default">{{infos.category}}</span>
{% if infos.broken %}
<span class="label label-error">cassée</span>
{% else %}
{% if infos.bad_quality %}
<span class="label label-warning">mauvaise qualité</span>
{% endif %}
{% endif %}
</div>
<div class="app-descr">{{ infos.description[descr_lang] }}</div>
<div class="app-footer">
<div class="app-buttons btn-group" role="group">
<a href="{{infos.url}}" target="_BLANK" type="button" class="btn btn-default col-sm-4"> <i class="fa fa-code"></i> Code </a>
<a href="app_{{app_id}}" target="_BLANK" type="button" class="btn btn-default col-sm-4"> <i class="fa fa-book"></i> Doc </a>
<a href="https://install-app.yunohost.org/?app={{app_id}}" target="_BLANK" type="button" class="btn btn-{% if infos.bad_quality %}error{% else %}success{% endif %} col-sm-4 active"> <i class="fa fa-plus"></i> Install </a>
</div>
</div>
</div>
{% endfor %}
</div>
! Si vous ne trouvez pas une application précise que vous recherchez, vous pouvez l'ajouter à la [liste d'apps souhaitées](/apps_wishlist).
<!--
Javascript helpers
-->
<script>
$(document).ready(function () {
$(".javascriptDisclaimer").hide();
function filter() {
var user_input_in_search_field = $('#filter-app-cards').val().toLowerCase();
$('.app-card').each(function() {
// This is where we actually define how apps are filtered:
// we look for the name of the app (h3) and try to find the user input
// + we check this app match the current quality filter
var text = $(this).find('.app-title').text().toLowerCase() + " " + $(this).find('.app-descr').text().toLowerCase();
if (text.indexOf(user_input_in_search_field) >= 0)
{
$(this).show();
}
else
{
$(this).hide();
}
});
}
function sort() {
var sorted = $('.app-card').sort(function (a, b) {
var level_a = Math.min(parseInt($(a).data('level')), 8);
var level_b = Math.min(parseInt($(b).data('level')), 8);
if (level_a > level_b)
{
return -1;
}
else if (level_a < level_b)
{
return 1;
}
else {
var id_a = $(a).data('appid');
var id_b = $(b).data('appid');
return id_a > id_b ? 1 : -1;
}
});
$("#app-cards-list").html(sorted);
}
//=================================================
// Search & filter bar event
//=================================================
$('#filter-app-cards').keyup(filter);
$('a[data-quality-filter]').on("click", function(){
$('#current-quality-filter').text($(this).text());
$('#current-quality-filter').data("filter", $(this).data("quality-filter"));
filter();
});
sort();
filter();
});
</script>