class ImageGallery2017::Gallery

Attributes

folder[R]

Public Class Methods

new(rsc, filepath: '.', xslfile: '../xsl/index.xslt', schema: 'images[title, folder]/image(original, desktop, preview, ' + 'folder, imgcount, title)', folder: nil, log: nil) click to toggle source
Calls superclass method
# File lib/imagegallery2017.rb, line 21
def initialize(rsc, filepath: '.', xslfile: '../xsl/index.xslt',  
      schema: 'images[title, folder]/image(original, desktop, preview, ' + 
              'folder, imgcount, title)', folder: nil, log: nil)

  @rsc, @wwwpath, @xslfile = [rsc, File.join(filepath, 'www'), xslfile]
  @log = log

  a = [@wwwpath, 'images']
  a << folder if folder
  
  @imagespath = File.join(*a)
  
  @log.info 'Gallery/initialize: imagespath: ' + @imagespath.inspect if @log
  FileUtils.mkdir_p @imagespath

  dxfilepath = File.join(@imagespath, 'dynarex.xml')
  
  if File.exists? dxfilepath then
    super(dxfilepath)
  else

    super(schema)
    self.order = :descending
    self.default_key = 'uid'
    self.title = 'Image gallery'
    self.xslt = xslfile

    self.save dxfilepath

  end
  
  if @log then
    @log.info 'Gallery/initialize: self.summary' + self.summary.inspect 
  end

end

Public Instance Methods

add_image(uploaded=nil) click to toggle source
# File lib/imagegallery2017.rb, line 58
def add_image(uploaded=nil)

  @log.info 'Gallery/add_image: active' if @log
  
  filename = uploaded[:filename].gsub(/ +/,'-')    
  file = File.join(@imagespath, filename)    
  File.write file, uploaded[:tempfile].read
      
  preview_file, desktop_file = @rsc.rmagick.resize file, 
      ['140x110','640x480']
  
  h = {original: filename, desktop: desktop_file, 
      preview: preview_file}

  self.create(h)
  self.save
  @log.info 'Gallery/add_image: saved' if @log
  
  return preview_file
end
delete_image(id) click to toggle source
# File lib/imagegallery2017.rb, line 79
def delete_image(id)
  self.delete id
end
render() click to toggle source
# File lib/imagegallery2017.rb, line 83
def render()

  @log.info 'Gallery/render: active' if @log
  @log.info 'Gallery/render: self.to_xml' + self.to_xml if @log
  
  doc   = Nokogiri::XML(self.to_xml)
  
  if @log then
    @log.info "Gallery/render: self.summary: %s" % [self.summary.inspect]
  end
  
  xslt  = Nokogiri::XSLT(File.read(File.join(@imagespath, 
                                             self.summary[:xslt])))
  xslt.transform(doc).to_s

end