Add more register_requests fields, change design. Apply invitation mail sending. Refactor. Refs #174
This commit is contained in:
parent
8417e8c16f
commit
704c544cbc
2
Gemfile
2
Gemfile
|
@ -53,7 +53,7 @@ end
|
|||
gem 'newrelic_rpm'
|
||||
|
||||
group :development do
|
||||
# gem 'letter_opener'
|
||||
gem 'mailcatcher' # 'letter_opener'
|
||||
gem 'rails3-generators'
|
||||
gem 'web-app-theme'
|
||||
gem 'hpricot'
|
||||
|
|
22
Gemfile.lock
22
Gemfile.lock
|
@ -85,6 +85,7 @@ GEM
|
|||
diff-lcs (1.1.3)
|
||||
erubis (2.6.6)
|
||||
abstract (>= 1.0.0)
|
||||
eventmachine (0.12.10)
|
||||
expression_parser (0.9.0)
|
||||
factory_girl (2.3.2)
|
||||
activesupport
|
||||
|
@ -121,6 +122,16 @@ GEM
|
|||
i18n (>= 0.4.0)
|
||||
mime-types (~> 1.16)
|
||||
treetop (~> 1.4.8)
|
||||
mailcatcher (0.2.4)
|
||||
eventmachine
|
||||
haml
|
||||
i18n
|
||||
json
|
||||
mail
|
||||
sinatra
|
||||
skinny (>= 0.1.2)
|
||||
sqlite3-ruby
|
||||
thin
|
||||
meta-tags (1.2.4)
|
||||
actionpack
|
||||
mime-types (1.17.2)
|
||||
|
@ -212,7 +223,17 @@ GEM
|
|||
sinatra (1.2.8)
|
||||
rack (~> 1.1)
|
||||
tilt (>= 1.2.2, < 2.0)
|
||||
skinny (0.2.0)
|
||||
eventmachine (~> 0.12)
|
||||
thin (~> 1.2)
|
||||
sqlite3 (1.3.5)
|
||||
sqlite3-ruby (1.3.3)
|
||||
sqlite3 (>= 1.3.3)
|
||||
state_machine (1.1.2)
|
||||
thin (1.3.1)
|
||||
daemons (>= 1.0.9)
|
||||
eventmachine (>= 0.12.6)
|
||||
rack (>= 1.0.0)
|
||||
thor (0.14.6)
|
||||
tilt (1.3.3)
|
||||
treetop (1.4.10)
|
||||
|
@ -260,6 +281,7 @@ DEPENDENCIES
|
|||
hirb
|
||||
hpricot
|
||||
jammit
|
||||
mailcatcher
|
||||
meta-tags (~> 1.2.4)
|
||||
newrelic_rpm
|
||||
omniauth (~> 1.0.1)
|
||||
|
|
|
@ -33,4 +33,9 @@ class UserMailer < ActionMailer::Base
|
|||
format.html
|
||||
end
|
||||
end
|
||||
|
||||
def invite_approve_notification(register_request)
|
||||
@register_request = register_request
|
||||
mail :to => register_request.email, :subject => I18n.t("notifications.subjects.invite_approve_notification")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,14 +5,21 @@ class RegisterRequest < ActiveRecord::Base
|
|||
scope :approved, where(:approved => true)
|
||||
scope :unprocessed, where(:approved => false, :rejected => false)
|
||||
|
||||
before_create :generate_token
|
||||
# before_create :generate_token
|
||||
before_update :invite_approve_notification
|
||||
|
||||
validates :name, :presence => true
|
||||
validates :email, :presence => true, :uniqueness => {:case_sensitive => false}, :format => { :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i }
|
||||
|
||||
protected
|
||||
|
||||
def generate_token
|
||||
self.token = Digest::SHA1.hexdigest(name + email + Time.now.to_s + rand.to_s)
|
||||
def generate_token
|
||||
self.token = Digest::SHA1.hexdigest(name + email + Time.now.to_s + rand.to_s)
|
||||
end
|
||||
|
||||
def invite_approve_notification
|
||||
if approved_changed? and approved == true
|
||||
generate_token
|
||||
UserMailer.invite_approve_notification(self).deliver
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -15,13 +15,17 @@
|
|||
%th
|
||||
%th= t("activerecord.attributes.register_request.name")
|
||||
%th= t("activerecord.attributes.register_request.email")
|
||||
%th= t("activerecord.attributes.register_request.interest")
|
||||
%th= t("activerecord.attributes.register_request.more")
|
||||
%th= t("activerecord.attributes.register_request.created_at")
|
||||
%th.last
|
||||
%th
|
||||
- @register_requests.each do |request|
|
||||
%tr{:class => cycle("odd", "even")}
|
||||
%td= check_box_tag 'request_ids[]', request.id
|
||||
%td= request.name
|
||||
%td= request.email
|
||||
%td= request.interest
|
||||
%td= request.more
|
||||
%td= request.created_at
|
||||
%td
|
||||
= link_to t("layout.approve"), register_request_approve_path(request) if can? :approve, request
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
%p== Здравствуйте, #{@register_request.name}.
|
||||
|
||||
%p
|
||||
Вы приглашены в проект ABF. Чтобы зарегистрироваться перейдите по
|
||||
= link_to 'ссылке', new_user_registration_url(:invitation_token => @register_request.token)
|
||||
|
||||
%p== Команда поддержки «ROSA Build System»
|
|
@ -16,6 +16,8 @@ Rosa::Application.configure do
|
|||
|
||||
# Don't care if the mailer can't send
|
||||
config.action_mailer.raise_delivery_errors = false
|
||||
config.action_mailer.delivery_method = :smtp # :letter_opener
|
||||
config.action_mailer.smtp_settings = { :host => "localhost", :port => 1025 }
|
||||
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
|
||||
|
||||
# Print deprecation notices to the Rails logger
|
||||
|
|
|
@ -946,6 +946,7 @@ en:
|
|||
new_user_notification: Registered on project «%{ project_name }»
|
||||
issue_assign_notification: New task assigned
|
||||
new_commit_comment_notification: New comment to commit
|
||||
invite_approve_notification: Invitation to ABF
|
||||
|
||||
project:
|
||||
category_id: Category
|
||||
|
|
|
@ -793,3 +793,4 @@ ru:
|
|||
new_user_notification: Регистрация на проекте «%{ project_name }»
|
||||
issue_assign_notification: Вам назначили задачу
|
||||
new_commit_comment_notification: Новый комментарий к коммиту
|
||||
invite_approve_notification: Приглашение в ABF
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
class AddMoreFieldsToRegisterRequests < ActiveRecord::Migration
|
||||
def self.up
|
||||
add_column :register_requests, :interest, :string
|
||||
add_column :register_requests, :more, :text
|
||||
end
|
||||
|
||||
def self.down
|
||||
remove_column :register_requests, :interest
|
||||
remove_column :register_requests, :more
|
||||
end
|
||||
end
|
14
db/schema.rb
14
db/schema.rb
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20120209135822) do
|
||||
ActiveRecord::Schema.define(:version => 20120210141153) do
|
||||
|
||||
create_table "arches", :force => true do |t|
|
||||
t.string "name", :null => false
|
||||
|
@ -90,12 +90,12 @@ ActiveRecord::Schema.define(:version => 20120209135822) do
|
|||
end
|
||||
|
||||
create_table "comments", :force => true do |t|
|
||||
t.string "commentable_id"
|
||||
t.string "commentable_type"
|
||||
t.integer "user_id"
|
||||
t.text "body"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.decimal "commentable_id", :precision => 50, :scale => 0
|
||||
end
|
||||
|
||||
create_table "containers", :force => true do |t|
|
||||
|
@ -117,6 +117,7 @@ ActiveRecord::Schema.define(:version => 20120209135822) do
|
|||
t.string "locked_by"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.string "queue"
|
||||
end
|
||||
|
||||
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
||||
|
@ -253,15 +254,15 @@ ActiveRecord::Schema.define(:version => 20120209135822) do
|
|||
t.text "description"
|
||||
t.string "ancestry"
|
||||
t.boolean "has_issues", :default => true
|
||||
t.boolean "has_wiki", :default => false
|
||||
t.string "srpm_file_name"
|
||||
t.string "srpm_content_type"
|
||||
t.integer "srpm_file_size"
|
||||
t.datetime "srpm_updated_at"
|
||||
t.boolean "has_wiki", :default => false
|
||||
end
|
||||
|
||||
add_index "projects", ["category_id"], :name => "index_projects_on_category_id"
|
||||
add_index "projects", ["owner_id"], :name => "index_projects_on_name_and_owner_id_and_owner_type", :unique => true
|
||||
add_index "projects", ["owner_id"], :name => "index_projects_on_name_and_owner_id_and_owner_type", :unique => true, :case_sensitive => false
|
||||
|
||||
create_table "register_requests", :force => true do |t|
|
||||
t.string "name"
|
||||
|
@ -271,9 +272,12 @@ ActiveRecord::Schema.define(:version => 20120209135822) do
|
|||
t.boolean "rejected", :default => false
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.string "interest"
|
||||
t.text "more"
|
||||
end
|
||||
|
||||
add_index "register_requests", ["email"], :name => "index_register_requests_on_email", :unique => true, :case_sensitive => false
|
||||
add_index "register_requests", ["token"], :name => "index_register_requests_on_token", :unique => true, :case_sensitive => false
|
||||
|
||||
create_table "relations", :force => true do |t|
|
||||
t.integer "object_id"
|
||||
|
@ -335,7 +339,6 @@ ActiveRecord::Schema.define(:version => 20120209135822) do
|
|||
t.string "email", :default => "", :null => false
|
||||
t.string "encrypted_password", :limit => 128, :default => "", :null => false
|
||||
t.string "reset_password_token"
|
||||
t.datetime "reset_password_sent_at"
|
||||
t.datetime "remember_created_at"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
|
@ -343,6 +346,7 @@ ActiveRecord::Schema.define(:version => 20120209135822) do
|
|||
t.string "uname"
|
||||
t.string "role"
|
||||
t.string "language", :default => "en"
|
||||
t.datetime "reset_password_sent_at"
|
||||
t.integer "own_projects_count", :default => 0, :null => false
|
||||
end
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Сборочная среда</title>
|
||||
<script type="text/javascript" src="js/html5shiv.js"></script>
|
||||
<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="styles/prereg.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -24,11 +24,12 @@
|
|||
<!--Page-->
|
||||
<article>
|
||||
<div class="left">
|
||||
<p>Здравствуйте, вы попали на страницу нашего нового сервиса ABF, который сейчас проходит тестирование. <br /><br />
|
||||
Это проект универсального build-сервера ABF, цель которого — автоматизировать согласование зависимостей при пересборке пакетов, облегчить работу билд-менеджеров, гарантировать, что все пакеты в образе собраны без конфликтов друг с другом.<br /><br />
|
||||
<a href="#">FAQ</a>
|
||||
<a href="http://wiki.rosalab.ru/index.php/ABF">Документация</a>
|
||||
<a href="http://forum.rosalab.ru/viewforum.php?f=10" class="last">Обсуждение</a>
|
||||
<p>
|
||||
Приветствуем Вас!<br /><br />
|
||||
Вы находитесь на странице размещения заявок на участие в бета-тестировании сборочного сервиса ABF компании РОСА.<br /><br />
|
||||
В первую очередь одобряются заявки от потенциальных майнтейнеров и представителей дистрибутивных команд.<br /><br />
|
||||
Ознакомиться с документацией можно <a href="http://wiki.rosalab.ru/index.php/ABF">здесь</a>.<br /><br />
|
||||
Мы будем рады ответить на Ваши вопросы на <a href="http://forum.rosalab.ru/viewforum.php?f=10">форуме</a> проекта.
|
||||
</p>
|
||||
|
||||
<div style="clear: both;">
|
||||
|
@ -37,13 +38,11 @@
|
|||
|
||||
</div>
|
||||
<div class="right">
|
||||
<h3>Хочу стать бета-тестером ABF!</h3>
|
||||
|
||||
<form accept-charset="UTF-8" name='invite_form' action="/users/register_requests" id="new_register_request" method="post">
|
||||
<p>
|
||||
В настоящее время сервис работает в закрытом режиме. <br/><br/><br />
|
||||
Оставьте оставьте свои контактные данные в форме ниже, если хотите поучаствовать в тестировании.
|
||||
</p>
|
||||
<div class="signup-left">
|
||||
Имя
|
||||
Имя, Фамилия
|
||||
</div>
|
||||
<div class="signup-right">
|
||||
<input type="text" id="email" name="register_request[name]" class="registartion-input-signup" onkeydown="buttonCheck();" onClick="this.className='registartion-input-focus';disError(this);" onfocus="if(this.value=='Логин или email'){this.value='';this.className='registartion-input-focus';};" onblur="if(this.value==''){this.value='';this.className='registartion-input-signup';}else{this.className='registartion-input-no-focus';};buttonCheck();" />
|
||||
|
@ -58,6 +57,26 @@
|
|||
</div>
|
||||
<div style="clear: both;">
|
||||
</div>
|
||||
<div class="signup-left">
|
||||
Степень интереса<br>к проекту
|
||||
</div>
|
||||
<div class="signup-right">
|
||||
<select name="register_request[interest]" class="registartion-input-signup">
|
||||
<option>Общеобразовательные цели</option>
|
||||
<option>Хочу стать майнтейнером РОСы</option>
|
||||
<option>Хочу собрать в ABF дистрибутив</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="clear: both;">
|
||||
</div>
|
||||
<div class="signup-left">
|
||||
Также хочу сказать
|
||||
</div>
|
||||
<div class="signup-right">
|
||||
<textarea name="register_request[more]" class="registartion-input-signup" rows="3"></textarea>
|
||||
</div>
|
||||
<div style="clear: both;">
|
||||
</div>
|
||||
|
||||
<div class="button">
|
||||
<input class="button" type="submit" value="Отправить">
|
||||
|
|
|
@ -104,7 +104,7 @@ article div.right {
|
|||
|
||||
article div.left a {
|
||||
color: #FFF;
|
||||
padding-right: 29px;
|
||||
/* padding-right: 29px;*/
|
||||
}
|
||||
|
||||
article div.left a.last {
|
||||
|
@ -117,7 +117,7 @@ article div.right p {
|
|||
|
||||
article div.all a {
|
||||
color: #FFF;
|
||||
padding-right: 29px;
|
||||
/* padding-right: 29px;*/
|
||||
}
|
||||
|
||||
article div.all p {
|
||||
|
@ -147,17 +147,27 @@ article div.signup-right {
|
|||
|
||||
article div.signup-right input {
|
||||
height: 21px;
|
||||
width: 170px;
|
||||
width: 185px;
|
||||
border: 1px solid #8199a9;
|
||||
border-radius: 2px;
|
||||
color: #cfcfcf;
|
||||
font-family: Tahoma;
|
||||
font-size: 12px;
|
||||
padding-left: 10px;
|
||||
/* padding-left: 10px;*/
|
||||
margin-top: 6px;
|
||||
margin-top: 14px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
article div.signup-right textarea, article div.signup-right select {
|
||||
width: 185px;
|
||||
border: 1px solid #8199a9;
|
||||
border-radius: 2px;
|
||||
font-family: Tahoma;
|
||||
font-size: 12px;
|
||||
margin-top: 6px;
|
||||
margin-top: 14px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
article div.signup-right select { width: 190px; }
|
||||
|
||||
article div.button {
|
||||
float: right;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Сборочная среда</title>
|
||||
<script type="text/javascript" src="js/html5shiv.js"></script>
|
||||
<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="styles/prereg.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
@ -24,14 +24,12 @@
|
|||
<!--Page-->
|
||||
<article>
|
||||
<div class="all">
|
||||
<p><span style="font-size: 28px;">Спасибо!</span><br /><br />
|
||||
Благодарим за интерес к нашему сервису ABF!<br />
|
||||
Приглашение будет выслано вам по указанной электронной почте. <br /><br />
|
||||
Ваши замечания-комментарии-пожелания ждем по адресу: _____<br /><br />
|
||||
Подробнее с ABF можно ознакомиться по ссылкам:<br /><br />
|
||||
<a href="#">FAQ</a>
|
||||
<a href="http://wiki.rosalab.ru/index.php/ABF">Документация</a>
|
||||
<a href="http://forum.rosalab.ru/viewforum.php?f=10">Обсуждение</a>
|
||||
<p>
|
||||
<span style="font-size: 28px;">Спасибо!</span><br /><br />
|
||||
Благодарим за интерес к нашему сервису ABF!<br /><br />
|
||||
Приглашение будет выслано вам по указанной электронной почте.<br /><br />
|
||||
Приглашаем Вас на <a href="http://forum.rosalab.ru/viewforum.php?f=10">форум</a> проекта, где мы будем рады ответить на Ваши вопросы и получить Ваши пожелания.<br /><br />
|
||||
Ознакомиться с документацией можно <a href="http://wiki.rosalab.ru/index.php/ABF">здесь</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue