Created
September 17, 2012 09:00
-
-
Save Heimdell/3736297 to your computer and use it in GitHub Desktop.
User domain
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class User | |
+ For anyone | |
def create_project :from => params | |
project = Project.new :from => params | |
become_owner! :of => project | |
end | |
+ For project.owner | |
def invite_unregistered :email => email, | |
:to => project | |
user = create_with_invitation :email => email | |
invite user, :to => project | |
end | |
+ For project.owner | |
def users_to_invite :to => project | |
User.select :not => { |user| user.participant? :of => project } | |
end | |
+ For project.owner | |
def invite user, :to => project | |
Invitation.new :for => user, | |
:to => project | |
end | |
+ For project.owner | |
def invite_list :of => users, | |
:to => project | |
users.every { |user| invite user, :to => project } | |
end | |
+ For anyone | |
def accept_invitation invitation | |
become_translator! :of => invitation.project | |
invitation.delete | |
end | |
+ For project.translators | |
def make_translation_version :of => key, | |
:in => project, | |
:for => locale, | |
:version => data | |
Translation.new :of => key, | |
:in => project, | |
:for => locale, | |
:version => data, | |
:made_by => self | |
end | |
+ For project.participants | |
def get_translations :in => project, | |
[:for => locale], | |
[:with_status => status] | |
result = Translation.select :in => project | |
result = result.select :for => locale if locale.given? | |
result = result.select :with_status => status if status.given? | |
return result | |
end | |
+ For version.project.owner | |
def accept_translation_version version | |
version.become_accepted! | |
end | |
+ For version.project.owner | |
def reject_translation_version version | |
version.become_rejected! | |
end | |
+ For project.participants | |
def get_statistics :of => project, [:for => locale] | |
project_keys = Keys.select :of => project | |
project_keys = project_keys.select :for => locale if locale.given? | |
project_keys_count = project_keys.count | |
predicate = proc { |key| key.has_no_accepted_translation } | |
untranslated_keys = project_keys.select :which => predicate | |
untranslated_keys_count = untranslated_keys.count | |
1 - Rational(untranslated_keys_count / project_keys_count) | |
end | |
private | |
def participates? :in => project | |
end | |
def owner? :of => project | |
end | |
def translator? :of => project | |
end | |
def become_owner :of => project | |
end | |
def become_translator :of => project | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment