[refs #443] abf tour
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 30 KiB |
|
@ -4,6 +4,11 @@ class PagesController < ApplicationController
|
||||||
# load_and_authorize_resource
|
# load_and_authorize_resource
|
||||||
|
|
||||||
def root
|
def root
|
||||||
|
render 'pages/tour/abf-tour-project-description-1', :layout => 'tour'
|
||||||
|
end
|
||||||
|
|
||||||
|
def tour_inside
|
||||||
|
render "pages/tour/tour-inside-#{params[:id]}", :layout => 'tour'
|
||||||
end
|
end
|
||||||
|
|
||||||
def forbidden
|
def forbidden
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
!!!
|
||||||
|
%html
|
||||||
|
%head
|
||||||
|
%meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-Type"}/
|
||||||
|
%title Сборочная среда
|
||||||
|
%script{:src => "http://html5shiv.googlecode.com/svn/trunk/html5.js", :type => "text/javascript"}
|
||||||
|
= stylesheet_link_tag "tour"
|
||||||
|
%body
|
||||||
|
.wrap
|
||||||
|
%header
|
||||||
|
.left
|
||||||
|
.middle
|
||||||
|
%menu
|
||||||
|
.logo= link_to image_tag('logo-mini.png', :alt => 'logo'), root_path
|
||||||
|
= render 'layouts/menu/top', :which_menu => 'top_menu'
|
||||||
|
.information
|
||||||
|
= render 'search/form'
|
||||||
|
- if current_user
|
||||||
|
.user
|
||||||
|
.avatar= image_tag avatar_url(current_user), :alt => 'avatar', :height => "30"
|
||||||
|
.profile
|
||||||
|
%a{:href => "#"}
|
||||||
|
= current_user.uname
|
||||||
|
= image_tag 'expand-white.png', :alt => 'ex'
|
||||||
|
.both
|
||||||
|
.both
|
||||||
|
.droplist-wrap
|
||||||
|
#droplist.droplist
|
||||||
|
.a= link_to current_user.uname, current_user
|
||||||
|
.a= link_to t('layout.settings.label'), profile_settings_path
|
||||||
|
.a= link_to t('layout.logout'), destroy_user_session_path, :method => :delete
|
||||||
|
- else
|
||||||
|
.user
|
||||||
|
.profile= link_to t("layout.devise.shared_links.sign_in"), new_user_session_path
|
||||||
|
.right
|
||||||
|
.both
|
||||||
|
/ Page
|
||||||
|
.tour
|
||||||
|
=image_tag 'tour-top.png', :alt => 'ABF'
|
||||||
|
.both
|
||||||
|
%article
|
||||||
|
= yield
|
||||||
|
.both
|
||||||
|
.tour-gap
|
||||||
|
%footer= render "layouts/menu/bottom"
|
||||||
|
= render 'layouts/counters' unless current_user.try(:admin?)
|
|
@ -0,0 +1,40 @@
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
=image_tag "tour/1/control.png", :alt => "Управление проектами"
|
||||||
|
.right
|
||||||
|
%a{:href => tour_inside_path('1_1')}
|
||||||
|
%h1 Управление проектами
|
||||||
|
%p
|
||||||
|
Каждый git-репозиторий на ABF поставляется с инструментами,
|
||||||
|
необходимыми для управления проектами, вне зависимости от
|
||||||
|
того, публичный или приватный проект.
|
||||||
|
%br/
|
||||||
|
=link_to 'Читать далее...', tour_inside_path('1_1')
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
%a{:href => tour_inside_path('1_2')}
|
||||||
|
%h1 Исходный код
|
||||||
|
%p
|
||||||
|
ABF — полноценный git-хостинг с удобным веб-интерфейсом.
|
||||||
|
%br/
|
||||||
|
=link_to 'Читать далее...', tour_inside_path('1_2')
|
||||||
|
.right
|
||||||
|
=image_tag "tour/2/code.png", :alt => "Исходный код"
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
=image_tag "tour/3/monitoring.png", :alt => "Сборка пакетов"
|
||||||
|
.right
|
||||||
|
%a{:href => tour_inside_path('1_3')}
|
||||||
|
%h1 Сборка пакетов
|
||||||
|
%p
|
||||||
|
ABF — это не только хостинг исходного кода, но и система сборки
|
||||||
|
и хостинга пакетов. Собирайте свои проекты под множество
|
||||||
|
дистрибутивов и архитектур в свой персональный репозиторий.
|
||||||
|
%br/
|
||||||
|
=link_to 'Читать далее...', tour_inside_path('1_3')
|
||||||
|
.both
|
|
@ -0,0 +1,58 @@
|
||||||
|
/ Submenu
|
||||||
|
.sub-menu.tour
|
||||||
|
%nav
|
||||||
|
%ul
|
||||||
|
%li
|
||||||
|
=link_to 'Управление проектами', tour_inside_path('1_1'), :class => 'active'
|
||||||
|
%li
|
||||||
|
=link_to 'Исходный код', tour_inside_path('1_2')
|
||||||
|
%li
|
||||||
|
=link_to 'Сборка проектов', tour_inside_path('1_3')
|
||||||
|
.both
|
||||||
|
/ Page
|
||||||
|
%article
|
||||||
|
/ Single page content
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
=image_tag('tour/1/control.png', :alt => 'Управление проектами')
|
||||||
|
.right
|
||||||
|
%h1 Управление проектами
|
||||||
|
%p
|
||||||
|
Существует 3 возможных роли для участника проекта: только
|
||||||
|
чтение, чтение/запись и административный уровень. Участником
|
||||||
|
проекта может выступать как пользователь, так и группа. Проект,
|
||||||
|
как и группа, может иметь неограниченное число участников
|
||||||
|
(пользователей, групп или всех вместе).
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
%h1 Git Wiki
|
||||||
|
%p
|
||||||
|
Вики проекта создана с помощью Gollum — открытого
|
||||||
|
вики-движка, созданного GitHub. В основе своей это полноценный
|
||||||
|
git-репозиторий, который можно клонировать, использовать в
|
||||||
|
режиме офлайн, изменять и загружать изменения обратно на
|
||||||
|
сервер, как в случае с обычным кодом. Удобный веб-редактор
|
||||||
|
позволит работать с ней в онлайн. Теперь данные о проекте не
|
||||||
|
пропадут и доступны для редактирования в любимом редакторе!
|
||||||
|
%br/
|
||||||
|
%br/
|
||||||
|
Примечание: для приватного проекта вики доступна только его
|
||||||
|
участникам. Для публичного — всем для чтения.
|
||||||
|
.right
|
||||||
|
=image_tag "tour/1/git.png", :alt => "Git Wiki"
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
=image_tag "tour/1/tracker.png", :alt => "Легкий трекер задач"
|
||||||
|
.right
|
||||||
|
%h1 Легкий трекер задач
|
||||||
|
%p
|
||||||
|
Каждый проект также может использовать легкий и простой
|
||||||
|
трекер задач. Метки и назначения позволят не потеряться среди
|
||||||
|
задач, а понятный интерфейс позволит сконцентрироваться на
|
||||||
|
работе, а не на заполнении огромных формуляров.
|
||||||
|
.both
|
|
@ -0,0 +1,61 @@
|
||||||
|
.sub-menu.tour
|
||||||
|
%nav
|
||||||
|
%ul
|
||||||
|
%li
|
||||||
|
=link_to 'Управление проектами', tour_inside_path('1_1')
|
||||||
|
%li
|
||||||
|
=link_to 'Исходный код', tour_inside_path('1_2'), :class => 'active'
|
||||||
|
%li
|
||||||
|
=link_to 'Сборка проектов', tour_inside_path('1_3')
|
||||||
|
.both
|
||||||
|
/ Page
|
||||||
|
%article
|
||||||
|
/ Single page content
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
=image_tag('tour/2/code.png', :alt => 'Исходный код онлайн')
|
||||||
|
.right
|
||||||
|
%h1 Исходный код онлайн
|
||||||
|
%p
|
||||||
|
Мы сфокусировались на том, чтобы сделать исходный код
|
||||||
|
доступным и прозрачным. Все, что вы выложите в git-репозиторий,
|
||||||
|
мгновенно станет доступным для просмотра в режиме онлайн,
|
||||||
|
чтобы вы могли поделиться им с людьми, даже если они не
|
||||||
|
используют Git. На главной странице каждого проекта есть список
|
||||||
|
файлов проекта, а также информация о последнем изменении.
|
||||||
|
Вы можете сразу увидеть самое важное в вашем проекте: код.
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
%h1 История файла
|
||||||
|
%p
|
||||||
|
Каждый файл в git-репозитории имеет историю, которую вы
|
||||||
|
легко можете посмотреть: кто, когда и что в нем поменял.
|
||||||
|
.right
|
||||||
|
=image_tag('tour/2/history.png', :alt => 'История файла')
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
=image_tag('tour/2/annotation.png', :alt => 'Аннотация файла')
|
||||||
|
.right
|
||||||
|
%h1 Аннотация файла
|
||||||
|
%p
|
||||||
|
Ищете автора фрагмента кода? Откройте аннотацию файла
|
||||||
|
(Blame), чтобы увидеть: кто и в каком коммите последний
|
||||||
|
изменял данный фрагмент.
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
%h1 Редактирования онлайн
|
||||||
|
%p
|
||||||
|
Вам нужно быстро внести изменение в файл? Исправить
|
||||||
|
орфографические ошибки на вашем мобильном телефоне?
|
||||||
|
Мы предлагаем простой редактор для каждого файла в
|
||||||
|
git-репозитории.
|
||||||
|
.right
|
||||||
|
=image_tag('tour/2/edit.png', :alt => 'Редактирования онлайн')
|
||||||
|
.both
|
|
@ -0,0 +1,50 @@
|
||||||
|
.sub-menu.tour
|
||||||
|
%nav
|
||||||
|
%ul
|
||||||
|
%li
|
||||||
|
=link_to 'Управление проектами', tour_inside_path('1_1')
|
||||||
|
%li
|
||||||
|
=link_to 'Исходный код', tour_inside_path('1_2')
|
||||||
|
%li
|
||||||
|
=link_to 'Сборка проектов', tour_inside_path('1_3'), :class => 'active'
|
||||||
|
.both
|
||||||
|
/ Page
|
||||||
|
%article
|
||||||
|
/ Single page content
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
=image_tag "tour/3/repo.png", :alt => "Персональный репозиторий"
|
||||||
|
.right
|
||||||
|
%h1 Персональный репозиторий
|
||||||
|
%p
|
||||||
|
Персональный репозиторий — быстрый и легкий способ
|
||||||
|
распространить свое ПОмножеству Linux пользователей
|
||||||
|
различных дистрибутивов, используя стандартный механизм
|
||||||
|
доставки ПО. ABF позаботится о зависимостях ПО из основных
|
||||||
|
репозиториев и/или дополнительных персональных репозиториев.
|
||||||
|
Опубликовали новую версию? Пользователи автоматически
|
||||||
|
получат оповещение о доступности обновления.
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
%h1 Сборка пакета
|
||||||
|
%p
|
||||||
|
ABF позволяет собрать ваши проекты под множество архитектур
|
||||||
|
и дистрибутивов, используя свои вычислительные мощности.
|
||||||
|
Никаких затрат с вашей стороны!
|
||||||
|
.right
|
||||||
|
=image_tag "tour/3/build.png", :alt => "Сборка пакета"
|
||||||
|
.both
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
.left
|
||||||
|
=image_tag "tour/3/monitoring.png", :alt => "Мониторинг"
|
||||||
|
.right
|
||||||
|
%h1 Мониторинг
|
||||||
|
%p
|
||||||
|
В большом числе сборочных заданий легко потеряться, поэтому
|
||||||
|
мониторинг сборки фокусирует ваше внимание только на том,
|
||||||
|
что действительно важно.
|
||||||
|
.both
|
|
@ -62,7 +62,7 @@ Rosa::Application.configure do
|
||||||
config.assets.digest = true
|
config.assets.digest = true
|
||||||
|
|
||||||
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
|
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
|
||||||
config.assets.precompile += %w(login.css login.js reg_session.css)
|
config.assets.precompile += %w(login.css login.js reg_session.css tour.css)
|
||||||
end
|
end
|
||||||
|
|
||||||
# require 'stub_xml_rpc'
|
# require 'stub_xml_rpc'
|
||||||
|
|
|
@ -9,6 +9,7 @@ Rosa::Application.routes.draw do
|
||||||
|
|
||||||
get '/forbidden' => 'pages#forbidden', :as => 'forbidden'
|
get '/forbidden' => 'pages#forbidden', :as => 'forbidden'
|
||||||
get '/terms-of-service' => 'pages#tos', :as => 'tos'
|
get '/terms-of-service' => 'pages#tos', :as => 'tos'
|
||||||
|
get '/tour/inside/:id' => 'pages#tour_inside', :as => 'tour_inside', :id => /1_1|1_2|1_3/
|
||||||
|
|
||||||
get '/activity_feeds.:format' => 'activity_feeds#index', :as => 'atom_activity_feeds', :format => /atom/
|
get '/activity_feeds.:format' => 'activity_feeds#index', :as => 'atom_activity_feeds', :format => /atom/
|
||||||
if APP_CONFIG['anonymous_access']
|
if APP_CONFIG['anonymous_access']
|
||||||
|
|
|
@ -23,6 +23,10 @@ class ReservedNameValidator < ActiveModel::EachValidator
|
||||||
unfollow unsubscribe url user
|
unfollow unsubscribe url user
|
||||||
widget widgets wiki
|
widget widgets wiki
|
||||||
xfn xmpp
|
xfn xmpp
|
||||||
|
abf-tour-project-description-1
|
||||||
|
tour-inside-1_1
|
||||||
|
tour-inside-1_2
|
||||||
|
tour-inside-1_3
|
||||||
}
|
}
|
||||||
|
|
||||||
def reserved_names
|
def reserved_names
|
||||||
|
|