use Analog\Analog;
use Galette\Entity\Adherent;
+use Galette\Util\Release;
use RuntimeException;
/**
return $galette_version;
}
+ /**
+ * Get Galette new release
+ *
+ * @return array<string, string|array<string,mixed>>
+ */
+ public static function getNewRelease(): array
+ {
+ $release = new Release();
+ return [
+ 'new' => $release->checkNewRelease(),
+ 'version' => $release->getLatestRelease()
+ ];
+ }
+
/**
* Get all menus
*
* along with Galette. If not, see <http://www.gnu.org/licenses/>.
*/
#}
+{% set new_release = callstatic('\\Galette\\Core\\Galette', 'getNewRelease') %}
<footer class="page-footer{% if login.getCompactMenu() %} extended"{% endif %}">
<div class="ui center aligned basic padded segment footer-wrapper">
<div class="row">
</div>
<div class="row">
<div class="ui horizontal bulleted link list">
- <a id="copyright" href="https://galette.eu/" class="item">
+ <a id="copyright" href="https://galette.eu/" class="item{% if new_release.new %} tooltip" data-title="{{ _T("A new Galette release is available.") }}" data-content="{{ _T("You currently use Galette %1$s, and %2$s is available.")|replace({"%1$s": constant('GALETTE_DISPLAY_VERSION'), "%2$s": new_release.version}) }}"{% else %}"{% endif %}>
+{% if new_release.new and login.isLogged() and (login.isAdmin() or login.isStaff()) %}
+ <div class="ui transition looping pulsating blue circular horizontal icon label">
+ <i class="arrow alternate circle up icon" aria-hidden="true"></i>
+ <span class="visually-hidden">{{ _T("A new Galette release is available.") }}</span>
+ </div>
+{% else %}
<i class="icon cookie bite" aria-hidden="true"></i>
+{% endif %}
Galette {{ constant('GALETTE_DISPLAY_VERSION') }}
</a>
{% if login.isLogged() and (login.isAdmin() or login.isStaff()) %}
footer.page-footer {
position: relative;
background-color: @pageBackground;
+
+ #copyright .pulsating.label i {
+ margin-right: 0;
+ }
}
main.pusher ~ footer.page-footer {
transition: transform .5s ease;