# -*- coding: utf-8 -*- # # @file # @brief # @author ongaeshi # @date 2011/06/25 require 'rubygems' require 'sinatra' require 'haml' require 'sass' $LOAD_PATH.unshift '../..' require 'milkode/cdweb/lib/database' require 'milkode/cdweb/lib/command' require 'milkode/cdweb/lib/mkurl' require 'milkode/cdweb/lib/web_setting' require 'milkode/cdweb/lib/package_list' set :haml, :format => :html5 get '/' do @setting = WebSetting.new @version = "0.8.0" @package_num = Database.instance.yaml_package_num @file_num = Database.instance.totalRecords @package_list = PackageList.new(Database.instance.grndb) haml :index, :layout => false end def package_path(path) path.split('/')[0,3].join('/') end post '/search*' do path = unescape(params[:pathname]) if params[:clear] redirect Mkurl.new("#{path}", params).inherit_shead else case params[:shead] when 'all' path = "/home" when 'package' path = package_path(path) when 'directory' # do nothing else path = package_path(path) end redirect Mkurl.new("#{path}", params).inherit_query_shead end end get '/home*' do |path| before = Time.now path = path.sub(/^\//, "") record = Database.instance.record(path) if path.empty? if (params[:query] and !params[:query].empty?) search(path, params, before) else packages(params, before) end elsif (record) view(record, params, before) else if (params[:query] and !params[:query].empty?) search(path, params, before) else filelist(path, params, before) end end end get %r{/help} do @setting = WebSetting.new haml :help end # -- helper function -- helpers do # -- escape functions -- alias h escape_html alias escape_url escape def escape_path(src) escape_url(src).gsub("%2F", '/') end # -- utility -- def link(query) "#{query}" end def create_radio(value, shead) str = (value == shead) ? 'checked' : '' "" end def create_checkbox(name, value) str = (value) ? 'checked' : '' "" end def create_headmenu(path, query, flistpath = '') href = Mkurl.new('/home/' + path, params).inherit_query_shead flist = File.join("/home/#{path}", flistpath) <全てのパッケージ #{headicon('document-new-4.png')} 新しい検索 #{headicon('directory.png')} ファイル一覧 #{headicon('help.png')} ヘルプ EOF end def headicon(name) "" end def topic_path(path, params) href = '' path = File.join('home', path) path.split('/').map_with_index {|v, index| href += '/' + v "#{v}" }.join('/') end def package_name(path) (path == "") ? 'root' : path.split('/')[0] end def current_name(path) (path == "") ? 'root' : File.basename(path) end def path_title(path) (path == "") ? "root" : path end def filelist_title(path) (path == "") ? "Package List" : path end end class Array def map_with_index! each_with_index do |e, idx| self[idx] = yield(e, idx); end end def map_with_index(&block) dup.map_with_index!(&block) end end