| Class | CorePlugins::ResourceManager |
| In: |
lib/webgen/plugins/coreplugins/resourcemanager.rb
|
| Parent: | Webgen::Plugin |
Handles resources in webgen.
| resources | [R] | Returns all defined resources. |
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 151
151: def initialize( plugin_manager )
152: super
153: @plugin_manager['Core/FileHandler'].add_msg_listener( :after_all_nodes_written, method( :write_resources ) )
154: @resources = {}
155: define_webgen_resources unless Webgen.data_dir.empty?
156: define_user_resources
157: end
Appends given data to the resource name. Data can only be appended to memory resources!
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 187
187: def append_data( name, data )
188: if (res = get_resource( name )) && res.type == :memory
189: res.append_data( data )
190: else
191: log(:error) {"Resource #{name} does not exist or data cannot be appended to it!" }
192: end
193: end
Adds an exisiting file resource which can be referenced later by using name. The output_path should be an absolute path, like +/images/logo.png+. If not, it will be relative to the output directory.
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 163
163: def define_file_resource( name, resource_path, output_path )
164: if File.exists?( resource_path )
165: define_resource( name, FileResource.new( name, output_path, resource_path ) )
166: end
167: end
Adds a new resource which can be referenced later by using name. The output_path should be an absolute path, like +/images/logo.png+. If not, it will be relative to the output directory.
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 172
172: def define_memory_resource( name, output_path )
173: define_resource( name, MemoryResource.new( name, output_path ) )
174: end
Assigns the resource res the name name.
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 177
177: def define_resource( name, res )
178: @resources[name] = res unless @resources.has_key?( name )
179: end
Returns the requested resource.
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 182
182: def get_resource( name )
183: @resources[name]
184: end
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 247
247: def define_user_resources
248: p = param( 'resources' )
249: if !p.kind_of?( Array ) || p.find {|h| !h.kind_of?( Array ) || h.length != 3}
250: log(:error) { "Parameter 'resources' not correctly structured!" }
251: return
252: end
253: p.each {|name, res_path, out_path| define_file_resource( name, res_path, out_path ) }
254: end
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 222
222: def define_webgen_emoticons
223: Dir.glob(File.join( Webgen.data_dir, 'resources', 'emoticons', '*/'), File::FNM_CASEFOLD ).each do |pack_dir|
224: pack = File.basename( pack_dir )
225: Dir.glob( File.join( pack_dir, '*' ), File::FNM_CASEFOLD ).each do |smiley_file|
226: smiley = File.basename( smiley_file, '.*' )
227: res = define_file_resource( "webgen-emoticons-#{pack}-#{smiley}",
228: smiley_file,
229: "/images/emoticons/#{pack}-#{File.basename(smiley_file)}" )
230: res.predefined = "Emoticon from pack '#{pack}' for '#{smiley}'"
231: end
232: end
233: end
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 235
235: def define_webgen_icons
236: base_dir = File.join( Webgen.data_dir, 'resources', 'icons' )
237: Dir.glob( File.join( base_dir, '**/*'), File::FNM_CASEFOLD ).each do |icon|
238: dirs = File.dirname( icon ).sub( /^#{base_dir}/, '' ).split( '/' ).join( '-' )
239: dirs += '-' if dirs.length > 0
240: res = define_file_resource( "webgen-icons-#{dirs}#{File.basename( icon, '.*' )}",
241: icon,
242: "/images/icons/#{dirs}#{File.basename(icon)}" )
243: res.predefined = "Icon named #{File.basename(icon)}"
244: end
245: end
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 199
199: def define_webgen_resources
200: define_file_resource( 'webgen-logo', File.join( Webgen.data_dir, 'resources', 'images', 'webgen_logo.png' ),
201: '/images/webgen-logo.png'
202: ).predefined = "The logo of webgen as seen on the homepage."
203: define_file_resource( 'webgen-generated', File.join( Webgen.data_dir, 'resources', 'images', 'generated_by_webgen.png' ),
204: '/images/webgen-generated-by.png'
205: ).predefined = "A 88x31 image for use on web sites that were generated by webgen."
206: define_file_resource( 'w3c-valid-css', File.join( Webgen.data_dir, 'resources', 'images', 'valid-css.gif' ),
207: '/images/w3c-valid-css.gif'
208: ).predefined = 'The W3C image for valid css.'
209: define_file_resource( 'w3c-valid-xhtml11', File.join( Webgen.data_dir, 'resources', 'images', 'valid-xhtml11.png' ),
210: '/images/w3c-valid-xhtml11.png'
211: ).predefined = "The W3C image for valid XHTML1.1"
212:
213: define_webgen_emoticons
214: define_webgen_icons
215:
216: define_memory_resource( 'webgen-css', '/css/webgen.css'
217: ).predefined = "Plugins use this resource for adding their CSS styles."
218: define_memory_resource( 'webgen-javascript', '/js/webgen.js'
219: ).predefined = "Plugins use this resource for adding their Javascript fragments."
220: end
# File lib/webgen/plugins/coreplugins/resourcemanager.rb, line 257
257: def write_resources( root )
258: outDir = @plugin_manager.param_for_plugin( 'Core/Configuration', 'outDir' )
259:
260: @resources.each do |name, res|
261: if res.write_resource?( outDir, @plugin_manager['Core/FileHandler'] )
262: begin
263: FileUtils.makedirs( File.dirname( res.dest_path( outDir ) ) )
264: res.write_resource( outDir, @plugin_manager['Core/FileHandler'] )
265: log(:info) { "Resource '#{name}' written to <#{res.dest_path( outDir )}>" }
266: rescue Exception => e
267: log(:error) { "Error while writing resource '#{name}': #{e.message}" }
268: end
269: end
270: end
271: end