diff --git a/app/assets/images/tour/big/build.png b/app/assets/images/tour/big/builds.png similarity index 100% rename from app/assets/images/tour/big/build.png rename to app/assets/images/tour/big/builds.png diff --git a/app/assets/javascripts/tour.js b/app/assets/javascripts/tour.js index db3235da8..a3d336e53 100644 --- a/app/assets/javascripts/tour.js +++ b/app/assets/javascripts/tour.js @@ -1,3 +1,11 @@ //= require jquery +//= require jquery_ujs //= require jquery-ui //= require pirobox_extended_min +//= require ./design/all + +$(document).ready(function() { + $('div.information > div.profile > a').live('click', function(e) { + e.preventDefault(); + }); +}); \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 8abd400d8..642ee629b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -22,7 +22,7 @@ class ApplicationController < ActionController::Base def set_locale I18n.locale = check_locale( get_user_locale || - request.env['HTTP_ACCEPT_LANGUAGE'] ? request.env['HTTP_ACCEPT_LANGUAGE'][0,2].downcase : nil ) + (request.env['HTTP_ACCEPT_LANGUAGE'] ? request.env['HTTP_ACCEPT_LANGUAGE'][0,2].downcase : nil )) end def get_user_locale diff --git a/app/controllers/projects/build_lists_controller.rb b/app/controllers/projects/build_lists_controller.rb index d9f85ffba..4c8980e64 100644 --- a/app/controllers/projects/build_lists_controller.rb +++ b/app/controllers/projects/build_lists_controller.rb @@ -75,7 +75,7 @@ class Projects::BuildListsController < Projects::BaseController def update if params[:publish].present? and can?(:publish, @build_list) publish - elsif params[:reject_publish].present? and can?(:reject_publish) + elsif params[:reject_publish].present? and can?(:reject_publish, @build_list) reject_publish else # King Arthur, we are under attack! @@ -112,7 +112,7 @@ class Projects::BuildListsController < Projects::BaseController @build_list.container_path = params[:container_path] @build_list.save - @build_list.set_packages(ActiveSupport::JSON.decode(params[:pkg_info])) if params[:status].to_i == BuildServer::SUCCESS and params[:pkg_info].present? + @build_list.set_packages(ActiveSupport::JSON.decode(params[:pkg_info]), params[:package_name]) if params[:status].to_i == BuildServer::SUCCESS and params[:pkg_info].present? render :nothing => true, :status => 200 end @@ -172,12 +172,12 @@ class Projects::BuildListsController < Projects::BaseController def publish @build_list.update_type = params[:build_list][:update_type] if params[:build_list][:update_type].present? - if params[:create_advisory].present? - a = @build_list.build_advisory - a.update_type = @build_list.update_type - a.project = @build_list.project - a.platforms << @build_list.save_to_platform unless a.platforms.include? @build_list.save_to_platform - redirect_to :back, :notice => t('layout.build_lists.publish_fail') unless a.update_attributes(params[:build_list][:advisory]) + if params[:create_advisory].present? and !@build_list.build_advisory(params[:build_list][:advisory]) do |a| + a.update_type = @build_list.update_type + a.project = @build_list.project + a.platforms << @build_list.save_to_platform unless a.platforms.include? @build_list.save_to_platform + end.save + redirect_to :back, :notice => t('layout.build_lists.publish_fail') and return end if @build_list.save and @build_list.publish redirect_to :back, :notice => t('layout.build_lists.publish_success') diff --git a/app/controllers/projects/projects_controller.rb b/app/controllers/projects/projects_controller.rb index 37d6648cd..b948f5d7c 100644 --- a/app/controllers/projects/projects_controller.rb +++ b/app/controllers/projects/projects_controller.rb @@ -2,6 +2,10 @@ class Projects::ProjectsController < Projects::BaseController before_filter :authenticate_user! load_and_authorize_resource + # TODO WTF ? fork, update, sections not authorize + before_filter do |controller| + authorize! params[:action].to_sym, @project if params[:action] != 'index' + end def index @projects = Project.accessible_by(current_ability, :membered) @@ -57,7 +61,6 @@ class Projects::ProjectsController < Projects::BaseController end def fork - authorize! :fork, @project # TODO WTF ? owner = (Group.find params[:group] if params[:group].present?) || current_user authorize! :update, owner if owner.class == Group if forked = @project.fork(owner) and forked.valid? diff --git a/app/controllers/users/register_requests_controller.rb b/app/controllers/users/register_requests_controller.rb index 5772334d3..234ef39ab 100644 --- a/app/controllers/users/register_requests_controller.rb +++ b/app/controllers/users/register_requests_controller.rb @@ -1,11 +1,20 @@ # -*- encoding : utf-8 -*- class Users::RegisterRequestsController < ApplicationController + before_filter :user_choose_locale + layout 'invite' + def new - redirect_to '/invite.html' + render :invite end def create RegisterRequest.create(params[:register_request]) - redirect_to '/thanks.html' + render :thanks + end + + protected + + def user_choose_locale + I18n.locale = params[:format] if User::LANGUAGES.include?(params[:format]) end end diff --git a/app/models/ability.rb b/app/models/ability.rb index 0a11e7b7f..8f9550cdd 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -64,7 +64,7 @@ class Ability can [:read, :related], BuildList, :project => {:owner_type => 'User', :owner_id => user.id} can [:read, :related], BuildList, :project => {:owner_type => 'Group', :owner_id => user.group_ids} can(:read, BuildList, read_relations_for('build_lists', 'projects')) {|build_list| can? :read, build_list.project} - can([:create, :update], BuildList) {|build_list| build_list.project.is_rpm && can?(:write, build_list.project)} + can([:create, :update], BuildList) {|build_list| build_list.project.is_package && can?(:write, build_list.project)} can(:publish, BuildList) do |build_list| build_list.can_publish? and build_list.save_to_platform.released ? local_admin?(build_list.save_to_platform) : can?(:write, build_list.project) diff --git a/app/models/advisory.rb b/app/models/advisory.rb index b9df1946b..859d5c127 100644 --- a/app/models/advisory.rb +++ b/app/models/advisory.rb @@ -7,7 +7,7 @@ class Advisory < ActiveRecord::Base after_create :generate_advisory_id - ID_TEMPLATE = 'ROSA%s-%d:%04d' + ID_TEMPLATE = 'ROSA-%s-%d:%04d' TYPES = {'security' => 'SA', 'bugfix' => 'A'} def to_param diff --git a/app/models/build_list.rb b/app/models/build_list.rb index a790fbe8b..8060ce219 100644 --- a/app/models/build_list.rb +++ b/app/models/build_list.rb @@ -117,10 +117,11 @@ class BuildList < ActiveRecord::Base end end - def set_packages(pkg_hash) - build_package(pkg_hash['srpm'], 'source') {|p| p.save!} + def set_packages(pkg_hash, project_name) + prj = Project.joins(:repositories => :platform).where('platforms.id = ?', save_to_platform.id).find_by_name!(project_name) + build_package(pkg_hash['srpm'], 'source', prj) {|p| p.save!} pkg_hash['rpm'].each do |rpm_hash| - build_package(rpm_hash, 'binary') {|p| p.save!} + build_package(rpm_hash, 'binary', prj) {|p| p.save!} end end @@ -191,9 +192,9 @@ class BuildList < ActiveRecord::Base save end - def build_package(pkg_hash, package_type) + def build_package(pkg_hash, package_type, prj) packages.create(pkg_hash) do |p| - p.project = Project.joins(:repositories => :platform).where('platforms.id = ?', save_to_platform.id).find_by_name!(pkg_hash['name']) + p.project = prj p.platform = save_to_platform p.package_type = package_type yield p diff --git a/app/models/project.rb b/app/models/project.rb index d8b9d70bc..f40717e41 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -28,7 +28,7 @@ class Project < ActiveRecord::Base validates_attachment_size :srpm, :less_than => 500.megabytes validates_attachment_content_type :srpm, :content_type => ['application/octet-stream', "application/x-rpm", "application/x-redhat-package-manager"], :message => I18n.t('layout.invalid_content_type') - attr_accessible :name, :description, :visibility, :srpm, :is_rpm, :default_branch, :has_issues, :has_wiki + attr_accessible :name, :description, :visibility, :srpm, :is_package, :default_branch, :has_issues, :has_wiki attr_readonly :name scope :recent, order("name ASC") diff --git a/app/views/layouts/invite.html.haml b/app/views/layouts/invite.html.haml new file mode 100644 index 000000000..9a9d732b0 --- /dev/null +++ b/app/views/layouts/invite.html.haml @@ -0,0 +1,22 @@ +!!! +%html + %head + %meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-Type"}/ + %title=t 'invites.title' + %script{:src => "http://html5shiv.googlecode.com/svn/trunk/html5.js", :type => "text/javascript"} + %link{:href => "/styles/prereg.css", :rel => "stylesheet", :type => "text/css"}/ + %body + .wrap + = yield :nav if content_for?(:nav) + / Top block + %header + .logo + .text=t 'invites.header' + .both + / Page + %article + =yield + .both + / Footer + %footer= render "layouts/menu/bottom" + = render 'layouts/counters' unless current_user.try(:admin?) \ No newline at end of file diff --git a/app/views/pages/tour/tour-inside-sources.html.haml b/app/views/pages/tour/tour-inside-sources.html.haml deleted file mode 100644 index 02c225938..000000000 --- a/app/views/pages/tour/tour-inside-sources.html.haml +++ /dev/null @@ -1,65 +0,0 @@ -.sub-menu.tour - %nav - %ul - %li - =link_to 'Управление проектами', tour_inside_path('projects') - %li - =link_to 'Исходный код', tour_inside_path('sources'), :class => 'active' - %li - =link_to 'Сборка проектов', tour_inside_path('builds') -.both -/ Page -%article - / Single page content - .feature-wrap - .feature - .left - %a.pirobox{:href => image_path('tour/big/source.png'), :rel => "single", :title => "Исходный код онлайн"} - =image_tag 'tour/2/source.png' - .right - %h1 Исходный код онлайн - %p - Мы сфокусировались на том, чтобы сделать исходный код - доступным и прозрачным. Все, что вы выложите в git-репозиторий, - мгновенно станет доступным для просмотра в режиме онлайн, - чтобы вы могли поделиться им с людьми, даже если они не - используют Git. На главной странице каждого проекта есть список - файлов проекта, а также информация о последнем изменении. - Вы можете сразу увидеть самое важное в вашем проекте: код. - .both - .feature-wrap - .feature - .left - %h1 История файла - %p - Каждый файл в git-репозитории имеет историю, которую вы - легко можете посмотреть: кто, когда и что в нем поменял. - .right - %a.pirobox{:href => image_path('tour/big/history.png'), :rel => "single", :title => "История файла"} - =image_tag 'tour/2/history.png' - .both - .feature-wrap - .feature - .left - %a.pirobox{:href => image_path('tour/big/annotation.png'), :rel => "single", :title => "Аннотация файла"} - =image_tag 'tour/2/annotation.png' - .right - %h1 Аннотация файла - %p - Ищете автора фрагмента кода? Откройте аннотацию файла - (Blame), чтобы увидеть: кто и в каком коммите последний - изменял данный фрагмент. - .both - .feature-wrap - .feature - .left - %h1 Редактирования онлайн - %p - Вам нужно быстро внести изменение в файл? Исправить - орфографические ошибки на вашем мобильном телефоне? - Мы предлагаем простой редактор для каждого файла в - git-репозитории. - .right - %a.pirobox{:href => image_path('tour/big/edit.png'), :rel => "single", :title => "Редактирования онлайн"} - =image_tag 'tour/2/edit.png' - .both diff --git a/app/views/projects/base/_submenu.html.haml b/app/views/projects/base/_submenu.html.haml index 0f7e536b3..c4bb613fd 100644 --- a/app/views/projects/base/_submenu.html.haml +++ b/app/views/projects/base/_submenu.html.haml @@ -7,7 +7,7 @@ %ul %li= link_to t("project_menu.project"), project_path(@project), :class => (act.in?([:show, :edit]) && contr.in?([:trees, :blobs]) ? 'active' : nil) %li= link_to t("project_menu.commits"), commits_path(@project), :class => (act.in?([:index, :show]) && contr == :commits ? 'active' : nil) - - if @project.is_rpm and can?(:read, @project => BuildList) + - if @project.is_package and can?(:read, @project => BuildList) %li= link_to t("project_menu.builds"), project_build_lists_path(@project), :class => (contr == :build_lists ? 'active' : nil) - if @project.has_issues %li= link_to t("project_menu.tracker"), project_issues_path(@project), :class => (contr == :issues ? 'active' : nil) diff --git a/app/views/projects/projects/_form.html.haml b/app/views/projects/projects/_form.html.haml index 6dd8795ed..ffede9552 100644 --- a/app/views/projects/projects/_form.html.haml +++ b/app/views/projects/projects/_form.html.haml @@ -42,8 +42,8 @@ \  .rightlist .check - %span#niceCheckbox1.niceCheck-main= f.check_box :is_rpm#, :class => 'niceCheckbox1' - .forcheck= t("activerecord.attributes.project.is_rpm") + %span#niceCheckbox1.niceCheck-main= f.check_box :is_package#, :class => 'niceCheckbox1' + .forcheck= t("activerecord.attributes.project.is_package") .both .both - if [:new, :create].include? act diff --git a/app/views/users/register_requests/invite.html.haml b/app/views/users/register_requests/invite.html.haml new file mode 100644 index 000000000..9a947155f --- /dev/null +++ b/app/views/users/register_requests/invite.html.haml @@ -0,0 +1,44 @@ +-content_for :nav do + %nav + -if I18n.locale == :ru + %a{:href => "#{new_register_request_path}.en"} + %p + English + %br>/ + version + -elsif I18n.locale == :en + %a{:href => "#{new_register_request_path}.ru"} + %p + Русская + %br>/ + версия + +.left + %p + =raw t 'invites.description' + %div{:style => "clear: both;"} +.right + %h3=t 'invites.want' + %form#new_register_request{"accept-charset" => "UTF-8", :action => "/register_requests", :method => "post", :name => "invite_form"} + .signup-left=t 'invites.name' + .signup-right + %input#email.registartion-input-signup{:name => "register_request[name]", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input-signup';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{t 'invites.login_email'}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text"}/ + %div{:style => "clear: both;"} + .signup-left=t 'invites.email' + .signup-right + %input#email.registartion-input-signup{:name => "register_request[email]", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input-signup';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{t 'invites.login_email'}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text"}/ + %div{:style => "clear: both;"} + .signup-left=raw t 'invites.interest' + .signup-right + %select.registartion-input-signup{:name => "register_request[interest]"} + -t('invites.interests').each do |base, title| + %option=title + %div{:style => "clear: both;"} + .signup-left=t 'invites.comments' + .signup-right + %textarea.registartion-input-signup{:name => "register_request[more]", :rows => "3"} + %div{:style => "clear: both;"} + =hidden_field_tag :format, I18n.locale + .button + %input.button{:type => "submit", :value => t('invites.send')} +%div{:style => "clear: both;"} diff --git a/app/views/users/register_requests/thanks.html.haml b/app/views/users/register_requests/thanks.html.haml new file mode 100644 index 000000000..bfd406e14 --- /dev/null +++ b/app/views/users/register_requests/thanks.html.haml @@ -0,0 +1,3 @@ +.all + %p + %span{:style => "font-size: 28px;"}=raw t 'invites.thanks' diff --git a/config/environments/development.rb b/config/environments/development.rb index 890a1ec7f..6e27623e8 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -45,5 +45,5 @@ end require 'stub_xml_rpc' Rails.application.config.to_prepare { - Platform.send :include, Modules::Models::RsyncStub + Platform.send :include, Modules::Models::SymlinkStub } diff --git a/config/locales/invite.en.yml b/config/locales/invite.en.yml new file mode 100644 index 000000000..c727140e8 --- /dev/null +++ b/config/locales/invite.en.yml @@ -0,0 +1,29 @@ +en: + invites: + title: ABF + + header: 'A platform for distribution development and lifecycle management: from source code to ISO images.' + description: | + Welcome!

+ On this page you can submit a request to participate in beta testing of ABF build service of ROSA company.

+ In the first place we process requests from prospective maintainers and representatives of distribution teams.

+ You can get detailed documentation here.

+ We will be glad to answer your questions at the project here.

+ thanks: | + Thank You!

+ We are glad that you have expressed interest in our ABF service!

+ Your registration confirmation will be sent to the e-mail address you have specified in the registration form.

+ We will be glad to get feedback and to answer your questions in our forum.

+ You can get detailed documentation here. + + want: I want to become ABF beta-tester! + login_email: Login or email + name: 'First/Last name' + email: E-mail address + interest: Interest in the project + Comments: Comments + send: Send + interests: + evaluate: Evaluate ABF possibilities + maintainer: I want to become ROSA maintainer + build: I want to build a distribution using ABF \ No newline at end of file diff --git a/config/locales/invite.ru.yml b/config/locales/invite.ru.yml new file mode 100644 index 000000000..b37438230 --- /dev/null +++ b/config/locales/invite.ru.yml @@ -0,0 +1,30 @@ +ru: + invites: + title: Сборочная среда + + header: 'Платформа разработки и управления жизненным циклом дистрибутивов: от исходного кода до ISO-образов.' + description: | + Приветствуем Вас!

+ Вы находитесь на странице размещения заявок на участие в бета-тестировании сборочного сервиса ABF компании РОСА.

+ В первую очередь одобряются заявки от потенциальных майнтейнеров и представителей дистрибутивных команд.

+ Ознакомиться с документацией можно здесь.

+ Мы будем рады ответить на Ваши вопросы на форуме проекта. + thanks: | + Спасибо!

+ Благодарим за интерес к нашему сервису ABF!

+ Приглашение будет выслано вам по указанной электронной почте.

+ Приглашаем Вас на форум проекта, + где мы будем рады ответить на Ваши вопросы и получить Ваши пожелания.

+ Ознакомиться с документацией можно здесь. + + want: Хочу стать бета-тестером ABF! + login_email: Логин или email + name: Имя, Фамилия + email: Электронная почта + interest: Степень интереса
к проекту + Comments: Также хочу сказать + send: Отправить + interests: + evaluate: Общеобразовательные цели + maintainer: Хочу стать майнтейнером РОСы + build: Хочу собрать в ABF дистрибутив diff --git a/config/locales/models/project.en.yml b/config/locales/models/project.en.yml index 788a10241..ae36f87f0 100644 --- a/config/locales/models/project.en.yml +++ b/config/locales/models/project.en.yml @@ -87,7 +87,7 @@ en: me: Myself group: Group default_branch: Default branch - is_rpm: Project is a packet + is_package: Project is a package errors: project: uname: The name can only use lower case Latin letters (a-z), numbers (0-9) and underscore (_) diff --git a/config/locales/models/project.ru.yml b/config/locales/models/project.ru.yml index c0a806d18..acaea82e0 100644 --- a/config/locales/models/project.ru.yml +++ b/config/locales/models/project.ru.yml @@ -87,7 +87,7 @@ ru: me: Я group: Группа default_branch: Ветка по умолчанию - is_rpm: Проект является пакетом + is_package: Проект является пакетом errors: project: uname: В имени можно использовать только строчные символы латинского алфавита (a-z), цифры (0-9) и символ нижнего подчеркивания (_) diff --git a/config/locales/tour.ru.yml b/config/locales/tour.ru.yml index 22408eac3..ae60b0aaa 100644 --- a/config/locales/tour.ru.yml +++ b/config/locales/tour.ru.yml @@ -46,16 +46,16 @@ ru: edit_description: | Вам нужно быстро внести изменение в файл? Исправить орфографические ошибки c вашего мобильного телефона? Мы предлагаем простой редактор для каждого файла в git-репозитории. - control: | + control_description: | Существует 3 возможных роли для участника проекта: только чтение, чтение/запись и административный уровень. Участником проекта может выступать как пользователь, так и группа. Проект, как и группа, может иметь неограниченное число участников (пользователей, групп или всех вместе). - git: | + git_description: | Вики проекта создана с помощью Gollum — открытого вики-движка, созданного GitHub. В основе своей это полноценный git-репозиторий, который можно клонировать, использовать в режиме офлайн, изменять и загружать изменения обратно на сервер, как в случае с обычным кодом. Удобный веб-редактор позволит работать с ней в онлайн. Теперь данные о проекте не пропадут и доступны для редактирования в любимом редакторе!

Примечание: для приватного проекта вики доступна только его участникам. Для публичного — всем для чтения. - tracker: | + tracker_description: | Каждый проект также может использовать легкий и простой трекер задач. Метки и назначения позволят не потеряться среди задач, а понятный интерфейс позволит сконцентрироваться на работе, а не на заполнении огромных формуляров. diff --git a/config/routes.rb b/config/routes.rb index 7fb77d3f3..797d0d219 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -81,7 +81,7 @@ Rosa::Application.routes.draw do resources :users, :controller => 'profile', :only => [] do get :autocomplete_user_uname, :on => :collection end - resources :register_requests, :only => [:new, :create] + resources :register_requests, :only => [:new, :create], :format => /ru|en/ #view support only two languages end scope :module => 'groups' do diff --git a/db/migrate/20120515095324_rename_is_rpm_to_is_package_in_projects.rb b/db/migrate/20120515095324_rename_is_rpm_to_is_package_in_projects.rb new file mode 100644 index 000000000..1d56f3d15 --- /dev/null +++ b/db/migrate/20120515095324_rename_is_rpm_to_is_package_in_projects.rb @@ -0,0 +1,11 @@ +class RenameIsRpmToIsPackageInProjects < ActiveRecord::Migration + def up + rename_column :projects, :is_rpm, :is_package + change_column :projects, :is_package, :boolean, :default => true, :null => false + end + + def down + rename_column :projects, :is_package, :is_rpm + change_column :projects, :is_package, :boolean, :default => true + end +end diff --git a/lib/modules/models/rsync_stub.rb b/lib/modules/models/symlink_stub.rb similarity index 74% rename from lib/modules/models/rsync_stub.rb rename to lib/modules/models/symlink_stub.rb index dfb8a6dd4..df69c9266 100644 --- a/lib/modules/models/rsync_stub.rb +++ b/lib/modules/models/symlink_stub.rb @@ -1,7 +1,7 @@ # -*- encoding : utf-8 -*- module Modules module Models - module RsyncStub + module SymlinkStub extend ActiveSupport::Concern included do @@ -9,11 +9,11 @@ module Modules true end - def mount_directory_for_rsync + def symlink_directory true end - def umount_directory_for_rsync + def remove_symlink_directory true end end diff --git a/lib/tasks/migrate_from_mount_to_symlink.rake b/lib/tasks/migrate_from_mount_to_symlink.rake index f85344a3e..a7e1dfeec 100644 --- a/lib/tasks/migrate_from_mount_to_symlink.rake +++ b/lib/tasks/migrate_from_mount_to_symlink.rake @@ -3,6 +3,7 @@ namespace :downloads do desc "Migrate from mount to symlinks" task :migrate => :environment do Platform.opened.each do |pl| + system("sudo mv #{pl.symlink_path}/*.lst #{pl.path}") system("sudo umount #{pl.symlink_path}") system("sudo rm -Rf #{pl.symlink_path}") diff --git a/public/invite.html b/public/invite.html deleted file mode 100644 index cf0af6f33..000000000 --- a/public/invite.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - Сборочная среда - - - - -
- -
- - -
- Платформа разработки и управления жизненным циклом дистрибутивов: от исходного кода до ISO-образов -
- -
-
-
- - -
-
-

- Приветствуем Вас!

- Вы находитесь на странице размещения заявок на участие в бета-тестировании сборочного сервиса ABF компании РОСА.

- В первую очередь одобряются заявки от потенциальных майнтейнеров и представителей дистрибутивных команд.

- Ознакомиться с документацией можно здесь.

- Мы будем рады ответить на Ваши вопросы на форуме проекта. -

- -
-
- - -
-
-

Хочу стать бета-тестером ABF!

- -
- - -
-
- - -
-
- - -
-
- - -
-
- -
- -
-
-
- -
-
- -
-
-
- -
- - - - - diff --git a/public/pics/registration.png b/public/pics/registration.png new file mode 100644 index 000000000..78bcca569 Binary files /dev/null and b/public/pics/registration.png differ diff --git a/public/styles/prereg.css b/public/styles/prereg.css index 1c7db632f..eeebb5887 100644 --- a/public/styles/prereg.css +++ b/public/styles/prereg.css @@ -240,4 +240,41 @@ footer ul li a { footer ul li a:hover { text-decoration: underline; +} + +/*language*/ + +div.langlist { + width: 760px; + margin: 0 auto; + text-align: center; +} + +div.lang { + float: right; + margin: 2px 0px 2px 7px; + cursor: pointer; +} + +nav { + width: 96px; + height: 47px; + background: url("../pics/registration.png") no-repeat; + float: right; + cursor: pointer; +} + +nav p { + font-size: 14px; + color: #FFF; + margin: 0; + padding: 0; + padding-top: 0px; + font-weight: 700; +} + +/* custom */ + +nav a { + text-decoration: none; } \ No newline at end of file diff --git a/public/thanks.html b/public/thanks.html deleted file mode 100644 index 0e9f8ae7e..000000000 --- a/public/thanks.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - Сборочная среда - - - - -
- -
- - -
- Платформа разработки и управления жизненным циклом дистрибутивов: от исходного кода до ISO-образов -
- -
-
-
- - -
-
-

- Спасибо!

- Благодарим за интерес к нашему сервису ABF!

- Приглашение будет выслано вам по указанной электронной почте.

- Приглашаем Вас на форум проекта, где мы будем рады ответить на Ваши вопросы и получить Ваши пожелания.

- Ознакомиться с документацией можно здесь. -

-
- -
-
-
- -
- - - - - \ No newline at end of file diff --git a/spec/controllers/projects/projects_controller_spec.rb b/spec/controllers/projects/projects_controller_spec.rb index eace34aa2..e16d3b55e 100644 --- a/spec/controllers/projects/projects_controller_spec.rb +++ b/spec/controllers/projects/projects_controller_spec.rb @@ -125,12 +125,31 @@ describe Projects::ProjectsController do end context 'for other user' do - it 'should not be able to fork hidden project' do + before(:each) do @user = FactoryGirl.create(:user) set_session_for(@user) + end + + it 'should not be able to fork hidden project' do @project.update_attribute(:visibility, 'hidden') post :fork, :owner_name => @project.owner.uname, :project_name => @project.name response.should redirect_to(forbidden_path) end + + it 'should not be able to edit project' do + description = @project.description + put :update, :project=>{:description =>"hack"}, :owner_name => @project.owner.uname, :project_name => @project.name + response.should redirect_to(forbidden_path) + Project.find(@project.id).description.should == description + end + + it 'should not be able to edit project sections' do + has_wiki, has_issues = @project.has_wiki, @project.has_issues + post :sections, :project =>{:has_wiki => !has_wiki, :has_issues => !has_issues}, :owner_name => @project.owner.uname, :project_name => @project.name + response.should redirect_to(forbidden_path) + project = Project.find(@project.id) + project.has_wiki.should == has_wiki + project.has_issues.should == has_issues + end end end