2009-03-03 17 views
1

Je suis actuellement en train de créer un site dans le cadre de la CMS N2. Une des choses que je voulais faire était de pouvoir demander aux utilisateurs d'évaluer les différents éléments du site en utilisant un contrôle d'utilisateur de style d'évaluation des étoiles assez standard ou quelque chose de similaire.Contrôle de l'utilisateur de la cotation N2 CMS

Quelqu'un semble-t-il quelque chose de similaire à celui implémenté dans N2 spécifiquement? Je cherche juste quelques indications sur la meilleure façon d'y parvenir en N2. En outre, je ne pense pas que cela devrait faire la différence, mais je suis en train d'implémenter tout cela en utilisant ASP MVC dans N2.

Merci à l'avance

Paul

+0

Êtes-vous à l'aise écrit C#? Si c'est le cas, cela est assez facile à faire avec un contrôle utilisateur et un élément de page supplémentaire. –

+0

AbstractItem c'est –

+0

Oui, j'ai effectivement fait quelque chose de très similaire à cela à la fin. Était juste être paresseux et en espérant qu'il y avait quelque chose de gentil et hors de la boîte là-bas, je pourrais réutiliser. Merci pour le conseil. – pauldunlop

Répondre

0

Vérifiez que l'source code de BlogSvc (bientôt appelé AtomServer)

Source/WebCore/Plugins/Rater/RaterService.cs

Voici une snippet:

public RaterModel Rate(Id entryId, float rating, User user, string ip) 
{ 
    LogService.Info("RateEntry: {0}, {1}, {2}", entryId, rating, ip); 

    if (!AuthorizeService.IsAuthorized(user, entryId, AuthAction.RateEntryOrMedia)) 
    throw new UserNotAuthorizedException(user.Name, AuthAction.RateEntryOrMedia.ToString()); 

    if (rating < 1 || rating > 5) throw new ArgumentOutOfRangeException("Rating value must be 1 thru 5."); 

    AtomEntry entry = AtomEntryRepository.GetEntry(entryId); 
    if (entry.Raters.Contains(ip)) throw new UserAlreadyRatedEntryException(ip, entry.Id.ToString()); 

    entry.RatingCount++; 
    entry.RatingSum += (int)Math.Round(rating); //temporarily force int ratings 
    entry.Edited = DateTimeOffset.UtcNow; 
    List<string> raters = entry.Raters.ToList(); 
    raters.Add(ip); 
    entry.Raters = raters; 
    entry = AtomEntryRepository.UpdateEntry(entry); 
    return new RaterModel() 
    { 
    PostHref = RouteService.RouteUrl("RaterRateEntry", entryId), 
    Rating = entry.Rating, 
    CanRate = false, 
    RatingCount = entry.RatingCount 
    }; 
} 
+0

Lien utile, mais n'était pas tout à fait ce que je cherchais, idéalement besoin de quelque chose de mieux intégré avec N2. Merci quand même. – pauldunlop

0

Ceci est ce que j'utilise dans mon site pour le contenu - 1 à 5 étoiles

N2CMS - EditableEnum fonctionne parfaitement pour ce travail

[EditableEnum("RatingValue", 2, typeof(Rating))] 
    public virtual string RatingValue 
    { 
     get { return (string)(GetDetail("RatingValue")); } 
     set { SetDetail("RatingValue", value); } 
    } 

    /// <summary> 
    /// Enum for the Vehicle Review Ratings 
    /// </summary> 
    public enum Rating 
    { 
     one = 1, 
     two = 2, 
     three = 3, 
     four = 4, 
     five = 5 
    }