yavsc/yavscModel/Circles/CircleManager.cs

116 lines
3.5 KiB
C#

//
// CircleManager.cs
//
// Author:
// Paul Schneider <paul@pschneider.fr>
//
// Copyright (c) 2015 GNU GPL
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using System;
using System.Security.Permissions;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Reflection;
Thème clair opé, WIP circles * animate.css: animations css * links.css: liens avec le fond blanc qui se déroule * links.css: WIP liens thème sombre * GitHub.ico: un petit merci à GitHub * live-concert-fg.png: image de plan rapproché : les fans * live-concert-scene.jpg: Image de fond : la scene * splash-image-2.jpg: image de fond : photo colorée, public de concert, vient de totemproduction.fr * links.css: ficher de définitions globales du style des bouttons (encore inutilisé) * yavsc.user.js: WIP implémente le widget "utilisateur", permettant l'affichage des liens rapides pour tout nom d'ulitisateur, le cas échéant, vers l'ajout à un cercle, vers son blog, vers des methodes choisies d'administateur, vers ses réseaux sociaux, voir plus. * About.aspx: Implémente une page "à propos" * Test.aspx: Page de test: désolé pour le bruit, elle n'est compilée qu'en mode `Debug` (elle n'est pas accessible en production) * NpgsqlBlogProvider.cs: Corrige la méthode pour enlever un tag à un article ... * NpgsqlBlogProvider.csproj: . * NpgsqlCircleProvider.cs: liste les cercles auquels appartient un utilisateur. * BasketController.cs: * NpgsqlContentProvider.cs: Les commandes sont fortement typée. * README.md: mise à jour des priorités * style.css: réécriture du thème clair * style.css: * implémente un classe css `clickme` pour attirer l'oeil sur le boutton de validation après la modification d'un champ de formulaire. * enlève tous les coins arrondis * modifie la chasse de caractères (une seule utilisée pour le moment) * * style.css: * integre la référence à la feuille de style des [animations](https://daneden.github.io/animate.css/) * corrige des marges, alignements * supprime ce qui reste de coin arrondi * néttoye les définitions obsolètes * définit la classe `username` * corrige le survol à la suppression de tag * FrontOfficeController.cs: renomme des methodes, refabriqué pour s'adapter aux changements de l'API du workflow, WIP propose les cercles utilisateurs pour l'ajout des profiles préstataires aux cercles. * HomeController.cs: implémente une page "à propos" * T.cs: re-autorise le titre vide de page, au cas où ... car ce n'est pas un véritable défaut fonctionnel. * YavscHelpers.cs: Implemente un outil de presentation des liens action traduits. Tous les liens action utilisent maintenant cette nouvelle methode, au profile de celle du framework `HtmlHelpers.ActionLink` * App.master: corrige l'usage du contrôle utilisateur des cotes dans le cadre des cotes de billet. * AppAdmin.master: * Index.aspx: * Service.aspx: * ProductCategory.aspx: traduction des liens action * NoLogin.master: * traduction des liens action * suppression des liens de remerciement dans le bas de page, cette information a été déplacée dans la page `/Home/Credits` * to-markdown.js: transforme maintenant les noeuds Html `div` en paragraphes Markdown. * yavsc.hidefieldset.js: Le script règle la forme de la souris au survol du bouton, le cas échéant. * yavsc.js: nouvelle fonction javascript pour logger un objet arbitraire. * yavsc.rate.js: Fixe la possibilité de mettre des cotes très basses ou très hautes (reste encore un mieux à faire), Affiche au survol des descriptions optionnelles de la cote. * Title.aspx: * UserPost.aspx: * Edit.aspx: * Index.aspx: * Brand.aspx: * Index.aspx: * PostActions.ascx: * TitleNotFound.aspx: * Booking.aspx: * Command.aspx: * ChangePasswordSuccess.aspx: Traduction des liens action * Login.aspx: * Traduction des liens actionTraduction des liens action * Profile.aspx: * Traduction des liens actionTraduction des liens action * utilisation de la classe css `mayhide` qui autorise maintenant un champ d'entrées de formulaire à être plié/déplié au click sur sa légende. * Admin.aspx: Traduction des liens actionTraduction des liens actionTraduction des liens actionTraduction des liens actionTraduction des liens actionTraduction des liens action * Backups.aspx: * RoleList.aspx: * UserList.aspx: * Index.aspx: Traduction des liens actionTraduction des liens action * Edit.aspx: * refabrication de la structure Html * Traduction des liens actionTraduction des liens action * Index.aspx: Simlpification des apperçus de blog * TagControl.ascx: refabrication pour simplifier l'implémentation du contrôle utilisateur des tags * UserPosts.aspx: Traduction des liens action, et simplification du listing de blog * Basket.aspx: Affiche les articles du panier de commandes avec leur vue dédiée à leur type (les commande sont maintenant fortement typées) * Catalog.aspx: Traduction des liens action, correctin du lien vers le produit (cassé depuis une vielle refabrication des routes) * DoAnEstimate.aspx: refabrication de la vue de création du devis: renommée depuis `Estimate` * Performer.ascx: * un message supplementaire à l'absence de compétence affichée par un préstataire * des guillemets autour du commentaire du préstataire sur sa compétence * ajout du préstataire au cercles * Performers.aspx: Décrit en détail les informations sur la disponibilité d'un préstataire, à la date demandée. * YourEstimates.aspx: renomage de cette page, pour préciser sa fonction : Vos devis. * Contact.aspx: structure Html de la page de contact * Credits.aspx: Ajoute les remerciements aux communauté du libre * Index.aspx: ne fait rien * Web.config: * import de `System.Transactions` * mise à jour des credits libres * WebDeploy.targets: utilise les séparateurs de chemin vers ficher à la POSIX, ne change rien pour ma config ... (TODO tester sous WoinDose) * Yavsc.csproj: déploie des pages des scripts Javascript et des images et feuilles de style en plus. * CircleManager.cs: implémente les methodes utilisées à la construction du contrôle utilisateur. * CircleProvider.cs: * doc xml * extension de interface * Commande.cs: l'objet `Command` devient abstrait, pour exister (être instanciée), une commande doit maintenant hériter de cet objet abstrait. * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: traductions * IContentProvider.cs: doc xml * SiteSkills.aspx: renomage de cette page, pour préciser sa fonction : les compétences sur ce site.
10 years ago
using System.Collections.Generic;
using System.Web;
using System.Linq;
namespace Yavsc.Model.Circles
{
/// <summary>
/// Circle manager.
/// </summary>
public class CircleManager
{
/// <summary>
/// Initializes a new instance of the <see cref="Yavsc.Model.Circles.CircleManager"/> class.
/// </summary>
public CircleManager ()
{
}
private static CircleProvider defaultProvider=null;
/// <summary>
/// Gets the default provider.
/// </summary>
/// <value>The default provider.</value>
public static CircleProvider DefaultProvider {
get {
if (defaultProvider == null)
GetProviderSettings ();
return defaultProvider;
}
}
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
private static void GetProviderSettings()
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
11 years ago
DataProviderConfigurationSection pSection =
config.GetSection("system.web/circleProviders")
as DataProviderConfigurationSection;
if (pSection == null)
throw new ConfigurationErrorsException ("no circleProviders section defined");
ProviderSettingsCollection providerSettings =
pSection.Providers;
if (pSection.DefaultProvider != null) {
var pSetDef = providerSettings [pSection.DefaultProvider];
ConstructorInfo ci = Type.GetType (pSetDef.Type).GetConstructor (Type.EmptyTypes);
defaultProvider = ci.Invoke (Type.EmptyTypes) as CircleProvider;
defaultProvider.Initialize (pSection.DefaultProvider,pSetDef.Parameters);
}
}
Thème clair opé, WIP circles * animate.css: animations css * links.css: liens avec le fond blanc qui se déroule * links.css: WIP liens thème sombre * GitHub.ico: un petit merci à GitHub * live-concert-fg.png: image de plan rapproché : les fans * live-concert-scene.jpg: Image de fond : la scene * splash-image-2.jpg: image de fond : photo colorée, public de concert, vient de totemproduction.fr * links.css: ficher de définitions globales du style des bouttons (encore inutilisé) * yavsc.user.js: WIP implémente le widget "utilisateur", permettant l'affichage des liens rapides pour tout nom d'ulitisateur, le cas échéant, vers l'ajout à un cercle, vers son blog, vers des methodes choisies d'administateur, vers ses réseaux sociaux, voir plus. * About.aspx: Implémente une page "à propos" * Test.aspx: Page de test: désolé pour le bruit, elle n'est compilée qu'en mode `Debug` (elle n'est pas accessible en production) * NpgsqlBlogProvider.cs: Corrige la méthode pour enlever un tag à un article ... * NpgsqlBlogProvider.csproj: . * NpgsqlCircleProvider.cs: liste les cercles auquels appartient un utilisateur. * BasketController.cs: * NpgsqlContentProvider.cs: Les commandes sont fortement typée. * README.md: mise à jour des priorités * style.css: réécriture du thème clair * style.css: * implémente un classe css `clickme` pour attirer l'oeil sur le boutton de validation après la modification d'un champ de formulaire. * enlève tous les coins arrondis * modifie la chasse de caractères (une seule utilisée pour le moment) * * style.css: * integre la référence à la feuille de style des [animations](https://daneden.github.io/animate.css/) * corrige des marges, alignements * supprime ce qui reste de coin arrondi * néttoye les définitions obsolètes * définit la classe `username` * corrige le survol à la suppression de tag * FrontOfficeController.cs: renomme des methodes, refabriqué pour s'adapter aux changements de l'API du workflow, WIP propose les cercles utilisateurs pour l'ajout des profiles préstataires aux cercles. * HomeController.cs: implémente une page "à propos" * T.cs: re-autorise le titre vide de page, au cas où ... car ce n'est pas un véritable défaut fonctionnel. * YavscHelpers.cs: Implemente un outil de presentation des liens action traduits. Tous les liens action utilisent maintenant cette nouvelle methode, au profile de celle du framework `HtmlHelpers.ActionLink` * App.master: corrige l'usage du contrôle utilisateur des cotes dans le cadre des cotes de billet. * AppAdmin.master: * Index.aspx: * Service.aspx: * ProductCategory.aspx: traduction des liens action * NoLogin.master: * traduction des liens action * suppression des liens de remerciement dans le bas de page, cette information a été déplacée dans la page `/Home/Credits` * to-markdown.js: transforme maintenant les noeuds Html `div` en paragraphes Markdown. * yavsc.hidefieldset.js: Le script règle la forme de la souris au survol du bouton, le cas échéant. * yavsc.js: nouvelle fonction javascript pour logger un objet arbitraire. * yavsc.rate.js: Fixe la possibilité de mettre des cotes très basses ou très hautes (reste encore un mieux à faire), Affiche au survol des descriptions optionnelles de la cote. * Title.aspx: * UserPost.aspx: * Edit.aspx: * Index.aspx: * Brand.aspx: * Index.aspx: * PostActions.ascx: * TitleNotFound.aspx: * Booking.aspx: * Command.aspx: * ChangePasswordSuccess.aspx: Traduction des liens action * Login.aspx: * Traduction des liens actionTraduction des liens action * Profile.aspx: * Traduction des liens actionTraduction des liens action * utilisation de la classe css `mayhide` qui autorise maintenant un champ d'entrées de formulaire à être plié/déplié au click sur sa légende. * Admin.aspx: Traduction des liens actionTraduction des liens actionTraduction des liens actionTraduction des liens actionTraduction des liens actionTraduction des liens action * Backups.aspx: * RoleList.aspx: * UserList.aspx: * Index.aspx: Traduction des liens actionTraduction des liens action * Edit.aspx: * refabrication de la structure Html * Traduction des liens actionTraduction des liens action * Index.aspx: Simlpification des apperçus de blog * TagControl.ascx: refabrication pour simplifier l'implémentation du contrôle utilisateur des tags * UserPosts.aspx: Traduction des liens action, et simplification du listing de blog * Basket.aspx: Affiche les articles du panier de commandes avec leur vue dédiée à leur type (les commande sont maintenant fortement typées) * Catalog.aspx: Traduction des liens action, correctin du lien vers le produit (cassé depuis une vielle refabrication des routes) * DoAnEstimate.aspx: refabrication de la vue de création du devis: renommée depuis `Estimate` * Performer.ascx: * un message supplementaire à l'absence de compétence affichée par un préstataire * des guillemets autour du commentaire du préstataire sur sa compétence * ajout du préstataire au cercles * Performers.aspx: Décrit en détail les informations sur la disponibilité d'un préstataire, à la date demandée. * YourEstimates.aspx: renomage de cette page, pour préciser sa fonction : Vos devis. * Contact.aspx: structure Html de la page de contact * Credits.aspx: Ajoute les remerciements aux communauté du libre * Index.aspx: ne fait rien * Web.config: * import de `System.Transactions` * mise à jour des credits libres * WebDeploy.targets: utilise les séparateurs de chemin vers ficher à la POSIX, ne change rien pour ma config ... (TODO tester sous WoinDose) * Yavsc.csproj: déploie des pages des scripts Javascript et des images et feuilles de style en plus. * CircleManager.cs: implémente les methodes utilisées à la construction du contrôle utilisateur. * CircleProvider.cs: * doc xml * extension de interface * Commande.cs: l'objet `Command` devient abstrait, pour exister (être instanciée), une commande doit maintenant hériter de cet objet abstrait. * LocalizedText.resx: * LocalizedText.fr.resx: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: traductions * IContentProvider.cs: doc xml * SiteSkills.aspx: renomage de cette page, pour préciser sa fonction : les compétences sur ce site.
10 years ago
/// <summary>
/// List the specified user.
/// </summary>
/// <param name="user">User.</param>
public static IEnumerable<CircleBase> List(string user)
{
if (user == null)
user = HttpContext.Current.User.Identity.Name;
return DefaultProvider.List (user);
}
/// <summary>
/// Circles the specified user and relation.
/// </summary>
/// <param name="user">User.</param>
/// <param name="relation">Relation.</param>
public static string[] Circles(string relation, string user = null )
{
if (user == null)
user = HttpContext.Current.User.Identity.Name;
return DefaultProvider.Circles (user, relation);
}
/// <summary>
/// Lists the available circles.
/// </summary>
/// <returns>The available circles.</returns>
/// <param name="user">User.</param>
public static string[] ListAvailableCircles (string user = null )
{
if (user == null)
user = HttpContext.Current.User.Identity.Name;
return DefaultProvider.List (user).Select (x => x.Title).ToArray();
}
}
}