Added SocialNetworks pages.
This commit is contained in:
parent
2b967836c3
commit
82cd6e374b
9 changed files with 389 additions and 0 deletions
|
@ -123,6 +123,21 @@ public class Organization extends PathPropertyList
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the diaspora page.
|
||||
*
|
||||
* @return the diaspora page
|
||||
*/
|
||||
public String getDiasporaWebpage()
|
||||
{
|
||||
String result;
|
||||
|
||||
result = get("organization.socialnetworks.diaspora");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the end date.
|
||||
*
|
||||
|
@ -203,6 +218,21 @@ public class Organization extends PathPropertyList
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the mastodon page.
|
||||
*
|
||||
* @return the mastodon page
|
||||
*/
|
||||
public String getMastodonWebpage()
|
||||
{
|
||||
String result;
|
||||
|
||||
result = get("organization.socialnetworks.mastodon");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name.
|
||||
*
|
||||
|
@ -332,6 +362,65 @@ public class Organization extends PathPropertyList
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for social network.
|
||||
*
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean hasSocialNetwork()
|
||||
{
|
||||
boolean result;
|
||||
|
||||
if (StringUtils.isAllBlank(getDiasporaWebpage(), getMastodonWebpage()))
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for social network.
|
||||
*
|
||||
* @param value
|
||||
* the value
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean hasSocialNetwork(final SocialNetworks value)
|
||||
{
|
||||
boolean result;
|
||||
|
||||
String link;
|
||||
switch (value)
|
||||
{
|
||||
case DIASPORA:
|
||||
link = getDiasporaWebpage();
|
||||
break;
|
||||
case MASTODON:
|
||||
link = getMastodonWebpage();
|
||||
break;
|
||||
default:
|
||||
link = null;
|
||||
}
|
||||
|
||||
if (StringUtils.isBlank(link))
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setFederation(final Federation federation)
|
||||
{
|
||||
this.federation = federation;
|
||||
|
|
|
@ -36,6 +36,54 @@ public class Organizations extends ArrayList<Organization>
|
|||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter by social network.
|
||||
*
|
||||
* @return the organizations
|
||||
*/
|
||||
public Organizations filterBySocialNetworks()
|
||||
{
|
||||
Organizations result;
|
||||
|
||||
result = new Organizations();
|
||||
|
||||
for (Organization organization : this)
|
||||
{
|
||||
if (organization.hasSocialNetwork())
|
||||
{
|
||||
result.add(organization);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter by social network.
|
||||
*
|
||||
* @param value
|
||||
* the value
|
||||
* @return the organizations
|
||||
*/
|
||||
public Organizations filterBySocialNetwork(final SocialNetworks value)
|
||||
{
|
||||
Organizations result;
|
||||
|
||||
result = new Organizations();
|
||||
|
||||
for (Organization organization : this)
|
||||
{
|
||||
if (organization.hasSocialNetwork(value))
|
||||
{
|
||||
result.add(organization);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse.
|
||||
*
|
||||
|
|
28
src/fr/devinsy/statoolinfos/core/SocialNetworks.java
Normal file
28
src/fr/devinsy/statoolinfos/core/SocialNetworks.java
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
|
||||
*
|
||||
* This file is part of StatoolInfos, simple service statistics tool.
|
||||
*
|
||||
* StatoolInfos is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* StatoolInfos is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.devinsy.statoolinfos.core;
|
||||
|
||||
/**
|
||||
* The Enum SocialNetworks.
|
||||
*/
|
||||
public enum SocialNetworks
|
||||
{
|
||||
DIASPORA,
|
||||
MASTODON
|
||||
}
|
|
@ -33,8 +33,10 @@ import fr.devinsy.statoolinfos.core.Configuration;
|
|||
import fr.devinsy.statoolinfos.core.Factory;
|
||||
import fr.devinsy.statoolinfos.core.Federation;
|
||||
import fr.devinsy.statoolinfos.core.Organization;
|
||||
import fr.devinsy.statoolinfos.core.Organizations;
|
||||
import fr.devinsy.statoolinfos.core.Service;
|
||||
import fr.devinsy.statoolinfos.core.Services;
|
||||
import fr.devinsy.statoolinfos.core.SocialNetworks;
|
||||
import fr.devinsy.statoolinfos.core.Software;
|
||||
import fr.devinsy.statoolinfos.core.Softwares;
|
||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||
|
@ -129,6 +131,10 @@ public class Htmlizer
|
|||
StatoolInfosUtils.copyRessource(source + "status-over.png", targetDirectory);
|
||||
StatoolInfosUtils.copyRessource(source + "status-void.png", targetDirectory);
|
||||
|
||||
//
|
||||
StatoolInfosUtils.copyRessource(source + "diaspora-logo.png", targetDirectory);
|
||||
StatoolInfosUtils.copyRessource(source + "mastodon-logo.png", targetDirectory);
|
||||
|
||||
//
|
||||
File color = new File(targetDirectory, "circle-icons/color");
|
||||
color.mkdirs();
|
||||
|
@ -401,6 +407,22 @@ public class Htmlizer
|
|||
FileUtils.write(new File(htmlizeDirectory, "software-" + software.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
{
|
||||
logger.info("Htmlize social networks pages.");
|
||||
Organizations organizations = federation.getOrganizations().filterBySocialNetworks();
|
||||
page = SocialNetworksPage.build("Tous", organizations);
|
||||
FileUtils.write(new File(htmlizeDirectory, "socialNetworks.xhtml"), page, StandardCharsets.UTF_8);
|
||||
|
||||
organizations = federation.getOrganizations().filterBySocialNetwork(SocialNetworks.DIASPORA);
|
||||
page = SocialNetworksPage.build("Disapora*", organizations);
|
||||
FileUtils.write(new File(htmlizeDirectory, "socialNetworks-diaspora.xhtml"), page, StandardCharsets.UTF_8);
|
||||
|
||||
organizations = federation.getOrganizations().filterBySocialNetwork(SocialNetworks.MASTODON);
|
||||
page = SocialNetworksPage.build("Mastodon", organizations);
|
||||
FileUtils.write(new File(htmlizeDirectory, "socialNetworks-mastodon.xhtml"), page, StandardCharsets.UTF_8);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
103
src/fr/devinsy/statoolinfos/htmlize/SocialNetworksPage.java
Normal file
103
src/fr/devinsy/statoolinfos/htmlize/SocialNetworksPage.java
Normal file
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
|
||||
*
|
||||
* This file is part of StatoolInfos, simple service statistics tool.
|
||||
*
|
||||
* StatoolInfos is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* StatoolInfos is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.devinsy.statoolinfos.htmlize;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import fr.devinsy.statoolinfos.core.Organization;
|
||||
import fr.devinsy.statoolinfos.core.Organizations;
|
||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||
import fr.devinsy.xidyn.XidynException;
|
||||
import fr.devinsy.xidyn.data.DisplayMode;
|
||||
import fr.devinsy.xidyn.data.TagDataManager;
|
||||
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||
|
||||
/**
|
||||
* The Class SocialNetworks.
|
||||
*/
|
||||
public class SocialNetworksPage
|
||||
{
|
||||
private static Logger logger = LoggerFactory.getLogger(SocialNetworksPage.class);
|
||||
|
||||
/**
|
||||
* Builds the.
|
||||
*
|
||||
* @param federation
|
||||
* the federation
|
||||
* @return the string
|
||||
* @throws StatoolInfosException
|
||||
* the statool infos exception
|
||||
*/
|
||||
public static String build(final String title, final Organizations organizations) throws StatoolInfosException
|
||||
{
|
||||
String result;
|
||||
|
||||
try
|
||||
{
|
||||
logger.debug("Building social networks page {}…");
|
||||
|
||||
TagDataManager data = new TagDataManager();
|
||||
|
||||
data.setEscapedContent("title", title);
|
||||
data.setContent("organizationCount", organizations.size());
|
||||
|
||||
int index = 0;
|
||||
for (Organization organization : organizations)
|
||||
{
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineNameLink", "href", organization.getTechnicalName() + ".xhtml");
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "src", organization.getTechnicalName() + "-logo.png");
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "alt", organization.getName());
|
||||
data.setEscapedContent("organizationListLine", index, "organizationListLineNameValue", organization.getName());
|
||||
|
||||
data.setEscapedContent("organizationListLine", index, "organizationListLineUrlLink", organization.getWebsite());
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineUrlLink", "href", organization.getWebsite());
|
||||
|
||||
if (StringUtils.isNotBlank(organization.getDiasporaWebpage()))
|
||||
{
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineDiasporaImg", "class", "");
|
||||
data.getIdData("organizationListLine", index, "organizationListLineDiasporaImg").getAttribute("class").setMode(DisplayMode.REPLACE);
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineDiasporaLink", "href", organization.getDiasporaWebpage());
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(organization.getMastodonWebpage()))
|
||||
{
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineMastodonImg", "class", "");
|
||||
data.getIdData("organizationListLine", index, "organizationListLineMastodonImg").getAttribute("class").setMode(DisplayMode.REPLACE);
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineMastodonLink", "href", organization.getMastodonWebpage());
|
||||
}
|
||||
|
||||
index += 1;
|
||||
}
|
||||
|
||||
String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/socialNetworks.xhtml", data).toString();
|
||||
|
||||
BreadcrumbTrail trail = new BreadcrumbTrail();
|
||||
result = WebCharterView.build(content, trail);
|
||||
}
|
||||
catch (XidynException exception)
|
||||
{
|
||||
throw new StatoolInfosException("Error building social networks page: " + exception.getMessage(), exception);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
}
|
98
src/fr/devinsy/statoolinfos/htmlize/socialNetworks.xhtml
Normal file
98
src/fr/devinsy/statoolinfos/htmlize/socialNetworks.xhtml
Normal file
|
@ -0,0 +1,98 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>StatoolInfos</title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="keywords" content="statoolinfos,devinsy,federation" />
|
||||
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
||||
<link rel="stylesheet" type="text/css" href="statoolinfos.css" />
|
||||
<script src="sorttable.js" />
|
||||
<script src="Chart.bundle.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="row center_table" style="width: 1100px;">
|
||||
|
||||
<div style="margin: 5px;">
|
||||
<a id="" href="socialNetworks.xhtml" class="button">Tous</a>
|
||||
<a id="" href="socialNetworks-diaspora.xhtml" class="button">Diaspora</a>
|
||||
<a id="" href="socialNetworks-mastodon.xhtml" class="button">Mastodon</a>
|
||||
</div>
|
||||
|
||||
<div class="center">
|
||||
<h2 id="title">n/a</h2>
|
||||
<div>Nombre de membres : <span id="organizationCount">n/a</span></div>
|
||||
</div>
|
||||
|
||||
<div class="center_table" style="width: 700px;">
|
||||
<div class="legend right" style="float: right; margin-top: -75px;">
|
||||
<div class="left">
|
||||
<img src="diaspora-logo.png" title="Diaspora"/>Diaspora*<br/>
|
||||
<img src="mastodon-logo.png" title="Mastodon"/>Mastodon<br/>
|
||||
</div>
|
||||
</div>
|
||||
<table id="organizations" class="table_classic left">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 200px;">Nom du membre</th>
|
||||
<th style="">URL</th>
|
||||
<th style="width: 10px;" colspan="2">Réseaux sociaux</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr id="organizationListLine">
|
||||
<td id="organizationListLineName" style="padding-top: 0; padding-bottom: 0;">
|
||||
<a href="#" id="organizationListLineNameLink">
|
||||
<img id="organizationListLineLogo" src="" style="width: 26px; height: 26px; padding-top:0; padding-bottom: 0; vertical-align: middle;"/>
|
||||
 <span id="organizationListLineNameValue">n/a</span>
|
||||
</a>
|
||||
</td>
|
||||
<td id="organizationListLineUrl"><a href="#" id="organizationListLineUrlLink">n/a</a></td>
|
||||
<td id="" class="td_center center"><a id="organizationListLineDiasporaLink" href="#"><img id="organizationListLineDiasporaImg" src="diaspora-logo.png" class="disabled" title="Diaspora*" style="width: 25px;"/></a></td>
|
||||
<td id="" class="td_center center"><a id="organizationListLineMastodonLink" href="#"><img id="organizationListLineMastodonImg" src="mastodon-logo.png" class="disabled" title="Mastodon" style="width: 25px;"/></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$('#organizations').DataTable(
|
||||
{
|
||||
paging: false,
|
||||
ordering: true,
|
||||
"order": [[ 2, "desc" ]],
|
||||
language:
|
||||
{
|
||||
"sEmptyTable": "Aucune donnée disponible dans le tableau",
|
||||
"sInfo": "Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments",
|
||||
"sInfoEmpty": "Affichage de l'élément 0 à 0 sur 0 élément",
|
||||
"sInfoFiltered": "(filtré à partir de _MAX_ éléments au total)",
|
||||
"sInfoPostFix": "",
|
||||
"sInfoThousands": ",",
|
||||
"sLengthMenu": "Afficher _MENU_ éléments",
|
||||
"sLoadingRecords": "Chargement...",
|
||||
"sProcessing": "Traitement...",
|
||||
"sSearch": "Rechercher :",
|
||||
"sZeroRecords": "Aucun élément correspondant trouvé",
|
||||
"oPaginate": {
|
||||
"sFirst": "Premier",
|
||||
"sLast": "Dernier",
|
||||
"sNext": "Suivant",
|
||||
"sPrevious": "Précédent"
|
||||
},
|
||||
"oAria": {
|
||||
"sSortAscending": ": activer pour trier la colonne par ordre croissant",
|
||||
"sSortDescending": ": activer pour trier la colonne par ordre décroissant"
|
||||
},
|
||||
"select": {
|
||||
"rows": {
|
||||
"_": "%d lignes sélectionnées",
|
||||
"0": "Aucune ligne sélectionnée",
|
||||
"1": "1 ligne sélectionnée"
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
BIN
src/fr/devinsy/statoolinfos/htmlize/stuff/diaspora-logo.png
Normal file
BIN
src/fr/devinsy/statoolinfos/htmlize/stuff/diaspora-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
src/fr/devinsy/statoolinfos/htmlize/stuff/mastodon-logo.png
Normal file
BIN
src/fr/devinsy/statoolinfos/htmlize/stuff/mastodon-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
|
@ -23,6 +23,7 @@
|
|||
<a id="" href="services.xhtml" class="button">Services</a>
|
||||
<a id="" href="categories.xhtml" class="button">Catégories</a>
|
||||
<a id="" href="softwares.xhtml" class="button">Logiciels</a>
|
||||
<a id="" href="socialNetworks.xhtml" class="button" style="width: 130px;">Réseaux sociaux</a>
|
||||
</div>
|
||||
|
||||
<div id="breadcrumbTrail" style="margin: 5px;">n/a > n/a</div>
|
||||
|
|
Loading…
Reference in a new issue