class Solutus::Solutus_Server

Constants

CSS
FILE_EXCLUDES
UPLOAD_DIR
UPLOAD_DIR_SUFF

Public Instance Methods

blog_select() click to toggle source
# File lib/solutus.rb, line 519
def blog_select
    result = "<select name=\"post-path\">\n"
    Solutus.blog_urls.each do |yr, arr|
        sorted = arr.sort_by {|k| k["date"]} .reverse
        sorted.each do |blog|
            title = blog["title"]
            path = blog["file_path"]
            url = blog["url"]
            result += "<option value=\"#{path},#{url}\">#{title}</option>\n"
        end
    end
    result += "</select>"
    result
end
page_select() click to toggle source
# File lib/solutus.rb, line 471
def page_select
    result = "<select name=\"page-path\">\n"
    Solutus.page_urls.each do |page|
        path = page["file_path"]
        title = page["title"]
        result += "<option value=\"#{path}\">#{title}</option>\n"
    end
    result += "</select>"
    result
end
path_to_resources() click to toggle source
# File lib/solutus.rb, line 75
def path_to_resources
    File.join(File.dirname(File.expand_path(__FILE__)), '../resources')
end
render_edit_file(path) click to toggle source
# File lib/solutus.rb, line 331
def render_edit_file(path)
    #TODO: do smth diff for YML files...
    ServerStache.template = File.read(File.join(path_to_resources, "editFile.html"))
    result = ServerStache.new
    result[:content] = File.read(path)
    result[:path] = path
    result.render
end
render_edit_page(path) click to toggle source
# File lib/solutus.rb, line 344
def render_edit_page(path)
    f = File.open(File.join(path_to_resources, "editPage.html"), "r")
    template = ""
    f.each_line do |line|
        template += line
    end
    f.close

    f = File.open(path, "r")
    file_contents = ""
    f.each_line do |line|
        file_contents += line
    end
    data = YAML.load(file_contents)

    ServerStache.template = template
    result = ServerStache.new
    
    result[:css] = CSS
    result[:title] = data["title"]
    result[:path] = path
    link = path.split("/")[-1].split(".")[0]
    if ["error", "index"].include?(link)
        link = link + ".html"
    end
    result[:link] = link
    settings.global_settings.each do |key, val|
        result[key.to_sym] = val
    end
    page_html = Solutus.render_page(Solutus.templates, settings.global_settings, data)
    parser = Nokogiri::HTML(page_html)
    parser.at_css("#solutus-content")['contenteditable'] = true
    parser.at_css("#solutus-content")['style'] = "border: 1px black dashed" 
    result[:everything] = parser.at_css("#solutus-everything")
    result.render 
end
render_edit_post(path, url="/") click to toggle source
# File lib/solutus.rb, line 381
def render_edit_post(path, url="/")
    f = File.open(File.join(path_to_resources, "editBlog.html"), "r")
    template = ""
    f.each_line do |line|
        template += line
    end
    f.close

    SolutusStache.template = template
    result = SolutusStache.new
    
    f = File.open(path, "r")
    file_contents = ""
    f.each_line do |line|
        file_contents += line
    end
    data = YAML.load(file_contents)

    result[:css] = CSS
    result[:title] = data["title"]
    result[:date] = data["date"].strftime(BLOG_DATE_FORMAT)
    result[:markdown] = file_contents.split("---")[-1]
    result[:link] = url
    result[:canview] = url != "/"
    result[:path] = path
    result[:subtitle] = data["subtitle"]
    result.render
end
render_file_upload_dirs() click to toggle source
# File lib/solutus.rb, line 506
def render_file_upload_dirs
    result = ''
    unless File.directory?(UPLOAD_DIR)
        FileUtils.mkdir_p(UPLOAD_DIR)
    end
    Dir.entries(UPLOAD_DIR).each do |d| 
        if  (d != '.' && d != '..') && File.directory?(File.join(UPLOAD_DIR, d))
            result += "<option>#{d}</option>"
        end
    end
    result
end
render_files() click to toggle source
# File lib/solutus.rb, line 482
def render_files 
    result = "<select name=\"path\">\n"
    dirs = [".", "static/css", "templates", "pages/site-pages"]
    dirs.each do |dir|
        result += "<optgroup label='#{dir}'>"
        if dir == "."
            files = Dir.entries(dir).select {|f| !File.directory? f}
        else
            files = Solutus.relative_path_to_all_files_in_dir(dir)
        end
        files.each do |filename|
            if !FILE_EXCLUDES.include?(filename)
                path = File.join(dir, filename)
                if File.file?(path)
                    result += "<option value=\"#{path}\">#{filename}</option>\n"
                end
            end
        end
        result += "</optgroup>"
    end
    result += "</select>"
    result
end
render_index() click to toggle source
# File lib/solutus.rb, line 418
def render_index
    f = File.open(File.join(path_to_resources, "index.html"), "r")
    template = ""
    f.each_line do |line|
        template += line
    end
    f.close
    SolutusStache.template = template
    result = SolutusStache.new
    settings.global_settings.each do |key, val|
        result[key.to_sym] = val
    end
    dirs = Dir.entries(SITE_PAGES_PATH)
    puts dirs
    dir_res = ''
    dirs.each do |d|
        if File.directory?(File.join(SITE_PAGES_PATH, d)) && d != ".."
            val = d + "/"
            if val == '.'
                val = "/"
            end
            dir_res += "<option value='#{d}'>#{val}</option>"
        end
    end
    result[:page_paths] = dir_res
    result[:blogs] = blog_select
    result[:pages] = page_select
    result[:css] = CSS
    result[:files] = render_files
    result[:file_upload_paths] = render_file_upload_dirs
    result[:version] = VERSION
    result.render
end
render_local(f, data) click to toggle source
# File lib/solutus.rb, line 452
def render_local(f, data)
    f = File.open(File.join(path_to_resources, f), "r")
    template = ""
    f.each_line do |line|
        template += line
    end
    f.close
    SolutusStache.template = template
    result = SolutusStache.new
    settings.global_settings.each do |key, val|
        result[key.to_sym] = val
    end
    data.each do |key, val|
        result[key.to_sym] = val
    end
    result[:css] = CSS
    result.render
end
render_login(message="") click to toggle source
# File lib/solutus.rb, line 410
def render_login(message="")
    ServerStache.template = File.read(File.join(path_to_resources, "login.html"))
    result = ServerStache.new
    result[:message] = message
    result[:css] = CSS
    result.render
end
send_404() click to toggle source
# File lib/solutus.rb, line 340
def send_404
    send_file File.join(path_to_resources, "404.html")
end
write_log(stuff) click to toggle source
# File lib/solutus.rb, line 319
def write_log(stuff)
    times = Time.now.getlocal('-07:00')
    if !File.file?(LOG_FILE)
        f = File.new(LOG_FILE, 'w')
        f.write("#{times} (PST) Creating log file\n")
        f.close
    end
    f = File.open(LOG_FILE, 'a')
    f.write("#{times} #{stuff}\n")
    f.close
end