Adding projects to repositories.
This commit is contained in:
parent
7ef909afbb
commit
ee9af32fa6
|
@ -1,8 +1,8 @@
|
||||||
class RepositoriesController < ApplicationController
|
class RepositoriesController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
#before_filter :find_platform, :except => [:index, :new, :create]
|
#before_filter :find_platform, :except => [:index, :new, :create]
|
||||||
before_filter :find_repository, :only => [:show, :destroy]
|
before_filter :find_repository, :only => [:show, :destroy, :add_project, :remove_project]
|
||||||
before_filter :get_paths, :only => [:new, :create]
|
before_filter :get_paths, :only => [:show, :new, :create, :add_project, :remove_project]
|
||||||
before_filter :find_platforms, :only => [:new, :create]
|
before_filter :find_platforms, :only => [:new, :create]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
@ -11,9 +11,9 @@ class RepositoriesController < ApplicationController
|
||||||
|
|
||||||
def show
|
def show
|
||||||
if params[:query]
|
if params[:query]
|
||||||
@projects = @repository.projects.recent.by_name(params[:query]).paginate :page => params[:page], :per_page => 30
|
@projects = @repository.projects.recent.by_name(params[:query]).paginate :page => params[:project_page], :per_page => 30
|
||||||
else
|
else
|
||||||
@projects = @repository.projects.recent.paginate :page => params[:page], :per_page => 30
|
@projects = @repository.projects.recent.paginate :page => params[:project_page], :per_page => 30
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -40,6 +40,50 @@ class RepositoriesController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_project
|
||||||
|
if params[:project_id]
|
||||||
|
@project = Project.find(params[:project_id])
|
||||||
|
params[:project_id] = nil
|
||||||
|
unless @repository.projects.include? @project
|
||||||
|
@repository.projects << @project
|
||||||
|
# if @repository.save
|
||||||
|
flash[:notice] = t('flash.repository.project_added')
|
||||||
|
redirect_to platform_repository_path(@repository.platform, @repository)
|
||||||
|
# else
|
||||||
|
# flash[:error] = t('flash.repository.project_not_added')
|
||||||
|
# redirect_to url_for(:action => :add_project)
|
||||||
|
# end
|
||||||
|
else
|
||||||
|
flash[:error] = t('flash.repository.project_not_added')
|
||||||
|
redirect_to url_for(:action => :add_project)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
@projects = (Project.all - @repository.projects).paginate(:page => params[:project_page])
|
||||||
|
render 'projects_list'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def remove_project
|
||||||
|
if params[:project_id]
|
||||||
|
@project = Project.find(params[:project_id])
|
||||||
|
params[:project_id] = nil
|
||||||
|
if @repository.projects.include? @project
|
||||||
|
@repository.projects.delete @project
|
||||||
|
# if @repository.save
|
||||||
|
flash[:notice] = t('flash.repository.project_removed')
|
||||||
|
redirect_to platform_repository_path(@repository.platform, @repository)
|
||||||
|
# else
|
||||||
|
# flash[:error] = t('flash.repository.project_not_removed')
|
||||||
|
# redirect_to url_for(:action => :remove_project)
|
||||||
|
# end
|
||||||
|
else
|
||||||
|
redirect_to url_for(:action => :remove_project)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
redirect_to platform_repository_path(@repository.platform, @repository)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def get_paths
|
def get_paths
|
||||||
|
@ -61,6 +105,10 @@ class RepositoriesController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def find_platform
|
||||||
|
@platform = @repository.platform
|
||||||
|
end
|
||||||
|
|
||||||
def find_platforms
|
def find_platforms
|
||||||
@platforms = Platform.all
|
@platforms = Platform.all
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
%table.table
|
||||||
|
%tr
|
||||||
|
%th.first= t("activerecord.attributes.project.name")
|
||||||
|
%th.last
|
||||||
|
- @projects.each do |project|
|
||||||
|
%tr{:class => cycle("odd", "even")}
|
||||||
|
%td
|
||||||
|
= link_to project.owner.name + '/' + project.name, project_path(project)
|
||||||
|
%td.last
|
||||||
|
#{link_to t("layout.show"), project_path(project)} | #{link_to t("layout.add"), url_for(:controller => :repositories, :action => :add_project, :project_id => project.id)}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
%table.table
|
||||||
|
%tr
|
||||||
|
%th.first= t("activerecord.attributes.project.name")
|
||||||
|
%th.last
|
||||||
|
- @projects.each do |project|
|
||||||
|
%tr{:class => cycle("odd", "even")}
|
||||||
|
%td
|
||||||
|
= link_to project.name, project_path(project)
|
||||||
|
%td.last
|
||||||
|
#{link_to t("layout.show"), project_path(project)} | #{link_to t("layout.delete"), url_for (:action => :remove_project, :project_id => project.id), :confirm => t("layout.projects.confirm_delete")}
|
|
@ -2,10 +2,10 @@
|
||||||
.secondary-navigation
|
.secondary-navigation
|
||||||
%ul.wat-cf
|
%ul.wat-cf
|
||||||
%li.first.active= link_to t("layout.repositories.list"), repositories_path
|
%li.first.active= link_to t("layout.repositories.list"), repositories_path
|
||||||
%li= link_to t("layout.platforms.new"), new_repository_path
|
%li= link_to t("layout.repositories.new"), new_repository_path
|
||||||
.content
|
.content
|
||||||
%h2.title
|
%h2.title
|
||||||
= t("layout.platforms.list_header")
|
= t("layout.repositories.list_header")
|
||||||
.inner
|
.inner
|
||||||
= render :partial => 'shared/search_form'
|
= render :partial => 'shared/search_form'
|
||||||
= render :partial => 'list', :object => @repositories
|
= render :partial => 'list', :object => @repositories
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
.block
|
||||||
|
.secondary-navigation
|
||||||
|
%ul.wat-cf
|
||||||
|
%li.first= link_to t("layout.repositories.list"), @repositories_path + "#repositories"
|
||||||
|
%li= link_to t("layout.repositories.new"), @new_repository_path
|
||||||
|
%li.active= link_to t("layout.repositories.show"), repository_path(@repository)
|
||||||
|
.content
|
||||||
|
.inner
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.name")
|
||||||
|
\:
|
||||||
|
= @repository.name
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.unixname")
|
||||||
|
\:
|
||||||
|
= @repository.unixname
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.platform")
|
||||||
|
\:
|
||||||
|
= link_to @repository.platform.name, url_for(@repository.platform)
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.owner")
|
||||||
|
\:
|
||||||
|
= link_to @repository.owner.name, url_for(@repository.owner)
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.visibility")
|
||||||
|
\:
|
||||||
|
= @repository.visibility
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.platform")
|
||||||
|
\:
|
||||||
|
= link_to @repository.platform.name, platform_path(@platform)
|
||||||
|
.wat-cf
|
||||||
|
= link_to image_tag("web-app-theme/icons/cross.png", :alt => t("layout.delete")) + " " + t("layout.delete"), @repository_path, :method => "delete", :class => "button", :confirm => t("layout.repositories.confirm_delete")
|
||||||
|
|
||||||
|
%a{ :name => "projects" }
|
||||||
|
.block
|
||||||
|
.secondary-navigation
|
||||||
|
%ul.wat-cf
|
||||||
|
%li.first= link_to t("layout.projects.list"), repository_path(@repository) + "#projects"
|
||||||
|
%li.active= link_to t("layout.projects.add"), url_for(:controller => :repositories, :action => :add_project)
|
||||||
|
.content
|
||||||
|
%h2.title
|
||||||
|
= t("layout.projects.list_header")
|
||||||
|
.inner
|
||||||
|
= render :partial => 'shared/search_form'
|
||||||
|
= render :partial => 'proj_list', :object => @projects
|
||||||
|
.actions-bar.wat-cf
|
||||||
|
.actions
|
||||||
|
= will_paginate @projects, :param_name => :project_page
|
||||||
|
|
||||||
|
|
||||||
|
-# content_for :sidebar, render(:partial => 'sidebar')
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
.block
|
.block
|
||||||
.secondary-navigation
|
.secondary-navigation
|
||||||
%ul.wat-cf
|
%ul.wat-cf
|
||||||
%li.first= link_to t("layout.repositories.list"), platform_path(@platform) + "#repositories"
|
%li.first= link_to t("layout.repositories.list"), @repositories_path + "#repositories"
|
||||||
%li= link_to t("layout.repositories.new"), new_platform_repository_path(@platform)
|
%li= link_to t("layout.repositories.new"), @new_repository_path
|
||||||
%li.active= link_to t("layout.repositories.show"), platform_repository_path(@platform, @repository)
|
%li.active= link_to t("layout.repositories.show"), repository_path(@repository)
|
||||||
.content
|
.content
|
||||||
.inner
|
.inner
|
||||||
%p
|
%p
|
||||||
|
@ -16,42 +16,44 @@
|
||||||
= t("activerecord.attributes.repository.unixname")
|
= t("activerecord.attributes.repository.unixname")
|
||||||
\:
|
\:
|
||||||
= @repository.unixname
|
= @repository.unixname
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.platform")
|
||||||
|
\:
|
||||||
|
= link_to @repository.platform.name, url_for(@repository.platform)
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.owner")
|
||||||
|
\:
|
||||||
|
= link_to @repository.owner.name, url_for(@repository.owner)
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t("activerecord.attributes.repository.visibility")
|
||||||
|
\:
|
||||||
|
= @repository.visibility
|
||||||
%p
|
%p
|
||||||
%b
|
%b
|
||||||
= t("activerecord.attributes.repository.platform")
|
= t("activerecord.attributes.repository.platform")
|
||||||
\:
|
\:
|
||||||
= link_to @repository.platform.name, platform_path(@platform)
|
= link_to @repository.platform.name, platform_path(@platform)
|
||||||
.wat-cf
|
.wat-cf
|
||||||
= link_to image_tag("web-app-theme/icons/cross.png", :alt => t("layout.delete")) + " " + t("layout.delete"), platform_repository_path(@platform, @repository), :method => "delete", :class => "button", :confirm => t("layout.repositories.confirm_delete")
|
= link_to image_tag("web-app-theme/icons/cross.png", :alt => t("layout.delete")) + " " + t("layout.delete"), @repository_path, :method => "delete", :class => "button", :confirm => t("layout.repositories.confirm_delete")
|
||||||
|
|
||||||
%a{ :name => "projects" }
|
%a{ :name => "projects" }
|
||||||
.block
|
.block
|
||||||
.secondary-navigation
|
.secondary-navigation
|
||||||
%ul.wat-cf
|
%ul.wat-cf
|
||||||
%li.first.active= link_to t("layout.projects.list"), platform_repository_path(@platform, @repository) + "#projects"
|
%li.first.active= link_to t("layout.projects.list"), repository_path(@repository) + "#projects"
|
||||||
%li= link_to t("layout.projects.new"), new_project_path(@platform, @repository)
|
%li= link_to t("layout.projects.add"), url_for(:controller => :repositories, :action => :add_project)
|
||||||
.content
|
.content
|
||||||
%h2.title
|
%h2.title
|
||||||
= t("layout.projects.list_header")
|
= t("layout.projects.list_header")
|
||||||
.inner
|
.inner
|
||||||
= form_tag platform_repository_path(@platform, @repository), :method => :get do
|
= render :partial => 'shared/search_form'
|
||||||
.group
|
= render :partial => 'proj_list1', :object => @projects
|
||||||
= label_tag :query, t("layout.search_by_name"), :class => :label
|
|
||||||
= text_field_tag :query
|
|
||||||
%button.search{:type => "submit"}
|
|
||||||
= t("layout.search")
|
|
||||||
%table.table
|
|
||||||
%tr
|
|
||||||
%th.first= t("activerecord.attributes.project.name")
|
|
||||||
%th.last
|
|
||||||
- @projects.each do |project|
|
|
||||||
%tr{:class => cycle("odd", "even")}
|
|
||||||
%td
|
|
||||||
= link_to project.name, platform_repository_project_path(@platform, @repository, project)
|
|
||||||
%td.last
|
|
||||||
#{link_to t("layout.show"), platform_repository_project_path(@platform, @repository, project)} | #{link_to t("layout.delete"), platform_repository_project_path(@platform, @repository, project), :method => :delete, :confirm => t("layout.projects.confirm_delete")}
|
|
||||||
.actions-bar.wat-cf
|
.actions-bar.wat-cf
|
||||||
.actions
|
.actions
|
||||||
= will_paginate @projects
|
= will_paginate @projects, :param_name => :project_page
|
||||||
|
|
||||||
- content_for :sidebar, render(:partial => 'sidebar')
|
|
||||||
|
-# content_for :sidebar, render(:partial => 'sidebar')
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Load extensions to existing classes.
|
||||||
|
Dir["lib/ext/**/*.rb"].each do |fn|
|
||||||
|
require File.expand_path( fn )
|
||||||
|
end
|
|
@ -104,6 +104,7 @@ ru:
|
||||||
weekdays: Дни недели
|
weekdays: Дни недели
|
||||||
|
|
||||||
projects:
|
projects:
|
||||||
|
add: Добавить
|
||||||
list: Список
|
list: Список
|
||||||
list_header: Проекты
|
list_header: Проекты
|
||||||
show: Проект
|
show: Проект
|
||||||
|
@ -208,6 +209,10 @@ ru:
|
||||||
saved: Репозиторий успешно добавлен
|
saved: Репозиторий успешно добавлен
|
||||||
save_error: Не удалось добавить репозиторий
|
save_error: Не удалось добавить репозиторий
|
||||||
destroyed: Репозиторий успешно удален
|
destroyed: Репозиторий успешно удален
|
||||||
|
project_added: Проект добавлен к репозиторию
|
||||||
|
project_not_added: Не удалось добавить проект
|
||||||
|
project_removed: Проект удален из репозитория
|
||||||
|
project_not_removed: Не удалось удалить проект из репозитория
|
||||||
|
|
||||||
product:
|
product:
|
||||||
saved: Продукт успешно сохранен
|
saved: Продукт успешно сохранен
|
||||||
|
|
|
@ -67,7 +67,12 @@ Rosa::Application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :repositories
|
resources :repositories do
|
||||||
|
member do
|
||||||
|
get :add_project
|
||||||
|
get :remove_project
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
resources :users, :groups do
|
resources :users, :groups do
|
||||||
resources :platforms, :only => [:new, :create]
|
resources :platforms, :only => [:new, :create]
|
||||||
|
|
Loading…
Reference in New Issue