Receipt create. Part 2

This commit is contained in:
alexey
2025-02-22 23:28:36 +03:00
parent 6527af5005
commit d608f73772
11 changed files with 356 additions and 24 deletions

122
app.rb
View File

@@ -14,6 +14,7 @@ require_relative "classes/config"
require_relative "classes/gitinfo"
require_relative "classes/db"
require_relative "classes/systeminfo"
require_relative "classes/utilities"
def print_error_page(error_status, error_meaasge)
@page_name = "Ошибка выполнения"
@@ -22,14 +23,6 @@ def print_error_page(error_status, error_meaasge)
halt erb(:page5xx)
end
def sanitize_filename(filename)
filename = filename.strip
sanitized = filename.gsub(/[^a-zA-Z0-9_]/, "_")
sanitized.gsub!(/_+/, "_")
sanitized.gsub!(/^_+|_+$/, "")
sanitized
end
cfg = IniConfig.new()
db = DBase.new()
@@ -155,11 +148,118 @@ get "/recips" do
erb :receips
end
get "/recips/:rcp_id" do
repo = GitRepo.new(cfg.get_repo, db)
if repo.path.nil?
print_error_page(503, "Путь к репозиториям не существует")
else
@repo_data = repo.getrepos
@rcp_id = params["rcp_id"]
info = db.get_rcp_info_by_id(@rcp_id)
@page_name = info[:filepath]
@rcp_name = info[:filepath]
if session[:rcp_old_description].nil?
@old_filepath = info[:filepath]
else
@old_filepath = session[:rcp_old_filepath]
end
if session[:rcp_old_description].nil?
@old_description = info[:descr]
else
@old_description = session[:rcp_old_description]
end
if session[:rcp_old_codedata].nil?
@old_codedata = info[:content]
else
@old_codedata = session[:rcp_old_codedata]
end
if session[:rcp_old_gitlst].nil?
@old_gitlst = info[:repos_list]
else
@old_gitlst = session[:rcp_old_gitlst]
end
@error_data = session[:rcpcreate_error]
session[:rcpcreate_error] = nil
session[:rcp_old_filepath] = nil
session[:rcp_old_description] = nil
session[:rcp_old_codedata] = nil
session[:rcp_old_gitlst] = nil
erb :rcpedit
end
end
post "/recips/:rcp_id" do
rcp_id = params["rcp_id"]
session[:rcp_old_filepath] = params["filepath"]
session[:rcp_old_description] = params["description"]
session[:rcp_old_codedata] = params["codedata"]
session[:rcp_old_gitlst] = params["gitlst"]
if params["filepath"].nil? || params["description"].nil? || params["filepath"].strip == "" || params["description"].strip == ""
session[:rcpcreate_error] = "Имя рецепта и описание не должны быть пустыми"
redirect url("/recips/#{rcp_id}")
else
@error_data = db.updaterecip(rcp_id, params["filepath"], params["description"], params["codedata"], params["gitlst"])
unless @error_data.nil?
session[:rcpcreate_error] = @error_data
redirect url("/recips/#{rcp_id}")
else
redirect "/recips"
end
end
end
post "/rcpdelete/:rcp_id" do
input_name = params["rcpnamedup"]
rcp_id = params["rcp_id"]
info = db.get_rcp_info_by_id(rcp_id)
if info.nil?
print_error_page(404, "Рецепта не существует")
else
if info[:filepath] == input_name
db.delete_rcp(rcp_id)
end
redirect "/recips"
end
end
post "/rcpdelete" do
redirect "/recips"
end
get "/rcpcreate" do
@page_name = "Создать новый рецепт"
@error_data = session[:rcpcreate_error]
session[:gitcreate_error] = nil
erb :rcpcrt
@old_filepath = session[:rcp_old_filepath]
@old_description = session[:rcp_old_description]
@old_codedata = session[:rcp_old_codedata]
@old_gitlst = session[:rcp_old_gitlst]
repo = GitRepo.new(cfg.get_repo, db)
if repo.path.nil?
print_error_page(503, "Путь к репозиториям не существует")
else
@repo_data = repo.getrepos
@error_data = session[:rcpcreate_error]
session[:rcpcreate_error] = nil
erb :rcpcrt
end
end
post "/rcpcreate" do
session[:rcp_old_filepath] = params["filepath"]
session[:rcp_old_description] = params["description"]
session[:rcp_old_codedata] = params["codedata"]
session[:rcp_old_gitlst] = params["gitlst"]
if params["filepath"].nil? || params["description"].nil? || params["filepath"].strip == "" || params["description"].strip == ""
session[:rcpcreate_error] = "Имя рецепта и описание не должны быть пустыми"
redirect "/rcpcreate"
else
@error_data = db.createrecip(params["filepath"], params["description"], params["codedata"], params["gitlst"])
unless @error_data.nil?
session[:rcpcreate_error] = @error_data
redirect "/rcpcreate"
else
redirect "/recips"
end
end
end
not_found do