2009-03-03 2 views
1

Я сейчас собираю сайт в рамках N2 CMS. Одной из вещей, которые я хотел бы сделать, было: чтобы пользователи могли оценивать различные элементы сайта с использованием стандартного пользовательского элемента управления с рейтингом звездного стиля или чего-то подобного.N2 CMS рейтинг пользователя управление

Неужели кто-нибудь кажется чем-то похожим на это, реализованным в N2? Просто найдите некоторые указатели на лучший способ добиться этого в N2.

Кроме того, не думайте, что это должно иметь значение, но я в настоящее время реализую все это, используя ASP MVC в N2.

Заранее спасибо

Paul

+0

вы можете письменно C#? Если это так, то это довольно легко сделать с пользовательским элементом управления и дополнительным элементом страницы. –

+0

AbstractItem, то есть –

+0

Да, я на самом деле сделал что-то очень похожее на это в конце. Был просто ленив и надеялся, что там что-то хорошее и из коробки, я мог бы повторно использовать. Спасибо за совет. – pauldunlop

ответ

0

Проверьте source code из BlogSvc (скоро будет называться AtomServer)

Источник/WebCore/Плагины/Rater/RaterService.cs

Вот фрагмент:

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

Полезная ссылка, но не совсем то, что я искал, в идеале, было что-то интегрированное с N2 лучше. Спасибо хоть. – pauldunlop

0

Это то, что я использую на мой веб-сайт для содержания рейтинга - 1 до 5 звезд

N2CMS - EditableEnum отлично работает для этой работы

[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 
    } 
Смежные вопросы