//
 // GET: /Gallery/
 
 public ViewResult Index(string search, int? page)
 {
     var presentations = Entities.PresentationsWithTags().OrderBy(g => g.Title);
     var cm = new WebPresentationsCacheManager();
     List<Presentation> result;
     try
     {
         if (!String.IsNullOrEmpty(search))
         {
             if (cm.Contains(search))
             {
                 result = (List<Presentation>) cm.GetData(search);
             }
             else
             {
                 result = EntitiesIndexer.QueryPresentations(search);
                 cm.Add(search, result);
             }
         }
         else
         {
             result = presentations.ToList();
         }
     }
     catch
     {
         result = new List<Presentation>();
     }
     var gallery = GenerateGallery(result);
     int pageSize = 6;
     int pageNumber = (page ?? 1);
     return View(gallery.ToPagedList(pageNumber, pageSize));           
 }