2009-03-03 10 views
1

Ich stelle gerade eine Seite im N2 CMS Framework zusammen. Eines der Dinge, die ich tun wollte, war, dass die Nutzer verschiedene Elemente der Website mit einem ziemlich standardmäßigen Sternebewertungs-Benutzersteuerelement oder ähnlichem bewerten konnten.N2 CMS Bewertung Benutzer Kontrolle

Hat jemand etwas ähnliches zu diesem speziell in N2 implementiert scheinen? Ich suche nur nach Hinweisen auf den besten Weg, dies in N2 zu erreichen.

Auch, denke nicht, dass es einen Unterschied machen sollte, aber ich implementiere derzeit all dies mit ASP MVC innerhalb von N2.

Vielen Dank im Voraus

Paul

+0

Sind Sie bequem schreiben C#? Wenn dies der Fall ist, ist dies mit einem Benutzersteuerelement und einem zusätzlichen Seitenelement ziemlich einfach. –

+0

AbstractItem das ist –

+0

Ja, ich habe tatsächlich etwas sehr ähnliches am Ende getan. War nur faul und hoffte, dass es etwas Schönes und Out-of-the-Box da draußen gibt, das ich wiederverwenden könnte. Danke für den Hinweis. – pauldunlop

Antwort

0

Überprüfen Sie die source code von BlogSvc

Quelle/WebCore/Plugins/Rater/RaterService.cs

Hier ist eine (bald AtomServer genannt werden) Schnipsel:

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

Hilfreiche Link, aber war nicht ganz das, was ich suchte, idealerweise benötigt etwas integriert mit N2 besser. Trotzdem danke. – pauldunlop

0

Dies ist, was ich benutze in meiner Website für die Bewertung Inhalt - 1 bis 5 Sternen

N2CMS - EditableEnum funktioniert perfekt für diesen Job

[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 
    }