# -*-ruby-*- # # Picture viewer for nysagallery # Part of nysagallery # # Copyright (c) 2006, 2007 Stephen Williams, all rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the copyright holder may not be used to endorse or # promote products derived from this software without specific prior # written permission. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # require './gallery_lib' class GalleryPicture RCS_ID = "$Id: gallery_picture.rbx,v 1.5 2007/01/03 12:46:30 stephen Exp $" include GalleryLib attr_reader :cgi # Constructor def initialize @cgi = CGI.new @gallery = nil @section = nil @picture = nil @picture_html = "" @picture_next = nil @picture_prev = nil end # Generates the picture document def generate @gallery_name = @cgi['gallery'] die("BAD_REQUEST", "No gallery specified") if @gallery_name.length == 0 File.open("gallery.dump", "r") do |file| galleries = Marshal.restore(file) @gallery = galleries[@gallery_name] die("NOT_FOUND", "No such gallery") unless @gallery end section_name = @cgi['section'] die("BAD_REQUEST", "No section specified") if section_name.length == 0 @section = @gallery.sections[section_name] die("NOT_FOUND", "No such gallery section") unless @section picture_name = @cgi['picture'] die("BAD_REQUEST", "No picture specified") if picture_name.length == 0 i = 0 @section.pictures.each do |candidate| if candidate.filename == picture_name @picture = candidate @picture_prev = @section.pictures[i - 1] if i > 0 @picture_next = @section.pictures[i + 1] if i < (@section.pictures.size - 1) break end i += 1 end die("NOT_FOUND", "No such picture") unless @picture @picture_html << "
#{@picture.description}
" if @picture.description @picture_html << "#{GalleryLib.rcs_mangle(RCS_ID)}
#{GalleryLib.rcs_mangle(GalleryLib::RCS_ID)}