diff --git a/app.rb b/app.rb index 3a03965..9da946d 100644 --- a/app.rb +++ b/app.rb @@ -347,6 +347,12 @@ post "/prjcreate" do end get "/prjedit/:id" do + unless session[:prj_modal_text].nil? + @modal_info = session[:prj_modal_info] + @modal_text = session[:prj_modal_text] + session[:prj_modal_info] = nil + session[:prj_modal_text] = nil + end prj = ProjectsActions.new(cfg.get_projects_path, db) if prj.path.nil? print_error_page(503, "Путь к проектам не существует") @@ -382,6 +388,44 @@ get "/prjedit/:id" do end end +post "/prjagit/:id" do + prj = ProjectsActions.new(cfg.get_projects_path, db) + if prj.path.nil? + print_error_page(503, "Путь к проектам не существует") + else + repo = GitRepo.new(cfg.get_repo, db) + if repo.path.nil? + print_error_page(503, "Путь к репозиториям не существует") + else + prj_info = prj.get_project(params["id"]) + if prj_info.nil? + print_error_page(503, "Путь к проектам не существует") + else + proj_repo_list = prj.get_project_gits(prj_info[:id]) + git_info = repo.get_repo_short_info_by_id(params["gitlist"].to_i) + if git_info.nil? + print_error_page(503, "Репозиторий исчез") + else + fnd = false + proj_repo_list.each do |item| + if item[:id] == git_info[:id] + fnd = true + break + end + end + if fnd + session[:prj_modal_info] = "Ошибка" + session[:prj_modal_text] = "Данный git-репозиторий уже добавлен к проекту" + redirect back + else + prj.add_git_to_project(prj_info[:id], git_info[:id]) + end + end + end + end + end +end + not_found do status 404 @page_name = "Кто-то потерялся" diff --git a/classes/db.rb b/classes/db.rb index f807f32..5c704e1 100644 --- a/classes/db.rb +++ b/classes/db.rb @@ -37,6 +37,10 @@ class DBase Repos.where(reponame: repo_name) end + def get_repo_info_by_id(id) + Repos[id] + end + def get_recips() result = [] Recips.order(:id).map do |item| @@ -49,7 +53,7 @@ class DBase unless rep_id[:id].nil? id = rep_id[:id] RepocRecips.where(repo_id: id).delete - Repos.where(id: id).delete + ReposProjects.where(repo_id: id).delete end end @@ -147,4 +151,12 @@ class DBase end result end + + def save_git_project(prj_id, git_id) + result = ReposProjects.where(proj_id: prj_id, repo_id: git_id).first + if result.nil? + id = ReposProjects.insert(proj_id: prj_id, repo_id: git_id) + @last_id = id + end + end end diff --git a/classes/gitinfo.rb b/classes/gitinfo.rb index a49bf07..0d4d86d 100644 --- a/classes/gitinfo.rb +++ b/classes/gitinfo.rb @@ -148,4 +148,32 @@ class GitRepo end end end + + def get_repo_short_info_by_id(id) + @db.get_repo_info_by_id(id) + end + + def clone_repo_master(id, path) + @error = nil + repo_info = @db.get_repo_info_by_id(id) + unless repo_info.nil? + File.open("locks/gitcreate", "r") do |f| + f.flock(File::LOCK_SH) + git_path = File.join(@path, repo_info[:reponame] + ".git") + if File.exist?(git_path) + repo = Rugged::Repository.new(git_path) + if repo.empty? + @error = "Репозиторий пустой, нельзя добавить в проект пустой репозиторий" + else + #TODO clone repo + end + else + @error = "Файла репозитория не существует" + end + end + else + @error = "Нет информации о репозитории" + end + @error + end end diff --git a/classes/projects.rb b/classes/projects.rb index 82d64e9..1483456 100644 --- a/classes/projects.rb +++ b/classes/projects.rb @@ -90,4 +90,8 @@ class ProjectsActions def get_project_gits(id) @db.get_gits_for_projects(id) end + + def add_git_to_project(prj_id, git_id) + @db.save_git_project(prj_id, git_id) + end end diff --git a/views/cfgslist.erb b/views/cfgslist.erb index df2336c..ff9f8e5 100644 --- a/views/cfgslist.erb +++ b/views/cfgslist.erb @@ -4,15 +4,15 @@

Избранные

<% @list_selected.each do |item| %> -
- <%= item[1] %> + <% end %>

Локальные

<% @list_local.each do |item| %> -
+ <% end %> @@ -20,7 +20,7 @@

Глобальные

<% @list_global.each do |item| %> -
+ <% end %> diff --git a/views/gitinfo.erb b/views/gitinfo.erb index 655a948..db2e9ff 100644 --- a/views/gitinfo.erb +++ b/views/gitinfo.erb @@ -11,7 +11,7 @@
-
+

<%= @repo_data[:info][:reponame] %>

diff --git a/views/prjinfo.erb b/views/prjinfo.erb index 906a1dc..3a44b88 100644 --- a/views/prjinfo.erb +++ b/views/prjinfo.erb @@ -1,6 +1,25 @@ <%= erb :header %>
+ <% unless @modal_text.nil? %> + + <% end %>

@@ -32,7 +51,7 @@
@@ -64,4 +83,11 @@ searchNoData: '
  • Нет данных
  • ', }); + <% unless @modal_text.nil? %> + + <% end %> <%= erb :footer %> \ No newline at end of file