=begin filemanager.rb Copyright (C) 2008 Leon Li You may redistribute it and/or modify it under the same license terms as Ruby. =end begin require 'action_controller/polymorphic_routes' require 'action_controller/routing/optimisations' require 'action_controller/routing/routing_ext' require 'action_controller/routing/route' require 'action_controller/routing/segments' require 'action_controller/routing/builder' require 'action_controller/routing/route_set' require 'action_controller/routing/recognition_optimisation' rescue require 'action_controller/routing' end require 'fileutils' FM_ID = 'filemanager' FM_ROOT = File.join(RAILS_ROOT, 'vendor', FM_ID) FM_PATH_CONTROLLER = File.join(FM_ROOT, 'app', 'controllers') FM_PATH_VIEW = File.join(FM_ROOT, 'app', 'views') FM_PATH_PUBLIC = File.join(FM_ROOT, 'public') if $FM_OVERWRITE || ! File.exist?(FM_ROOT) fm_rails_path = File.dirname(File.dirname(__FILE__)) + "/#{FM_ID}" FileUtils.cp_r(fm_rails_path, File.join(RAILS_ROOT, 'vendor')) FileUtils.cp_r(FM_PATH_PUBLIC, RAILS_ROOT) FileUtils.rm_rf(FM_PATH_PUBLIC) end ActionController::Routing::RouteSet.class_eval do def fm_load_routes! fm_old_load_routes! map = ActionController::Routing::RouteSet::Mapper.new(self) map.namespace :fm do |f| f.resources :filemanager end end alias_method :fm_old_load_routes!, :load_routes! alias_method :load_routes!, :fm_load_routes! end Rails::Initializer.class_eval do def fm_set_load_path configuration.load_paths << FM_PATH_CONTROLLER fm_old_set_load_path end def fm_initialize_framework_views fm_old_initialize_framework_views if ActionController::Base.respond_to?(:append_view_path) ActionController::Base.append_view_path(FM_PATH_VIEW) else ActionController::Base.view_paths << FM_PATH_VIEW end configuration.controller_paths << FM_PATH_CONTROLLER end alias_method :fm_old_initialize_framework_views, :initialize_framework_views alias_method :initialize_framework_views, :fm_initialize_framework_views alias_method :fm_old_set_load_path, :set_load_path alias_method :set_load_path, :fm_set_load_path end require "erb" require "yaml" $FM_PROPERTIES = YAML::load(ERB.new(IO.read(File.join(FM_ROOT, 'filemanager.yml'))).result) FM_IMAGE_TYPES = $FM_PROPERTIES['image.type'].split(' ') FM_FLASH_TYPES = $FM_PROPERTIES['flash.type'].split(' ') FM_MOVIE_TYPES = $FM_PROPERTIES['movie.type'].split(' ') FM_RM_TYPES = $FM_PROPERTIES['rm.type'].split(' ') FM_OFFICE_TYPES = $FM_PROPERTIES['office.type'].split(' ') FM_EXCEL_TYPES = $FM_PROPERTIES['excel.type'].split(' ') FM_WORD_TYPES = $FM_PROPERTIES['word.type'].split(' ') FM_PPT_TYPES = $FM_PROPERTIES['ppt.type'].split(' ') FM_HELP_TYPES = $FM_PROPERTIES['help.type'].split(' ') FM_PLAIN_TYPES = $FM_PROPERTIES['plain.type'].split(' ') FM_NONE_TYPES = $FM_PROPERTIES['none.type'].split(' ') FM_SUPPORT_TYPES = FM_IMAGE_TYPES + FM_FLASH_TYPES + FM_MOVIE_TYPES + FM_RM_TYPES + FM_OFFICE_TYPES + FM_HELP_TYPES + FM_PLAIN_TYPES FM_UNKNOWN_TYPE = 'unknown' FM_RESOURCES_PATH= $FM_PROPERTIES['resources.path'] FM_LOCK_PATH = $FM_PROPERTIES['resources.url'] FM_ENCODING_TO = $FM_PROPERTIES['encoding.to'] FM_ENCODING_FROM = $FM_PROPERTIES['encoding.from'].nil? ? '' : $FM_PROPERTIES['encoding.from'] FM_TEMP_DIR = $FM_PROPERTIES['temp.dir'].nil? ? File.join(FM_ROOT, 'temp') : $FM_PROPERTIES['temp.dir'] FileUtils.rm_rf(Dir.glob("#{FM_TEMP_DIR}/*"))