diff --git a/.gitignore b/.gitignore index 37292e7..b909155 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,9 @@ # ignore IDE files .idea/* +<<<<<<< HEAD +======= + +# ignore yard doc files +.yardoc/* +>>>>>>> 97cb77ae9aa380ac8352b49ae90b0c118aa9d2a2 diff --git a/Gemfile b/Gemfile index 65dc3d3..479ce92 100644 --- a/Gemfile +++ b/Gemfile @@ -91,8 +91,10 @@ gem 'caracal' gem 'caracal-rails' -# TODO where to put it? -gem "i18n-js", ">= 3.0.0.rc11" +# +# INTERNATIONALIZATION +# +gem "i18n-js", ">= 3.0.0.rc11" #damodar added TODO: explain # @@ -107,3 +109,14 @@ # API # gem 'swagger-docs' + +# +# CODE DOCUMENTATION +# +gem 'yard' +gem 'redcarpet' + +# +# API +# +gem 'swagger-docs' diff --git a/Rakefile b/Rakefile index 1813a30..0d74091 100755 --- a/Rakefile +++ b/Rakefile @@ -6,6 +6,8 @@ DMPonline4::Application.load_tasks +# TODO: destroy rdoc rake task once finished with new documentation + RDoc::Task.new :rdoc do |rdoc| rdoc.main = "README.rdoc" @@ -17,4 +19,3 @@ end task default: :test - diff --git a/app/admin/org_token_permission.rb b/app/admin/org_token_permission.rb index 7ccebcb..e335d7f 100644 --- a/app/admin/org_token_permission.rb +++ b/app/admin/org_token_permission.rb @@ -1,7 +1,7 @@ ActiveAdmin.register OrgTokenPermission do permit_params :organisation_id, :token_permission_type_id - menu priority:25, label: proc{ I18n.t('admin.org_token_permission')}, parent: "Api" + menu priority: 40, label: proc{ I18n.t('admin.org_token_permission')}, parent: "Api" index do column I18n.t('admin.org') do |n| diff --git a/app/admin/organisation.rb b/app/admin/organisation.rb index 8b4afbc..2c88380 100644 --- a/app/admin/organisation.rb +++ b/app/admin/organisation.rb @@ -1,15 +1,15 @@ # [+Project:+] DMPonline -# [+Description:+] -# +# [+Description:+] +# # [+Created:+] 03/09/2014 -# [+Copyright:+] Digital Curation Centre +# [+Copyright:+] Digital Curation Centre ActiveAdmin.register Organisation do permit_params :abbreviation, :banner_file_id, :description, :domain, :logo_file_id, :name, :stylesheet_file_id, :target_url, :organisation_type_id, :wayfless_entity, :parent_id - + menu :priority => 14, :label => proc{I18n.t('admin.org')}, :parent => "Organisations management" - index do + index do column I18n.t('admin.org_title'), :sortable => :name do |ggn| link_to ggn.name, [:admin, ggn] end @@ -23,15 +23,16 @@ column I18n.t('admin.org_type'), :sortable => :organisation_type_id do |org_type| if !org_type.organisation_type_id.nil? then link_to org_type.organisation_type.name, [:admin, org_type] - end + end end - + actions end - - + + #show details of an organisation - show do + show do + resource.check_api_credentials attributes_table do row I18n.t('admin.org_title'), :sortable => :name do |gn| if !gn.name.nil? then @@ -45,12 +46,12 @@ '-' end end - row :sort_name + row :sort_name row I18n.t('admin.org_type'), :organisation_type_id do |org_type| if !org_type.organisation_type_id.nil? then link_to org_type.organisation_type.name, [:admin, org_type] - end - end + end + end row :description do |descr| if !descr.description.nil? then descr.description.html_safe @@ -65,18 +66,21 @@ row :logo_file_name row :domain row :wayfless_entity + row I18n.t('admin.token_permission_type') do + (organisation.token_permission_types.map{|tpt| link_to tpt.token_type, [:admin, tpt]}).join(', ').html_safe + end # row I18n.t('admin.org_parent'), :parent_id do |org_parent| # if !org_parent.parent_id.nil? then # parent_org = Organisation.find(org_parent.parent_id) # link_to parent_org.name, [:admin, parent_org] - # end + # end # end # row :stylesheet_file_id row :created_at row :updated_at end - end - + end + #templates sidebar sidebar I18n.t('admin.templates'), :only => :show, :if => proc { organisation.dmptemplates.count >= 1} do table_for organisation.dmptemplates.order("title asc") do |temp| @@ -87,7 +91,7 @@ end end - #form + #form form do |f| f.inputs "Details" do f.input :name @@ -100,18 +104,22 @@ f.input :logo_file_name f.input :domain f.input :wayfless_entity + f.input :token_permission_types, label: I18n.t('admin.token_permission_type'), + as: :select, multiple: true, include_blank: I18n.t('helpers.none'), + collection: TokenPermissionType.order(:token_type).map{|token| [token.token_type, token.id]}, + hint: I18n.t('admin.choose_api_permissions') # f.input :parent_id, :label => I18n.t('admin.org_parent'), :as => :select, :collection => Organisation.find(:all, :order => 'name ASC').map{|orgp|[orgp.name, orgp.id]} # f.input :stylesheet_file_id end - f.actions - end + f.actions + end controller do def permitted_params params.permit! end - end - - + end + + end diff --git a/app/admin/token_permission_type.rb b/app/admin/token_permission_type.rb index b3b9d2d..de4aa2d 100644 --- a/app/admin/token_permission_type.rb +++ b/app/admin/token_permission_type.rb @@ -1,10 +1,9 @@ ActiveAdmin.register TokenPermissionType do permit_params :token_type, :text_desription - menu priority: 20, label: proc{ I18n.t('admin.token_permission_type')}, parent: "Api" + menu priority: 40, label: proc{ I18n.t('admin.token_permission_type')}, parent: "Api" # TODO: Find better fix for the undefined method xxx_id_eq - remove_filter :token_permissions remove_filter :org_token_permissions index do diff --git a/app/admin/user.rb b/app/admin/user.rb index 859d8ca..205d15c 100644 --- a/app/admin/user.rb +++ b/app/admin/user.rb @@ -5,7 +5,11 @@ # [+Copyright:+] Digital Curation Centre ActiveAdmin.register User do +<<<<<<< HEAD permit_params :password_confirmation, :encrypted_password, :remember_me, :id, :email, :firstname, :orcid_id, :shibboleth_id, :user_status_id, :surname, :user_type_id, :organisation_id, :skip_invitation, :other_organisation, :accept_terms, :role_ids, :api_token +======= + permit_params :api_token, :password_confirmation, :encrypted_password, :remember_me, :id, :email, :firstname, :orcid_id, :shibboleth_id, :user_status_id, :surname, :user_type_id, :organisation_id, :skip_invitation, :other_organisation, :accept_terms, :role_ids +>>>>>>> 97cb77ae9aa380ac8352b49ae90b0c118aa9d2a2 menu :priority => 15, :label => proc{ I18n.t('admin.user')}, :parent => "User management" @@ -53,10 +57,10 @@ row :orcid_id row I18n.t('admin.org_title'), :organisation_id do |org_title| if !org_title.organisation_id.nil? then - link_to org_title.organisation.name, [:admin, org_title.organisation] - end + link_to org_title.organisation.name, [:admin, org_title.organisation] + end end - row :other_organisation + row :other_organisation # row I18n.t('admin.user_status'), :user_status_id do |us| # if !us.user_status.nil? then # link_to us.user_status.name, [:admin, us.user_status] @@ -104,6 +108,10 @@ :multiple => true, :include_blank => I18n.t('helpers.none'), :collection => Role.order('name').map{|ro| [ro.name, ro.id]} +<<<<<<< HEAD +======= + f.input :api_token +>>>>>>> 97cb77ae9aa380ac8352b49ae90b0c118aa9d2a2 end diff --git a/app/controllers/api/v0/base_controller.rb b/app/controllers/api/v0/base_controller.rb index 5d80b5b..020b268 100644 --- a/app/controllers/api/v0/base_controller.rb +++ b/app/controllers/api/v0/base_controller.rb @@ -102,18 +102,22 @@ def authenticate_token authenticate_with_http_token do |token, options| - @token = token - logger.debug "whats the token? #{token}" - @user = User.find_by api_token: token - logger.debug "did we even find a guy? #{@user}" - !@user.nil? + # reject the empty string as it is our base empty token + if !token = "" + @token = token + @user = User.find_by(api_token: token) + # if no user found, return false, otherwise true + !@user.nil? + else + false + end end end def render_bad_credentials self.headers['WWW-Authenticate'] = "Token realm=\"\"" - render json: '"Bad credentials"', status: 401 + render json: I18n.t("api.bad_credentials"), status: 401 end def has_auth (auth_type) diff --git a/app/controllers/api/v0/guidance_groups_controller.rb b/app/controllers/api/v0/guidance_groups_controller.rb index 3eafd8a..f28b642 100644 --- a/app/controllers/api/v0/guidance_groups_controller.rb +++ b/app/controllers/api/v0/guidance_groups_controller.rb @@ -24,13 +24,13 @@ # check if the user has permission to use the guidances api if has_auth("guidance") # determine if they have authorization to view this guidance group - if GuidanceGroup.can_view(@user, params[:id]) + if GuidanceGroup.can_view?(@user, params[:id]) respond_with get_resource else - render json: '"You do not have authorization to view this"', status: 401 + render json: I18n.t("api.bad_resource"), status: 401 end else - render json: '"You do not have authorization to use this api endpoint"', status: 401 + render json: I18n.t("api.no_auth_for_endpoint"), status: 401 end end @@ -49,7 +49,7 @@ respond_with @all_viewable_groups else #render unauthorised - render json: '"You do not have authorization to use this api endpoint"', status: 401 + render json: I18n.t("api.no_auth_for_endpoint"), status: 401 end end diff --git a/app/controllers/api/v0/guidances_controller.rb b/app/controllers/api/v0/guidances_controller.rb index 0f1ff43..2803ea6 100644 --- a/app/controllers/api/v0/guidances_controller.rb +++ b/app/controllers/api/v0/guidances_controller.rb @@ -23,13 +23,13 @@ def show # ensure use has auth for guidances api if has_auth("guidance") - if Guidance.can_view(@user, params[:id]) + if Guidance.can_view?(@user, params[:id]) respond_with get_resource else - render json: '"you do not have authorisation to view this resource"', status: 401 + render json: I18n.t("api.bad_resource"), status: 401 end else - render json: '"You do not have authorisation to use this api endpoint"', status: 401 + render I18n.t("api.no_auth_for_endpoint"), status: 401 end end @@ -45,7 +45,7 @@ @all_viewable_guidances = Guidance.all_viewable(@user) respond_with @all_viewable_guidances else - render json '"You do not have authorisation to view this api endpoint"', status: 401 + render json I18n.t("api.no_auth_for_endpoint"), status: 401 end end diff --git a/app/controllers/api/v0/projects_controller.rb b/app/controllers/api/v0/projects_controller.rb index 35c990b..b824c3a 100644 --- a/app/controllers/api/v0/projects_controller.rb +++ b/app/controllers/api/v0/projects_controller.rb @@ -13,13 +13,16 @@ response :not_found end + ## + # Creates a new project based on the information passed in JSON to the API def create # find the user's api_token permissions # then ensure that they have the permission associated with creating plans if has_auth "plans" #params[:organization_id] = Organisation.where(name: params[:template][:organization]) # find_by returns nil if none found, find_by! raises an ActiveRecord error - organization = Organisation.find_by name: params[:template][:organization] + organization = Organisation.find_by name: params[:template][:organisation] + # if organization exists if !organization.nil? # if organization is funder @@ -34,15 +37,28 @@ dmptemplate = organization.templates.find_by title: params[:template][:name] # else error: organization has more than one template and template name unspecified else - render json: 'error:"Organization has more than one template and template name unspecified or invalid"', status: 400 and return + render json: I18n.t("api.org_multiple_templates"), status: 400 and return end # else error: organization specified is not a funder else - render json: 'error:"Organization specified is not a funder"', status: 400 and return + render json: I18n.t("api.org_not_funder"), status: 400 and return end # else error: organization does not exist else - render json: 'error:"Organization does not exist"', status: 400 and return + render json: I18n.t("api.org_dosent_exist"), status: 400 and return + end + + all_groups = [] + # Check to see if the user specified guidances + if !params[:guidance].nil? + # for each specified guidance, see if it exists + params[:guidance][:name].each do |guidance_name| + group = GuidanceGroup.find_by(name: guidance_name) + # if it exists, add it to the guidances for the new project + if !group.nil? + all_groups = all_groups + [group] + end + end end # cant invite a user without having a current user because of devise :ivitable @@ -63,6 +79,7 @@ @project.slug = params[:project][:title] @project.organisation = @user.organisations.first @project.assign_creator(user.id) + @project.guidance_groups = all_groups # if save successful, render success, otherwise show error if @project.save @@ -72,15 +89,16 @@ render json: get_resource.errors, status: :unprocessable_entity end else - render json: 'error:"You do not have authorisation to view this api endpoint"', status: 400 and return + + render json: I18n.t("api.no_auth_for_endpoint"), status: 400 and return end end - private - def project_params - params.require(:template).permit(:organization, :name) - params.require(:project).permit(:title, :email) - end + # private + # def project_params + # params.require(:template).permit(:organisation, :name) + # params.require(:project).permit(:title, :email) + # end end end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f1eced4..cbc894d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,50 +1,73 @@ class ApplicationController < ActionController::Base - protect_from_forgery with: :exception - - # Override build_footer method in ActiveAdmin::Views::Pages + protect_from_forgery with: :exception + + # Override build_footer method in ActiveAdmin::Views::Pages require 'active_admin_views_pages_base.rb' - - rescue_from CanCan::AccessDenied do |exception| - redirect_to root_url, :alert => exception.message - end - - after_filter :store_location - def store_location - # store last url - this is needed for post-login redirect to whatever the user last visited. - if (request.fullpath != "/users/sign_in" && \ - request.fullpath != "/users/sign_up" && \ - request.fullpath != "/users/password" && \ + rescue_from CanCan::AccessDenied do |exception| + redirect_to root_url, :alert => exception.message + end + + before_filter :set_locale + + after_filter :store_location + + def set_locale + # parameter from url takes precedence + if params[:locale] + # if locales data is present in the parameter from url use it + # TODO we need to error to the user that locale is missing, it can be THE CASE because there can be a missmatch between locales files and db + I18n.locale = params[:locale] + elsif false # TODO + # if user has set preferred language use it + elsif false # TODO + # use user's organization language, keep in mine the "OTHER ORG" edge case which should use english + else + # just use the default language, line can be commented out, included just for clarity + # I18n.locale = config.i18n.default_locale + end + end + + # Added setting for passing local params across pages + def default_url_options(options = {}) + { locale: I18n.locale }.merge options + end + + def store_location + # store last url - this is needed for post-login redirect to whatever the user last visited. + if (request.fullpath != "/users/sign_in" && \ + request.fullpath != "/users/sign_up" && \ + request.fullpath != "/users/password" && \ request.fullpath != "/users/sign_up?nosplash=true" && \ - !request.xhr?) # don't store ajax calls - session[:previous_url] = request.fullpath - end - end + !request.xhr?) # don't store ajax calls + session[:previous_url] = request.fullpath + end + end - def after_sign_in_path_for(resource) - session[:previous_url] || root_path - end + def after_sign_in_path_for(resource) + session[:previous_url] || root_path + end - def after_sign_up_path_for(resource) - session[:previous_url] || root_path - end - - def after_sign_in_error_path_for(resource) - session[:previous_url] || root_path - end - - def after_sign_up_error_path_for(resource) - session[:previous_url] || root_path - end - - def authenticate_admin! - redirect_to root_path unless user_signed_in? && current_user.is_admin? - end + def after_sign_up_path_for(resource) + session[:previous_url] || root_path + end - def get_plan_list_columns - if user_signed_in? - @selected_columns = current_user.settings(:plan_list).columns - @all_columns = Settings::PlanList::ALL_COLUMNS - end - end + def after_sign_in_error_path_for(resource) + session[:previous_url] || root_path + end + + def after_sign_up_error_path_for(resource) + session[:previous_url] || root_path + end + + def authenticate_admin! + redirect_to root_path unless user_signed_in? && current_user.is_admin? + end + + def get_plan_list_columns + if user_signed_in? + @selected_columns = current_user.settings(:plan_list).columns + @all_columns = Settings::PlanList::ALL_COLUMNS + end + end end diff --git a/app/controllers/guidances_controller.rb b/app/controllers/guidances_controller.rb index a05db00..8718bb2 100644 --- a/app/controllers/guidances_controller.rb +++ b/app/controllers/guidances_controller.rb @@ -77,10 +77,10 @@ # updates phases, versions, sections and questions based on template selected dmptemplate = Dmptemplate.find(params[:dmptemplate_id]) # map to title and id for use in our options_for_select - @phases = dmptemplate.phases.map{|a| [a.title, a.id]}.insert(0, "Select a phase") - @versions = dmptemplate.versions.map{|s| [s.title, s.id]}.insert(0, "Select a version") - @sections = dmptemplate.sections.map{|s| [s.title, s.id]}.insert(0, "Select a section") - @questions = dmptemplate.questions.map{|s| [s.text, s.id]}.insert(0, "Select a question") + @phases = dmptemplate.phases.map{|a| [a.title, a.id]}.insert(0, I18n.t('helpers.select_phase')) + @versions = dmptemplate.versions.map{|s| [s.title, s.id]}.insert(0, I18n.t('helpers.select_version')) + @sections = dmptemplate.sections.map{|s| [s.title, s.id]}.insert(0, I18n.t('helpers.select_section')) + @questions = dmptemplate.questions.map{|s| [s.text, s.id]}.insert(0, I18n.t('helpers.select_question')) end @@ -88,23 +88,23 @@ # updates versions, sections and questions based on phase selected phase = Phase.find(params[:phase_id]) # map to name and id for use in our options_for_select - @versions = phase.versions.map{|s| [s.title, s.id]}.insert(0, "Select a version") - @sections = phase.sections.map{|s| [s.title, s.id]}.insert(0, "Select a section") - @questions = phase.questions.map{|s| [s.text, s.id]}.insert(0, "Select a question") + @versions = phase.versions.map{|s| [s.title, s.id]}.insert(0, I18n.t('helpers.select_version')) + @sections = phase.sections.map{|s| [s.title, s.id]}.insert(0, I18n.t('helpers.select_section')) + @questions = phase.questions.map{|s| [s.text, s.id]}.insert(0, I18n.t('helpers.select_question')) end def update_sections # updates sections and questions based on version selected version = Version.find(params[:version_id]) # map to name and id for use in our options_for_select - @sections = version.sections.map{|s| [s.title, s.id]}.insert(0, "Select a section") - @questions = version.questions.map{|s| [s.text, s.id]}.insert(0, "Select a question") + @sections = version.sections.map{|s| [s.title, s.id]}.insert(0, I18n.t('helpers.select_section')) + @questions = version.questions.map{|s| [s.text, s.id]}.insert(0, I18n.t('helpers.select_question')) end def update_questions # updates songs based on artist selected section = Section.find(params[:section_id]) - @questions = section.questions.map{|s| [s.text, s.id]}.insert(0, "Select a question") + @questions = section.questions.map{|s| [s.text, s.id]}.insert(0, I18n.t('helpers.select_question')) end diff --git a/app/controllers/organisation_users_controller.rb b/app/controllers/organisation_users_controller.rb index 2ff63c3..4693650 100644 --- a/app/controllers/organisation_users_controller.rb +++ b/app/controllers/organisation_users_controller.rb @@ -1,19 +1,25 @@ class OrganisationUsersController < ApplicationController - - def admin_index - if user_signed_in? && current_user.is_org_admin? then - - respond_to do |format| - format.html # index.html.erb - format.json { render json: @organisation_users } - end - else - render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false) - end - end - - - - + def admin_index + if user_signed_in? && current_user.is_org_admin? then + # find excluded user_id's + excluded_ids = params[:user_ids] + excluded_ids.each do |user_id| + User.find(user_id).remove_token + end + # remove their api_tokens + # find included user id's + params[:user_ids].each do |user_id| + User.find(user_id).keep_or_generate_token + end + # keep_or_generate_token + respond_to do |format| + format.html # index.html.erb + format.json { render json: @organisation_users } + end + else + render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false) + end + end + end \ No newline at end of file diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index a2ab8cc..a860980 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -6,7 +6,7 @@ def index if user_signed_in? then if (current_user.shibboleth_id.nil? || current_user.shibboleth_id.length == 0) && !cookies[:show_shib_link].nil? && cookies[:show_shib_link] == "show_shib_link" then - flash.notice = "Would you like to #{view_context.link_to 'link your DMPonline account to your institutional credentials?', user_omniauth_shibboleth_path}".html_safe + flash.notice = "Would you like to #{view_context.link_to I18n.t('helpers.shibboleth_to_link_text'), user_omniauth_shibboleth_path}".html_safe end @projects = current_user.projects.filter(params[:filter]) diff --git a/app/controllers/token_permission_types_controller.rb b/app/controllers/token_permission_types_controller.rb new file mode 100644 index 0000000..458ad69 --- /dev/null +++ b/app/controllers/token_permission_types_controller.rb @@ -0,0 +1,15 @@ +class TokenPermissionTypesController < ApplicationController + + + def index + if user_signed_in? && user.organisation.token_permission_types.count > 0 + @user = current_user + respond_to do |format| + format.html + end + else + render(file: File.join(Rails.root, 'public/403.html'),status: 403, layout: false) + end + end + +end \ No newline at end of file diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 3c8039f..8fad4df 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -57,9 +57,7 @@ end end end - - - + # DELETE /users/1 # DELETE /users/1.json @@ -72,4 +70,42 @@ format.json { head :no_content } end end + + def admin_index + if user_signed_in? && current_user.is_org_admin? then + respond_to do |format| + format.html # index.html.erb + format.json { render json: @organisation_users } + end + else + render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false) + end + end + + def admin_api_update + if user_signed_in? && current_user.is_org_admin? then + #iterate through all org users + current_user.organisation.users.each do |user| + if !params[:user_ids].nil? + user_ids = params[:user_ids].map(&:to_i) + # if user_id in passed params + if user_ids.include? user.id + # run generate_or_keep + user.keep_or_generate_token! + # if not in passed params + else + # remove the token + user.remove_token! + end + else + # no users selected so remove all tokens + user.remove_token! + end + end + #redirect_to admin_index + else + render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false) + end + end + end diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 4da5c9b..6025e3b 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -1,19 +1,24 @@ class UserMailer < ActionMailer::Base - default from: 'info@dcc.ac.uk' + default from: I18n.t('helpers.main_email.from') def sharing_notification(project_group) @project_group = project_group - mail(to: @project_group.user.email, subject: "You have been given access to a Data Management Plan") + mail(to: @project_group.user.email, subject: I18n.t('helpers.main_email.access_given')) end def permissions_change_notification(project_group) @project_group = project_group - mail(to: @project_group.user.email, subject: "DMP permissions changed") + mail(to: @project_group.user.email, subject: I18n.t('helpers.main_email.permission_changed')) end def project_access_removed_notification(user, project) @user = user @project = project - mail(to: @user.email, subject: "DMP access removed") + mail(to: @user.email, subject: I18n.t('helpers.main_email.access_removed')) end + + def api_token_granted_notification(user) + @user = user + mail(to: @user.email, subject: I18n.t('helper.api_mail_subject') + end end \ No newline at end of file diff --git a/app/models/dmptemplate.rb b/app/models/dmptemplate.rb index 0e2aac4..15d1d16 100644 --- a/app/models/dmptemplate.rb +++ b/app/models/dmptemplate.rb @@ -1,108 +1,156 @@ class Dmptemplate < ActiveRecord::Base - - attr_accessible :organisation_id, :description, :published, :title, :user_id, :locale, :is_default, :guidance_group_ids, :as => [:default, :admin] - + + attr_accessible :organisation_id, :description, :published, :title, :user_id, :locale, :is_default, :guidance_group_ids, as: [:default, :admin] + #associations between tables has_many :phases - has_many :versions, :through => :phases - has_many :sections, :through => :versions - has_many :questions, :through => :sections + has_many :versions, through: :phases + has_many :sections, through: :versions + has_many :questions, through: :sections has_many :projects - + #has_many :guidances needs to be removed and checked - + belongs_to :organisation - + has_and_belongs_to_many :guidance_groups, join_table: "dmptemplates_guidance_groups" - + accepts_nested_attributes_for :guidance_groups accepts_nested_attributes_for :phases accepts_nested_attributes_for :organisation accepts_nested_attributes_for :projects - + has_settings :export, class_name: 'Settings::Dmptemplate' do |s| s.key :export, defaults: Settings::Dmptemplate::DEFAULT_SETTINGS end - + + ## + # Converts a DMPtemplate object into a string containing it's title + # + # @return [String] the title of the DMPtemplate def to_s "#{title}" end - + + ## + # takes a type or organisation and returns all published templates from + # organisations of that type + # + # @param ot [String] name of an organisation type e.g. founder + # @return [Array] list of published dmptemplates def self.templates_org_type(ot) - new_org_obejcts = OrganisationType.find_by_name(ot).organisations - + # DISCUSS - This function other than the check for the template being published + # is a superclass for the below funders_templates + new_org_obejcts = OrganisationType.find_by( name: ot ).organisations + org_templates = Array.new new_org_obejcts.each do |neworg| org_templates += neworg.dmptemplates.where("published = ?", true) end - - return org_templates - end - #returns all funders templates + return org_templates + end + + ## + # returns all templates from all organisations of the Organisation_Type funder + # + # @return [Array] all templates from funder organisations def self.funders_templates - new_org_obejcts = OrganisationType.find_by_name(I18n.t("helpers.org_type.funder")).organisations + new_org_obejcts = OrganisationType.find_by(name: I18n.t("helpers.org_type.funder")).organisations org_templates = Array.new - + new_org_obejcts.each do |neworg| org_templates += neworg.dmptemplates end - - return org_templates + + return org_templates end - - - #returns all institutional templates bellowing to the current user's org + + ## + # returns all institutional templates bellowing to the given organisation + # + # @param org_id [integer] the integer id for an organisation + # @return [Array] all templates from a user's organisation def self.own_institutional_templates(org_id) + # DISCUSS - Why is this done by scanning organisation_id's from the templates + # yet all other calls are done by finding an organisation, and using the + # has_many relationship to find the dmptemplates? + # - A possible answer is that there may be deleted organisations which we are + # serching for templates for. + # - A standardised behavior on querries, wether through active reccord or the + # where, should maybe be thought of/decided upon new_templates = self.where("organisation_id = ?", org_id) return new_templates end - - #returns an array with all funders and own institutional templates + + ## + # returns an array with all funders and of the given organisations's + # institutional templates + # + # @param org_id [integer] the integer id for an organisation + # @return [Array] all templates from the template's organisation + # or from a funder organisation def self.funders_and_own_templates(org_id) funders_templates = self.funders_templates - - #verify if org type is not a funder - current_org = Organisation.find(org_id) - if current_org.organisation_type.name != I18n.t("helpers.org_type.funder") then - own_institutional_templates = self.own_institutional_templates(org_id) - else - own_institutional_templates = [] - end - + # DISCUSS - Here we internationalise the word funder. There is code in the + # api that just uses the english word funder. Why are we internationalising + # the database querry, and do I need to change things like this elsewhere? + + #verify if org type is not a funder + current_org = Organisation.find(org_id) + if current_org.organisation_type.name != I18n.t("helpers.org_type.funder") then + own_institutional_templates = self.own_institutional_templates(org_id) + else + own_institutional_templates = [] + end + templates_list = Array.new templates_list += own_institutional_templates templates_list += funders_templates templates_list = templates_list.sort_by { |f| f['title'].downcase } - + return templates_list end - + + ## + # Returns the string name of the organisation type of the organisation who + # owns this dmptemplate + # + # @return [string] the string name of an organisation type def org_type org_type = organisation.organisation_type.name return org_type end - - #verify if a template has customisation by current user's org + + ## + # Verify if a template has customisation by given organisation + # + # @param org_id [integer] the integer id for an organisation + # @param temp [dmptemplate] a template object + # @return [Boolean] true if temp has customisation by the given organisation def has_customisations?(org_id, temp) + # EXPLAIN - I dont Understand the data model here. If the template isnt + # owned by the organisation, how can it make changes to a section? + # Why cant the owner make customisations? if temp.organisation_id != org_id then temp.phases.each do |phase| phase.versions.each do |version| version.sections.each do |section| - return true if section.organisation_id == org_id - - end + return true if section.organisation_id == org_id + end end - return false + return false end else - return false - end + return false + end end - - + + ## # verify if there are any publish version for the template + # + # @return [Boolean] true if there is a published version for the template def has_published_versions? phases.each do |phase| return true if !phase.latest_published_version.nil? diff --git a/app/models/guidance.rb b/app/models/guidance.rb index b1feb32..183f771 100644 --- a/app/models/guidance.rb +++ b/app/models/guidance.rb @@ -8,61 +8,78 @@ class Guidance < ActiveRecord::Base - #associations between tables + #associations between tables attr_accessible :text, :question_id, :published, :as => [:default, :admin] - attr_accessible :guidance_group_ids, :as => [:default, :admin] - attr_accessible :theme_ids, :as => [:default, :admin] - belongs_to :question + attr_accessible :guidance_group_ids, :as => [:default, :admin] + attr_accessible :theme_ids, :as => [:default, :admin] - #belongs_to :dmptemplate - #belongs_to :theme + belongs_to :question - has_and_belongs_to_many :guidance_groups, join_table: "guidance_in_group" - has_and_belongs_to_many :themes, join_table: "themes_in_guidance" + #belongs_to :dmptemplate + #belongs_to :theme - accepts_nested_attributes_for :themes - accepts_nested_attributes_for :guidance_groups + has_and_belongs_to_many :guidance_groups, join_table: "guidance_in_group" + has_and_belongs_to_many :themes, join_table: "themes_in_guidance" + + accepts_nested_attributes_for :themes + accepts_nested_attributes_for :guidance_groups - #verifies if one guidance belongs to a org + ## + # Determine if a guidance is in a group which belongs to a specified organisation + # + # @param org_id [Integer] the integer id for an organisation + # @return [Boolean] true if this guidance is in a group belonging to the specified organisation, false otherwise def in_group_belonging_to?(organisation_id) guidance_groups.each do |guidance_group| - if guidance_group.organisation_id == organisation_id then + if guidance_group.organisation_id == organisation_id return true end end return false end - - #all guidance that belong to an organisation + ## + # returns all guidance that belongs to a specified organisation + # + # @param org_id [Integer] the integer id for an organisation + # @return [Array] list of guidance def self.by_organisation(org_id) - all_guidance = Guidance.all - org_guidance = Array.new - - all_guidance.each do |guidance| - if guidance.in_group_belonging_to?(org_id) then - org_guidance << guidance - end - end - + org_guidance = [] + Organisation.find_by(id: org_id).guidance_groups.each do |group| + org_guidance += group.guidances + end return org_guidance - end - + ## + # returns all templates belgonging to a specified guidance group + # + # @param guidance_group [Integer] the integer id for an guidance_group + # @return [Array] list of templates def get_guidance_group_templates? (guidance_group) + # DISCUSS - here we have yet another way of finding a specific or group of + # an object. Would it make sense to standardise the project by only using + # either finders or where, or alteast the same syntax within the where statement. + # Also why is this a ? method... it dosent return a boolean + # Additionally, shouldnt this be a function of guidance group, not guidance? + # and finally, it should be a self.method, as it dosent care about the guidance it's acting on templates = guidancegroups.where("guidance_group_id (?)", guidance_group.id).template return templates end - def self.can_view(user, id) - # we define guidances viewable to a user by those owned by a guidance group: - # owned by the DCC - # owned by a funder organisation - # owned by an organisation, of which the user is a member - + ## + # Returns whether or not a given user can view a given guidance + # we define guidances viewable to a user by those owned by a guidance group: + # owned by the DCC + # owned by a funder organisation + # owned by an organisation, of which the user is a member + # + # @param id [Integer] the integer id for a guidance + # @param user [User] a user object + # @return [Boolean] true if the specified user can view the specified guidance, false otherwise + def self.can_view?(user, id) guidance = Guidance.find_by(id: id) viewable = false @@ -70,7 +87,9 @@ guidance.guidance_groups.each do |guidance_group| # guidances are viewable if they are owned by any of the user's organisations - user.organisations do |organisation| + user.organisations.each do |organisation| + logger.debug "#{organisation.name}" + if guidance_group.organisation.id == organisation.id viewable = true end @@ -90,30 +109,33 @@ return viewable end + ## + # Returns a list of all guidances which a specified user can view + # we define guidances viewable to a user by those owned by a guidance group: + # owned by the DCC + # owned by a funder organisation + # owned by an organisation, of which the user is a member + # + # @param user [User] a user object + # @return [Array] a list of all "viewable" guidances to a user def self.all_viewable(user) - # we define vuiable guidances as those owned by a guidance group: - # owned by the DCC - # owned by a funder organisation - # owned by an organisation, of which the user is a member - - # first find all groups owned by the DCC dcc_groups = (Organisation.find_by name: "Digital Curation Centre").guidance_groups # find all groups owned by a Funder organisation funder_groups = [] funders = OrganisationType.find_by( name: "Funder") funders.organisations.each do |funder| - funder_groups = funder_groups + funder.guidance_groups + funder_groups += funder.guidance_groups end # find all groups owned by any of the user's organisations organisation_groups = [] user.organisations.each do |organisation| - organisation_groups = organisation_groups + organisation.guidance_groups + organisation_groups += organisation.guidance_groups end # find all guidances belonging to any of the viewable groups all_viewable_guidances = [] all_viewable_groups = dcc_groups + funder_groups + organisation_groups all_viewable_groups.each do |group| - all_viewable_guidances = all_viewable_guidances + group.guidances + all_viewable_guidances += group.guidances end # pass the list of viewable guidances to the view return all_viewable_guidances diff --git a/app/models/guidance_group.rb b/app/models/guidance_group.rb index 21da8cc..eb06b2a 100644 --- a/app/models/guidance_group.rb +++ b/app/models/guidance_group.rb @@ -13,10 +13,21 @@ attr_accessible :organisation_id, :name, :optional_subset, :published, :as => [:default, :admin] attr_accessible :dmptemplate_ids, :as => [:default, :admin] + ## + # Converts a guidance group to a string containing the display name + # + # @return [String] the name of the organisation, with or without the name of the guidance group def to_s "#{display_name}" end + ## + # Converts the current guidance group to a string containing the display name. + # If it's organisation has no other guidance groups, then the name is simply + # the name of the parent organisation, otherwise it returns the name of the + # organisation followed by the name of the guidance group. + # + # @return [String] the display name for the guidance group def display_name if organisation.guidance_groups.count > 1 return "#{organisation.name}: #{name}" @@ -25,6 +36,11 @@ end end + ## + # Returns the list of all guidance groups not coming from the given organisations + # + # @params excluded_orgs [Array] a list of organisations to exclude in the result + # @return [Array] a list of guidance groups def self.guidance_groups_excluding(excluded_orgs) excluded_org_ids = Array.new excluded_orgs.each do |org| @@ -34,68 +50,74 @@ return return_orgs end - def self.can_view(user, id) - # we define guidance groups viewable to a user by: - # those owned by the DCC - # those owned by a funder organisation - # those owned by an organisation, of which the user is a member + ## + # Returns whether or not a given user can view a given guidance group + # we define guidances viewable to a user by those owned by: + # the DCC + # a funder organisation + # an organisation, of which the user is a member + # + # @param id [Integer] the integer id for a guidance group + # @param user [User] a user object + # @return [Boolean] true if the specified user can view the specified guidance group, false otherwise + def self.can_view?(user, id) + guidance_group = GuidanceGroup.find_by(id: id) + viewable = false - guidance_group = GuidanceGroup.find_by(id: id) - viewable = false - # groups are viewable if they are owned by any of the user's organisations - user.organisations do |organisation| - if guidance_group.organisation.id == organisation.id + # groups are viewable if they are owned by any of the user's organisations + user.organisations.each do |organisation| + if guidance_group.organisation.id == organisation.id + viewable = true + end + end + # groups are viewable if they are owned by the DCC + Organisation.where( name: "Digital Curation Centre").find_each do |dcc| + if guidance_group.organisation.id == dcc.id + viewable = true + end + end + # groups are viewable if they are owned by a funder + if guidance_group.organisation.organisation_type == OrganisationType.find_by( name: "Funder") viewable = true end + + return viewable end - # groups are viewable if they are owned by the DCC - Organisation.where( name: "Digital Curation Centre").find_each do |dcc| - if guidance_group.organisation.id == dcc.id - viewable = true + + ## + # Returns a list of all guidance groups which a specified user can view + # we define guidance groups viewable to a user by those owned by: + # the DCC + # a funder organisation + # an organisation, of which the user is a member + # + # @param user [User] a user object + # @return [Array] a list of all "viewable" guidance groups to a user + def self.all_viewable(user) + # first find all groups owned by the DCC + dcc_groups = [] + Organisation.where( name: "Digital Curation Centre").find_each do |dcc| + dcc_groups = dcc_groups + dcc.guidance_groups + logger.info "another one" end + + # find all groups owned by a Funder organisation + funder_groups = [] + funders = OrganisationType.find_by( name: "Funder") + logger.debug "found an org type? #{funders.organisations.first.name}" + funders.organisations.each do |funder| + funder_groups = funder_groups + funder.guidance_groups + logger.info "iterating through funders" + end + # find all groups owned by any of the user's organisations + organisation_groups = [] + user.organisations.each do |organisation| + organisation_groups = organisation_groups + organisation.guidance_groups + end + # pass this list to the view with respond_with @all_viewable_groups + all_viewable_groups = dcc_groups + funder_groups + organisation_groups + all_viewable_groups = all_viewable_groups.uniq{|x| x.id} + logger.debug "we finished it?" + return all_viewable_groups end - # groups are viewable if they are owned by a funder - if guidance_group.organisation.organisation_type == OrganisationType.find_by( name: "Funder") - viewable = true - end - - return viewable -end - -def self.all_viewable(user) - # we define guidance groups viewable to a user by: - # those owned by the DCC - # those owned by a funder organisation - # those owned by an organisation, of which the user is a member - - # first find all groups owned by the DCC - dcc_groups = [] - Organisation.where( name: "Digital Curation Centre").find_each do |dcc| - dcc_groups = dcc_groups + dcc.guidance_groups - logger.info "another one" - end - - # find all groups owned by a Funder organisation - funder_groups = [] - funders = OrganisationType.find_by( name: "Funder") - logger.debug "found an org type? #{funders.organisations.first.name}" - funders.organisations.each do |funder| - funder_groups = funder_groups + funder.guidance_groups - logger.info "iterating through funders" - end - # find all groups owned by any of the user's organisations - organisation_groups = [] - user.organisations.each do |organisation| - organisation_groups = organisation_groups + organisation.guidance_groups - end - # pass this list to the view with respond_with @all_viewable_groups - all_viewable_groups = dcc_groups + funder_groups + organisation_groups - all_viewable_groups = all_viewable_groups.uniq{|x| x.id} - logger.debug "we finished it?" - return all_viewable_groups -end - - - - end diff --git a/app/models/language.rb b/app/models/language.rb new file mode 100644 index 0000000..a402b79 --- /dev/null +++ b/app/models/language.rb @@ -0,0 +1,3 @@ +class Language < ActiveRecord::Base + +end \ No newline at end of file diff --git a/app/models/organisation.rb b/app/models/organisation.rb index 0aa0c88..74b7f2c 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -1,101 +1,146 @@ class Organisation < ActiveRecord::Base - - #associations between tables - belongs_to :organisation_type - has_many :guidance_groups - has_many :dmptemplates - has_many :sections - has_many :users - has_many :option_warnings - has_many :suggested_answers - has_many :org_token_permissions + #associations between tables + belongs_to :organisation_type + has_many :guidance_groups + has_many :dmptemplates + has_many :sections + has_many :users, through: :user_org_roles + has_many :option_warnings + has_many :suggested_answers + has_and_belongs_to_many :token_permission_types, join_table: "org_token_permissions" has_many :user_org_roles belongs_to :parent, :class_name => 'Organisation' - has_many :children, :class_name => 'Organisation', :foreign_key => 'parent_id' - accepts_nested_attributes_for :organisation_type - accepts_nested_attributes_for :dmptemplates + has_many :children, :class_name => 'Organisation', :foreign_key => 'parent_id' - attr_accessible :abbreviation, :banner_text, :description, :domain, :logo_file_name, :name, :stylesheet_file_id, :target_url, :organisation_type_id, :wayfless_entity, :parent_id, :sort_name + accepts_nested_attributes_for :organisation_type + accepts_nested_attributes_for :dmptemplates + accepts_nested_attributes_for :token_permission_types - def to_s - name - end + attr_accessible :abbreviation, :banner_text, :description, :domain, :logo_file_name, :name, :stylesheet_file_id, :target_url, :organisation_type_id, :wayfless_entity, :parent_id, :sort_name, :token_permission_type_ids + ## + # returns the name of the current organisation + # + # @return [String] the name of the organisation + def to_s + name + end - def short_name - if abbreviation.nil? then - return name - else - return abbreviation - end - end + ## + # returns the abbreviation for the organisation if it exists, name otherwise + # + # @return [String] abbreviation or name + def short_name + if abbreviation.nil? then + return name + else + return abbreviation + end + end - #retrieves info off a child org - def self.orgs_with_parent_of_type(org_type) - parents = OrganisationType.find_by_name(org_type).organisations - children = Array.new - parents.each do |parent| - children += parent.children - end - return children - end + ## + # returns all organisations who have parents of a given organisation type + # + # @params org_type [String] the name of an organisation type + # @return [Array] a list of organisations + def self.orgs_with_parent_of_type(org_type) + parents = OrganisationType.find_by(name: (org_type)).organisations + children = Array.new + parents.each do |parent| + children += parent.children + end + return children + end + ## + # returns a list of all guidance groups belonging to other organisations + # + # @return [Array] + def self.other_organisations + #DISCUSS - What does this method do? + org_types = [I18n.t('helpers.org_type.organisation')] + organisations_list = [] + org_types.each do |ot| + new_org_obejct = OrganisationType.find_by(name: ot) - def self.other_organisations - org_types = [I18n.t('helpers.org_type.organisation')] - organisations_list = [] - org_types.each do |ot| - new_org_obejct = OrganisationType.find_by_name(ot) + org_with_guidance = GuidanceGroup.joins(new_org_obejct.organisations) - org_with_guidance = GuidanceGroup.joins(new_org_obejct.organisations) + organisations_list = organisations_list + org_with_guidance + end + return organisations_list + end - organisations_list = organisations_list + org_with_guidance - end - return organisations_list - end + ## + # returns a list of all sections of a given version from this organisation and it's parents + # + # @params version_id [Integer] version number of the section + # @return [Array
] list of sections + def all_sections(version_id) + if parent.nil? + secs = sections.where("version_id = ?", version_id) + if secs.nil? then + secs = Array.new + end + return secs + else + return sections.where("version_id = ? ", version_id).all + parent.all_sections(version_id) + end + end - def all_sections(version_id) - if parent.nil? - secs = sections.where("version_id = ?", version_id) - if secs.nil? then - secs = Array.new - end - return secs - else - return sections.where("version_id = ? ", version_id).all + parent.all_sections(version_id) - end - end + ## + # returns the guidance groups of this organisation and all of it's children + # + # @return [Array] list of guidance groups + def all_guidance_groups + ggs = guidance_groups + children.each do |c| + ggs = ggs + c.all_guidance_groups + end + return ggs + end - def all_guidance_groups - ggs = guidance_groups - children.each do |c| - ggs = ggs + c.all_guidance_groups - end - return ggs - end + ## + # returns the highest parent organisation in the tree + # + # @return [organisation] the root organisation + def root + if parent.nil? + return self + else + return parent.root + end + end - def root - if parent.nil? - return self - else - return parent.root - end - end + ## + # takes in the id of, and returns an OptionWarning + # + # @params option_id [number] the id of the desired warning + # @return [OptionWarning] the specified warning + def warning(option_id) + warning = option_warnings.find_by(option_id: option_id) + if warning.nil? && !parent.nil? then + return parent.warning(option_id) + else + return warning + end + end - def warning(option_id) - warning = option_warnings.find_by_option_id(option_id) - if warning.nil? && !parent.nil? then - return parent.warning(option_id) - else - return warning - end - end + ## + # returns all published templates belonging to the organisation + # + # @return [Array] published dmptemplates + def published_templates + return dmptemplates.where("published = ?", 1) + end - def published_templates - return dmptemplates.where("published = ?", 1) - end - - + def check_api_credentials + if token_permission_types.count == 0 + users.each do |user| + user.api_token = "" + user.save! + end + end + end end diff --git a/app/models/plan.rb b/app/models/plan.rb index e2989a3..70510fa 100644 --- a/app/models/plan.rb +++ b/app/models/plan.rb @@ -43,7 +43,7 @@ if !self.version.nil? && !self.version.phase.nil? && !self.version.phase.title? then return self.version.phase.title else - return "DMP title" + return I18n.t('tool_title2') end else return self.settings(:export).title diff --git a/app/models/question.rb b/app/models/question.rb index be97f38..f181719 100644 --- a/app/models/question.rb +++ b/app/models/question.rb @@ -72,7 +72,7 @@ GuidanceGroup.where("organisation_id = ?", org_admin.id).each do |group| group.guidances.each do |g| g.themes.where("id IN (?)", theme_ids).each do |gg| - guidances["#{group.name} guidance on #{gg.title}"] = g + guidances["#{group.name} " + I18n.t('admin.guidance_lowercase_on') + " #{gg.title}"] = g end end end @@ -81,7 +81,7 @@ question.guidances.each do |g_by_q| g_by_q.guidance_groups.each do |group| if group.organisation == org_admin - guidances["#{group.name} guidance"] = g_by_q + guidances["#{group.name} " + I18n.t('admin.guidance_lowercase')] = g_by_q end end end diff --git a/app/models/token_permission_type.rb b/app/models/token_permission_type.rb index 2de7d56..8c02ecb 100644 --- a/app/models/token_permission_type.rb +++ b/app/models/token_permission_type.rb @@ -3,8 +3,7 @@ attr_accessible :token_type, :text_desription, :as => [:default, :admin] #associations between tables - has_many :token_permissions - has_many :org_token_permissions + has_and_belongs_to_many :org_token_permissions, join_table: "org_token_permissions" def to_s self.token_type diff --git a/app/models/user.rb b/app/models/user.rb index 53f59a4..1b5e598 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -17,6 +17,7 @@ has_many :token_permissions + has_many :projects, through: :project_groups do def filter(query) return self unless query.present? @@ -40,11 +41,11 @@ has_many :plan_sections accepts_nested_attributes_for :roles - + attr_accessible :password_confirmation, :encrypted_password, :remember_me, :id, :email, :firstname, :last_login,:login_count, :orcid_id, :password, :shibboleth_id, :user_status_id, :surname, :user_type_id, :organisation_id, :skip_invitation, - :other_organisation, :accept_terms, :role_ids, :dmponline3 + :other_organisation, :accept_terms, :role_ids, :dmponline3, :api_token # FIXME: The duplication in the block is to set defaults. It might be better if # they could be set in Settings::PlanList itself, if possible. @@ -62,22 +63,33 @@ end def organisation_id=(new_organisation_id) - if !self.user_org_roles.pluck(:organisation_id).include?(new_organisation_id.to_i) then - if self.user_org_roles.count != 1 then - new_user_org_role = UserOrgRole.new - new_user_org_role.organisation_id = new_organisation_id - new_user_org_role.user_role_type = UserRoleType.find_by_name("user"); - self.user_org_roles << new_user_org_role - else - user_org_role = self.user_org_roles.first - user_org_role.organisation_id = new_organisation_id - user_org_role.save - org_admin_role = roles.find_by_name("org_admin") - unless org_admin_role.nil? then - roles.delete(org_admin_role) - end - end - end + # if the user is not part of the new organisation + if !self.user_org_roles.pluck(:organisation_id).include?(new_organisation_id.to_i) then + # if the user has more than one role + if self.user_org_roles.count != 1 then + new_user_org_role = UserOrgRole.new + new_user_org_role.organisation_id = new_organisation_id + new_user_org_role.user_role_type = UserRoleType.find_by_name("user"); + self.user_org_roles << new_user_org_role + # + # if the user has roles other than one(0/2/3?) + else + # set role to first role + user_org_role = self.user_org_roles.first + # change org_id to new org_id + user_org_role.organisation_id = new_organisation_id + # save modified role + user_org_role.save + # if user has an "org_admin" role + org_admin_role = roles.find_by_name("org_admin") + unless org_admin_role.nil? then + # delete it + roles.delete(org_admin_role) + end + end + end + # rip api_token from user + self.api_token = "" end def organisation_id @@ -123,5 +135,23 @@ return org_type end + def remove_token! + unless api_token.empty? + self.api_token = "" + self.save! + end + end + + def keep_or_generate_token! + if api_token.empty? + self.api_token = loop do + random_token = SecureRandom.urlsafe_base64(nil, false) + break random_token unless User.exists?(api_token: random_token) + end + self.save! + # send an email to the user to notify them of their new api token + UserMailer.api_token_granted_notification(self) + end + end end diff --git a/app/views/api/v0/guidance_groups/index.json.jbuilder b/app/views/api/v0/guidance_groups/index.json.jbuilder index 2271872..b413f7b 100644 --- a/app/views/api/v0/guidance_groups/index.json.jbuilder +++ b/app/views/api/v0/guidance_groups/index.json.jbuilder @@ -14,6 +14,12 @@ json.templates @templates do |template| json.title template.title end + + json.guidances guidance_group.guidances do |guidance| + json.text guidance.text + json.id guidance.id + end + json.optional guidance_group.optional_subset json.updated guidance_group.updated_at end diff --git a/app/views/api/v0/guidance_groups/show.json.jbuilder b/app/views/api/v0/guidance_groups/show.json.jbuilder index e776269..4408430 100644 --- a/app/views/api/v0/guidance_groups/show.json.jbuilder +++ b/app/views/api/v0/guidance_groups/show.json.jbuilder @@ -14,6 +14,11 @@ json.templates @templates do |template| json.title template.title end + + json.guidances @guidance_group.guidances do |guidance| + json.text guidance.text + json.id guidance.id + end json.optional @guidance_group.optional_subset json.updated @guidance_group.updated_at -end \ No newline at end of file +end diff --git a/app/views/contact_us/contacts/new.html.erb b/app/views/contact_us/contacts/new.html.erb index fccdff6..7829d7a 100644 --- a/app/views/contact_us/contacts/new.html.erb +++ b/app/views/contact_us/contacts/new.html.erb @@ -20,7 +20,7 @@ <% if ContactUs.require_name %> - <%= f.label :name, (t(".name") + content_tag(:abbr, "*", :class => "required")).html_safe %> + <%= f.label :name, (t('admin.name') + content_tag(:abbr, "*", :class => "required")).html_safe %> <% if user_signed_in? then %> @@ -36,7 +36,7 @@ <% end %> - <%= f.label :email, (t(".email") + content_tag(:abbr, "*", :class => "required")).html_safe %> + <%= f.label :email, (t('helpers.email') + content_tag(:abbr, "*", :class => "required")).html_safe %> <% if user_signed_in? then %> @@ -52,7 +52,7 @@ <% if ContactUs.require_subject %> - <%= f.label :subject, (t(".subject") + content_tag(:abbr, "*", :class => "required")).html_safe %> + <%= f.label :subject, (t('helpers.subject') + content_tag(:abbr, "*", :class => "required")).html_safe %> <%= f.text_field :subject %> @@ -64,7 +64,7 @@ <% end %> - <%= f.label :message, (t(".message") + content_tag(:abbr, "*", :class => "required")).html_safe %> + <%= f.label :message, (t('helpers.message') + content_tag(:abbr, "*", :class => "required")).html_safe %> <%= f.text_area :message, :rows => 10, :style => "width:95%;"%> diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb index fb692c8..7dc9e68 100644 --- a/app/views/devise/registrations/edit.html.erb +++ b/app/views/devise/registrations/edit.html.erb @@ -58,6 +58,16 @@ :autocomplete => "off" , :class => "text_field has-tooltip", "data-toggle" => "tooltip", "data-html" => "true", "title" => t("helpers.orcid_html") %> + <% unless @user.api_token.nil? %> + + <%= t("helpers.api_token") %> + <%= @user.api_token %> + + + <%= t("helpers.api_info") %> + <%= link_to( t("helpers.api_use"), controller: "token_permission_types", action: "index")%> + + <% end %>

diff --git a/app/views/dmptemplates/_edit_question.html.erb b/app/views/dmptemplates/_edit_question.html.erb index c02d104..3233d80 100644 --- a/app/views/dmptemplates/_edit_question.html.erb +++ b/app/views/dmptemplates/_edit_question.html.erb @@ -1,8 +1,8 @@ - @@ -13,11 +13,10 @@ <%= t("org_admin.questions.question_number_label")%> <%= f.number_field :number, :in => 1..50, :class => "number_field has-tooltip", "data-toggle" => "tooltip", "title" => t("org_admin.questions.number_help_text") %> -

- + <%= t("org_admin.questions.question_text_label")%> @@ -25,7 +24,7 @@
- + <%= t("org_admin.questions.answer_format_label")%> @@ -39,9 +38,9 @@
<%= link_to( image_tag("help_button.png"), "#", :class => "question_format_popover", :rel => "popover", "data-html" => "true", "data-content" => t("org_admin.questions.question_format_help_text_html"))%>
- - - + + + -
+
-
+
-
+
-
+
- + - + <%= t("org_admin.questions.suggested_or_example_answer_label")%>
<% suggested_answer = question.suggested_answers.find_by_organisation_id(current_user.organisation.id) %> - <% if question.suggested_answers == [] then %> + <% if suggested_answer.nil? then %> <% suggested_answer = question.suggested_answers.build %> <%end%> <%= f.fields_for :suggested_answers, suggested_answer do |s|%> @@ -129,11 +127,10 @@
<%= link_to( image_tag("help_button.png"), "#", :class => "suggested_answer_popover", :rel => "popover", "data-html" => "true", "data-content" => t("org_admin.questions.suggested_answer_help_text_html"))%>
-
+
- <%= t("org_admin.questions.guidance_label")%> @@ -143,12 +140,10 @@
<%= link_to( image_tag("help_button.png"), "#", :class => "question_guidance_popover", :rel => "popover", "data-html" => "true", "data-content" => t("org_admin.questions.question_guidance_help_text_html"))%>
-
+
- - <%= t("org_admin.questions.themes_label")%> @@ -160,12 +155,10 @@
<%= link_to( image_tag("help_button.png"), "#", :class => "question_themes_popover", :rel => "popover", "data-html" => "true", "data-content" => t("org_admin.questions.question_themes_help_text_html"))%>
- - +
-
<%= f.submit t("helpers.submit.save"), :class => "btn btn-primary" %> @@ -182,4 +175,3 @@ <%= render :partial => "guidance_display", locals: {question: question}%> <%end%> - diff --git a/app/views/guidance_groups/admin_edit.html.erb b/app/views/guidance_groups/admin_edit.html.erb index 609365b..88303f2 100644 --- a/app/views/guidance_groups/admin_edit.html.erb +++ b/app/views/guidance_groups/admin_edit.html.erb @@ -2,92 +2,96 @@ <% javascript 'admin.js' %>

- <%= t('org_admin.guidance.guidance_group_label') %> - -
- <%= link_to t("org_admin.guidance.view_all_guidance"), - admin_index_guidance_path, - :class => 'btn btn-primary' %> -
+ <%= t('org_admin.guidance.guidance_group_label') %> + +
+ <%= link_to t("org_admin.guidance.view_all_guidance"), + admin_index_guidance_path, + :class => 'btn btn-primary' %> +

- -
- <%= form_for(@guidance_group, :url => admin_update_guidance_group_path(@guidance_group), :html => { :method => :put}) do |f| %> - - - - - - - - - - - - <% if @guidance_group.published == true then%> - - - - - <%end%> - - - - - - -
<%= t('org_admin.guidance_group.name_label') %>
- <%= f.text_field :name, - :as => :string, - :class => 'text_field'%> + +
+ <%= form_for(@guidance_group, :url => admin_update_guidance_group_path(@guidance_group), :html => {:method => :put}) do |f| %> -
-
- <%= link_to( image_tag('help_button.png'), '#', :class => 'guidance_group_title_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.guidance_group.title_help_text_html'))%> -
-
<%= t('org_admin.guidance.template') %>
- <% if @guidance_group.dmptemplate_ids == [] then %> - <% default_select = "" %> - <%else%> - <% default_select = @guidance_group.dmptemplate_ids %> - <%end%> - <%= f.select :dmptemplate_ids, options_for_select( - [['All templates', ""]].concat( Dmptemplate.funders_and_own_templates(current_user.organisation_id).collect{ |g| [g.title, g.id] }), :selected => default_select ),{} , - {:prompt => false , :multiple => true}%> -
-
- <%= link_to( image_tag('help_button.png'), '#', :class => 'guidance_group_template_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.guidance_group.template_help_text_html'))%> -
- -
<%= t('org_admin.guidance_group.published') %>
- <%= f.check_box :published %> -
-
- -
-
<%= t('org_admin.guidance_group.subset') %>
- <%= f.check_box :optional_subset %> <%= t('org_admin.guidance_group.subset_eg') %> -
-
- <%= link_to( image_tag('help_button.png'), '#', :class => 'guidance_group_subset_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.guidance_group.subset_option_help_text'))%> -
-
- - - -
- <%= f.submit t('helpers.submit.save'), :class => 'btn btn-primary' %> - <% if @guidance_group.published == false then%> - <%= f.submit t("helpers.submit.save_publish"), :name => "save_publish", :class => "btn btn-primary" %> - <%end%> - <%= link_to t('helpers.submit.cancel'), :back, :class => 'btn cancel' %> -
- -
- <%end%> -
+ + + + + + + + + + + <% if @guidance_group.published == true then %> + + + + + <% end %> + + + + + + +
<%= t('org_admin.guidance_group.name_label') %> +
+ <%= f.text_field :name, + :as => :string, + :class => 'text_field' %> + +
+
+ <%= link_to(image_tag('help_button.png'), '#', :class => 'guidance_group_title_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.guidance_group.title_help_text_html')) %> +
+
<%= t('org_admin.guidance.template') %> +
+ <% if @guidance_group.dmptemplate_ids == [] then %> + <% default_select = "" %> + <% else %> + <% default_select = @guidance_group.dmptemplate_ids %> + <% end %> + <%= f.select :dmptemplate_ids, options_for_select( + [['All templates', ""]].concat(Dmptemplate.funders_and_own_templates(current_user.organisation_id).collect { |g| [g.title, g.id] }), :selected => default_select), {}, + {:prompt => false, :multiple => true} %> +
+
+ <%= link_to(image_tag('help_button.png'), '#', :class => 'guidance_group_template_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.guidance_group.template_help_text_html')) %> +
+ +
<%= t('org_admin.templates.published_label') %> +
+ <%= f.check_box :published %> +
+
+ +
+
<%= t('org_admin.guidance_group.subset') %> +
+ <%= f.check_box :optional_subset %> <%= t('org_admin.guidance_group.subset_eg') %> +
+
+ <%= link_to(image_tag('help_button.png'), '#', :class => 'guidance_group_subset_popover', :rel => "popover", 'data-html' => "true", 'data-content' => t('org_admin.guidance_group.subset_option_help_text')) %> +
+
+ + + +
+ <%= f.submit t('helpers.submit.save'), :class => 'btn btn-primary' %> + <% if @guidance_group.published == false then %> + <%= f.submit t('helpers.submit.publish'), :name => "save_publish", :class => "btn btn-primary" %> + <% end %> + <%= link_to t('helpers.submit.cancel'), :back, :class => 'btn cancel' %> +
+ +
+ <% end %> +
diff --git a/app/views/guidance_groups/admin_new.html.erb b/app/views/guidance_groups/admin_new.html.erb index 5317891..b36abf9 100644 --- a/app/views/guidance_groups/admin_new.html.erb +++ b/app/views/guidance_groups/admin_new.html.erb @@ -20,7 +20,7 @@ - + (\s|)/,"") %> - <%end%> + <%end%> <%end%> <%else%> <% if !answer.text.nil? then %> <%= raw answer.text.gsub(/(\s|)/,"") %> - <%end%> + <%end%> <% end %> - - - <% end %> - - <% end %> - <% end %> - - + <% end %> + + <% end %> + <% end %> + + \ No newline at end of file diff --git a/app/views/settings/plans/show.html.erb b/app/views/settings/plans/show.html.erb index 44d93a3..eff1e76 100644 --- a/app/views/settings/plans/show.html.erb +++ b/app/views/settings/plans/show.html.erb @@ -1,4 +1,6 @@ -

Settings - <%= @plan.project.title -%>

-

<%= t("helpers.settings.plans.desc") -%>

+ + +

<%= t('helpers.settings.plans.title') -%> - <%= @plan.project.title -%>

+

<%= t('helpers.settings.plans.description') -%>

<%= render "export_formatting_form" %> diff --git a/app/views/token_permission_types/index.html.erb b/app/views/token_permission_types/index.html.erb new file mode 100644 index 0000000..7832b4e --- /dev/null +++ b/app/views/token_permission_types/index.html.erb @@ -0,0 +1,14 @@ + +<% @user.organisation.token_permission_types.each do |token_type|%> +

+ <%= token_type.token_type %> +

+
+ +
+ + <%= token_type.text_desription %> + +
+ +<% end %> \ No newline at end of file diff --git a/app/views/user_mailer/api_token_granted_notification.html.erb b/app/views/user_mailer/api_token_granted_notification.html.erb new file mode 100644 index 0000000..817a6ff --- /dev/null +++ b/app/views/user_mailer/api_token_granted_notification.html.erb @@ -0,0 +1,6 @@ +

<% t('custom_devise.hello') %><%= @user.name %>

+ + +

+<% t('helpers.api_granted') %>"<%= link_to t('helpers.api_view_token'), controller: "users", action: "edit") %>". +

diff --git a/app/views/users/admin_index.html.erb b/app/views/users/admin_index.html.erb new file mode 100644 index 0000000..33a717e --- /dev/null +++ b/app/views/users/admin_index.html.erb @@ -0,0 +1,57 @@ +<%= stylesheet_link_tag "admin" %> + +

+ <%= t('org_admin.users_list') %> +

+ +<%= raw t('org_admin.user_text_html')%> +<% @user_roles = current_user.organisation.user_org_roles %> +<% @user_roles = @user_roles.uniq_by {|u| u.user_id } %> +
<%= t("org_admin.guidance.name_label") %><%= t('org_admin.guidance_group.name_label') %>
<%= f.text_field :name, :as => :string, @@ -62,7 +62,7 @@
<%= f.submit t("helpers.submit.save"), :name => "draft", :class => "btn btn-primary" %> - <%= f.submit t("helpers.submit.save_publish"), :name => "save_publish", :class => "btn btn-primary" %> + <%= f.submit t('helpers.submit.publish'), :name => "save_publish", :class => "btn btn-primary" %> <%= link_to t("helpers.submit.cancel"), :back, :class => "btn cancel" %>
diff --git a/app/views/guidance_groups/admin_show.html.erb b/app/views/guidance_groups/admin_show.html.erb index 670fb34..fe641ab 100644 --- a/app/views/guidance_groups/admin_show.html.erb +++ b/app/views/guidance_groups/admin_show.html.erb @@ -1,89 +1,92 @@ <%= stylesheet_link_tag "admin" %>

- <%= t("org_admin.guidance.guidance_group_label") %> + <%= t("org_admin.guidance.guidance_group_label") %> - -
- <%= link_to t("org_admin.guidance.view_all_guidance"), - admin_index_guidance_path, - :class => "btn btn-primary" %> -
+ +
+ <%= link_to t("org_admin.guidance.view_all_guidance"), + admin_index_guidance_path, + :class => "btn btn-primary" %> +

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<%= t("org_admin.guidance_group.name_label") %><%= raw @guidance_group.name %>
- <% if @guidance_group.dmptemplates.count == 1 then %> - <%= t("org_admin.guidance.template") %> - <%else%> - <%= t("org_admin.guidance.templates") %> - <%end%> - <% i = 1 %> - <% if @guidance_group.dmptemplates.count == 0 then %> - <% list = Dmptemplate.funders_and_own_templates(current_user.organisation_id)%> - <% list.each do |tem|%> - <%= tem.title %> - <% if list.count > i then%> - , - <% i +=1 %> - <% end %> - <%end%> - <%else%> - <% @guidance_group.dmptemplates.each do |tem|%> - <%= tem.title %> - <% if @guidance_group.dmptemplates.count > i then%> - , - <% i +=1 %> - <% end %> - <%end%> - <%end%> -
<%= t("org_admin.guidance_group.published") %><%if @guidance_group.published.nil? || @guidance_group.published == false then%> - <%= t("helpers.no_label")%> - <%else%> - <%= t("helpers.yes_label")%> - <%end%> -
<%= t("org_admin.guidance_group.subset") %><%if @guidance_group.optional_subset.nil? || @guidance_group.optional_subset == false then%> - <%= t('helpers.no_label')%> - <%else%> - <%= t('helpers.yes_label')%> - <%end%> -
<%= t("org_admin.guidance.created") %><%= l @guidance_group.created_at.to_date, :formats => :short %>
<%= t("org_admin.guidance.last_updated") %><%= l @guidance_group.updated_at.to_date, :formats => :short %>
-
- <%= link_to t("helpers.submit.edit"), admin_edit_guidance_group_path(@guidance_group.id), :class => "btn btn-primary"%> - <%= link_to t("helpers.submit.back"), :back, :class => "btn cancel" %> -
-
-
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
<%= t("org_admin.guidance_group.name_label") %><%= raw @guidance_group.name %>
+ <% if @guidance_group.dmptemplates.count == 1 then %> + <%= t("org_admin.guidance.template") %> + <% else %> + <%= t("org_admin.guidance.templates") %> + <% end %> + + <% i = 1 %> + <% if @guidance_group.dmptemplates.count == 0 then %> + <% list = Dmptemplate.funders_and_own_templates(current_user.organisation_id) %> + <% list.each do |tem| %> + <%= tem.title %> + <% if list.count > i then %> + , + <% i +=1 %> + <% end %> + <% end %> + <% else %> + <% @guidance_group.dmptemplates.each do |tem| %> + <%= tem.title %> + <% if @guidance_group.dmptemplates.count > i then %> + , + <% i +=1 %> + <% end %> + <% end %> + <% end %> +
<%= t('org_admin.templates.published_label') %> + <% if @guidance_group.published.nil? || @guidance_group.published == false then %> + <%= t("helpers.no_label") %> + <% else %> + <%= t("helpers.yes_label") %> + <% end %> +
<%= t("org_admin.guidance_group.subset") %> + <% if @guidance_group.optional_subset.nil? || @guidance_group.optional_subset == false then %> + <%= t('helpers.no_label') %> + <% else %> + <%= t('helpers.yes_label') %> + <% end %> +
<%= t("org_admin.guidance.created") %><%= l @guidance_group.created_at.to_date, :formats => :short %>
<%= t("org_admin.guidance.last_updated") %><%= l @guidance_group.updated_at.to_date, :formats => :short %>
+
+ <%= link_to t("helpers.submit.edit"), admin_edit_guidance_group_path(@guidance_group.id), :class => "btn btn-primary" %> + <%= link_to t("helpers.submit.back"), :back, :class => "btn cancel" %> +
+
+
\ No newline at end of file diff --git a/app/views/guidances/admin_edit.html.erb b/app/views/guidances/admin_edit.html.erb index 0a98ac4..d7aa32d 100644 --- a/app/views/guidances/admin_edit.html.erb +++ b/app/views/guidances/admin_edit.html.erb @@ -71,25 +71,25 @@ <% phase_id = @guidance.question.section.version.phase_id %> <% version_id = @guidance.question.section.version_id %> <% section_id = @guidance.question.section_id %> - <%= collection_select(:phase, :dmptemplate_id, Dmptemplate.find(:all, :order => 'title ASC'), :id, :title, {:prompt => "Select a template", :selected => dmp_template_id}, {:id => 'templates_select'}) %> + <%= collection_select(:phase, :dmptemplate_id, Dmptemplate.find(:all, :order => 'title ASC'), :id, :title, {:prompt => I18n.t('helpers.select_template'), :selected => dmp_template_id}, {:id => 'templates_select'}) %>
- <%= collection_select(:version, :phase_id, Phase.where("dmptemplate_id = ?", dmp_template_id).order('title ASC'), :id, :title, {:prompt => "Select a phase", :selected => phase_id}, {:id => 'phases_select'}) %> + <%= collection_select(:version, :phase_id, Phase.where("dmptemplate_id = ?", dmp_template_id).order('title ASC'), :id, :title, {:prompt => I18n.t('helpers.select_phase'), :selected => phase_id}, {:id => 'phases_select'}) %>
- <%= collection_select(:section, :version_id, Version.where("phase_id = ?", phase_id).order('title ASC'), :id, :title, {:prompt => "Select a version" , :selected => version_id}, {:id => 'versions_select'}) %> + <%= collection_select(:section, :version_id, Version.where("phase_id = ?", phase_id).order('title ASC'), :id, :title, {:prompt => I18n.t('helpers.select_version'), :selected => version_id}, {:id => 'versions_select'}) %>
- <%= collection_select(:question, :section_id, Section.where("version_id = ?", version_id).order('title ASC'), :id, :title, {:prompt => "Select a section", :selected => section_id }, {:id => 'sections_select'}) %> + <%= collection_select(:question, :section_id, Section.where("version_id = ?", version_id).order('title ASC'), :id, :title, {:prompt => I18n.t('helpers.select_section'), :selected => section_id }, {:id => 'sections_select'}) %>
- <%= collection_select(:guidance, :question_id, Question.where("section_id = ?", section_id).order('text ASC'), :id, :text, {:prompt => "Select a question"}, {:id => 'questions_select'}) %> + <%= collection_select(:guidance, :question_id, Question.where("section_id = ?", section_id).order('text ASC'), :id, :text, {:prompt => I18n.t('helpers.select_question')}, {:id => 'questions_select'}) %> <%else%> - <%= collection_select(nil, :dmptemplate_id, @dmptemplates, :id, :title, {:prompt => "Select a template"}, {:id => 'templates_select'}) %> + <%= collection_select(nil, :dmptemplate_id, @dmptemplates, :id, :title, {:prompt => I18n.t('helpers.select_template')}, {:id => 'templates_select'}) %>
- <%= collection_select(nil, :phase_id, @phases, :id, :title, {:prompt => "Select a phase"}, {:id => 'phases_select'}) %> + <%= collection_select(nil, :phase_id, @phases, :id, :title, {:prompt => I18n.t('helpers.select_phase')}, {:id => 'phases_select'}) %>
- <%= collection_select(nil, :version_id, @versions, :id, :title, {:prompt => "Select a version"}, {:id => 'versions_select'}) %> + <%= collection_select(nil, :version_id, @versions, :id, :title, {:prompt => I18n.t('helpers.select_version')}, {:id => 'versions_select'}) %>
- <%= collection_select(nil, :section_id, @sections, :id, :title, {:prompt => "Select a section"}, {:id => 'sections_select'}) %> + <%= collection_select(nil, :section_id, @sections, :id, :title, {:prompt => I18n.t('helpers.select_section')}, {:id => 'sections_select'}) %>
- <%= collection_select(nil, :question_id, @questions, :id, :text, {:prompt => "Select a question"}, {:id => 'questions_select'}) %> + <%= collection_select(nil, :question_id, @questions, :id, :text, {:prompt => I18n.t('helpers.select_question')}, {:id => 'questions_select'}) %> <%end%>
diff --git a/app/views/guidances/admin_new.html.erb b/app/views/guidances/admin_new.html.erb index 8629641..9dbcb99 100644 --- a/app/views/guidances/admin_new.html.erb +++ b/app/views/guidances/admin_new.html.erb @@ -53,15 +53,15 @@
|<\/td>| )*(<\/tr>|
|<\/td>| )*(<\/tr>|
+ + + + + + + <% if current_user.organisation.token_permission_types.count > 0 %> + + <% end %> + + + + + <%= form_tag( admin_api_update_users_path, method: :put) do %> + <% @user_roles.each do |user_id| %> + <% if !user_id.user.nil? then%> + + + + + + <% if current_user.organisation.token_permission_types.count > 0 %> + + <% end %> + + <% end %> + <% end %> + + <%= submit_tag "Update API Privleges" %> + <% end %> +
<%= t('org_admin.user_full_name') %><%= t('org_admin.user_name') %><%= t('org_admin.last_logged_in') %><%= t('org_admin.how_many_plans') %><%= t('org_admin.api_privleges') %>
+ <% if !user_id.user.name.nil? then%> + <%= user_id.user.name %> + <% end %> + + <%= user_id.user.email %> + + <% if !user_id.user.last_sign_in_at.nil? then%> + <%= l user_id.user.last_sign_in_at.to_date, :formats => :short %> + <% end %> + + <% if !user_id.user.project_groups.nil? then%> + <%= user_id.user.project_groups.count %> + <% end %> + + <%= check_box_tag "user_ids[]", user_id.user.id, user_id.user.api_token !="" %> +
\ No newline at end of file diff --git a/config/application.rb b/config/application.rb index 4c07de0..0b6197c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -85,7 +85,8 @@ :exe_path => '/usr/local/bin/wkhtmltopdf' } - # TODO: Remove this when we migrate to Rails 4.1+ + # read secret_key_base from secrets.yml + # TODO Remove this in Rails 4.1 config.secret_key_base = YAML.load(File.open("#{Rails.root}/config/secrets.yml"))[Rails.env]['secret_key_base'] end end diff --git a/config/environment/development.rb b/config/environment/development.rb index f594bf2..3a37dff 100644 --- a/config/environment/development.rb +++ b/config/environment/development.rb @@ -7,18 +7,27 @@ config.cache_classes = false # Do not eager load code on boot. - config.eager_load = false + config.eager_load = true - # Show full error reports and disable caching. + # Log error messages when you accidentally call methods on nil. + config.whiny_nils = true + + # Show full error reports and disable caching config.consider_all_requests_local = true config.action_controller.perform_caching = false - # Don't care if the mailer can't send. + # Don't care if the mailer can't send config.action_mailer.raise_delivery_errors = false - # Print deprecation notices to the Rails logger. + # Print deprecation notices to the Rails logger config.active_support.deprecation = :log + # Only use best-standards-support built into browsers + config.action_dispatch.best_standards_support = :builtin + + # Raise exception on mass assignment protection for Active Record models + config.active_record.mass_assignment_sanitizer = :strict + # Raise an error on page load if there are pending migrations. config.active_record.migration_error = :page_load @@ -27,6 +36,8 @@ # number of complex assets. config.assets.debug = true + config.assets.compress = false + # Asset digests allow you to set far-future HTTP expiration dates on all assets, # yet still be able to expire them through the digest params. config.assets.digest = true @@ -40,4 +51,9 @@ # config.action_view.raise_on_missing_translations = true # config.action_mailer.perform_deliveries = false + + config.web_console.whitelisted_ips = '192.168.33.1' end + +BetterErrors::Midleware.allow_ip! "10.0.2.2" if defined?(BetterErrors) && Rails.env == :development + diff --git a/config/initializers/locale.rb b/config/initializers/locale.rb index 4aaaa49..0cf1456 100644 --- a/config/initializers/locale.rb +++ b/config/initializers/locale.rb @@ -7,12 +7,12 @@ config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # set default locale # in config/initializers/locale.rb - - # set default locale to something other than :en - config.i18n.default_locale = :en - - # set fallback locale - config.i18n.fallbacks = true - + + # set default locale to something other than :en + config.i18n.default_locale = :'en-UK' + + # set fallback locale + config.i18n.fallbacks = true + end end diff --git a/config/locales/de.bootstrap.yml b/config/locales/de.bootstrap.yml new file mode 100644 index 0000000..c176c40 --- /dev/null +++ b/config/locales/de.bootstrap.yml @@ -0,0 +1,18 @@ +# Sample localization file for English. Add more files in this directory for other locales. +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +de: + helpers: + actions: "Aktionen" + links: + back: "Zurück" + cancel: "Abbrechen" + confirm: "Sind Sie sicher?" + destroy: "Löschen" + new: "Neu" + edit: "Bearbeiten" + titles: + edit: "Bearbeiten" + save: "Speichern" + new: "Neu" + delete: "Löschen" diff --git a/config/locales/de.yml b/config/locales/de.yml new file mode 100644 index 0000000..a58f1fe --- /dev/null +++ b/config/locales/de.yml @@ -0,0 +1,801 @@ +de: + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d-%m-%Y" + short: "%d/%m/%Y" + custom: "%d/%m/%Y %H:%M" + long: "%d %B, %Y" + + day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] + abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] + abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez] + # Used in date_select and datetime_select. + order: + - day + - month + - year + + time: + formats: + default: "%a, %d %b %Y %H:%M:%S %z" + short: "%d %b %H:%M" + long: "%B %d, %Y %H:%M" + custom: "%d/%m/%Y %H:%M" + am: "am" + pm: "pm" + + tool_title: "DMPonline" + dmponline3_text: "DMPonline vorherige Version" + dcc_name: "Digital Curation Centre" + welcome_title: "Willkommen." + welcome_text: "

DMPonline wurde vom Digital Curation Centre entwickelt, um Sie bei der Erstellung von Data-Managment-Plänen zu unterstützen.

" + welcome_links: "

" + ccid_message: "" + + + admin: + org_title: "Name der Organisation" + org: "Organisation" + orgs: "Organisationen" + org_type: "Art der Organisation" + org_parent: "Übergeordnete Organisation" + org_created_message: "Organisation wurde erfolgreich angelegt." + org_updated_message: "Organisation wurde erfolgreich aktualisiert." + plans: "Pläne" + title: "Titel" + desc: "Beschreibung" + guidance_group: "Hilfestellungsgruppe" + no_guidance_group: "Keine Hilfestellungsgruppe" + guidance: "Hilfestellung" + name: "Name" + abbrev: "Abkürzung" + question: "Frage" + question_format: "Fragenformat" + questions: "Fragen" + template_title: "Vorlagentitel" + section_title: "Abschnittstitel" + phase_title: "Phasentitel" + version_title: "Versionstitel" + user_name: "Nutzername" + firstname: "Vorname" + surname: "Nachname" + user: "Nutzer" + user_org_role: "Rolle des Nutzers in der Organisation" + user_role_type: "Art der Rolle" + user_role: "Nutzerrolle" + role: "Rolle" + user_status: "Nutzerstatus" + user_type: "Nutzerart" + last_logged_in: "Zuletzt angemeldet" + version_numb: "Versionsnummer" + details: "Details" + phases: "Phasen" + phase: "Phase" + version: "Version" + versions: "Versionen" + sections: "Abschnitte" + section: "Abschnitt" + multi_options: "Mehrfachfragen-Optionen" + templates: "Vorlagen" + template: "Vorlage" + themes: "Themen" + theme: "Thema" + sug_answer: "Antwortvorschlag" + sug_answers: "Antwortvorschläge" + old_temp_field: "altes Vorlagenfeld" + old_theme_field: "altes Themenfeld" + + + org_admin: + admin_area: "Administativer Bereich" + template_label: "Vorlagen" + user_list_label: "Nutzer" + org_details_label: "Organisations-Details" + org_text: "Grundlegende Informationen über ihre Organisation." + org_abbr_help_text_html: "Dies wird als Bezeichnung an Ihrer Anleitung angezeigt, z.B. 'Kieler Hilfestellung für Metadaten'. Am besten eine Abkürzung oder ein Namenskürzel." + users_list: "Liste der Nutzer" + user_full_name: "Name" + user_name: "E-Mail-Adresse" + last_logged_in: "Zuletzt angemeldet" + how_many_plans: "Wie viele Pläne?" + user_text_html: "Folgend findet sich die Liste von Benutzern registriert bzgl. Ihrer Organisation. Sie können diese Liste bzgl. aller Felder sortieren." + org_name: "Name" + org_abbr: "Abkürzung" + org_desc: "Beschreibung" + org_target_url: "Web-Seite" + org_type: "Organisationsart" + parent_org: "Übergeordnete Organisation" + last_updated: "Zuletzt aktualisiert" + desc_help_text_html: "
Bitte beschreibenden Sie Ihre Organisation.
" + abbre_help_text: "Bitte geben Sie eine Abkürzung für Ihre Organisation an." + template_desc_help_text_html: "
Geben Sie eine Beschreibung ein, die Ihnen bei der Unterscheidung von Vorlagen hilft, falls Sie z.B. welche für unterschiedliche Zielgruppen besitzen.
" + target_url_help_text: "Bitte prüfen Sie die Korrektheit ihrer Web-Adresse." + name_help_text: "Bitte geben Sie den Namen Ihrer Organisation an." + guidance_label: "Hilfestellungen" + templates_label: "Vorlagen" + add_option_label: "Option hinzufügen" + add_question_label: "Frage hinzufügen" + add_section_label: "Abschnitt hinzufügen" + remove_option_label: "Entfernen" + option_order_label: "Reihenfolge" + option_text_label: "Text" + option_default_label: "Vorgabe" + guidance: + guidance_list: "Liste der Hilfestellungen" + text_label: "Text" + themes_label: "Themen" + question_label: "Frage" + by_theme_or_by_question: "Soll diese Hilfestellung angewendet werden auf:" + by_themes_label: "Themen" + by_question_label: "Fragen" + template: "Vorlage" + templates: "Vorlagen" + guidance_group_label: "Hilfestellungsgruppe" + created: "Erstellt" + last_updated: "Zuletzt aktualisiert" + actions: "Aktionen" + add_guidance: "Hilfestellung hinzufügen" + created_message: "Hilfestellung erfolgreich angelegt." + updated_message: "Hilfestellung erfolgreich aktualisiert." + help_text_html: "
Bitte geben Sie eine Hilfestellungstext für dieses Thema ein.
" + new_label: "Neue Hilfestellung" + view_all_guidance: "Alle Hilfestellungen ansehen" + text_help_text_html: "Hilfestellung hier eingeben; Verweise auf andere Web-Seiten können integriert werden." + apply_to_help_text_html: "Entscheiden Sie, ob Ihre Hilfestellung an Themen orientiert dargestellt werden soll (Voreinstellung), oder ob sie eine bestimmte Frage in einer Vorlage betrifft." + by_themes_help_text_html: "Wählen Sie die Themen aus, für die diese Hilfestellung relevant ist." + by_question_help_text_html: "Wählen Sie die Vorlage, die Phase, die Version, den Abschnitt und die Frage aus den folgenden Auswahllisten aus, um die Frage zu bestimmen, für die diese Hilfestellung angezeigt werden soll." + guidance_group_select_help_text_html: "Wählen Sie die Gruppe aus, für die diese Hilfestellung relevant ist." + guidance_text_html: "

Sie können eine Hilfestellungtexte erstellen, die im Zusammenhang mit bestimmten Themen angezeigt werden, oder die sich auf eine spezifische Frage beziehen. Generische Hilfestellungen für Themen helfen Zeit und Arbeit zu sparen, da Ihre Hilfestellungen automatisch für alle Vorlagen angezeigt werden; sie müssen andernfalls für jede Vorlage neu erstellt werden.

+

Im Normalfall werden Sie wollen, dass Ihre Orinetierungshilfen in allen Vorlagen angezeigt wird. Ausnahmen sind z.B. Hilfestellungen die spezielle Hinweise für einen Förderer geben.

" + delete_message: "Sie sind dabei '%{guidance_summary}' zu löschen. Sind Sie sicher?" + guidance_group: + add_guidance_group: "Gruppe für Hilfestellungen hinzufügen" + guidance_group_list: "Liste der Gruppen für Hilfestellungen" + name_label: "Name" + subset: "Optionale Untergruppe" + subset_eg: "z.B. Fakultät / Einrichtung" + all_temp: "Alle Vorlagen" + help_text_add: "Bitte geben Sie einen Titel für die Gruppe an." + subset_option_help_text: "Falls die Hilfestellung nur für eine bestimmte Nutzergruppe, wie z.B. eine bestimmte Fakultät oder ein Institut, bestimmt ist, wählen Sie diese Option aus. Die Nutzer können die Anzeige von Hilfestellungen dieser Untergruppe im 'Plan erstellen'-Assistenten auswählen." + template_help_text_html: "Wählen Sie aus, in Vorlagen der Hilfetext angezeigt werden soll. Normalerweise werden dies alle Vorlagen sein." + title_help_text_html: "Geben Sie einen geeigneten Namen für Ihre Hilfestellungsgruppe ein, wie z.B. 'CAU Hilfestellungen'. Dieser Name soll den Nutzern vermitteln, woher die Hilfestellung kommt, z.B. 'CAU Hilfestellung zu Metadaten'" + guidance_group_text_html: "

Erstelle zuerst eine Hilfestellungsgruppe. Diese könnte institutionsweit oder eine Untermenge von z.B. einer bestimmten Universität / Schule, eines Instituts oder einer Abteilung sein. Wenn Sie Hilfestellung erstellen, werden sie aufgefordert sie einer Hilfestellungsgruppe zuzuordnen.

" + delete_message: "Sie sind dabei '%{guidance_group_name}' zu löschen. Das wird Auswirkungen auf die Hilfestellungen haben. Sind Sie sicher?" + created_message: "Hilfestellungsgruppe erfolgreich erzeugt." + updated_message: "Hilfestellungsgruppe erfolgreich aktualisiert." + destroyed_message: "Hilfestellungsgruppe erfolgreich gelöscht." + templates: + create_template: "Vorlage erstellen" + new_label: "Neue Vorlage" + template_details: "Details der Vorlage" + edit_details: "Details der Vorlage bearbeiten" + view_all_templates: "Alle Vorlagen ansehen" + funders_temp: "Vorlagen der Geldgeber" + title_help_text: "Bitte geben sie einen Titel für Ihre Vorlage an." + section_title_help_text: "Bitte geben sie eine Überschrift für den Abschnitt an." + help_text_html: "
Bitte geben sie eine Beschreibung der Vorlage für dieses Thema an.
" + create_own_template_text_html: "

Falls Sie eine Vorlage für eine Institution anlegen möchten, können Sie den Knopf 'Vorlage erstellen' nutzen. + Sie können verschiedene Vorlagen erstellen um auf Spezialisierungen einzugehen, z.B. für Forscher und für Doktoranden.

" + create_new_template_text_html: "

Um eine Vorlage anzulegen beginnen sie mit einem Titel und einer Beschreibung. Nach dem Speichern haben Sie die Option zum Anlegen von ein oder mehreren Phasen.

" + desc_help_text_html: "Geben Sie eine Beschreibung, die hilft, zwischen den verschiedenen Vorlagen zu unterscheiden, z.B. für verschiedene Zielgruppen" + own_temp: "Eigene Vorlagen" + add_phase_label: "Neue Phase hinzufügen" + view_phase_label: "Phase ansehen" + edit_phase_label: "Phase bearbeiten" + back_to_edit_phase_label: "Zurück, um die Ansicht zu bearbeiten" + edit_phase_details_label: "Details der Phase bearbeiten" + phase_details_label: "Details der Phase" + phase_order_label: "Reihenfolge" + phase_details_text_html: "

Dieser Titel wird den Nutzern angezeigt. Falls Sie mehrere Phasen für einen DMP haben wollen, sollte dies aus dem Titel und der Beschreibung hervorgehen.

" + phase_title_help_text: "Geben Sie einen Titel für die Phase an, z.B. Initialer DMP oder Kompletter DMP. Die Titel werden den Benutzern in den Reitern angezeigt, während sie einen Plan erstellen. Falls Sie nur eine Phase bereitstellen, geben Sie ihm einen allgemeinen Titel wie z.B. 'CAU DMP'" + phase_number_help_text: "Hier können sie die Abfolge der Phasen in Ihrer Vorlage bestimmen." + phase_desc_help_text_html: "Geben Sie eine kurze Beschreibung an. Diese wird den Nutzern oberhalb der Zusammenfassung der Abschnitte und der Fragen, die sie beantowrten müssen, angezeigt." + phase_delete_message: "Sie sind dabei '%{phase_title}' zu löschen. Das wird Auswirkungen auf die Versionen, Abschnitte und Fragen haben, die mit dieser Phase verknüpft sind. Sind Sie sicher?" + phase_new_text_html: "Wenn Sie eine neue Phase in einer Vorlage anlegen, wird automatische eine Version erzeugt. Nachdem Sie das folgende Formular ausgefüllt haben, werden Ihnen Optionen zum erstellen von Abschnitten und Fragen angezeigt." + versions_label: "Versionen" + version_details_label: "Details der Version" + add_section: "Abschnitt hinzufügen" + new_section: "Neuer Abschnitt" + section_title_placeholder: "Neue Abschnittsüberschrift" + section_desc_help_text_html: "
Geben Sie eine kurze Beschreibung an. Diese sollte zusammenfassen, was von diesem Abschnitt abgedeckt wird, oder Hinweise zur Beantwortung der Fragen geben. Dieser Text wird ein einem farbigen Banner angezeigt, sobald ein Abschnitt zur Bearbeitung geöffnet wird." + section_number_help_text: "Hier können Sie die Reihenfolge der Abschnitte bestimmen." + add_question: "Frage hinzufügen" + created: "Angelegt am" + last_updated: "Zuletzt aktualisiert" + published_label: "Veröffentlicht" + cannot_publish: "Bitte erstellen Sie mindestens eine Phase mit einer einer veröffentlichten Version." + title_label: "Titel" + desc_label: "Beschreibung" + actions: "Aktionen" + customise: "Anpassen" + edit_customisation: "Anpassungen bearbeiten" + created_message: "Information wurde erfolgreich angelegt." + updated_message: "Information wurde erfolgreich aktuallisiert" + destroyed_message: "Information wurde erfolgreiche entfernt." + section_delete_message: "Sie sind dabei '%{section_title}' zu entfernen. Das wird Auswirkungen auf die Fragen haben, die mit diesem Abschnitt verbunden sind. Sind Sie sicher?" + versions: + clone_versions_label: "Wesentliche Änderungen vornehmen" + edit_versions_label: "Kleine Änderungen vornehmen" + edit_label: "Berarbeiten" + versions_text_html: "Eine erste Version wird automatisch erzeugt. Falls Sie wesentliche Änderungen vornehmen möchten (z.B. einen neuen Abschnitt oder neue Fragen hinzuzufügen), erstellen Sie bitte eine neue Version. Falls Sie Rechtschreibfehler korrigieren oder kleine Änderungen vornehmen möchten, die keine Aussagen ändern oder hinzufügen, editieren Sie direkt die aktuelle Version." + desc_help_text_html: "Geben Sie eine kurze Beschreibung an." + delete_message: "Sie sind dabei '%{version_title}' zu löschen. Das wird Auswirkungen auf Abschnitte und Fragen haben, die mit dieser Version verbunden sind. Sind Sie sicher?" + edit_alert_label: "Bearbeitungswarnung" + edit_alert_text: "Bitte wägen Sie Ihre geplanten Änderungen sorgfältig ab, da dieser Plan bereits publiziert ist und in Benutzung sein könnte." + questions: + question_text_label: "Fragentext" + question_number_label: "Fragennummer" + question_edit_button: "Frage bearbeiten" + question_delete_button: "Frage löschen" + answer_format_label: "Antwortform" + example_answer_label: "Beispielantwort" + suggested_answer_label: "Antwortvorschlag" + suggested_answer_help_text_html: "Hier können Sie einen Text als Beispiel oder Vorschlag angeben, der Nutzern bei der Beantwortung helfen soll. Der Text erscheint oberhalb des Antwortfeldes und kann kopiert und eingefügt werden." + suggested_or_example_answer_label: "Antwortvorschlag / Beispiel" + suggested_or_example_answer_button: "Antwortvorschlag / Beispiel hinzufügen" + edit_suggested_answer_button: "Antwortvorschlag / Beispiel bearbeiten" + delete_suggested_answer_message: "Sie sind dabei den Antwortvorschlag / das Beispiel für '%{question_text}' zu löschen. Sind Sie sicher?" + default_value_label: "Wertvorgabe" + number_help_text: "Hier können sie die Reihenfolge der Fragen innerhalb eines Abschnittes bestimmen." + question_format_help_text_html: "Sie haben die Wahl zwischen: +
    +
  • - Textbereiche (große Box für Absätze);
  • +
  • - Textfelder (für kurze Antworten);
  • +
  • - Checkboxen, die Antwortoptionen in Listen präsentieren und eine Mehrfachauswahl ermöglichen
  • +
  • - Optionsfelder, die Antwortoptionen in Listen präsentieren, aus der eine ausgewählt wird
  • +
  • - Klapplisten, Eingabelisten wie diese - nur eine Option kann ausgewählt
  • +
  • - Mehrfachauswahllisten, die Antwortoptionen in einer scrollbaren Liste präsentieren und Merhfachauswahl durch klicken und gleichzeitiges Drücken der Kommando- bzw. Steuerungstaste erlauben
  • +
" + default_answer_help_text_html: "Alles, was Sie hier eingeben, wird im Antwortfeld erscheinen. Falls Sie eine Antwort in einem bestimmten Format haben möchten (z.B. als Tabelle) können Sie diesen Stil hier angeben." + themes_label: "Themen" + question_themes_help_text_html: "

Wählen Sie die für diese Frage relevanten Themen aus.

+

Dies erlaubt es, sowohl generischen Hilfestellungen auf Institutions-Ebene, als auch aus anderen Quellen, wie z.B. der DINI, oder jedweder Institute oder Einrichtungen, für die Sie Unterstützung anbieten, einzubeziehen.

+

Sie können mehrere Themen durch klicken und gleichzeitiges Drücken der Steuerungs- bzw. Kommando-Taste auswählen.

" + default_answer_label: "Vorauswahl" + guidance_label: "Hilfestellung" + question_guidance_help_text_html: "Geben Sie spezifische Hilfestellung an, die diese Frage begleiten soll. Falls Sie auch Hilfestellungen nach Themen angeben, werden diese mit angezeigt; Sie sollten deshalb möglichst wenig Text kopieren." + delete_message: "Sie sind dabei '%{question_text}' zu löschen. Sind Sie sicher?" + question_options_help_text_html: "Geben Sie alle Optionen an, die angezeigt werden sollen. Sie können eine der Option als Vorauswahl mit Hilfe der entsprechenden Checkbox markieren." + + + + + helpers: + home: "Start" + return_home: "Zurück zur Startseite." + admin_area: "Superadmin" + edit_profile: "Profil bearbeiten" + view_plans_label: "Pläne anzeigen" + create_plan_label: "Plan erstellen" + about_us_label: "Über uns" + news_label: "Aktuelles" + help_label: "Hilfe" + contact_label: "Kontakt" + jisc: "Das DCC wird untertützt von" + + greeting: "Hallo" + sign_in: "Anmelden" + sign_in_text: "Falls Sie ein Benutzerkonto besitzen" + sign_out: "Abmelden" + sign_up: "Registrieren" + sign_up_text: "Neu auf DMPonline? Heute noch registrieren." + signed_in: "Angemeldet als " + institution_sign_in_link: "Oder melden Sie sich mit den Zugangsdaten Ihres Instituts an" + institution_sign_in: "" + + + user_name: "E-Mail-Adresse" + email: "E-Mail" + org_not_listed: "Meine Organisation ist nicht in der Auflistung." + email_tip: "This must be a valid email address - a message will be sent to it for confirmation." + organisation_name_tip: "Bitte geben Sie den Namen Ihrer Organisation an." + password_tip: "Dieses muss mindestends 8 Zeichen lang sein." + password_reentry_tip: "Dieses muss mit der Eingabe des vorigen Feldes übereinstimmen." + valid_email: "Bitte geben Sie eine gültige E-Mail-Adresse an." + user_details_text_html: "

Bitte beachten Sie, dass Ihre Email-Adresse als Nutzername verwendet wird. Vergessen Sie nicht, Ihre neue E-Mail-Adresse beim der nächsten Anmeldung zu verwenden, falls Sie diese geändert haben.

" + user_details_paragraph_html: "Alle folgenden Angaben können bearbeitet werden." + remember_me: "angemeldet bleiben" + + + password: "Passwort" + current_password: "Aktuelles Passwort" + new_password: "Neues Passwort" + password_conf: "Passwort bestätigen" + change_password: "Passwort ändern" + forgot_password: "Passwort vergessen?" + password_too_small: "Ihr Passwort muss mindestens acht Zeichen enthalten." + password_no_match: "Die Eingabe in diesem Feld muss mit der im vorherigen Feld übereinstimmen." + no_pass_instructions: "Bestätigungsanleitungen nicht erhalten?" + no_unlock_instructions: "Entsperrungsanleitungen nicht erhalten?" + send_password_info: "Anleitung zum Zurücksetzen des Passworts" + edit_password_info: "Zum Ändern Ihres Passworts folgende Felder ausfüllen." + accept_terms_html: "Ich akzeptiere die Nutzungsbedingungen *" + + text_area: "Text area" + text_field: "Textfeld" + radio_buttons: "Optionsfelder" + checkbox: "Checkbox" + dropdown: "Klappliste" + multi_select_box: "Mehrfachauswahlliste" + + error: "Fehler!" + comment: "Kommentar" + send: "Senden" + yes: "Ja" + no: "Nein" + none: "Keines" + title: "Titel" + note: "Anmerkung" + me: "Ich" + view: "Betrachten" + desc: "Beschreibung" + save: "Speichern" + preview: "Vorschau" + saving: "Speichere..." + loading: "Lade..." + removing: "Entferne..." + unsaved: "Ungesicherte Änderungen" + unlink_account: "Trenne Zugang" + submit: + edit: "Bearbeiten" + create: "Erstellen" + update: "Aktualisieren" + cancel: "Abbrechen" + save: "Speichern" + delete: "Löschen" + back: "Zurück" + discard: "Verwerfen" + + name: "Name" + first_name: "Vorname" + last_name: "Nachname" + first_name_help_text: "Bitte geben Sie ihren Vornamen ein." + surname_help_text: "Bitte geben Sie ihren Familien- bzw. Nachnamen ein." + owner: "Besitzer" + orcid_id: "ORCID Nummer" + orcid_html: "ORCID Nummer ist ein persistenter digitaler Identifikator für Forschende. Weitere Informationen…" + sign_up_shibboleth_alert_text_html: "Hinweis: If you have previously created an account in DMPonline, and you want to link this to your institutional credentials, you need to Sign in to that existing DMPonline account first. If you have never created a DMPonline account, then please complete the form below." + shibboleth_linked_text: "Your account is linked to your institutional credentials." + shibboleth_to_link_text: "Link your DMP Builder account to your institutional credentials" + shibboleth_to_link_question: "link your DMP Builder account to your institutional credentials?" + shibboleth_unlink_label: "Unlink your institutional credentials" + shibboleth_unlink_alert: "Unlink institutional credentials alert" + shibboleth_unlink_dialog_text: "

You are about to unlink DMP Builder of your institutional credentials, would you like to continue?

" + shibboleth_wait_confirmation: "Currently waiting confirmation for:" + + section_label: "Abschnitt" + sections_label: "Abschnitte" + questions_label: "Fragen" + answers_label: "Antworten" + answer_questions: "Fragen beantworten" + last_edit: "Zuletzt bearbeitet" + select_action: "Wählen Sie eine Aktion" + answered_by: "Beantwortet " + answered_by_part2: " von " + suggested_answer: "Antwortvorschlag" + suggested_example: "Beispielantwort" + notanswered: "Noch nicht beantwortet" + noquestionanswered: "Keine der Fragen wurden beantwortet" + guidance: "Hilfestellung" + policy_expectations: "Policy Expectations" + export: "Export" + guidance_accordion_label: "Hilfestellung" + add_comment_accordion_label: "Füge Kommentar hinzu" + comment_accordion_label: "Kommentare" + + comments: + add_comment_label: "Füge Kommentar hinzu" + add_comment_text: "Bitte füge einen Kommentar hinzu" + comment_label: "Kommentar" + comments_label: "Kommentare" + view_label: "Ansicht" + edit_label: "Bearbeiten" + retract_label: "Entfernen" + clear_label: "Entfernen" + commented_by: "Kommentar von:" + archive_own_comment_question: "Wollen Sie diesen Kommentar wirklich entfernen?" + archive_own_comment_button_label: "Entfernen" + + archive_comment_button_label: "Entfernen" + clear_by: "Kommentar entfernt von" + retracted: "Kommentar von Ihnen entfernt" + + failures: + email_exists: "Diese E-Mail-Adresse ist bereits registriert." + registration_error: "Fehler bei Bearbeitung der Registrierung. Bitte überprüfen Sie, ob sie eine gültige E-Mail-Adresse angegeben haben und Ihr Passwort mindestens 8 Zeichen lang ist." + notices: + successfully_updated: "Details erfolgreich aktualisiert. " + sharing_updated: "Angaben zum Teilen erfolgreich aktualisiert." + invitation_issued: "Einladungen erfolgreich ausgestellt." + enter_email: "Bitte geben Sie eine E-Mail-Adresse an." + access_removed: "Zugriff entfernt." + user_added: "Nutzer dem Projekt hinzugefügt." + answer_recorded: "Antwort erfolgreich erfasst." + answer_saving_error: "Es gab einen Fehler beim Speichern der Antwort." + answer_not_changed: "Keine Änderung in Frageninhalt - nicht gespeichert." + comment_created: "Kommentar wurde erfolgreich erstellt." + comment_updated: "Kommentar wurde erfolgreich aktualisiert." + theme_created: "Thema wurde erfolgreich erstellt.." + theme_updated: "Thema wurde erfolgreich aktualisiert." + page_created: "Seite wurde erfolgreich erstellt." + page_updated: "Seite wurde erfolgreich aktualisert." + user_created: "Nutzer wurde erfolgreich erstellt.." + project_created: "Projekt wurde erfolgreich erstellt." + user_org_role_created: "?User?org?role? wurde erfolgreich erstellt." + user_org_role_updated: "?User?org?role? wurde erfolgreich aktualisiert." + user_role_created: "Nutzerrollentyp wurde erfolgreich erstellt." + user_role_updated: "Nutzerrollentyp wurde erfolgreich aktualisiert." + user_status_created: "Nutzerstatus wurde erfolgreich erstellt." + user_status_updated: "Nutzerstatus wurde erfolgreich aktualisiert." + user_type_created: "Nutzertyp wurde erfolgreich erstellt." + user_type_updated: "Nutzertyp wurde erfolgreich aktualisiert." + link_account_question: "Möchten Sie" + account_no_access: "Dieser Zugang hat keinen Zugriff auf jenen Plan." + plan_updated: "Plan wurde erfolgreich aktualisiert." + settings_updated: "Einstellungen erfolgreich aktualisiert." + + progress_bar: + answered: "beantwortet" + question: "Frage" + questions: "Fragen" + + org_type: + funder: "Funder" + institution: "Institution" + project: "Projekt" + organisation: "Organisation" + org_name: "Name der Organisation" + school: "Fakultät" + publisher: "Verleger" + other_guidance: "Andere Hilfestellungen" + template: "Vorlage" + templates: "Vorlagen" + child: "Untereinheit" + other_org_help_text: "Bitte geben Sie den Namen Ihrer Organisation an." + org_select_text: "Bitte eine Organisation auswählen: " + + project: + create: "Ja, Plan erstellen" + edit: "Plandetails bearbeiten" + grant_title: "Förderkennzeichen" + grant_help_text: "Das Förderkennzeichen als Referenz, sofern sinnvoll (Nur für Datenmanagement-Pläne nach der Bewilligung)." + not_applicable: "Nicht anwendbar / nicht gelistet." + multi_templates: "Es stehen verschiedene mögliche Vorlagen zur Auswahl. Bitte wählen Sie eine aus." + project_name: "Name des Plans" + my_project_name: "Mein Plan" + success: "Plan wurde erfolgreich angelegt." + principal_investigator: "Projektleitung / Principal Investigator" + principal_investigator_help_text: "Name des Principal Investigators oder der Leitung des Projektes." + principal_investigator_id: "Principal Investigator ID" + principal_investigator_id_help_text: "z.B. die ORCID (http://orcid.org/)." + funder_help_text: "Der Geldgeber, falls relevant." + funder_name: "Name des Geldgebers" + project_question_desc_label: "Zusammenfassung der Fragen" + tab_plan: "Plandetails" + tab_export: "Export" + export_text_html: "

Hier können Sie Ihren Plan in verschiedenen Formaten herunterladen. Das kann nützlich sein, falls Sie den Plan als Teil Ihres Projektantrags einreichen müssen.
+ Wählen Sie das gewünschte Format aus und wählen Sie 'Exportieren'.

" + questions_answered: "Fragen beantwortet" + not_saved_answers_text_alert: "Geänderte Antworten wurden nicht gesichert:" + not_saved_answers_confirmation_alert: "Wollen Sie sie jetzt sichern?" + not_saved_answers_header: "Ungesicherte Antworten" + project_data_contact: "Kontakt für Plan-Daten" + project_data_contact_help_text: "Name (falls abweichend von obigen Angaben), Telefonnummer und E-Mail-Adresse." + project_name_help_text: "Falls Sie einen Förderantrag stellen, geben Sie bitte den Namen exakt genau so an, wie im Förderantrag." + project_desc_help_text_html: "

Zu berücksichtigende Fragen:

  • - Welcher Art ist Ihr Forschungsproject?
  • - Welche Forschungsfragen sollen im Projekt bearbeitet werden?
  • - Welchem Zweck werden die erzeugten oder gesammelt Daten dienen?

Hilfestellung:

Fassen Sie die Art der Studien / Untersuchungen zusammen, um Dritten den Zweck der erzeugten oder gesammelt Daten zu veranschaulichen.

" + project_identifier: "ID" + project_identifier_help_text: "Eine Identifikationskürzel, wie es von Förderern oder Institutionen vergeben wird." + project_static_info: "Dieser Plan basiert auf:" + projects_title: "Meine Pläne" + project_settings_text: "Die hier ausgewählten Einträge werden in der Tabelle unten angezeigt. Sie können die Daten durch jeden ihrer Tabellenköpfe sortieren oder filtern, indem Sie eine Zeichenkette in der Suchbox eingeben." + project_text_when_no_project: "

Willkommen.
Sie können nun ihren ersten DMP erstellen.
Wählen Sie 'Plan erstellen' weiter unten aus, um zu beginnen.

" + project_text_when_project: "

Die folgende Tabelle listet alle von Ihnen erstellten und von anderen mit Ihnen geteilten Pläne.
Diese können jederzeit bearbeitet, geteilt, exportiert und gelöscht werden.

" + confirmation_text: "Plandetails bestätigen" + confirmation_text_desc: "An Stellen, an denen Förderer oder Institutionen keine spezifischen Anforderung definiert haben (oder Sie entsprechende Angaben nicht gemacht haben), wird Ihnen die DCC Checkliste angezeigt. Diese bietet eine generische Fragen und Hilfestellungen; Mehr Informationen unter: DMP Check-Liste 2013." + confirmation_button_text: "Ja, Plan erstellen" + project_details_text_html: "Diese Seite bietet Ihnen einen Überblick über Ihren Plan. Sie gibt an, worauf dieser Plan basiert und gibt eine Übersicht über die Fragen, die gestellt werden." + project_details_editing_text_html: "Bitte geben Sie im Folgenden die Projektdetails an und wählen 'Aktualisieren' aus, um die Änderungen zu speichern." + confirm_delete_text: "Sind Sie sicher, dass sie diesen Plan löschen wollen?" + default_confirmation_text_desc: "Sie haben den Standardplan gewählt, der auf dem Katalog der DCC basiert. Dies bietet eine generische Menge von DMP-Fragen and Hilfestellung. Für mehr Einzelheiten: DMP checklist 2013." + default_confirmation_button_text: "Erstelle Plan" + alert_default_template_text_html: "Bitte beachten: %{org_name} stellt eine DMP-Vorlage zur Verfügung. Wenn Sie sie benutzen möchten, wähle 'Abbrechen', ansonsten wähle 'Erstelle Plan'" + share: + tab_share: "Teilen" + shared_label: "Geteilt?" + share_text_html: "

Sie können anderen Zugriff zu Ihren Plan gewähren. Es gibt hierbei drei Abstufungen des Zugriffs. +

    +
  • Benutzer mit 'nur lesen'-Rechten können den Plan nur lesen.
  • +
  • Bearbeiter können zum Plan beitragen.
  • +
  • Miteigentümer können zum Plan beitragen und zusätzlich die Plandetails und die Zugriffsrechte bearbeiten.
  • +

+

Neue Mitarbeitende können durch die Angabe ihrer E-Mail-Adresse und das Wählen des Zugriffsrechts hinzugefugt werden. Bestätigen Sie Ihre Angaben mit 'Mitarbeitende(n) hinzufügen'

+

Eingeladene Mitarbeitende erhalten eine E-Mail, die sie darüber informiert, dass sie Zugriff zu Ihrem Plan erhalten haben; sofern Mitarbeitende noch nicht bei DMPonline registriert sind, erhalten sie eine Einladung zur Registrierung. Wenn die Zugriffsrechte geändert werden wird ebenfalls eine Benachrichtigungs-E-Mail versand.

" + collaborators: "Mitarbeitende" + add_collaborator: "Mitarbeitende(n) hinzufügen" + add: "Hinzufügen" + permissions: "Zugriffsrechte" + permissions_desc: "Editoren können zu Plan beitragen. Miteigentümer haben zusätzliche Rechte um Plandetails und Zugriffsrechte bearbeiten zu können." + remove: "Mitarbeitende(n) entfernen" + confirmation_question: "Sind Sie sicher?" + owner: "Besitzer" + co_owner: "Miteigentümer" + edit: "Bearbeiten" + read_only: "Nur Lesen" + locked_section_text: "Dieser Abschnitt ist gespert wegen Bearbeitung durch " + email_text: "

Ihnnen wurde '%{access_level}'-Zugriff auf den DMP %{project_link}. gegeben.

" + permission_email_text: "

Ihre Befugnisse bzgl. des DMP '%{project_link}' haben sich geändert. Sie besitzen jetzt %{access_level}-Zugriff.

" + access_removed_email_text: "

Ihr Zugriff auf den DMP '%{project_title}' wurde entzogen.

" + export: + generated_by: "This document was generated by DMP Builder (http://dmp.library.ualberta.ca)" + create_page: + title: "Einen neuen Plan erstellen" + desc_html: "

Bitte wählen Sie aus folgendem Drop-Down-Menü, so dass wir bestimmen können, welche Fragen und Hilfestellungen in Ihrem Plan angezeigt werden sollen.

+

Falls Sie nicht den spezifischen Anforderungen eines Geldgebers oder einer Institution folgen, + + wählen Sie hier, um einen generischen DMP zu schreiben , der auf den allgemeinsten Themen basiert.

" + default_template: "Standard DMP" + funders_question: "Falls Sie Fördermittel beantragen, wählen Sie bitte den Förderer aus." + funders_question_description: "Falls nicht, lassen Sie dieses Feld bitte unberührt." + institution_question: "Um Fragen und Hilfestellung einer bestimmten Organisation zu integrieren, wählen Sie diese bitte aus." + institution_question_description: "Sie können eine beliebige Organisation wählen, oder das Feld leer lassen." + other_guidance_question: "Wählen Sie jede beliebige andere Quelle für Hilfestellungen." + other_funder_name_label: "Name des Geldgebers, falls anwendbar." + configure: "Konfigurieren" + columns: + name: "Name" + owner: "Besitzer" + shared: "Geteilt?" + template_owner: "Vorlagenbesitzer" + last_edited: "Zuletzt bearbeitet" + identifier: "Bezeichner" + grant_number: "Zuschussnummer" + principal_investigator: "Principal Investigator / Researcher" + data_contact: "Plandatenkontakt" + description: "Beschreibung" + filter: + placeholder: "Filter Pläne" + submit: "Filter" + cancel: "Abbrechen" + no_matches: "Kein Plan erfüllt '%{filter}'" + plan: + export: + default_title: "DMP Titel" + pdf: + question_not_answered: "Frage nicht beantwortet." + generated_by: "Dieses Dokument wurde von DMPonline (http://dmponline.dcc.ac.uk) erzeugt." + space_used: "annährend %{space_used}% des verfügbaren Platzes wird verwendet (max. %{num_pages} Seiten)" + project_name: "Projektname" + project_identifier: "Projektbezeichner" + grant_title: "Grant Title" + principal_investigator: "Principal Investigator / Forscher" + project_data_contact: "Kontakt für Projektdaten" + project_description: "Beschreibung" + funder: "Geldgeber" + institution: "Institution" + + settings: + title: "Einstellungen" + projects: + title: "Einstellungen - Meine Pläne" + desc: "Die untere Tabelle listet die verfügbaren Spalten auf, welche in der Liste 'Meine Pläne' gezeigt werden können. + Wählen Sie, welche erscheinen sollen." + errors: + no_name: "'Name' muss in der Liste von Spalten enthalten sein." + duplicate: "Doppelter Spaltenname. Bitte jede Spalte nur einmal einfügen." + unknown: "Unbekannter Spaltenname." + plans: + title: "Plantitel" + reset: "Zurücksetzen" + custom_formatting: "(Verwende eigene Werte bei PDF-Formatierung)" + template_formatting: "(Verwende Vorlagenwerte bei PDF-Formatting)" + default_formatting: "(Verwende standardmäßige Werte bei PDF-Formatierung)" + included_elements: "Enthaltene Elemente" + pdf_formatting: "PDF Formatierung" + font: "Schrift" + font_face: "Schriftart" + font_size: "Größe" + margin: "Rand" + margins: + top: "Oben" + bottom: "Unten" + left: "Links" + right: "Rechts" + max_pages: "Maximale Anzahl von Seiten" + errors: + missing_key: "Eine benötigte Einstellung wurde nicht erbracht" + invalid_margin: "Randwert ist ungültig" + negative_margin: "Rand darf nicht negativ sein" + unknown_margin: "Unbekannter Rand. Kann nur 'oben', 'unten', 'links' oder 'rechts' sein" + invalid_font_size: "Ungültige Schriftgröße" + invalid_font_face: "Ungültige Schriftart" + unknown_key: "Unbekannte Formatierungseinstellung" + invalid_max_pages: "Ungültige maximale Anzahl von Seiten" + mailer: + sharing_notification: "Ihnen wurde Zugang zu einem Datenmanagementplan gewährt" + permissions_change: "DMP-Zulassungen geändert" + access_removed: "DMP-Zugriff entfernt" + + about_page: + title: "Über DMPonline" + tab_1: "Hintergrund" + tab_2: "Neuigkeiten" + body_text_tab_1_html: "
+

+ Fördergeber verlangen zunehmend die Erstellung von Datenmanagementplänen von den Antragstellern, bzw. Förderempfängern, sowohl in der Antragsphase als auch während der Durchführung. DMPonline wurde vom Digital Curation Centre (UK) erstellt, um es Forschenden zu ermöglichen, auf diese Anforderungen zu reagieren und dabei auch die Vorgaben ihrer Institutionen oder anderen Beteiligten zu erfüllen. +

+

+ Die Entwicklung fand in Kooperation mit Forschungsförderern und Universitäten statt, um ein Werkzeug für die Erstellung von probaten Datenmanagementplänen während des gesamten Projektverlaufs anbieten zu können. +

+
+

Konzept

+
+

+ Es gibt eine Reihe von Vorlagen innerhalb der Applikation, die den Anforderungen der verschiedenen Förderer oder Institutionen entsprechen. Die Nutzer beantworten zu Begin der Erstellung eines Plans drei Fragen, um die Anzeige der geeigneten Vorlage zu erlauben (z.B. die ESRC-Vorlage bei einer ESRC-Förderung). Die Applikation gibt Hilfestellungen zum Verstehen und Beantworten der Fragen; diese werden von Forschenden, Förderern, Universitäten und den verschiedenen Disziplinen bereitgestellt. +

+
+

Erste Schritte

+
+

Falls sie einen Zugang haben, melden sie sich an und beginnen ihren Datenmanagementplan zu erstellen.

+

Falls sie keinen Zugang zu DMPonline haben, wählen sie 'Registrieren' auf der Startseite aus.

+

Besuchen sie die 'Hilfe'-Seite für eine Anleitung.

+
+

Weitere Informationen

+
+

Die deutsche Version von DMPonline wird in Kooperation mit dem Digital Curation Centre (UK) und der Bibliothek der Universität von Alberta (CA) im Rechenzentrum der Christian-Albrechts-Universität gepflegt.

+

Die Benutzungsschnittstelle und die Funktionalität von DMPonline wird kontinuierlich verbessert. Falls sie gerne Rückmeldung geben oder Verbesserungsvorschläge machen möchten, freuen wir uns, wenn sie uns eine Nachricht an +vfu@rz.uni-kiel.de schicken.

+
" + body_text_tab_2_html: "

Geschichten zu DMPonline auf der DCC-Seite


" + + help_page: + title: "Hilfe" + tab_1: "DMPonline" + tab_2: "Datenmanagement-Planung" + body_text_tab_2_html: " +

Datenmanagementplan-Anleitung am Beispiel von Horizon 2020

+
    +
  • + Datenmanagementplan-Anleitung (PDF)
    +Der Computer- und Medienservice der Humboldt-Universität zu Berlin hat eine Anleitung zur Erstellung eines Datenmanagementplans (DMP) in Horizon 2020 mit DMPonline bereit gestellt.
  • +
+

Useful resources on Data Management Planning

+ +

Example Data Management Plans

+
    +
  • + Technical plan submitted to the AHRC [PDF, 7 pages]
    + A DMP submitted by a researcher from the University of Bristol, also including comments from the reviewers +
  • +
  • + Two social science DMPs [PDF, 7 pages]
    + Example plans from researchers at the University of Leeds, shared as part of the Leeds RoaDMaP training materials +
  • +
  • + Rural Economy & Land Use (RELU) programme examples [webpage]
    + Two examples from a joint ESRC, BBSRC and NERC programme +
  • +
  • + Health sciences DMP [PDF, 11 pages]
    + Example DMP produced by the DATUM for Health RDM training project +
  • +
  • + Psychology DMP [PDF, 11 pages]
    + A very detailed, fictional psychology DMP produced by the DMTpsych RDM training project, based on a seminal psychology experiment +
  • +
  • + UCSD Example Data Management Plans [webpage]
    + Over 20 example plans submitted to the National Science Foundation (NSF) in the United States by academics at UC San Diego +
  • +
  • + Colorado School of Mines examples [webpage]
    + A variety of US example DMPs from Mines and elsewhere +
  • +
  • + NSF data management plans [webpage]
    + 5 DMPs submitted to the NSF, shared by the DataOne initiative +
  • +
  • + Biology and chemistry DMPs [webpage]
    + Three example DMPs from the USA shared by NECDMC, an instructional tool for teaching RDM to undergraduates, graduate students, and researchers in the health sciences, sciences and engineering. +
  • +
+

Useful guides on Research Data Management in general

+
    +
  • + Managing and Sharing Data: best practice for researchers [PDF, 36 pages]
    + A guide by the UK Data Service covering a range of topics including data formats, documentaion, ethics, copyright and data sharing. +
  • +
  • + How to Cite Datasets and Link to Publications [PDF, 12 pages]
    + A guide by the Digital Curation Centre giving practical guidelines on how to cite data and the different tools and infrastructure that can be used to support data citation. +
  • +
  • + How to License Research Data [PDF, 16 pages]
    + A guide by the Digital Curation Centre that outlines different types of licenses, the pros and cons of each and how they can be applied. +
  • +
  • + How to Appraise and Select Research Data for Curation [PDF, 8 pages]
    + A guide by ANDS and the DCC on how to select which data to keep for long-term preservation, sharing and reuse. The guide puts forward several criteria to aid selection decisions. +
  • +
  • + Research Data MANTRA [online resource]
    + An online training course designed for researchers or others planning to manage digital data as part of the research process. The course includes a number of software practicals on using SPSS, R, ArcGIS and NVivo. +
  • +
" + body_text_tab_1_html: "

Nach der Anmeldung in DMPonline werden sie zur 'Meine Pläne'-Seite weitergeleitet. Dies ist der Startpunkt, um ihre Pläne zu Edieren, zu Teilen oder zu löschen. Sie sehen außerdem, welche Pläne sie mit anderen geteilt haben.

+

Pläne erstellen

+

Um einen Plan zu erstellen, klicken sie auf den 'Plan erstellen'-Knopf auf der 'Meine Pläne'-Seite, oder im Hauptmenü. Wählen sie die passenden Optionen in den Ausklappmenüs und Auswahlboxen aus, um zu bestimmen, welche Fragen und Hilfestellungen ihnen angezeigt werden sollen. Bestätigen sie ihre Auswahl durch das Klicken von 'Ja, Plan erstellen'.

+

Pläne schreiben

+

Die Reiter der Benutzerschnittstelle erlauben ihnen durch die verschiedenen Bereiche zu navigieren wenn sie ihren Plan bearbeiten.

+
    +
  • - 'Plandetails' enthält die grundliegenden administrativen Details, listet die Fragen und Hilfestellungen, auf denen ihr Plan basiert und gibt eine Übersicht über die zu beantwortenden Fragen
  • +
  • - die folgenden Reiter repräsentieren die zu beantwortenden Fragen. Sollten ihr Förderer oder ihre Institution verschiedene Fragen zu verschiedenen Stufen des Plans beantwortet wissen möchten, können hier mehrere Reiter auftauchen
  • +
  • - 'Teilen' enthält Details zum Einladen von anderen Personen zum Lesen oder zur aktiven Mitabeit am Plan
  • +
  • - 'Export' enthält Möglichkeiten zum Export des Plans in verschiedene Dateiformate. Dies kann nützlich sein, wenn sie ihren Plan im Rahmen eines Antrags einreichen müssen
  • +
+

In den Fragereitern sind die verschiedenen Abschnitte ihres Plans dargestellt, die sich durch anklicken zur Bearbeitung auswählen lassen. Die Antworttexte können mit den Textbearbeitungsknöpfen formatiert werden.

+

Hilfestellungen werden rechts von den Fragen durch klicken des '+'-Symbols angezeigt.

+

Bitte vergessen sie nicht ihre Antworten zu speichern, bevor sie die Seite verlassen.

+

Pläne teilen

+

Geben sie die E-Mail-Adresse der Person an, die ihren Plan lesen oder bearbeiten können sollen. Mithilfe des Ausklappmenüs können sie die Befugnisse, die die Person im Bezug auf den Plan haben soll, auswählen. Klicken sie abschließend auf 'Mitarbeitende(n) hinzufügen'.

+

Pläne exportieren

+

Wählen sie das Dateiformat aus, in das sie ihren Plan exportieren möchten und klicken sie 'Export'. Unterhalb des Dialogs können sie durch klicken auf das '+'-Symbol detaillierte Einstellungen zum Export vornehmen.

" + + + + contact_page: + title: "Kontakt" + intro_text_html: "

DMP Builder is provided by the University of Alberta Libraries. You can find out more about us on our Research Data Management page. If you would like to contact us about DMP Builder, please insert your query into the webform below or email data@ualberta.ca.

+

Contact Us

" + + terms_page: + title: "Nutzungsbedingungen" + body_text_html: "
+

+ Dies ist eine Testinstallation von DMPonline. DMPonline wird vom Digital Curation Centre (DCC) entwickelt und gepflegt und steht unter einer AGPL Lizenz als Open Source Software zur Verfügung. +

+

+ Die Testinstallation dient lediglich der Weiterentwicklung und Evaluation der Software und ist nicht für den Produktiveinsatz gedacht. +

+
+

Zu Ihrer persönlichen Information

+
+

+ Diese Testinstallation wird in absehbarer Zeit wieder abgeschaltet werden. Die Daten, die in dieser Installation erstellt wurden, werden bei der Abschaltung verloren gehen. Wichtige Daten sollten nicht ausschließlich in der Testinstallation gespeichert werden. +

+
+ +

Passwörter

+
+

Ihr Passwort wird in verschlüsselter Form gespeichert und kann nicht wieder hergestellt werden. Falls Sie es verlieren, muss es neu gesetzt werden.

+
+ +
+
+

Bei Benutzung dieser Anwendung stimmen Sie den Nutzungsbedingungen zu.

+
" + + footer: + terms_of_use: "

Universität Kiel, Kiel, SH, Deutschland
Nutzungsbedingungen

" diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml new file mode 100644 index 0000000..c521c2f --- /dev/null +++ b/config/locales/devise.de.yml @@ -0,0 +1,78 @@ +# Additional translations at https://github.com/plataformatec/devise/wiki/I18n + +de: + devise: + confirmations: + confirmed: "Vielen Dank für Ihre Registrierung. Bitte melden Sie sich an." + send_instructions: "Sie erhalten in wenigen Minuten eine E-Mail mit einer Anleitung zur Bestätigung Ihres Zugangs." + resend_instructions: "Sende Anleitung zur Bestätigung erneut" + confirmed_and_signed_in: "Vielen Dank für Ihre Registrierung. Sie sind jetzt angemeldet." + send_paranoid_instructions: "Falls Ihre E-Mail-Adresse in unserer Datenbank existiert, erhalten Sie in wenigen Minuten eine E-Mail mit einer Anleitung zur Bestätigung Ihres Zugangs." + failure: + already_authenticated: "Sie sind bereits angemeldet." + inactive: "Ihr Zugang ist noch nicht aktiviert worden." + invalid: "E-Mail-Adresse oder Passwort ungültig." + invalid_token: "Ungültiges Authentifizierungs-Token." + locked: "Ihr Zugang ist gesperrt." + not_found_in_database: "E-Mail-Adresse oder Passwort ungültig." + timeout: "Ihre Sitzung ist abgelaufen, bitte melden Sie sich erneut an." + unauthenticated: "Sie müssen sich anmelden oder registrieren, um fortzufahren." + unconfirmed: "Sie müssen Ihren Zugang bestätigen, um fortzufahren." + mailer: + app_name: "DMPonline" + confirmation_instructions: + subject: "DMPonline - Bestätigung Ihres Zugangs" + link: "Klicken Sie hier, um Ihren Zugang zu bestätigen" + email: "

Willkommen zu DMPonline, %{email}

+

Danke für Ihre Registrierung bei %{app_link}. Bitte bestätigen Sie Ihre E-Mail-Adresse:

+

%{confirmation_link} (oder kopieren Sie %{confirmation_direct_url} in Ihren Browser).

" + reset_password_instructions: + subject: "DMPonline - Passwort zurücksetzen" + link: "Ändere mein Passwort" + email: "

Hallo %{resource_email}!

+

Jemand hat einen Link angefordert, um Ihr Passwort für %{app_link} zurückzusetzen. Dies kann durch den unteren Link geschehen.

+

%{reset_password_link}

+

Wenn diese Anfrage nicht von Ihnen ist, können Sie diese Email ignorieren.

+

Ihr Passwort ändert sich erst, wenn Sie obigen Link verwenden, um ein Neues zu setzen.

" + unlock_instructions: + subject: "DMPonline - Zugang entsperren" + link: "Entsperre meinen Zugang" + email: "

Hallo %{resource_email}!

+

Ihr %{app_link} Zugang würde wegen übermäßiger Anmeldungsversuche gesperrt.

+

Verwenden Sie den unteren Link, um Ihren Zugang zu entsperren:

+

%{unlock_link}

" + omniauth_callbacks: + failure: "Sie konnten mit Ihrem %{kind}-Zugang nicht authentifiziert werden, da '%{reason}'." + success: "Sie haben sich erfolgreich mit Ihrem %{kind}-Zugang angemeldet." + passwords: + no_token: "Sie können diese Seite nur über einen Verweis in einer E-Mail zum Zurücksetzen des Passworts aufrufen. Sollten Sie einen solchen Verweis aufgerufen haben, stellen Sie bitte sicher, dass Sie die vollständige URL aufgerufen haben." + send_instructions: "Sie erhalten in wenigen Minuten eine E-Mail mit einer Anleitung zum Zurücksetzen Ihres Passworts." + send_paranoid_instructions: "Falls Ihre E-Mail-Adresse in unserer Datenbank existiert, erhalten Sie in wenigen Minuten eine E-Mail mit einer Anleitung zum Zurücksetzen Ihres Passworts." + updated: "Ihr Passwort wurde geändert. Sie sind jetzt angemeldet." + updated_not_active: "Ihr Passwort wurde geändert." + registrations: + destroyed: "Ihr Zugang wurde gelöscht." + signed_up: "Sie haben sich erfolgreich registriert." + signed_up_but_inactive: "Sie haben sich erfolgreich registriert. Sie können sich jedoch z.Z. nicht anmelden, da Ihr Zugang inaktiv ist." + signed_up_but_locked: "Sie haben sich erfolgreich registriert. Sie können sich jedoch z.Z. nicht anmelden, da Ihr Zugang gesperrt ist." + signed_up_but_unconfirmed: "Sie haben kürzlich eine E-Mail mit einer Anleitung zur Bestätigung Ihres Zugangs erhalten. Bitte öffnen Sie den dort angegebenen URL um Ihren Zugang zu aktivieren." + update_needs_confirmation: "Sie haben erfoglreich die Nutzerdetails geändert, jedoch muss Ihre neue E-Mail-Adresse überprüft werden. Sie haben eine entsprechende E-Mail erhalten; bitte öffnen Sie den dort angegebenen URL um Ihre neue E-Mail-Adresse zu bestätigen." + updated: "Ihre Zugang wurde erfolgreich aktualisiert." + sessions: + signed_in: "Erfolgreich angemeldet." + signed_out: "Erfolgreich abgemeldet." + unlocks: + send_instructions: "Sie erhalten in wenigen Minuten eine E-Mail mit einer Anleitung zur Entsperrung Ihres Zugangs." + send_paranoid_instructions: "Falls Deine E-Mail-Adresse in unserer Datenbank existiert, erhalten Sie in wenigen Minuten eine E-Mail mit einer Anleitung zur Entsperrung Ihres Zugangs." + resend_unlock_instructions: "Sende erneut Anleitung zur Entsperrung." + unlocked: "Ihr Zugang wurde erfolgreich entsperrt. Bitte melden Sie sich an um fortzufahren." + errors: + messages: + already_confirmed: "wurde bereits bestätigt. Bitte versuchen Sie, sich anzumelden." + confirmation_period_expired: "muss innerhalb %{period} bestätigt werden, bitte wiederholen Sie den Vorgang." + expired: "ist abgelaufen, bitte erneut anfordern" + not_found: "nicht gefunden" + not_locked: "war nicht gesperrt" + not_saved: + one: "Ein Fehler hat verhindert, dass %{resource} gespeichert werden konnte:" + other: "%{count} Fehler haben verhindert, dass %{resource} gespeichert werden konnte:" diff --git a/config/locales/devise.en-UK.yml b/config/locales/devise.en-UK.yml new file mode 100644 index 0000000..b19053b --- /dev/null +++ b/config/locales/devise.en-UK.yml @@ -0,0 +1,59 @@ +# Additional translations at https://github.com/plataformatec/devise/wiki/I18n + +en: + devise: + confirmations: + confirmed: "Your account was successfully confirmed. Please sign in." + send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes." + send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes." + failure: + already_authenticated: "You are already signed in." + inactive: "Your account was not activated yet." + invalid: "Invalid email or password." + invalid_token: "Invalid authentication token." + locked: "Your account is locked." + not_found_in_database: "Invalid email or password." + timeout: "Your session expired, please sign in again to continue." + unauthenticated: "You need to sign in or sign up before continuing." + unconfirmed: "You have to confirm your account before continuing." + mailer: + confirmation_instructions: + subject: "Confirm your DMPonline account" + reset_password_instructions: + subject: "Reset password instructions" + unlock_instructions: + subject: "Unlock Instructions" + omniauth_callbacks: + failure: "Could not authenticate you from %{kind} because \"%{reason}\"." + success: "Successfully authenticated from %{kind} account." + passwords: + no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided." + send_instructions: "You will receive an email with instructions about how to reset your password in a few minutes." + send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." + updated: "Your password was changed successfully. You are now signed in." + updated_not_active: "Your password was changed successfully." + registrations: + destroyed: "Bye! Your account was successfully cancelled. We hope to see you again soon." + signed_up: "Welcome! You have signed up successfully." + signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated." + signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked." + signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please open the link to activate your account. If you do not receive the confirmation email, please check your spam filter." + update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and click on the confirm link to finalize confirming your new email address." + updated: "You updated your account successfully." + sessions: + signed_in: "Signed in successfully." + signed_out: "Signed out successfully." + unlocks: + send_instructions: "You will receive an email with instructions about how to unlock your account in a few minutes." + send_paranoid_instructions: "If your account exists, you will receive an email with instructions about how to unlock it in a few minutes." + unlocked: "Your account has been unlocked successfully. Please sign in to continue." + errors: + messages: + already_confirmed: "was already confirmed, please try signing in" + confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one" + expired: "has expired, please request a new one" + not_found: "not found" + not_locked: "was not locked" + not_saved: + one: "1 error prohibited this %{resource} from being saved:" + other: "%{count} errors prohibited this %{resource} from being saved:" diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml deleted file mode 100644 index b19053b..0000000 --- a/config/locales/devise.en.yml +++ /dev/null @@ -1,59 +0,0 @@ -# Additional translations at https://github.com/plataformatec/devise/wiki/I18n - -en: - devise: - confirmations: - confirmed: "Your account was successfully confirmed. Please sign in." - send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes." - send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes." - failure: - already_authenticated: "You are already signed in." - inactive: "Your account was not activated yet." - invalid: "Invalid email or password." - invalid_token: "Invalid authentication token." - locked: "Your account is locked." - not_found_in_database: "Invalid email or password." - timeout: "Your session expired, please sign in again to continue." - unauthenticated: "You need to sign in or sign up before continuing." - unconfirmed: "You have to confirm your account before continuing." - mailer: - confirmation_instructions: - subject: "Confirm your DMPonline account" - reset_password_instructions: - subject: "Reset password instructions" - unlock_instructions: - subject: "Unlock Instructions" - omniauth_callbacks: - failure: "Could not authenticate you from %{kind} because \"%{reason}\"." - success: "Successfully authenticated from %{kind} account." - passwords: - no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided." - send_instructions: "You will receive an email with instructions about how to reset your password in a few minutes." - send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." - updated: "Your password was changed successfully. You are now signed in." - updated_not_active: "Your password was changed successfully." - registrations: - destroyed: "Bye! Your account was successfully cancelled. We hope to see you again soon." - signed_up: "Welcome! You have signed up successfully." - signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated." - signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked." - signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please open the link to activate your account. If you do not receive the confirmation email, please check your spam filter." - update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and click on the confirm link to finalize confirming your new email address." - updated: "You updated your account successfully." - sessions: - signed_in: "Signed in successfully." - signed_out: "Signed out successfully." - unlocks: - send_instructions: "You will receive an email with instructions about how to unlock your account in a few minutes." - send_paranoid_instructions: "If your account exists, you will receive an email with instructions about how to unlock it in a few minutes." - unlocked: "Your account has been unlocked successfully. Please sign in to continue." - errors: - messages: - already_confirmed: "was already confirmed, please try signing in" - confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one" - expired: "has expired, please request a new one" - not_found: "not found" - not_locked: "was not locked" - not_saved: - one: "1 error prohibited this %{resource} from being saved:" - other: "%{count} errors prohibited this %{resource} from being saved:" diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml new file mode 100644 index 0000000..87a03be --- /dev/null +++ b/config/locales/devise.fr.yml @@ -0,0 +1,82 @@ +# Additional translations at https://github.com/plataformatec/devise/wiki/I18n + +fr: + devise: + confirmations: + confirmed: "Votre compte a bien été validé. Veuillez vous connecter." + send_instructions: "Vous recevrez dans quelques minutes un courriel contenant les directives pour activer votre compte." + resend_instructions: "Envoyer de nouveau les directives" + send_paranoid_instructions: "Si votre adresse électronique existe dans notre base de données, vous recevrez dans quelques minutes un courriel contenant les directives pour valider votre compte." + failure: + already_authenticated: "Vous êtes déjà connecté(e)." + inactive: "Votre compte n'est pas encore activé." + invalid: "Courriel ou mot de passe incorrect." + invalid_token: "Jeton d'authentification incorrect." + locked: "Votre compte est verrouillé." + not_found_in_database: "Courriel ou mot de passe incorrect." + timeout: "Votre session est expirée. Veuillez vous reconnecter pour continuer." + unauthenticated: "Vous devez vous connecter ou vous inscrire pour continuer." + unconfirmed: "Vous devez confirmer votre compte pour continuer." + mailer: + app_name: "Assistant PGD" + confirmation_instructions: + subject: "Valider votre compte Assistant PGD" + link: "Cliquer ici pour activer votre compte" + email: "

Bienvenue dans l'Assistant PGD, %{email}

+

Merci de vous être inscrit(e) à %{app_link}. Veuillez confirmer votre adresse électronique :

+

%{confirmation_link} (ou copier %{confirmation_direct_url} dans votre navigateur).

" + reset_password_instructions: + subject: "Directives pour réinitialiser le mot de passe" + link: "Réinitialiser mon mot de passe" + email: "

Bonjour %{resource_email}!

+

Un changement de mot de passe a été demandé pour %{app_link}. Vous pouvez le faire en cliquant sur le lien ci-dessous.

+

%{reset_password_link}

+

Si vous n'avez pas demandé ce changement, veuillez ignorer ce message.

+

Votre mot de passe ne sera pas changé tant que vous n'aurez pas accédé au lien ci-dessus pour en créer un nouveau.

" + unlock_instructions: + subject: "Directives de déverrouillage" + link: "Déverrouiller mon compte" + email: "

Bonjour %{resource_email}!

+

Votre compte %{app_link} a été verrouillé à la suite d'un trop grand nombre de tentatives d'authentification.

+

Cliquez sur le lien ci-dessous pour déverrouiller votre compte :

+

%{unlock_link}

" + omniauth_callbacks: + failure: "Nous n'avons pas pu vous authentifier à partir de %{kind} parce que '%{reason}'." + success: "Authentification réussie à partir du compte %{kind}." + passwords: + no_token: "Vous ne pouvez pas accéder à cette page sans y avoir été dirigé par un courriel de réinitialisation du mot de passe. Si vous avez été dirigé vers cette page à partir d’un courriel de réinitialisation, assurez-vous d'utiliser l'adresse URL complète fournie." + send_instructions: "Vous recevrez dans quelques minutes un courriel contenant les directives pour réinitialiser le mot de passe." + send_paranoid_instructions: "Si votre adresse électronique existe dans notre base de données, vous recevrez dans quelques minutes un lien de récupération du mot de passe par courriel." + updated: "Votre mot de passe a bien été modifié. Vous êtes maintenant connecté." + updated_not_active: "Votre mot de passe a bien été modifié." + registrations: + destroyed: "Votre compte a bien été supprimé. Nous espérons vous revoir bientôt." + signed_up: "Bienvenu(e)! Vous êtes bien inscrit(e)." + signed_up_but_inactive: "Vous êtes bien inscrit(e). Cependant, vous ne pouvez pas vous connecter, car votre compte n'est pas encore activé." + signed_up_but_locked: "Vous êtes bien inscrit(e). Cependant, vous ne pouvez pas vous connecter, car votre compte est verrouillé." + signed_up_but_unconfirmed: "Un message contenant un lien de confirmation a été envoyé à votre adresse électronique. Ouvrez ce lien pour activer votre compte. Si vous n’avez pas reçu le courriel de confirmation, vérifiez votre filtre antipourriel." + update_needs_confirmation: "Votre compte a bien été mis à jour, mais nous devons vérifier votre nouvelle adresse électronique. Vérifiez vos courriels et cliquez sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse électronique." + updated: "Votre compte a bien été modifié." + sessions: + signed_in: "Connecté" + signed_out: "Déconnecté" + unlocks: + send_instructions: "Vous recevrez dans quelques minutes un courriel contenant les directives pour déverrouiller votre compte." + send_paranoid_instructions: "Si votre compte existe, vous recevrez dans quelques minutes un courriel contenant les directives pour le déverrouiller." + resend_unlock_instructions: "Envoyer de nouveau les directives de déverouillage." + unlocked: "Votre compte a bien été déverrouillé. Veuillez vous connecter pour continuer." + errors: + messages: + already_confirmed: "a déjà été validé, essayez de vous connecter." + confirmation_period_expired: "à confirmer dans les %{period}. Veuillez faire une nouvelle demande." + expired: "a expiré, veuillez faire une nouvelle demande." + not_found: "n'a pas été trouvé" + not_locked: "n'était pas verrouillé" + not_saved: + one: "Une erreur a empêché d’enregistrer ce(tte) %{resource} :" + other: "%{count} erreurs ont empêché d’enregistrer ce(tte) %{resource} :" + blank: "Ce champ ne peut être vide" + activerecord: + attributes: + user: + email: "Courriel: " diff --git a/config/locales/devise_invitable.de.yml b/config/locales/devise_invitable.de.yml new file mode 100644 index 0000000..2f5e1a7 --- /dev/null +++ b/config/locales/devise_invitable.de.yml @@ -0,0 +1,23 @@ +de: + devise: + invitations: + send_instructions: 'Eine Einladungs-E-Mail wurde an %{email} versendet.' + invitation_token_invalid: 'Das bereitgestellte Einladungs-Token ist ungültig.' + updated: 'Ihr Passwort wurde erfolgreich gesetzt. Sie sind jetzt angemeldet.' + no_invitations_remaining: "Keine Einladungen verbleibend." + invitation_removed: 'Ihre Einladung wurde entfernt.' + new: + header: "Einladung versenden" + submit_button: "Einladung senden" + edit: + header: "Passwort setzen" + submit_button: "Passwort setzen" + mailer: + invitation_instructions: + subject: 'DMPonline - Anleitung zur Einladung' + link: "Klicken Sie hier, um die Einladung anzunehmen" + email: "

Hallo %{resource_email}!

+

Ein Kollege hat Sie eingeladen, um an seinem Datenmanagementplan (DMP) %{app_link}

+

%{invitation_link} (oder kopiere %{invitation_direct_url} in Deinen Browser).

+

Falls Sie die Einladung nicht annehmen wollen, ignorieren Sie bitte diese E-Mail.
+ Ihr Zugang wird nicht erstellt, bevor sie obigen Link besuchen und Ihr Passwort setzen.

" diff --git a/config/locales/devise_invitable.en-UK.yml b/config/locales/devise_invitable.en-UK.yml new file mode 100644 index 0000000..7d52710 --- /dev/null +++ b/config/locales/devise_invitable.en-UK.yml @@ -0,0 +1,17 @@ +en: + devise: + invitations: + send_instructions: 'An invitation email has been sent to %{email}.' + invitation_token_invalid: 'The invitation token provided is not valid!' + updated: 'Your password was set successfully. You are now signed in.' + no_invitations_remaining: "No invitations remaining" + invitation_removed: 'Your invitation was removed.' + new: + header: "Send invitation" + submit_button: "Send an invitation" + edit: + header: "Set your password" + submit_button: "Set my password" + mailer: + invitation_instructions: + subject: 'Invitation instructions' diff --git a/config/locales/devise_invitable.en.yml b/config/locales/devise_invitable.en.yml deleted file mode 100644 index 7d52710..0000000 --- a/config/locales/devise_invitable.en.yml +++ /dev/null @@ -1,17 +0,0 @@ -en: - devise: - invitations: - send_instructions: 'An invitation email has been sent to %{email}.' - invitation_token_invalid: 'The invitation token provided is not valid!' - updated: 'Your password was set successfully. You are now signed in.' - no_invitations_remaining: "No invitations remaining" - invitation_removed: 'Your invitation was removed.' - new: - header: "Send invitation" - submit_button: "Send an invitation" - edit: - header: "Set your password" - submit_button: "Set my password" - mailer: - invitation_instructions: - subject: 'Invitation instructions' diff --git a/config/locales/devise_invitable.fr.yml b/config/locales/devise_invitable.fr.yml new file mode 100644 index 0000000..aee1fd4 --- /dev/null +++ b/config/locales/devise_invitable.fr.yml @@ -0,0 +1,23 @@ +fr: + devise: + invitations: + send_instructions: "Un courriel d'invitation a été envoyé à %{email}." + invitation_token_invalid: "Le jeton d'invitation fourni n'est pas valide!" + updated: "Votre mot de passe a été défini avec succès. Vous êtes maintenant connecté(e)." + no_invitations_remaining: "Aucune invitation restante" + invitation_removed: "Votre invitation a été supprimée." + new: + header: "Envoyer une invitation" + submit_button: "Envoyer une invitation" + edit: + header: "Définir votre mot de passe" + submit_button: "Définir mon mot de passe" + mailer: + invitation_instructions: + subject: "Directives de confirmation" + link: "Cliquez ici pour accepter cette invitation" + email: "

Bonjour %{resource_email}!

+

Vous avez été invité(e) par un(e) de vos collègues à contribuer à son plan de gestion de données (PGD) dans %{app_link}

+

%{invitation_link} (ou copier %{invitation_direct_url} dans votre navigateur).

+

Si vous ne voulez pas accepter l'invitation, veuillez ignorer ce message.
+ Votre compte ne sera pas créé tant que vous n'aurez pas accédé au lien ci-dessus et choisi un mot de passe.

" diff --git a/config/locales/en-UK.bootstrap.yml b/config/locales/en-UK.bootstrap.yml new file mode 100644 index 0000000..664de2b --- /dev/null +++ b/config/locales/en-UK.bootstrap.yml @@ -0,0 +1,18 @@ +# Sample localization file for English. Add more files in this directory for other locales. +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +en: + helpers: + actions: "Actions" + links: + back: "Back" + cancel: "Cancel" + confirm: "Are you sure?" + destroy: "Delete" + new: "New" + edit: "Edit" + titles: + edit: "Edit" + save: "Save" + new: "New" + delete: "Delete" diff --git a/config/locales/en-UK.yml b/config/locales/en-UK.yml new file mode 100644 index 0000000..2b87436 --- /dev/null +++ b/config/locales/en-UK.yml @@ -0,0 +1,940 @@ +# [+Project:+] DMPonline v4 +# [+Description:+] This file contains all the text present on DMPonline that is not being retrieve from the database. +# [+Copyright:+] Digital Curation Centre + +en-UK: + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d-%m-%Y" + short: "%d/%m/%Y" + long: "%d %B, %Y" + + day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] + abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] + abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] + # Used in date_select and datetime_select. + order: + - day + - month + - year + + time: + formats: + default: "%a, %d %b %Y %H:%M:%S %z" + short: "%d %b %H:%M" + custom: "%d/%m/%Y %H:%M" + long: "%B %d, %Y %H:%M" + am: "am" + pm: "pm" + + tool_title: "DMPonline" + tool_title2: "DMP title" + dmponline3_text: "DMPonline previous version" + dcc_name: "Digital Curation Centre" + welcome_title: "Welcome." + welcome_text: "

DMPonline has been developed by the Digital Curation Centre to help you write data management plans.

" + screencast_text: "Screencast on how to use DMPonline" + screencast_error_text: "Your browser does not support the video tag." + + admin: + org_title: "Organisation name" + org: "Organisation" + orgs: "Organisations" + org_type: "Organisation type" + org_parent: "Parent organisation" + org_created_message: "Organisation was successfully created." + org_updated_message: "Organisation was successfully updated." + plans: "Plans" + title: "Title" + desc: "Description" + guidance_group: "Guidance group" + no_guidance_group: "No guidance group" + guidance: "Guidance" + guidance_lowercase: "guidance" + guidance_lowercase_on: "guidance on" + name: "Name" + abbrev: "Abbreviation" + question: "Question" + question_format: "Question Format" + questions: "Questions" + template_title: "Template title" + section_title: "Section title" + formatting: "Formatting" + max_pages: "Max Pages" + phase_title: "Phase title" + version_title: "Version title" + user_name: "Username" + firstname: "First name" + surname: "Surname" + user: "User" + user_created: 'User was successfully created.' + user_org_role: "User role on an Organisation" + user_role_type: "User role type" + user_role_type_created: 'User role type was successfully created.' + user_role_type_updated: 'User role type was successfully updated.' + user_role: "User role" + role: "Role" + user_status: "User status" + user_status_created: 'User status was successfully created.' + user_status_updated: 'User status was successfully updated.' + user_type: "User type" + user_type_created: 'User type was successfully created.' + user_type_updated: 'User type was successfully created.' + last_logged_in: "Last logged in" + version_numb: "Version number" + details: "Details" + phases: "Phases" + phase: "Phase" + version: "Version" + versions: "Versions" + sections: "Sections" + section: "Section" + multi_options: "Multiple question options" + templates: "Templates" + template: "Template" + themes: "Themes" + theme: "Theme" + theme_created: 'Theme was successfully created.' + theme_updated: 'Theme was successfully updated.' + sug_answer: "Suggested answer" + sug_answers: "Suggested answers" + old_temp_field: "old template field" + old_theme_field: "old theme field" + token_permission_type: "Token Permission Type" + permission_description: "Permission Description" + token_permission: "Token Permission" + org_token_permission: "Organisation Token Permission" + +# choose_api_permissions: "Choose all API Permissions that apply." + + settings_updated: 'Settings updated successfully' + choose_themes: 'Choose all themes that apply.' + all_themes: 'All themes' + selected_themes: "Selected themes" + choose_templates: 'Choose all templates that apply.' + all_templates: 'All templates' + selected_templates: "Selected templates" + select_question_format: "Select question format" + no_template: 'No template' + no_phase: 'No phase' + no_version: 'No version' + no_section: 'No section' + + org_admin: + admin_area: "Admin area" + admin_details: "Admin Details" + template_label: "Templates" + user_list_label: "Users" + org_details_label: "Organisation details" + org_text: "These are the basic details for your organisation." + org_abbr_help_text_html: "This is what displays as a label on your guidance, e.g. 'Glasgow guidance on Metadata'. It's best to use an abbreviation or short name." + users_list: "List of users" + user_full_name: "Name" + user_name: "Email address" + last_logged_in: "Last logged in" + how_many_plans: "How many plans?" + user_text_html: "Below is a list of users registered for your organisation. You can sort the data by each field." + org_name: "Name" + org_abbr: "Abbreviation" + org_desc: "Description" + org_banner_text: "Top banner text" + org_target_url: "Website" + org_type: "Organisation type" + parent_org: "Main organisation" + last_updated: "Last updated" + desc_help_text_html: "
Please enter information describing your organisation.
" + top_banner_help_text_html: "
Please enter information you would like your users to see while sign in. Do not enter more than 165 characteres.
" + template_desc_help_text_html: "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
" + abbre_help_text: "Please enter an abbreviation to your organisation's name." + target_url_help_text: "Please enter a web address valid." + name_help_text: "Please enter your organisation's name." + guidance_label: "Guidance" + templates_label: "Templates" + add_option_label: "Add option" + add_question_label: "Add question" + add_section_label: "Add section" + remove_option_label: "Remove" + option_order_label: "Order" + option_text_label: "Text" + option_default_label: "Default" + user_org_created: 'User org role was successfully created.' + user_org_updated: 'User org role was successfully updated.' + api_privleges: 'API Privleges?' + + guidance: + guidance_list: "Guidance list" + text_label: "Text" + themes_label: "Themes" + question_label: "Question" + by_theme_or_by_question: "Should this guidance apply:" + by_themes_label: "by themes" + by_question_label: "by question" + template: "Template" + templates: "Templates" + guidance_group_label: "Guidance group" + published: "Published" + created: "Created" + last_updated: "Last updated" + actions: "Actions" + add_guidance: "Add guidance" + created_message: "Guidance was successfully created." + updated_message: "Guidance was successfully updated." + help_text_html: "
Please enter guidance text for this theme.
" + new_label: "New guidance" + view_all_guidance: "View all guidance" + text_help_text_html: "Enter your guidance here. You can include links where needed." + apply_to_help_text_html: "Decide whether your guidance should display by themes (default) or if it only pertains to a specific question in one of the funder templates." + by_themes_help_text_html: "Select which theme(s) this guidance relates to." + by_question_help_text_html: "Select the relevant template, phase, version, section and question from the following dropdown options to define which specific question this guidance should display on." + guidance_group_select_help_text_html: "Select which group this guidance relates to." + guidance_text_html: "

You can write pieces of guidance to be displayed by theme (e.g. generic guidance on storage and backup that should present across the board) or you can write guidance for specific questions. Writing generic guidance by theme saves you time and effort as your advice will be automatically displayed across all templates rather than having to write guidance to accompany each.

+

You will usually want your guidance to display on all templates, however there may be cases where you only want it to show for specific funders e.g. if you have specific instructions for applicants to BBSRC for example. This can be set too if needed.

" + delete_message_html: "You are about to delete '%{guidance_summary}'. Are you sure?" + guidance_group: + add_guidance_group: "Add guidance group" + guidance_group_list: "Guidance group list" + name_label: "Name" + subset: "Optional subset" + subset_eg: "e.g. School/ Department" + all_temp: "All templates" + help_text_add: "Please enter the group title" + subset_option_help_text: "If the guidance is only meant for a subset of users e.g. those in a specific college or institute, check this box. Users will be able to select to display this subset guidance when answering questions in the 'create plan' wizard." + template_help_text_html: "Select which templates you want the guidance to display on. This will usually be all templates." + title_help_text_html: "Add an appropriate name for your guidance group e.g. Glasgow guidance. This name will be used to tell the end user where the guidance has come from e.g. 'Glasgow Guidance on Metadata'" + guidance_group_text_html: "

First create a guidance group. This could be institution wide or a subset e.g. a particular College / School, Institute or department. When you create guidance you'll be asked to assign it to a guidance group.

" + delete_message: "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?" + created_message: "Guidance group was successfully created." + updated_message: "Guidance group was successfully updated." + destroyed_message: "Guidance group was successfully deleted." + templates: + create_template: "Create a template" + new_label: "New template" + template_details: "Template details" + edit_details: "Edit template details" + view_all_templates: "View all templates" + funders_temp: "Funders templates" + title_help_text: "Please enter a title for your template." + section_title_help_text: "Please enter section title" + help_text_html: "
Please enter template description for this theme.
" + create_own_template_text_html: "

If you wish to add an institutional template for a Data Management Plan, use the 'create template' button. You can create more than one template if desired e.g. one for researchers and one for PhD students.

+

Your template will be presented to users within your institution when no funder templates apply. If you want to add questions to funder templates use the 'customise template' options below.

" + create_new_template_text_html: "

To create a new template, first enter a title and description. Once you have saved this you will be presented with options to add one or more phases.

" + desc_help_text_html: "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences" + own_temp: "Own templates" + add_phase_label: "Add new phase +" + view_phase_label: "View phase" + edit_phase_label: "Edit phase" + back_to_edit_phase_label: "Back to edit view" + edit_phase_details_label: "Edit phase details" + phase_details_label: "Phase details" + phase_order_label: "Order of display" + phase_details_text_html: "

Here you set the title that users will see. If you intend to have multiple phases for you DMP, this should be clear in the title and description.

" + phase_title_help_text: "Enter a title for the phase e.g. intial DMP, full DMP... This is what users will see in the tabs when completing a plan. If you only have one phase, call it something generic e.g. Glasgow DMP" + phase_number_help_text: "This allows you to order the phases of your template." + phase_desc_help_text_html: "Enter a basic description. This will be presented to users on the 'Admin Plan' tab, above the summary of the sections and questions which they will be asked to answer." + phase_delete_message: "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?" + phase_new_text_html: "When you create a new phase for your template, a version will automatically be created. Once you complete the form below you will be provided with options to create sections and questions." + versions_label: "Versions" + version_details_label: "Version details" + add_section: "Add section" + new_section: "New section title" + section_title_placeholder: "New section title" + section_desc_help_text_html: "

Enter a basic description. This could be a summary of what is covered in the section or instructions on how to answer. This text will be displayed in the coloured banner once a section is opened to edit.
" + section_number_help_text: "This allows you to order sections." + add_question: "Add question" + created: "Created at" + last_updated: "Last updated" + published_label: "Published" + cannot_publish: "Please ensure you have created at least one phase with a published version." + title_label: "Title" + desc_label: "Description" + actions: "Actions" + customise: "Customise" + edit_customisation: "Edit customisation" + created_message: "Information was successfully created." + updated_message: "Information was successfully updated." + destroyed_message: "Information was successfully deleted." + section_delete_message: "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?" + versions: + clone_versions_label: "Make big changes" + edit_versions_label: "Make small changes" + edit_label: "Edit" + versions_text_html: "A first version is created automatically. If you want to make major changes to published versions later (e.g. add section or questions) please create a new version. If you only want to fix typos or make small changes that do not alter meanings, edit the current version." + desc_help_text_html: "Enter a basic description as an internal reference to describe the difference between versions" + delete_message: "You are about to delete '%{version_title}'. This will affect sections and questions linked to this version. Are you sure?" + edit_alert_label: "Edit alert" + edit_alert_text: "Please consider the kind of changes you are about to make as this plan is already published and might be in use" + questions: + quidance_button: "Guidance" + question_text_label: "Question text" + question_number_label: "Question number" + question_edit_button: "Edit question" + question_delete_button: "Delete question" + answer_format_label: "Answer format" + option_comment_display_checkbox: "Display additional comment area." + option_comment_display: "Additional comment area will be displayed." + option_comment_hide: "No additional comment area will be displayed." + example_answer_label: "Example of answer" + suggested_answer_label: "Suggested answer" + suggested_answer_help_text_html: "You can add an example or suggested answer to help users respond. These will be presented above the answer box and can be copied/ pasted." + suggested_or_example_answer_label: "Suggested answer/ Example" + suggested_or_example_answer_button: "Add suggested answer/ example" + edit_suggested_answer_button: "Edit suggested answer/ example" + delete_suggested_answer_message: "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?" + default_value_label: "Default value" + number_help_text: "This allows you to order questions within a section." + question_format_help_text_html: "You can choose from:
  • - text area (large box for paragraphs);
  • - text field (for a short answer);
  • +
  • - checkboxes where options are presented in a list and multiple values can be selected;
  • +
  • - radio buttons where options are presented in a list but only one can be selected;
  • +
  • - dropdown like this box - only one option can be selected;
  • +
  • - multiple select box allows users to select several options from a scrollable list, using the CTRL key;
" + default_answer_help_text_html: "Anything you enter here will display in the answer box. If you want an answer in a certain format (e.g. tables), you can enter that style here." + themes_label: "Themes" + question_themes_help_text_html: "

Select themes that are relevant to this question.

+

This allows your generic institution-level guidance to be drawn in, as well as that from other sources e.g. the DCC or any Schools/Departments that you provide guidance for.

+

You can select multiple themes by using the CTRL button.

" + default_answer_label: "Default answer" + guidance_label: "Guidance" + question_guidance_help_text_html: "Enter specific guidance to accompany this question. If you have guidance by themes too, this will be pulled in based on your selections below so it's best not to duplicate too much text." + delete_message: "You are about to delete '%{question_text}'. Are you sure?" + question_options_help_text_html: "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box." + + + + + + helpers: + home: "Home" + return_home: "Return to the home page" + admin_area: "Super admin area" + edit_profile: "Edit profile" + view_plans_label: "View plans" + create_plan_label: "Create plan" + about_us_label: "About" + roadmap_label: "Future plans" + help_label: "Help" + contact_label: "Contact" + jisc: "The DCC is funded by" + format: "format" + + sign_in: "Sign in" + sign_out: "Sign out" + sign_up: "Sign up" + sign_up_text: "New to DMPonline? Sign up today." + signed_in: "Signed in as " + institution_sign_in_link: "Or, sign in with your institutional credentials" + institution_sign_in: " (UK users only)" + + user_name: "Email address" + email: "Email" + subject: "Subject" + message: "Message" + valid_email: "You must enter a valid email address." + user_details_text_html: "

Please note that your email address is used as your username. If you change this, remember to use your new email address on sign in.

" + user_details_paragraph_html: "You can edit any of the details below." + remember_me: "Remember me" + org_not_listed: "My organisation isn't listed." + + password: "Password" + current_password: "Current password" + new_password: "New password" + password_conf: "Password confirmation" + change_password: "Change your password" + forgot_password: "Forgot your password?" + password_too_small: "Your password must contain at least 8 characters." + password_no_match: "This must match what you entered in the previous field." + no_pass_instructions: "Didn't receive confirmation instructions?" + no_unlock_instructions: "Didn't receive unlock instructions?" + send_password_info: "Reset password instructions" + edit_password_info: "If you would like to change your password please complete the following fields." + accept_terms_html: " I accept the terms and conditions *" + you_must_accept: 'You must accept the terms and conditions to register.' + email_already_registered: 'That email address is already registered.' + email_must_valid_confirmation_message: "This must be a valid email address - a message will be sent to it for confirmation." + error_registration_check: 'Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long.' + + api_token: 'API token' + api_info: 'API Information' + api_use: 'How to use the API' + api_granted: 'You have been granted permission by your organisation to use our API.' + api_view_token: 'Your API token and instructions for using the API endpoints can be found here.' + api_mail_subject: 'API Permission Granted' + + text_area: "Text area" + text_field: "Text field" + radio_buttons: "Radio buttons" + checkbox: "Check box" + dropdown: "Dropdown" + multi_select_box: "Multi select box" + export: "Export" + + about: + by: "By " + on: " on " + read_more: "Read more on the " + + mailer: + permission_relating: "Your permissions relating to " + changed: " have changed. You now have " + access: "access." + access_to: "Your access to " + removed: " has been removed." + given: "You have been given " + access_two: " access to " + + truncate_continued: "... (continued)" + security_check: "Security check" + error: "Error!" + comment: "Comment" + send: "Send" + yes_label: "Yes" + no_label: "No" + ok_label: "Ok" + none: "None" + false_lowercase: "false" + title: "Title" + note: "Note" + me: "Me" + view: "View" + desc: "Description" + save: "Save" + preview: "Preview" + saving: "Saving..." + loading: "Loading..." + removing: "Removing..." + unsaved: "Unsaved changes" + unlink_account: "Unlink account" + submit: + edit: "Edit" + create: "Create" + update: "Update" + cancel: "Cancel" + save: "Save" + delete: "Delete" + back: "Back" + discard: "Discard" + publish: "Publish" + + before_submitting_consider: "Before submitting, please consider:" + name: "Name" + first_name: "First name" + last_name: "Last name" + first_name_help_text: "Please enter your first name." + surname_help_text: "Please enter your surname or family name." + owner: "Owner" + orcid_id: "ORCID number" + orcid_html: "ORCID number is a persistent digital identifier that distinguishes each researcher, more info." + sign_up_shibboleth_alert_text_html: "DMPonline doesn't recognise your institutional credentials - either you haven't created an account with us or you haven't linked these details to your existing account.
+ --> If you do not have an account with DMPonline, please complete the form below.
+ --> If you have an account with DMPonline, please Sign in so we can link your account to your institutional credentials.
+ Once you have created and/or linked your account, you'll be able to sign in with your institutional credentials directly." + shibboleth_linked_text: "Your account is linked to your institutional credentials." + shibboleth_to_link_text: "Link your DMPonline account to your institutional credentials (UK users only)" + shibboleth_unlink_label: "Unlink your institutional credentials" + shibboleth_unlink_alert: "Unlink institutional credentials alert" + shibboleth_unlink_dialog_text: "

You are about to unlink DMPonline of your institutional credentials, would you like to continue?

" + + select_phase: "Select a phase" + select_version: "Select a version" + select_section: "Select a section" + select_question: "Select a question" + select_template: "Select a template" + + main_email: + from: 'info@dcc.ac.uk' + access_given: "You have been given access to a Data Management Plan" + permission_changed: "DMP permissions changed" + access_removed: "DMP access removed" + + + section_label: "Section" + sections_label: "Sections" + questions_label: "Questions" + answers_label: "Answers" + answer_questions: "Answer questions" + last_edit: "Last edited" + select_action: "Select an action" + answered_by: "Answered " + answered_by_part2: " by " + suggested_answer: "Suggested answer" + suggested_example: "Example answer" + notanswered: "Not answered yet" + noquestionanswered: "No questions have been answered" + guidance: "Guidance" + policy_expectations: "Policy Expectations" + export: "Export" + guidance_accordion_label: "Guidance" + add_comment_accordion_label: "Share note" + comment_accordion_label: "Notes" + + comments: + add_comment_label: "Add note" + add_comment_text: "Share note with collaborators" + comment_label: "Note" + comments_label: "Notes" + view_label: "View" + edit_label: "Edit" + retract_label: "Remove" + clear_label: "Remove" + commented_by: "Noted by:" + archive_own_comment_question: "Are you sure you would like to remove this note?" + archive_own_comment_button_label: "Remove" + archive_comment_question: "Are you sure you would like to remove this note?" + archive_comment_button_label: "Remove" + clear_by: "Note removed by" + retracted: "Note removed by you" + comment_created: 'Comment was successfully created.' + comment_updated: 'Comment was successfully updated.' + comment_removed: 'Comment has been removed.' + + + org_type: + funder: "Funder" + institution: "Institution" + project: "Project" + organisation: "Organisation" + org_name: "Organisation name" + school: "School" + publisher: "Publisher" + other_guidance: "Other guidance" + template: "Template" + templates: "Templates" + child: "Unit" + other_org_help_text: "Please enter the name of your organisation." + + + project: + create: "Create plan" + edit: "Edit plan details" + grant_title: "Grant number" + grant_help_text: "Grant reference number if applicable [POST-AWARD DMPs ONLY]" + not_applicable: "Not applicable/not listed." + multi_templates: "There are a number of possible templates you could use. Please choose one." + project_name: "Plan name" + my_project_name: "My plan" + success: "Plan was successfully created." + success_update: "Plan was successfully updated." + principal_investigator: "Principal Investigator/Researcher" + principal_investigator_help_text: "Name of Principal Investigator(s) or main researcher(s) on the project." + principal_investigator_id: "Principal Investigator/Researcher ID" + principal_investigator_id_help_text: "E.g ORCID http://orcid.org/." + funder_help_text: "Research funder if relevant" + funder_name: "Funder name" + project_question_desc_label: "Summary about the questions" + tab_plan: "Plan details" + tab_export: "Export" + export_text_html: "

From here you can download your plan in various formats. This may be useful if you need to submit your plan as part of a grant application.
+Select what format you wish to use and click to 'Export'.

" + questions_answered: "questions answered" + not_saved_answers_text_alert: "You have altered answers but have not saved them:" + not_saved_answers_confirmation_alert: "Would you like to save them now?" + not_saved_answers_header: "Unsaved answers" + answer_recorded: 'Answer was successfully recorded.' + answer_error: 'There was an error saving the answer.' + answer_no_change: 'No change in answer content - not saved.' + project_data_contact: "Plan data contact" + project_data_contact_help_text: "Name (if different to above), telephone and email contact details" + project_name_help_text: "If applying for funding, state the name exactly as in the grant proposal." + project_desc_help_text_html: "

Questions to consider:

  • - What is the nature of your research project?
  • - What research questions are you addressing?
  • - For what purpose are the data being collected or created?

Guidance:

Briefly summarise the type of study (or studies) to help others understand the purposes for which the data are being collected or created.

" + project_identifier: "ID" + project_identifier_help_text: "A pertinent ID as determined by the funder and/or institution." + project_static_info: "This plan is based on:" + projects_title: "My plans" + project_settings_text: "The items you select here will be displayed in the table below. You can sort the data by each of these headings or filter by entering a text string in the search box." + project_text_when_no_project: "

Welcome.
You are now ready to create your first DMP.
Click the 'Create plan' button below to begin.

" + project_text_when_project: "

The table below lists the plans that you have created, and any that have been shared with you by others.
These can be edited, shared, exported or deleted at anytime.

" + project_details_text_html: "This page gives you an overview of your plan. It tells what your plan is based on and gives an overview of the questions that you will be asked." + project_details_editing_text_html: "Please fill in the basic project details below and click 'Update' to save" + confirm_delete_text: "Are you sure you wish to delete this plan? If the plan is being shared with other users, by deleting it from your list, the plan will be deleted from their plan list as well" + confirmation_text: "Confirm plan details" + confirmation_text_desc: "Where your funder or institution doesn't have specific requirements (or if you left these options blank), you will see the DCC Checklist. This offers a generic set of DMP questions and guidance. For more details see: DMP checklist 2013." + confirmation_button_text: "Yes, create plan" + default_confirmation_text_desc: "You have selected the Default DMP, which is based on the DCC Checklist. This offers a generic set of DMP questions and guidance. For more details see: DMP checklist 2013." + default_confirmation_button_text: "Create plan" + alert_default_template_text_html: "Please note: %{org_name} provides a DMP template. If you wish to use it select 'Cancel', otherwise select 'Create plan'" + share: + tab_share: "Share" + shared_label: "Shared?" + share_text_html: "

You can give other people access to your plan here. There are three permission levels.

  • Users with \"read only\" access can only read the plan.
  • Editors can contribute to the plan.
  • Co-owners can also contribute to the plan, but additionally can edit the plan details and control access to the plan.

Add each collaborator in turn by entering their email address below, choosing a permission level and clicking \"Add collaborator\".

Those you invite will receive an email notification that they have access to this plan, inviting them to register with DMPonline if they don't already have an account. A notification is also issued when a user's permission level is changed.

" + collaborators: "Collaborators" + add_collaborator: "Add collaborator" + add: "Add" + permissions: "Permissions" + permissions_desc: "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access." + remove: "Remove user access" + confirmation_question: "Are you sure?" + owner: "Owner" + co_owner: "Co-owner" + edit: "Edit" + read_only: "Read only" + locked_section_text: "This section is locked for editing by " + create_page: + title: "Create a new plan" + desc_html: "

Please select from the following drop-downs so we can determine what questions and guidance should be displayed in your plan.

+

If you aren't responding to specific requirements from a funder or an institution, select here to write a generic DMP based on the most common themes.

" + default_template: "Default DMP" + funders_question: "If applying for funding, select your research funder." + funders_question_description: "Otherwise leave blank." + other_funder_name_label: "Name of funder, if applicable." + institution_question: "To see institutional questions and/or guidance, select your organisation." + institution_question_description: "You may leave blank or select a different organisation to your own." + other_guidance_question: "Tick to select any other sources of guidance you wish to see." + configure: "Configure" + columns: + name: "Name" + owner: "Owner" + shared: "Shared?" + template_owner: "Template Owner" + last_edited: "Last edited" + identifier: "Identifier" + grant_number: "Grant number" + principal_investigator: "Principal Investigator / Researcher" + data_contact: "Plan data contact" + description: "Description" + filter: + placeholder: "Filter plans" + submit: "Filter" + cancel: "Cancel" + no_plans_match: "No plans match '%{filter}'" + no_matches: "No matches" + user_added: "User added to project" + invitation_success: 'Invitation issued successfully.' + enter_email: "Please enter an email address" + sharing_updated: 'Sharing details successfully updated.' + access_removed: 'Access removed' + update_success: 'Project was successfully updated.' + create_success: 'Project was successfully created.' + details_update_success: "Details successfully updated." + choose_template: "Choose a template" + + plan: + export: + pdf: + question_not_answered: "Question not answered." + generated_by: "This document was generated by DMPonline (http://dmponline.dcc.ac.uk)" + space_used: "approx. %{space_used}% of available space used (max %{num_pages} pages)" + space_used_without_max: "approx. %{space_used}% of available space used" + project_name: "Project Name" + project_identifier: "Project Identifier" + grant_title: "Grant Title" + principal_investigator: "Principal Investigator / Researcher" + project_data_contact: "Project Data Contact" + project_description: "Description" + funder: "Funder" + institution: "Institution" + not_valid_format: '%{value}% is not a valid format' + + settings: + title: "Settings" + projects: + title: "Settings - My plans" + desc: "The table below lists the available columns that can be shown on the 'My plans' list. Choose which you would like to appear." + errors: + no_name: "'name' must be included in column list." + duplicate: "Duplicate column name. Please only include each column once." + unknown: "Unknown column name." + plans: + title: "Plan title" + reset: "Reset" + description: "Description" + custom_formatting: "(Using custom PDF formatting values)" + template_formatting: "(Using template PDF formatting values)" + default_formatting: "(Using default PDF formatting values)" + included_elements: "Included Elements" + pdf_formatting: "PDF Formatting" + font_face: "Face" + font_size: "Size" + font: "Font" + margin: "Margin" + margins: + top: "Top" + bottom: "Bottom" + left: "Left" + right: "Right" + max_pages: "Maximum number of pages" + errors: + missing_key: "A required setting has not been provided" + invalid_margin: "Margin value is invalid" + negative_margin: "Margin cannot be negative" + unknown_margin: "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'" + invalid_font_size: "Invalid font size" + invalid_font_face: "Invalid font face" + unknown_key: "Unknown formatting setting" + invalid_max_pages: "Invalid maximum pages" + no_access_account: "This account does not have access to that plan." + + about_page: + title: "About DMPonline" + tab_1: "Background" + tab_2: "Latest news" + + body_text_tab_1_html: "

Funding bodies increasingly require their grant-holders to produce Data Management Plans(DMP), both during the bid-preparation stage and after funding has been secured. DMPonline has been produced by the UK's Digital Curation Centre to help research teams respond to this requirement, and any expectations that their institution or others may apply.

+

The DCC has worked closely with research funders and universities to produce a tool that assists researchers to produce an effective data management plan (DMP) to cater for the whole lifecycle of a project, from bid-preparation stage through to completion.

+
+

How the tool works

+

There are a number of templates within the tool that represent the requirements of different funders and institutions. Users are asked three questions at the outset so we can determine the appropriate template to display (e.g. the ESRC template when applying for an ESRC grant). Guidance is provided to help you interpret and answer the questions. This guidance is provided by researcher funders, universities and disciplines.

+
+

Getting Started

+

If you have an account please sign in and start creating or editing your DMP.

+

If you do not have a DMPonline account, click on 'Sign up' on the homepage.

+

Please visit the 'Help' page for guidance.

+
+

Additional Information

+

We are constantly improving the user interface and functionality of DMPonline. + If you would like to contribute with feedback and suggestions, please contact us by emailing + dmponline@dcc.ac.uk. You can also report bugs and request new features directly on GitHub

+

If you need to access plans from the earlier version of the tool please visit DMPonline v3.

" + + body_text_tab_2_html: "

DMPonline stories from the DCC website


" + + help_page: + title: "Help" + tab_1: "On DMPonline" + tab_2: "On data management planning" + body_text_tab_2_html: "

Useful resources on Data Management Planning

+ +

Example Data Management Plans

+
    +
  • + Technical plan submitted to the AHRC [PDF, 7 pages]
    + A DMP submitted by a researcher from the University of Bristol, also including comments from the reviewers +
  • +
  • + Two social science DMPs [PDF, 7 pages]
    + Example plans from researchers at the University of Leeds, shared as part of the Leeds RoaDMaP training materials +
  • +
  • + Health sciences DMP [PDF, 11 pages]
    + Example DMP produced by the DATUM for Health RDM training project +
  • +
  • + Psychology DMP [PDF, 11 pages]
    + A very detailed, fictional psychology DMP produced by the DMTpsych RDM training project, based on a seminal psychology experiment +
  • +
  • + UCSD Example Data Management Plans [webpage]
    + Over 20 example plans submitted to the National Science Foundation (NSF) in the United States by academics at UC San Diego +
  • +
  • + Colorado School of Mines examples [webpage]
    + A variety of US example DMPs from Mines and elsewhere +
  • +
  • + NSF data management plans [webpage]
    + 5 DMPs submitted to the NSF, shared by the DataOne initiative +
  • +
  • + Biology and chemistry DMPs [webpage]
    + Three example DMPs from the USA shared by NECDMC, an instructional tool for teaching RDM to undergraduates, graduate students, and researchers in the health sciences, sciences and engineering. +
  • +
+

Useful guides on Research Data Management in general

+
    +
  • + Managing and Sharing Data: best practice for researchers [PDF, 36 pages]
    + A guide by the UK Data Service covering a range of topics including data formats, documentaion, ethics, copyright and data sharing. +
  • +
  • + How to Cite Datasets and Link to Publications [PDF, 12 pages]
    + A guide by the Digital Curation Centre giving practical guidelines on how to cite data and the different tools and infrastructure that can be used to support data citation. +
  • +
  • + How to License Research Data [PDF, 16 pages]
    + A guide by the Digital Curation Centre that outlines different types of licenses, the pros and cons of each and how they can be applied. +
  • +
  • + How to Appraise and Select Research Data for Curation [PDF, 8 pages]
    + A guide by ANDS and the DCC on how to select which data to keep for long-term preservation, sharing and reuse. The guide puts forward several criteria to aid selection decisions. +
  • +
  • + Research Data MANTRA [online resource]
    + An online training course designed for researchers or others planning to manage digital data as part of the research process. The course includes a number of software practicals on using SPSS, R, ArcGIS and NVivo. +
  • +
" + body_text_tab_1_html: "

When you login to DMPonline you will be directed to the 'My plans' page. From here you can edit, share, export or delete any of your plans. You will also see plans that have been shared with you by others.

+

Create a plan

+

To create a plan, click the 'Create plan' button from the 'My plans' page or the top menu. Select options from the drop-down menus and tickboxes to determine what questions and guidance you should be presented with. Confirm your selection by clicking 'Yes, create plan'

+

Write your plan

+

The tabbed interface allows you to navigate through different functions when editing your plan.

+
    +
  • - 'Plan details' includes basic administrative details, tells you what sets of questions and guidance your plan is based on and gives you an overview to the questions that you will be asked.
  • +
  • - The following tab(s) present the questions to answer. There may be more than one tab if your funder or university asks different sets of questions at different stages e.g. at grant application and post-award.
  • +
  • - The 'Share' tab allows you to invite others to read or contribute to your plan.
  • +
  • - The 'Export' tab allows you to download your plan in various formats. This may be useful if you need to submit your plan as part of a grant application.
  • +
+

When viewing any of the question tabs, you will see the different sections of your plan displayed. Click into these in turn to answer the questions. You can format your responses using the text editing buttons.

+

Guidance is displayed in the right-hand panel. Click the '+' symbol to view this.

+

Remember to 'save' your responses before moving on.

+

Share plans

+

Insert the email address of any collaborators you would like to invite to read or edit your plan. Set the level of permissions you would like to grant them via the drop-down options and click to 'Add collaborator'

+

Export plans

+

From here you can download your plan in various formats. This may be useful if you need to submit your plan as part of a grant application. Choose what format you would like to view/download your plan in and click to export. When you login to DMPonline you will be directed to the 'My plans' page. From here you can edit, share, export or delete any of your plans. You will also see plans that have been shared with you by others.

+

Legacy data

+

If you need to access plans from the earlier version of the tool please visit DMPonline v3.

" + + contact_page: + title: "Contact us" + intro_text_html: "

DMPonline is provided by the Digital Curation Centre. You can find out more about us on our website. If you would like to contact us about DMPonline, please enter your query in the form below or email dmponline@dcc.ac.uk.

" + github_text_html: "

If you have a feature request or think you have found a bug, please check out the list of issues on GitHub. If your issue isn't listed there, please add it; if it is, please add a comment if you have more information or just to let us know how important it is to you. This will help us to help us prioritise future developments.

" + address_text_html: "
    +
  • Digital Curation Centre
  • +
  • Level 7, Appleton Tower
  • +
  • Crichton Street
  • +
  • Edinburgh
  • +
  • EH8 9LE
  • +
  • UK
  • +
+

Tel. +44 (0) 131 651 1239

+

Email dmponline@dcc.ac.uk

" + + roadmap_page: + title: "Future plans" + tab_1: "Releases" + tab_2: "Get involved" + body_text_tab_1_html: "

The DCC is collaborating with the DMPTool team to develop a joint codebase for Data Management Planning called DMP Roadmap. Both of our tools will be delivered using this in the future. We've agreed what features need to be included and are planning a few sprints to deliver these. The initial release will include all of the main priorities we already had flagged, including:

+
    +
  • - APIs to create plans, extract guidance and generate statistics from DMPonline
  • +
  • - Multi-lingual support so foreign language versions can be presented
  • +
  • - Locales to provide a refined set of content for particular countries or other contexts
  • +
  • - A lifecycle to indicate the status of DMPs and allow institutional access to plans
  • +
  • - Support for reviewing Data Management Plans
  • +
+

DMPonline has an active and growing user base, and we are grateful to the members who suggest ideas for new and improved features. If you would like to help shape our future plans, please join the user group. More information on how you can engage with us is available under the 'Get involved' tab.

+
+

Current release

+

The current version of DMPonline is 4.2. This was released in August 2015 and included Institutional branding, optional guidance for funders, improvements to the question area, improvements to the admin interface, GitHub pull requests, new seed file, and an update of the gemfile.

+ +

The code is available on GitHub

+
+

Previous release

+

The previous version of DMPonline is 4.1. This was released in May 2015 and included a comment feature, improved guidance on signing in with institutional credentials, enhanced deployment guidance and proposed methods for internationalisation. Full details can be found in the release note and associated documents.

+ +
" + + body_text_tab_2_html: "

DMPonline is developed and maintained by the UK Digital Curation Centre. We’re a small team, and are happy to collaborate with others. There are various ways you can get involved:

+

Join the user group

+

We run a listserv for the DMPonline user group that you can request to join. We also host periodic meetings to consult on our plans. Being part of the user group gives you the opportunity to be informed about future developments and to provide feedback to help shape our plans.

+

Our user group sessions are usually focused around a certain topic (e.g. fleshing out use cases for an API) so invites are sent based on your areas of expertise. It is helpful for us to know your role and interests to invite relevant people to each session. Please introduce yourself on the list and share your ideas.

+

Notes from previous user group sessions are provided below:

+ +

Please let us know your interests and share your ideas for future developments via the mailing list so the community as a whole can feedback on them.

+
+

Customise DMPonline

+

DMPonline can be customised by institutions and disciplines. You can add templates for users in your organisation and tailored guidance that explains local support and services. Example answers can also be offered to help users understand what to write in a Data Management Plan. To do this you’ll need to request admin access, so please email us on dmponline@dcc.ac.uk.

+

Futher guidance on customising DMPonline is available on the DCC website.

+
+

Contribute to the code

+

DMPonline is a Ruby on Rails application. The source code is made available under a GNU Affero General Public License. This permits others to reuse the code freely, but obligates you to share the source code for any extensions in the same way. Please inform us if you install an instance of DMPonline and offer your contributions back to the community.

+

If you install an instance of DMPonline we require that you credit the DCC as originators of the tool. We recommend that the acknowledgement takes the form of the DMPonline logo with a link back to the DCC-hosted version of the tool.

+

We are willing to work with external developers to add new features to the tool. We are also open to delivering new features on a chargeable basis. If there are extensions you would like to see prioritised and have resource to support additional developer effort, please contact us on dmponline@dcc.ac.uk to negotiate terms.

+
+

Support our work

+

We are impressed by the uptake of DMPonline both in the UK and internationally and are really keen to hear how you are using the tool and promoting it in your context. We are aware that others have run training courses, developed guidance materials and advocated use of the tool. Please notify us of this as it helps to show impact.

+

We are currently investigating options for revenue generation. This will help us serve the increased demand more effectively and safeguard the long-term sustainability of DMPonline. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.

" + + terms_page: + title: "Terms of use" + body_text_html: "
+

The Digital Curation Centre ('DCC') is a consortium supported by Jisc and based at the Universities of Edinburgh, Glasgow and Bath. Our primary constituency is the UK research community, particularly the higher and further education sector.

+
+

DMPonline

+
+

DMPonline ('the tool', 'the system') is a tool developed by the DCC as a shared resource for the research community. It is hosted at the University of Edinburgh.

+
+

Your personal details

+
+

In order to help identify and administer your account with DMPonline, we need to store your email address. We may also use it to contact you to obtain feedback on your use of the tool, or to inform you of the latest developments or releases. The information may be transferred between the DCC partner institutions but only for legitimate DCC purposes. We will not sell, rent or trade any personal information you provide to us.

+
+

Privacy policy

+
+

The information you enter into this system can be seen by you, people you have chosen to share access with, and - solely for the purposes of maintaining the service - system administrators at the University of Edinburgh. We compile anonymised, automated and aggregated information from plans, but we will not directly access, make use of, or share your content with anyone else without your permission. Authorised officers of your home institution may access your plans for specific purposes - for example, to track compliance with funder/institutional requirements or to calculate storage requirements.

+
+

Freedom of Information

+
+

The University of Edinburgh holds your plans on your behalf, but they are your property and responsibility. Any FOI applicants will be referred back to your home institution.

+
+

Passwords

+
+

Your password is stored in encrypted form and cannot be retrieved. If forgotten it has to be reset.

+
+

Cookies

+
+

Please note that DMPonline uses Cookies. Further information about Cookies and how we use them is available on the main DCC website.

+
+
+
+

Use of the tool indicates that you understand and agree to these terms and conditions.

" + + js: + question_text_empty: 'Question text is empty, please enter your question.' + add_guidance_text: "add guidance text" + select_question: "select a question" + select_at_least_one_theme: "select at least one theme" + select_guidance_group: "select a guidance group" + enter_up_to: "Please only enter up to 165 characters, you have used" + if_using_url_try: "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller." + you_have_unsaved_in_sections: 'You have unsaved answers in the following sections:\n' + + custom_devise: + resend_confirmation: "Resend confirmation instructions" + welcome_to_DMP: "Welcome to DMPonline" + thank_you_and_confirm: "Thank you for registering at DMPonline. Please confirm your email address:" + click_to_confirm: "Click here to confirm your account" + 1st_part_copy: "(or copy" + 2nd_part_copy: "into your browser)." + colleague_invited_you: "A colleague has invited you to contribute to their Data Management Plan at" + click_to_accept: "Click here to accept the invitation" + ignore_wont_be_created: "

If you don't want to accept the invitation, please ignore this email.
+ Your account won't be created until you access the link above and set your password.

" + 1st_part_change_password: "Someone has requested a link to change your" + 2nd_part_change_password: "password. You can do this through the link below." + ignore_password_wont_be_changed: "

If you didn't request this, please ignore this email.

+

Your password won't change until you access the link above and create a new one.

" + hello: "Hello" + 1st_part_locked: "Your " + 2nd_part_locked: " account has been locked due to an excessive number of unsuccessful sign in attempts." + click_to_unlock: "Click the link below to unlock your account:" + unlock: 'Unlock my account' + waiting_for_confirmation: "Currently waiting confirmation for: " + resend_unlock: "Resend unlock instructions" + + api: + bad_credentials: '{"Error":"Bad credentials"}' + org_dosent_exist: '{"Error":"Organisation does not exist"}' + org_not_funder: '{"Error":"Organisation specified is not a funder"}' + org_multiple_templates: '{"Error":"Organisation has more than one template and template name unspecified or invalid"}' + no_auth_for_endpoint: '{"Error":"You do not have authorisation to view this endpoint"}' + bad_resource: '{"Error":"You do not have authorisation to view this resource"}' + diff --git a/config/locales/en.bootstrap.yml b/config/locales/en.bootstrap.yml deleted file mode 100644 index 664de2b..0000000 --- a/config/locales/en.bootstrap.yml +++ /dev/null @@ -1,18 +0,0 @@ -# Sample localization file for English. Add more files in this directory for other locales. -# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. - -en: - helpers: - actions: "Actions" - links: - back: "Back" - cancel: "Cancel" - confirm: "Are you sure?" - destroy: "Delete" - new: "New" - edit: "Edit" - titles: - edit: "Edit" - save: "Save" - new: "New" - delete: "Delete" diff --git a/config/locales/en.yml b/config/locales/en.yml deleted file mode 100644 index f2c4dcc..0000000 --- a/config/locales/en.yml +++ /dev/null @@ -1,902 +0,0 @@ -# [+Project:+] DMPonline v4 -# [+Description:+] This file contains all the text present on DMPonline that is not being retrieve from the database. -# [+Copyright:+] Digital Curation Centre - -en: - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d-%m-%Y" - short: "%d/%m/%Y" - long: "%d %B, %Y" - - day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] - abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] - abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] - # Used in date_select and datetime_select. - order: - - day - - month - - year - - time: - formats: - default: "%a, %d %b %Y %H:%M:%S %z" - short: "%d %b %H:%M" - custom: "%d/%m/%Y %H:%M" - long: "%B %d, %Y %H:%M" - am: "am" - pm: "pm" - - tool_title: "DMPonline" - dmponline3_text: "DMPonline previous version" - dcc_name: "Digital Curation Centre" - welcome_title: "Welcome." - welcome_text: "

DMPonline has been developed by the Digital Curation Centre to help you write data management plans.

" - screencast_text: "Screencast on how to use DMPonline" - screencast_error_text: "Your browser does not support the video tag." - - admin: - org_title: "Organisation name" - org: "Organisation" - orgs: "Organisations" - org_type: "Organisation type" - org_parent: "Parent organisation" - org_created_message: "Organisation was successfully created." - org_updated_message: "Organisation was successfully updated." - plans: "Plans" - title: "Title" - desc: "Description" - guidance_group: "Guidance group" - no_guidance_group: "No guidance group" - guidance: "Guidance" - name: "Name" - abbrev: "Abbreviation" - question: "Question" - question_format: "Question Format" - questions: "Questions" - template_title: "Template title" - section_title: "Section title" - formatting: "Formatting" - max_pages: "Max Pages" - phase_title: "Phase title" - version_title: "Version title" - user_name: "Username" - firstname: "First name" - surname: "Surname" - user: "User" - user_created: 'User was successfully created.' - user_org_role: "User role on an Organisation" - user_role_type: "User role type" - user_role_type_created: 'User role type was successfully created.' - user_role_type_updated: 'User role type was successfully updated.' - user_role: "User role" - role: "Role" - user_status: "User status" - user_status_created: 'User status was successfully created.' - user_status_updated: 'User status was successfully updated.' - user_type: "User type" - user_type_created: 'User type was successfully created.' - user_type_updated: 'User type was successfully created.' - last_logged_in: "Last logged in" - version_numb: "Version number" - details: "Details" - phases: "Phases" - phase: "Phase" - version: "Version" - versions: "Versions" - sections: "Sections" - section: "Section" - multi_options: "Multiple question options" - templates: "Templates" - template: "Template" - themes: "Themes" - theme: "Theme" - theme_created: 'Theme was successfully created.' - theme_updated: 'Theme was successfully updated.' - sug_answer: "Suggested answer" - sug_answers: "Suggested answers" - old_temp_field: "old template field" - old_theme_field: "old theme field" - token_permission_type: "Token Permission Type" - permission_description: "Permission Description" - token_permission: "Token Permission" - org_token_permission: "Organisation Token Permission" - - settings_updated: 'Settings updated successfully' - choose_themes: 'Choose all themes that apply.' - all_themes: 'All themes' - selected_themes: "Selected themes" - choose_templates: 'Choose all templates that apply.' - all_templates: 'All templates' - selected_templates: "Selected templates" - select_question_format: "Select question format" - no_template: 'No template' - no_phase: 'No phase' - no_version: 'No version' - no_section: 'No section' - - org_admin: - admin_area: "Admin area" - admin_details: "Admin Details" - template_label: "Templates" - user_list_label: "Users" - org_details_label: "Organisation details" - org_text: "These are the basic details for your organisation." - org_abbr_help_text_html: "This is what displays as a label on your guidance, e.g. 'Glasgow guidance on Metadata'. It's best to use an abbreviation or short name." - users_list: "List of users" - user_full_name: "Name" - user_name: "Email address" - last_logged_in: "Last logged in" - how_many_plans: "How many plans?" - user_text_html: "Below is a list of users registered for your organisation. You can sort the data by each field." - org_name: "Name" - org_abbr: "Abbreviation" - org_desc: "Description" - org_banner_text: "Top banner text" - org_target_url: "Website" - org_type: "Organisation type" - parent_org: "Main organisation" - last_updated: "Last updated" - desc_help_text_html: "
Please enter information describing your organisation.
" - top_banner_help_text_html: "
Please enter information you would like your users to see while sign in. Do not enter more than 165 characteres.
" - template_desc_help_text_html: "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
" - abbre_help_text: "Please enter an abbreviation to your organisation's name." - target_url_help_text: "Please enter a web address valid." - name_help_text: "Please enter your organisation's name." - guidance_label: "Guidance" - templates_label: "Templates" - add_option_label: "Add option" - add_question_label: "Add question" - add_section_label: "Add section" - remove_option_label: "Remove" - option_order_label: "Order" - option_text_label: "Text" - option_default_label: "Default" - user_org_created: 'User org role was successfully created.' - user_org_updated: 'User org role was successfully updated.' - guidance: - guidance_list: "Guidance list" - text_label: "Text" - themes_label: "Themes" - question_label: "Question" - by_theme_or_by_question: "Should this guidance apply:" - by_themes_label: "by themes" - by_question_label: "by question" - template: "Template" - templates: "Templates" - guidance_group_label: "Guidance group" - published: "Published" - created: "Created" - last_updated: "Last updated" - actions: "Actions" - add_guidance: "Add guidance" - created_message: "Guidance was successfully created." - updated_message: "Guidance was successfully updated." - help_text_html: "
Please enter guidance text for this theme.
" - new_label: "New guidance" - view_all_guidance: "View all guidance" - text_help_text_html: "Enter your guidance here. You can include links where needed." - apply_to_help_text_html: "Decide whether your guidance should display by themes (default) or if it only pertains to a specific question in one of the funder templates." - by_themes_help_text_html: "Select which theme(s) this guidance relates to." - by_question_help_text_html: "Select the relevant template, phase, version, section and question from the following dropdown options to define which specific question this guidance should display on." - guidance_group_select_help_text_html: "Select which group this guidance relates to." - guidance_text_html: "

You can write pieces of guidance to be displayed by theme (e.g. generic guidance on storage and backup that should present across the board) or you can write guidance for specific questions. Writing generic guidance by theme saves you time and effort as your advice will be automatically displayed across all templates rather than having to write guidance to accompany each.

-

You will usually want your guidance to display on all templates, however there may be cases where you only want it to show for specific funders e.g. if you have specific instructions for applicants to BBSRC for example. This can be set too if needed.

" - delete_message_html: "You are about to delete '%{guidance_summary}'. Are you sure?" - guidance_group: - add_guidance_group: "Add guidance group" - guidance_group_list: "Guidance group list" - name_label: "Name" - subset: "Optional subset" - subset_eg: "e.g. School/ Department" - all_temp: "All templates" - help_text_add: "Please enter the group title" - subset_option_help_text: "If the guidance is only meant for a subset of users e.g. those in a specific college or institute, check this box. Users will be able to select to display this subset guidance when answering questions in the 'create plan' wizard." - template_help_text_html: "Select which templates you want the guidance to display on. This will usually be all templates." - title_help_text_html: "Add an appropriate name for your guidance group e.g. Glasgow guidance. This name will be used to tell the end user where the guidance has come from e.g. 'Glasgow Guidance on Metadata'" - guidance_group_text_html: "

First create a guidance group. This could be institution wide or a subset e.g. a particular College / School, Institute or department. When you create guidance you'll be asked to assign it to a guidance group.

" - delete_message: "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?" - created_message: "Guidance group was successfully created." - updated_message: "Guidance group was successfully updated." - destroyed_message: "Guidance group was successfully deleted." - templates: - create_template: "Create a template" - new_label: "New template" - template_details: "Template details" - edit_details: "Edit template details" - view_all_templates: "View all templates" - funders_temp: "Funders templates" - title_help_text: "Please enter a title for your template." - section_title_help_text: "Please enter section title" - help_text_html: "
Please enter template description for this theme.
" - create_own_template_text_html: "

If you wish to add an institutional template for a Data Management Plan, use the 'create template' button. You can create more than one template if desired e.g. one for researchers and one for PhD students.

-

Your template will be presented to users within your institution when no funder templates apply. If you want to add questions to funder templates use the 'customise template' options below.

" - create_new_template_text_html: "

To create a new template, first enter a title and description. Once you have saved this you will be presented with options to add one or more phases.

" - desc_help_text_html: "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences" - own_temp: "Own templates" - add_phase_label: "Add new phase +" - view_phase_label: "View phase" - edit_phase_label: "Edit phase" - back_to_edit_phase_label: "Back to edit view" - edit_phase_details_label: "Edit phase details" - phase_details_label: "Phase details" - phase_order_label: "Order of display" - phase_details_text_html: "

Here you set the title that users will see. If you intend to have multiple phases for you DMP, this should be clear in the title and description.

" - phase_title_help_text: "Enter a title for the phase e.g. intial DMP, full DMP... This is what users will see in the tabs when completing a plan. If you only have one phase, call it something generic e.g. Glasgow DMP" - phase_number_help_text: "This allows you to order the phases of your template." - phase_desc_help_text_html: "Enter a basic description. This will be presented to users on the 'Admin Plan' tab, above the summary of the sections and questions which they will be asked to answer." - phase_delete_message: "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?" - phase_new_text_html: "When you create a new phase for your template, a version will automatically be created. Once you complete the form below you will be provided with options to create sections and questions." - versions_label: "Versions" - version_details_label: "Version details" - add_section: "Add section" - new_section: "New section title" - section_title_placeholder: "New section title" - section_desc_help_text_html: "

Enter a basic description. This could be a summary of what is covered in the section or instructions on how to answer. This text will be displayed in the coloured banner once a section is opened to edit.
" - section_number_help_text: "This allows you to order sections." - add_question: "Add question" - created: "Created at" - last_updated: "Last updated" - published_label: "Published" - cannot_publish: "Please ensure you have created at least one phase with a published version." - title_label: "Title" - desc_label: "Description" - actions: "Actions" - customise: "Customise" - edit_customisation: "Edit customisation" - created_message: "Information was successfully created." - updated_message: "Information was successfully updated." - destroyed_message: "Information was successfully deleted." - section_delete_message: "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?" - versions: - clone_versions_label: "Make big changes" - edit_versions_label: "Make small changes" - edit_label: "Edit" - versions_text_html: "A first version is created automatically. If you want to make major changes to published versions later (e.g. add section or questions) please create a new version. If you only want to fix typos or make small changes that do not alter meanings, edit the current version." - desc_help_text_html: "Enter a basic description as an internal reference to describe the difference between versions" - delete_message: "You are about to delete '%{version_title}'. This will affect sections and questions linked to this version. Are you sure?" - edit_alert_label: "Edit alert" - edit_alert_text: "Please consider the kind of changes you are about to make as this plan is already published and might be in use" - questions: - quidance_button: "Guidance" - question_text_label: "Question text" - question_number_label: "Question number" - question_edit_button: "Edit question" - question_delete_button: "Delete question" - answer_format_label: "Answer format" - option_comment_display_checkbox: "Display additional comment area." - option_comment_display: "Additional comment area will be displayed." - option_comment_hide: "No additional comment area will be displayed." - example_answer_label: "Example of answer" - suggested_answer_label: "Suggested answer" - suggested_answer_help_text_html: "You can add an example or suggested answer to help users respond. These will be presented above the answer box and can be copied/ pasted." - suggested_or_example_answer_label: "Suggested answer/ Example" - suggested_or_example_answer_button: "Add suggested answer/ example" - edit_suggested_answer_button: "Edit suggested answer/ example" - delete_suggested_answer_message: "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?" - default_value_label: "Default value" - number_help_text: "This allows you to order questions within a section." - question_format_help_text_html: "You can choose from:
  • - text area (large box for paragraphs);
  • - text field (for a short answer);
  • -
  • - checkboxes where options are presented in a list and multiple values can be selected;
  • -
  • - radio buttons where options are presented in a list but only one can be selected;
  • -
  • - dropdown like this box - only one option can be selected;
  • -
  • - multiple select box allows users to select several options from a scrollable list, using the CTRL key;
" - default_answer_help_text_html: "Anything you enter here will display in the answer box. If you want an answer in a certain format (e.g. tables), you can enter that style here." - themes_label: "Themes" - question_themes_help_text_html: "

Select themes that are relevant to this question.

-

This allows your generic institution-level guidance to be drawn in, as well as that from other sources e.g. the DCC or any Schools/Departments that you provide guidance for.

-

You can select multiple themes by using the CTRL button.

" - default_answer_label: "Default answer" - guidance_label: "Guidance" - question_guidance_help_text_html: "Enter specific guidance to accompany this question. If you have guidance by themes too, this will be pulled in based on your selections below so it's best not to duplicate too much text." - delete_message: "You are about to delete '%{question_text}'. Are you sure?" - question_options_help_text_html: "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box." - - - - - - helpers: - home: "Home" - return_home: "Return to the home page" - admin_area: "Super admin area" - edit_profile: "Edit profile" - view_plans_label: "View plans" - create_plan_label: "Create plan" - about_us_label: "About" - roadmap_label: "Future plans" - help_label: "Help" - contact_label: "Contact" - jisc: "The DCC is funded by" - format: "format" - - sign_in: "Sign in" - sign_out: "Sign out" - sign_up: "Sign up" - sign_up_text: "New to DMPonline? Sign up today." - signed_in: "Signed in as " - institution_sign_in_link: "Or, sign in with your institutional credentials" - institution_sign_in: " (UK users only)" - - user_name: "Email address" - email: "Email" - valid_email: "You must enter a valid email address." - user_details_text_html: "

Please note that your email address is used as your username. If you change this, remember to use your new email address on sign in.

" - user_details_paragraph_html: "You can edit any of the details below." - remember_me: "Remember me" - org_not_listed: "My organisation isn't listed." - - password: "Password" - current_password: "Current password" - new_password: "New password" - password_conf: "Password confirmation" - change_password: "Change your password" - forgot_password: "Forgot your password?" - password_too_small: "Your password must contain at least 8 characters." - password_no_match: "This must match what you entered in the previous field." - no_pass_instructions: "Didn't receive confirmation instructions?" - no_unlock_instructions: "Didn't receive unlock instructions?" - send_password_info: "Reset password instructions" - edit_password_info: "If you would like to change your password please complete the following fields." - accept_terms_html: " I accept the terms and conditions *" - you_must_accept: 'You must accept the terms and conditions to register.' - email_already_registered: 'That email address is already registered.' - email_must_valid_confirmation_message: "This must be a valid email address - a message will be sent to it for confirmation." - error_registration_check: 'Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long.' - - text_area: "Text area" - text_field: "Text field" - radio_buttons: "Radio buttons" - checkbox: "Check box" - dropdown: "Dropdown" - multi_select_box: "Multi select box" - export: "Export" - - about: - by: "By " - on: " on " - read_more: "Read more on the " - - mailer: - permission_relating: "Your permissions relating to " - changed: " have changed. You now have " - access: "access." - access_to: "Your access to " - removed: " has been removed." - given: "You have been given " - access_two: " access to " - - truncate_continued: "... (continued)" - security_check: "Security check" - error: "Error!" - comment: "Comment" - send: "Send" - yes_label: "Yes" - no_label: "No" - ok_label: "Ok" - none: "None" - false_lowercase: "false" - title: "Title" - note: "Note" - me: "Me" - view: "View" - desc: "Description" - save: "Save" - preview: "Preview" - saving: "Saving..." - loading: "Loading..." - removing: "Removing..." - unsaved: "Unsaved changes" - unlink_account: "Unlink account" - submit: - edit: "Edit" - create: "Create" - update: "Update" - cancel: "Cancel" - save: "Save" - delete: "Delete" - back: "Back" - discard: "Discard" - - before_submitting_consider: "Before submitting, please consider:" - name: "Name" - first_name: "First name" - last_name: "Last name" - first_name_help_text: "Please enter your first name." - surname_help_text: "Please enter your surname or family name." - owner: "Owner" - orcid_id: "ORCID number" - orcid_html: "ORCID number is a persistent digital identifier that distinguishes each researcher, more info." - sign_up_shibboleth_alert_text_html: "DMPonline doesn't recognise your institutional credentials - either you haven't created an account with us or you haven't linked these details to your existing account.
- --> If you do not have an account with DMPonline, please complete the form below.
- --> If you have an account with DMPonline, please Sign in so we can link your account to your institutional credentials.
- Once you have created and/or linked your account, you'll be able to sign in with your institutional credentials directly." - shibboleth_linked_text: "Your account is linked to your institutional credentials." - shibboleth_to_link_text: "Link your DMPonline account to your institutional credentials (UK users only)" - shibboleth_unlink_label: "Unlink your institutional credentials" - shibboleth_unlink_alert: "Unlink institutional credentials alert" - shibboleth_unlink_dialog_text: "

You are about to unlink DMPonline of your institutional credentials, would you like to continue?

" - - - section_label: "Section" - sections_label: "Sections" - questions_label: "Questions" - answers_label: "Answers" - answer_questions: "Answer questions" - last_edit: "Last edited" - select_action: "Select an action" - answered_by: "Answered " - answered_by_part2: " by " - suggested_answer: "Suggested answer" - suggested_example: "Example answer" - notanswered: "Not answered yet" - noquestionanswered: "No questions have been answered" - guidance: "Guidance" - policy_expectations: "Policy Expectations" - export: "Export" - guidance_accordion_label: "Guidance" - add_comment_accordion_label: "Share note" - comment_accordion_label: "Notes" - - comments: - add_comment_label: "Add note" - add_comment_text: "Share note with collaborators" - comment_label: "Note" - comments_label: "Notes" - view_label: "View" - edit_label: "Edit" - retract_label: "Remove" - clear_label: "Remove" - commented_by: "Noted by:" - archive_own_comment_question: "Are you sure you would like to remove this note?" - archive_own_comment_button_label: "Remove" - archive_comment_question: "Are you sure you would like to remove this note?" - archive_comment_button_label: "Remove" - clear_by: "Note removed by" - retracted: "Note removed by you" - comment_created: 'Comment was successfully created.' - comment_updated: 'Comment was successfully updated.' - comment_removed: 'Comment has been removed.' - - - org_type: - funder: "Funder" - institution: "Institution" - project: "Project" - organisation: "Organisation" - org_name: "Organisation name" - school: "School" - publisher: "Publisher" - other_guidance: "Other guidance" - template: "Template" - templates: "Templates" - child: "Unit" - other_org_help_text: "Please enter the name of your organisation." - - - project: - create: "Create plan" - edit: "Edit plan details" - grant_title: "Grant number" - grant_help_text: "Grant reference number if applicable [POST-AWARD DMPs ONLY]" - not_applicable: "Not applicable/not listed." - multi_templates: "There are a number of possible templates you could use. Please choose one." - project_name: "Plan name" - my_project_name: "My plan" - success: "Plan was successfully created." - success_update: "Plan was successfully updated." - principal_investigator: "Principal Investigator/Researcher" - principal_investigator_help_text: "Name of Principal Investigator(s) or main researcher(s) on the project." - principal_investigator_id: "Principal Investigator/Researcher ID" - principal_investigator_id_help_text: "E.g ORCID http://orcid.org/." - funder_help_text: "Research funder if relevant" - funder_name: "Funder name" - project_question_desc_label: "Summary about the questions" - tab_plan: "Plan details" - tab_export: "Export" - export_text_html: "

From here you can download your plan in various formats. This may be useful if you need to submit your plan as part of a grant application.
-Select what format you wish to use and click to 'Export'.

" - questions_answered: "questions answered" - not_saved_answers_text_alert: "You have altered answers but have not saved them:" - not_saved_answers_confirmation_alert: "Would you like to save them now?" - not_saved_answers_header: "Unsaved answers" - answer_recorded: 'Answer was successfully recorded.' - answer_error: 'There was an error saving the answer.' - answer_no_change: 'No change in answer content - not saved.' - project_data_contact: "Plan data contact" - project_data_contact_help_text: "Name (if different to above), telephone and email contact details" - project_name_help_text: "If applying for funding, state the name exactly as in the grant proposal." - project_desc_help_text_html: "

Questions to consider:

  • - What is the nature of your research project?
  • - What research questions are you addressing?
  • - For what purpose are the data being collected or created?

Guidance:

Briefly summarise the type of study (or studies) to help others understand the purposes for which the data are being collected or created.

" - project_identifier: "ID" - project_identifier_help_text: "A pertinent ID as determined by the funder and/or institution." - project_static_info: "This plan is based on:" - projects_title: "My plans" - project_settings_text: "The items you select here will be displayed in the table below. You can sort the data by each of these headings or filter by entering a text string in the search box." - project_text_when_no_project: "

Welcome.
You are now ready to create your first DMP.
Click the 'Create plan' button below to begin.

" - project_text_when_project: "

The table below lists the plans that you have created, and any that have been shared with you by others.
These can be edited, shared, exported or deleted at anytime.

" - project_details_text_html: "This page gives you an overview of your plan. It tells what your plan is based on and gives an overview of the questions that you will be asked." - project_details_editing_text_html: "Please fill in the basic project details below and click 'Update' to save" - confirm_delete_text: "Are you sure you wish to delete this plan? If the plan is being shared with other users, by deleting it from your list, the plan will be deleted from their plan list as well" - confirmation_text: "Confirm plan details" - confirmation_text_desc: "Where your funder or institution doesn't have specific requirements (or if you left these options blank), you will see the DCC Checklist. This offers a generic set of DMP questions and guidance. For more details see: DMP checklist 2013." - confirmation_button_text: "Yes, create plan" - default_confirmation_text_desc: "You have selected the Default DMP, which is based on the DCC Checklist. This offers a generic set of DMP questions and guidance. For more details see: DMP checklist 2013." - default_confirmation_button_text: "Create plan" - alert_default_template_text_html: "Please note: %{org_name} provides a DMP template. If you wish to use it select 'Cancel', otherwise select 'Create plan'" - share: - tab_share: "Share" - shared_label: "Shared?" - share_text_html: "

You can give other people access to your plan here. There are three permission levels.

  • Users with \"read only\" access can only read the plan.
  • Editors can contribute to the plan.
  • Co-owners can also contribute to the plan, but additionally can edit the plan details and control access to the plan.

Add each collaborator in turn by entering their email address below, choosing a permission level and clicking \"Add collaborator\".

Those you invite will receive an email notification that they have access to this plan, inviting them to register with DMPonline if they don't already have an account. A notification is also issued when a user's permission level is changed.

" - collaborators: "Collaborators" - add_collaborator: "Add collaborator" - add: "Add" - permissions: "Permissions" - permissions_desc: "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access." - remove: "Remove user access" - confirmation_question: "Are you sure?" - owner: "Owner" - co_owner: "Co-owner" - edit: "Edit" - read_only: "Read only" - locked_section_text: "This section is locked for editing by " - create_page: - title: "Create a new plan" - desc_html: "

Please select from the following drop-downs so we can determine what questions and guidance should be displayed in your plan.

-

If you aren't responding to specific requirements from a funder or an institution, select here to write a generic DMP based on the most common themes.

" - default_template: "Default DMP" - funders_question: "If applying for funding, select your research funder." - funders_question_description: "Otherwise leave blank." - other_funder_name_label: "Name of funder, if applicable." - institution_question: "To see institutional questions and/or guidance, select your organisation." - institution_question_description: "You may leave blank or select a different organisation to your own." - other_guidance_question: "Tick to select any other sources of guidance you wish to see." - configure: "Configure" - columns: - name: "Name" - owner: "Owner" - shared: "Shared?" - template_owner: "Template Owner" - last_edited: "Last edited" - identifier: "Identifier" - grant_number: "Grant number" - principal_investigator: "Principal Investigator / Researcher" - data_contact: "Plan data contact" - description: "Description" - filter: - placeholder: "Filter plans" - submit: "Filter" - cancel: "Cancel" - no_plans_match: "No plans match '%{filter}'" - no_matches: "No matches" - user_added: "User added to project" - invitation_success: 'Invitation issued successfully.' - enter_email: "Please enter an email address" - sharing_updated: 'Sharing details successfully updated.' - access_removed: 'Access removed' - update_success: 'Project was successfully updated.' - create_success: 'Project was successfully created.' - details_update_success: "Details successfully updated." - choose_template: "Choose a template" - - plan: - export: - pdf: - question_not_answered: Question not answered. - generated_by: This document was generated by DMPonline (http://dmponline.dcc.ac.uk) - space_used: "approx. %{space_used}% of available space used (max %{num_pages} pages)" - space_used_without_max: "approx. %{space_used}% of available space used" - project_name: "Project Name" - project_identifier: "Project Identifier" - grant_title: "Grant Title" - principal_investigator: "Principal Investigator / Researcher" - project_data_contact: "Project Data Contact" - project_description: "Description" - funder: "Funder" - institution: "Institution" - not_valid_format: '%{value}% is not a valid format' - - settings: - title: "Settings" - projects: - title: "Settings - My plans" - desc: "The table below lists the available columns that can be shown on the 'My plans' list. Choose which you would like to appear." - errors: - no_name: "'name' must be included in column list." - duplicate: "Duplicate column name. Please only include each column once." - unknown: "Unknown column name." - plans: - title: "Plan title" - reset: "Reset" - custom_formatting: "(Using custom PDF formatting values)" - template_formatting: "(Using template PDF formatting values)" - default_formatting: "(Using default PDF formatting values)" - included_elements: "Included Elements" - pdf_formatting: "PDF Formatting" - font_face: "Face" - font_size: "Size" - font: "Font" - margin: "Margin" - margins: - top: "Top" - bottom: "Bottom" - left: "Left" - right: "Right" - max_pages: "Maximum number of pages" - errors: - missing_key: "A required setting has not been provided" - invalid_margin: "Margin value is invalid" - negative_margin: "Margin cannot be negative" - unknown_margin: "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'" - invalid_font_size: "Invalid font size" - invalid_font_face: "Invalid font face" - unknown_key: "Unknown formatting setting" - invalid_max_pages: "Invalid maximum pages" - no_access_account: "This account does not have access to that plan." - - about_page: - title: "About DMPonline" - tab_1: "Background" - tab_2: "Latest news" - - body_text_tab_1_html: "

Funding bodies increasingly require their grant-holders to produce Data Management Plans(DMP), both during the bid-preparation stage and after funding has been secured. DMPonline has been produced by the UK's Digital Curation Centre to help research teams respond to this requirement, and any expectations that their institution or others may apply.

-

The DCC has worked closely with research funders and universities to produce a tool that assists researchers to produce an effective data management plan (DMP) to cater for the whole lifecycle of a project, from bid-preparation stage through to completion.

-
-

How the tool works

-

There are a number of templates within the tool that represent the requirements of different funders and institutions. Users are asked three questions at the outset so we can determine the appropriate template to display (e.g. the ESRC template when applying for an ESRC grant). Guidance is provided to help you interpret and answer the questions. This guidance is provided by researcher funders, universities and disciplines.

-
-

Getting Started

-

If you have an account please sign in and start creating or editing your DMP.

-

If you do not have a DMPonline account, click on 'Sign up' on the homepage.

-

Please visit the 'Help' page for guidance.

-
-

Additional Information

-

We are constantly improving the user interface and functionality of DMPonline. - If you would like to contribute with feedback and suggestions, please contact us by emailing - dmponline@dcc.ac.uk. You can also report bugs and request new features directly on GitHub

-

If you need to access plans from the earlier version of the tool please visit DMPonline v3.

" - - body_text_tab_2_html: "

DMPonline stories from the DCC website


" - - help_page: - title: "Help" - tab_1: "On DMPonline" - tab_2: "On data management planning" - body_text_tab_2_html: "

Useful resources on Data Management Planning

- -

Example Data Management Plans

-
    -
  • - Technical plan submitted to the AHRC [PDF, 7 pages]
    - A DMP submitted by a researcher from the University of Bristol, also including comments from the reviewers -
  • -
  • - Two social science DMPs [PDF, 7 pages]
    - Example plans from researchers at the University of Leeds, shared as part of the Leeds RoaDMaP training materials -
  • -
  • - Health sciences DMP [PDF, 11 pages]
    - Example DMP produced by the DATUM for Health RDM training project -
  • -
  • - Psychology DMP [PDF, 11 pages]
    - A very detailed, fictional psychology DMP produced by the DMTpsych RDM training project, based on a seminal psychology experiment -
  • -
  • - UCSD Example Data Management Plans [webpage]
    - Over 20 example plans submitted to the National Science Foundation (NSF) in the United States by academics at UC San Diego -
  • -
  • - Colorado School of Mines examples [webpage]
    - A variety of US example DMPs from Mines and elsewhere -
  • -
  • - NSF data management plans [webpage]
    - 5 DMPs submitted to the NSF, shared by the DataOne initiative -
  • -
  • - Biology and chemistry DMPs [webpage]
    - Three example DMPs from the USA shared by NECDMC, an instructional tool for teaching RDM to undergraduates, graduate students, and researchers in the health sciences, sciences and engineering. -
  • -
-

Useful guides on Research Data Management in general

-
    -
  • - Managing and Sharing Data: best practice for researchers [PDF, 36 pages]
    - A guide by the UK Data Service covering a range of topics including data formats, documentaion, ethics, copyright and data sharing. -
  • -
  • - How to Cite Datasets and Link to Publications [PDF, 12 pages]
    - A guide by the Digital Curation Centre giving practical guidelines on how to cite data and the different tools and infrastructure that can be used to support data citation. -
  • -
  • - How to License Research Data [PDF, 16 pages]
    - A guide by the Digital Curation Centre that outlines different types of licenses, the pros and cons of each and how they can be applied. -
  • -
  • - How to Appraise and Select Research Data for Curation [PDF, 8 pages]
    - A guide by ANDS and the DCC on how to select which data to keep for long-term preservation, sharing and reuse. The guide puts forward several criteria to aid selection decisions. -
  • -
  • - Research Data MANTRA [online resource]
    - An online training course designed for researchers or others planning to manage digital data as part of the research process. The course includes a number of software practicals on using SPSS, R, ArcGIS and NVivo. -
  • -
" - body_text_tab_1_html: "

When you login to DMPonline you will be directed to the 'My plans' page. From here you can edit, share, export or delete any of your plans. You will also see plans that have been shared with you by others.

-

Create a plan

-

To create a plan, click the 'Create plan' button from the 'My plans' page or the top menu. Select options from the drop-down menus and tickboxes to determine what questions and guidance you should be presented with. Confirm your selection by clicking 'Yes, create plan'

-

Write your plan

-

The tabbed interface allows you to navigate through different functions when editing your plan.

-
    -
  • - 'Plan details' includes basic administrative details, tells you what sets of questions and guidance your plan is based on and gives you an overview to the questions that you will be asked.
  • -
  • - The following tab(s) present the questions to answer. There may be more than one tab if your funder or university asks different sets of questions at different stages e.g. at grant application and post-award.
  • -
  • - The 'Share' tab allows you to invite others to read or contribute to your plan.
  • -
  • - The 'Export' tab allows you to download your plan in various formats. This may be useful if you need to submit your plan as part of a grant application.
  • -
-

When viewing any of the question tabs, you will see the different sections of your plan displayed. Click into these in turn to answer the questions. You can format your responses using the text editing buttons.

-

Guidance is displayed in the right-hand panel. Click the '+' symbol to view this.

-

Remember to 'save' your responses before moving on.

-

Share plans

-

Insert the email address of any collaborators you would like to invite to read or edit your plan. Set the level of permissions you would like to grant them via the drop-down options and click to 'Add collaborator'

-

Export plans

-

From here you can download your plan in various formats. This may be useful if you need to submit your plan as part of a grant application. Choose what format you would like to view/download your plan in and click to export. When you login to DMPonline you will be directed to the 'My plans' page. From here you can edit, share, export or delete any of your plans. You will also see plans that have been shared with you by others.

-

Legacy data

-

If you need to access plans from the earlier version of the tool please visit DMPonline v3.

" - - contact_page: - title: "Contact us" - intro_text_html: "

DMPonline is provided by the Digital Curation Centre. You can find out more about us on our website. If you would like to contact us about DMPonline, please enter your query in the form below or email dmponline@dcc.ac.uk.

" - github_text_html: "

If you have a feature request or think you have found a bug, please check out the list of issues on GitHub. If your issue isn't listed there, please add it; if it is, please add a comment if you have more information or just to let us know how important it is to you. This will help us to help us prioritise future developments.

" - address_text_html: "
    -
  • Digital Curation Centre
  • -
  • Level 7, Appleton Tower
  • -
  • Crichton Street
  • -
  • Edinburgh
  • -
  • EH8 9LE
  • -
  • UK
  • -
-

Tel. +44 (0) 131 651 1239

-

Email dmponline@dcc.ac.uk

" - - roadmap_page: - title: "Future plans" - tab_1: "Releases" - tab_2: "Get involved" - body_text_tab_1_html: "

The DCC is collaborating with the DMPTool team to develop a joint codebase for Data Management Planning called DMP Roadmap. Both of our tools will be delivered using this in the future. We've agreed what features need to be included and are planning a few sprints to deliver these. The initial release will include all of the main priorities we already had flagged, including:

-
    -
  • - APIs to create plans, extract guidance and generate statistics from DMPonline
  • -
  • - Multi-lingual support so foreign language versions can be presented
  • -
  • - Locales to provide a refined set of content for particular countries or other contexts
  • -
  • - A lifecycle to indicate the status of DMPs and allow institutional access to plans
  • -
  • - Support for reviewing Data Management Plans
  • -
-

DMPonline has an active and growing user base, and we are grateful to the members who suggest ideas for new and improved features. If you would like to help shape our future plans, please join the user group. More information on how you can engage with us is available under the 'Get involved' tab.

-
-

Current release

-

The current version of DMPonline is 4.2. This was released in August 2015 and included Institutional branding, optional guidance for funders, improvements to the question area, improvements to the admin interface, GitHub pull requests, new seed file, and an update of the gemfile.

- -

The code is available on GitHub

-
-

Previous release

-

The previous version of DMPonline is 4.1. This was released in May 2015 and included a comment feature, improved guidance on signing in with institutional credentials, enhanced deployment guidance and proposed methods for internationalisation. Full details can be found in the release note and associated documents.

- -
" - - body_text_tab_2_html: "

DMPonline is developed and maintained by the UK Digital Curation Centre. We’re a small team, and are happy to collaborate with others. There are various ways you can get involved:

-

Join the user group

-

We run a listserv for the DMPonline user group that you can request to join. We also host periodic meetings to consult on our plans. Being part of the user group gives you the opportunity to be informed about future developments and to provide feedback to help shape our plans.

-

Our user group sessions are usually focused around a certain topic (e.g. fleshing out use cases for an API) so invites are sent based on your areas of expertise. It is helpful for us to know your role and interests to invite relevant people to each session. Please introduce yourself on the list and share your ideas.

-

Notes from previous user group sessions are provided below:

- -

Please let us know your interests and share your ideas for future developments via the mailing list so the community as a whole can feedback on them.

-
-

Customise DMPonline

-

DMPonline can be customised by institutions and disciplines. You can add templates for users in your organisation and tailored guidance that explains local support and services. Example answers can also be offered to help users understand what to write in a Data Management Plan. To do this you’ll need to request admin access, so please email us on dmponline@dcc.ac.uk.

-

Futher guidance on customising DMPonline is available on the DCC website.

-
-

Contribute to the code

-

DMPonline is a Ruby on Rails application. The source code is made available under a GNU Affero General Public License. This permits others to reuse the code freely, but obligates you to share the source code for any extensions in the same way. Please inform us if you install an instance of DMPonline and offer your contributions back to the community.

-

If you install an instance of DMPonline we require that you credit the DCC as originators of the tool. We recommend that the acknowledgement takes the form of the DMPonline logo with a link back to the DCC-hosted version of the tool.

-

We are willing to work with external developers to add new features to the tool. We are also open to delivering new features on a chargeable basis. If there are extensions you would like to see prioritised and have resource to support additional developer effort, please contact us on dmponline@dcc.ac.uk to negotiate terms.

-
-

Support our work

-

We are impressed by the uptake of DMPonline both in the UK and internationally and are really keen to hear how you are using the tool and promoting it in your context. We are aware that others have run training courses, developed guidance materials and advocated use of the tool. Please notify us of this as it helps to show impact.

-

We are currently investigating options for revenue generation. This will help us serve the increased demand more effectively and safeguard the long-term sustainability of DMPonline. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.

" - - terms_page: - title: "Terms of use" - body_text_html: "
-

The Digital Curation Centre ('DCC') is a consortium supported by Jisc and based at the Universities of Edinburgh, Glasgow and Bath. Our primary constituency is the UK research community, particularly the higher and further education sector.

-
-

DMPonline

-
-

DMPonline ('the tool', 'the system') is a tool developed by the DCC as a shared resource for the research community. It is hosted at the University of Edinburgh.

-
-

Your personal details

-
-

In order to help identify and administer your account with DMPonline, we need to store your email address. We may also use it to contact you to obtain feedback on your use of the tool, or to inform you of the latest developments or releases. The information may be transferred between the DCC partner institutions but only for legitimate DCC purposes. We will not sell, rent or trade any personal information you provide to us.

-
-

Privacy policy

-
-

The information you enter into this system can be seen by you, people you have chosen to share access with, and - solely for the purposes of maintaining the service - system administrators at the University of Edinburgh. We compile anonymised, automated and aggregated information from plans, but we will not directly access, make use of, or share your content with anyone else without your permission. Authorised officers of your home institution may access your plans for specific purposes - for example, to track compliance with funder/institutional requirements or to calculate storage requirements.

-
-

Freedom of Information

-
-

The University of Edinburgh holds your plans on your behalf, but they are your property and responsibility. Any FOI applicants will be referred back to your home institution.

-
-

Passwords

-
-

Your password is stored in encrypted form and cannot be retrieved. If forgotten it has to be reset.

-
-

Cookies

-
-

Please note that DMPonline uses Cookies. Further information about Cookies and how we use them is available on the main DCC website.

-
-
-
-

Use of the tool indicates that you understand and agree to these terms and conditions.

" - - js: - question_text_empty: 'Question text is empty, please enter your question.' - add_guidance_text: "add guidance text" - select_question: "select a question" - select_at_least_one_theme: "select at least one theme" - select_guidance_group: "select a guidance group" - enter_up_to: "Please only enter up to 165 characters, you have used" - if_using_url_try: "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller." - you_have_unsaved_in_sections: 'You have unsaved answers in the following sections:\n' - - custom_devise: - resend_confirmation: "Resend confirmation instructions" - welcome_to_DMP: "Welcome to DMPonline" - thank_you_and_confirm: "Thank you for registering at DMPonline. Please confirm your email address:" - click_to_confirm: "Click here to confirm your account" - 1st_part_copy: "(or copy" - 2nd_part_copy: "into your browser)." - colleague_invited_you: "A colleague has invited you to contribute to their Data Management Plan at" - click_to_accept: "Click here to accept the invitation" - ignore_wont_be_created: "

If you don't want to accept the invitation, please ignore this email.
- Your account won't be created until you access the link above and set your password.

" - 1st_part_change_password: "Someone has requested a link to change your" - 2nd_part_change_password: "password. You can do this through the link below." - ignore_password_wont_be_changed: "

If you didn't request this, please ignore this email.

-

Your password won't change until you access the link above and create a new one.

" - hello: "Hello" - 1st_part_locked: "Your " - 2nd_part_locked: " account has been locked due to an excessive number of unsuccessful sign in attempts." - click_to_unlock: "Click the link below to unlock your account:" - unlock: 'Unlock my account' - waiting_for_confirmation: "Currently waiting confirmation for: " - resend_unlock: "Resend unlock instructions" - diff --git a/config/locales/fr.bootstrap.yml b/config/locales/fr.bootstrap.yml new file mode 100644 index 0000000..2e52bb1 --- /dev/null +++ b/config/locales/fr.bootstrap.yml @@ -0,0 +1,17 @@ + +fr: + helpers: + actions: "Actions" + links: + back: "Retour" + cancel: "Annuler" + confirm: "Êtes-vous sûr?" + destroy: "Supprimer" + new: "Nouveau" + edit: "Modifier" + titles: + edit: "Modifier" + save: "Enregistrer" + new: "Nouveau" + delete: "Supprimer" + diff --git a/config/locales/fr.yml b/config/locales/fr.yml new file mode 100644 index 0000000..e8a1178 --- /dev/null +++ b/config/locales/fr.yml @@ -0,0 +1,787 @@ +fr: + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d-%m-%Y" + short: "%d/%m/%Y" + custom: "%d/%m/%Y %H:%M" + long: "%d %B, %Y" + + day_names: [Dimanche, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi] + abbr_day_names: [Dim, Lun, Mar, Mer, Jeu, Ven, Sam] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre] + abbr_month_names: [~, Janv., Févr., Mars, Avr., Mai, Juin, Juill., Août, Sept., Oct., Nov., Déc.] + # Used in date_select and datetime_select. + order: + - day + - month + - year + + time: + formats: + default: "%a, %d %b %Y %H:%M:%S %z" + short: "%d %b %H:%M" + long: "%B %d, %Y %H:%M" + custom: "%d/%m/%Y %H:%M" + am: "a.m." + pm: "p.m." + + tool_title: "Assistant PGD – Réseau Portage" + dmponline3_text: "Version antérieure de l'Assistant PGD" + subhead: "Services partagés pour les données de recherche" + dcc_name: "Digital Curation Centre" + welcome_title: "Bienvenue" + welcome_text: "

L'Assistant PGD est un outil bilingue d'aide à la préparation d'un plan de gestion des données (PGD). Cet outil, qui s'appuie sur des normes internationales et sur les meilleures pratiques en matière de gestion des données, guide le chercheur pas à pas à travers les questions clés pour développer son plan.

" +# welcome_links: "

En savoir plus sur les plans de gestion des données
Vous souhaitez partager vos données de recherche?
Pour en savoir plus sur les services de données de recherche du service des bibliothèques

" + step_1: " Se créer un compte dans l'Assistant PGD" + step_2: " Se connecter et sélectionner un modèle dans le menu des organismes. Le modèle par défaut est le modèle Portage." + step_3: " Répondre aux questions pertinentes au projet de recherche; de l'aide et des exemples sont fournis en contexte. " + step_4: " Revenir tout au long du projet pour réviser ou compléter des réponses." + welcome_links: "Le modèle de plan de gestion des données Portage s'appuie sur des normes internationales et sur les meilleures pratiques. Il a été préparé et est gardé à jour par un groupe d'experts en gestion des données de recherche travaillant au sein de bibliothèques de recherche à travers le Canada. " + ccid_message: "Veuillez noter que nous travaillons actuellement à un système d'authentification unique. Pour le moment, veuillez créer un nouveau compte dans l'Assistant PGD. Vous pourrez associer votre compte existant à votre identifiant campus dès que la fonction sera disponible." + + screencast_error_text: "Votre navigateur ne permet pas la balise vidéo." + none: "Aucun" + admin: + org_title: "Nom de l'organisme" + org: "Organisme" + orgs: "Organismes" + org_type: "Type d'organisme" + org_parent: "Organisme d'attache" + org_created_message: " L'organisme a été créé avec succès." + org_updated_message: " L'organisme a bien été mis à jour." + plans: "Plans" + title: "Titre" + desc: "Description" + guidance_group: "Groupe de directives" + no_guidance_group: "Aucun groupe de directives" + guidance: "Directives" + name: "Nom" + abbrev: "Abréviation" + question: "Question" + question_format: "Format de la question" + questions: "Questions" + template_title: "Titre du modèle" + section_title: "Titre de la section" + phase_title: "Titre de la phase" + version_title: "Titre de la version" + user_name: "Nom d'utilisateur" + firstname: "Prénom" + surname: "Nom" + user: "Utilisateur" + user_org_role: "Rôle de l'utilisateur au sein d'un organisme" + user_role_type: "Type de rôle de l'utilisateur" + user_role: "Rôle de l'utilisateur" + role: "Rôle" + user_status: "Statut de l'utilisateur" + user_type: "Type d'utilisateur" + last_logged_in: "Dernière connexion" + version_numb: "Numéro de la version" + details: "Renseignements" + phases: "Phases" + phase: "Phase" + version: "Version" + versions: "Versions" + sections: "Sections" + section: "Section" + multi_options: "Plusieurs choix de questions" + templates: "Modèles" + template: "Modèle" + themes: "Thèmes" + theme: "Thème" + sug_answer: "Suggestion de réponse" + sug_answers: "Suggestions de réponse" + old_temp_field: "Ancien champ de modèle" + old_theme_field: "Ancien champ de thème" + + + org_admin: + admin_area: "Section de l'administration" + template_label: "Modèles" + user_list_label: "Utilisateurs" + org_details_label: "Renseignements sur l'organisme" + org_text: "Il s'agit des renseignements de base concernant votre organisme." + org_abbr_help_text_html: "Ce sont les éléments affichés comme étiquette sur vos directives, p. ex. « Directives sur les métadonnées de Glasgow ». Il vaut mieux utiliser une abréviation ou un nom abrégé." + users_list: "Liste des utilisateurs" + user_full_name: "Nom" + user_name: "Adresse électronique" + last_logged_in: "Dernière connexion" + how_many_plans: "Combien y a-t-il de plans?" + user_text_html: " Vous trouverez ci-dessous une liste des utilisateurs inscrits pour votre organisme. Vous pouvez trier les données par champ." + org_name: "Nom" + org_abbr: "Abréviation" + org_desc: "Description" + org_target_url: "Site Web" + org_type: "Type d'organisme" + parent_org: "Organisme principal" + last_updated: "Dernière mise à jour" + desc_help_text_html: "
Veuillez décrire votre organisme en fournissant de l'information.
" + abbre_help_text: "Veuillez fournir une abréviation pour le nom de votre organisme." + template_desc_help_text_html: "
Entrez une description qui vous permettra de faire la différence entre les modèles, par exemple si vous en avez pour différents publics.
" + target_url_help_text: "Veuillez indiquer une adresse Web valide." + name_help_text: "Veuillez indiquer le nom de votre organisme." + guidance_label: "Directives" + templates_label: "Modèles" + add_option_label: "Ajouter une option" + add_question_label: "Ajouter une question" + add_section_label: "Ajouter une section" + remove_option_label: "Supprimer" + option_order_label: "Classer" + option_text_label: "Texte" + option_default_label: "Défaut" + guidance: + guidance_list: "Liste des directives" + text_label: "Texte" + themes_label: "Thèmes" + question_label: "Question" + by_theme_or_by_question: "Ces directives devraient-elles s'appliquer :" + by_themes_label: "par thème" + by_question_label: "par question" + template: "Modèle" + templates: "Modèles" + guidance_group_label: "Groupe de directives" + created: "Créé(e)" + last_updated: "Dernière mise à jour" + actions: "Actions" + add_guidance: "Ajouter des directives" + created_message: "Les directives ont été créées avec succès." + updated_message: "Les directives ont bien été mises à jour." + help_text_html: "
Veuillez insérer le texte des directives pour ce thème.
" + new_label: "Nouvelles directives" + view_all_guidance: "Voir toutes les directives" + text_help_text_html: "Insérez vos directives ici. Vous pouvez inclure des liens, au besoin." + apply_to_help_text_html: "Déterminez si vos directives doivent être affichées par thème (par défaut) ou si elles concernent uniquement une question précise dans l'un des modèles de bailleur de fonds." + by_themes_help_text_html: "Sélectionnez le ou les thèmes auxquels ces directives se rapportent." + by_question_help_text_html: "Sélectionnez le modèle, la phase, la version, la section et la question appropriés dans les options de la liste déroulante suivante pour déterminer la question précise pour laquelle ces directives devraient être affichées." + guidance_group_select_help_text_html: "Sélectionnez le groupe auquel ces directives se rapportent." + guidance_text_html: "

Vous pouvez rédiger des directives à afficher par thème (p. ex. des directives générales sur l'entreposage et la sauvegarde qui devraient être présentées à tous les échelons) ou vous pouvez rédiger des directives pour des questions précises. La rédaction de directives générales par thème vous permet d'économiser du temps et des efforts, car vos conseils seront automatiquement affichés dans tous les modèles au lieu d'avoir à rédiger des directives qui accompagneraient chaque modèle.

+

De manière générale, vous voudrez que vos directives soient affichées dans tous les modèles. Vous voudrez toutefois, dans certains cas, que les directives soient seulement affichées pour des bailleurs de fonds précis, par exemple, si vous avez des consignes précises pour les candidats qui présentent une demande au Biotechnology and Biological Sciences Research Council (BBSRC). Vous pouvez également le préciser, au besoin.

" + delete_message_html: "Vous êtes sur le point de supprimer '%{guidance_summary}'. Êtes-vous sûr de vouloir le supprimer?" + guidance_group: + add_guidance_group: "Ajouter un groupe de directives" + guidance_group_list: "Liste des groupes de directives" + name_label: "Nom" + published: "Publié(e)" + subset: "Sous-ensemble facultatif" + subset_eg: "p. ex. école/département" + all_temp: "Tous les modèles" + help_text_add: "Veuillez indiquer le titre du groupe." + subset_option_help_text: "Si les directives s'adressent uniquement à un sous-ensemble d'utilisateurs, par exemple ceux d'un collège ou d'un institut précis, cochez cette case. Les utilisateurs pourront choisir d'afficher les directives destinées à ce sous-ensemble en répondant aux questions dans l'assistant « créer un plan »." + template_help_text_html: "Sélectionnez les modèles pour lesquels vous voulez que les directives soient affichées. Ce sera généralement pour tous les modèles." + title_help_text_html: "Donnez un nom approprié à votre groupe de directives, p. ex. directives de Glasgow. Ce nom sera utilisé pour indiquer à l'utilisateur final la provenance des directives, par exemple « Les directives sur les métadonnées de Glasgow »." + guidance_group_text_html: "

Vous devez d'abord créer un groupe de directives. Ces directives peuvent s'adresser à l'ensemble d'un établissement ou à un sous-ensemble, par exemple un collège ou une école, un institut ou un département précis. Lorsque vous créez des directives, on vous demandera de les assigner à un groupe de directives.

" + delete_message: "Vous êtes sur le point de supprimer '%{guidance_group_name}', ce qui modifiera les directives. Êtes-vous sûr de vouloir le supprimer?" + created_message: "Le groupe de directives a été créé avec succès." + updated_message: "Le groupe de directives a bien été mis à jour." + destroyed_message: "Le groupe de directives a bien été supprimé." + templates: + create_template: "Créer un modèle" + new_label: "Nouveau modèle" + template_details: "Renseignements sur le modèle" + edit_details: "Modifier les renseignements sur le modèle" + view_all_templates: "Voir tous les modèles" + funders_temp: "Modèles des bailleurs de fonds" + title_help_text: "Veuillez indiquer un titre pour votre modèle." + section_title_help_text: "Veuillez indiquer le titre de la section." + help_text_html: "
Veuillez fournir une description du modèle pour ce thème.
" + create_own_template_text_html: "

Si vous souhaitez ajouter un modèle institutionnel pour un plan de gestion des données, utilisez le bouton « créer un modèle ». Vous pouvez créer plus d'un modèle, au besoin, par exemple un modèle pour les chercheurs et un modèle pour les étudiants au doctorat.

+

Votre modèle sera présenté aux utilisateurs de votre établissement lorsqu'aucun modèle de bailleur de fonds ne s'applique. Si vous souhaitez ajouter des questions aux modèles de bailleur de fonds, utilisez les options « personnaliser le modèle » ci-dessous.

" + create_new_template_text_html: "

Pour créer un nouveau modèle, vous devez d'abord indiquer un titre et une description. Une fois que vous les avez enregistrés, des options vous seront présentées pour ajouter une ou plusieurs phases.

" + desc_help_text_html: "Entrez une description qui vous aide à faire la différence entre les autres modèles, par exemple si vous en avez pour différents publics." + own_temp: "Vos modèles" + add_phase_label: "Ajouter une nouvelle phase +" + view_phase_label: "Voir la phase" + edit_phase_label: "Modifier la phase" + back_to_edit_phase_label: "Retour au mode de modification" + edit_phase_details_label: "Modifier les renseignements sur la phase" + phase_details_label: "Renseignements sur la phase" + phase_order_label: "Ordre d'affichage" + phase_details_text_html: "

Vous indiquez ici le titre que les utilisateurs verront. Si vous prévoyez que votre plan de gestion des données comptera plusieurs phases, vous devez l'indiquer clairement dans le titre et la description.

" + phase_title_help_text: "Indiquez un titre pour la phase, par exemple plan de gestion des données initial, plan de gestion des données complet… Il s'agit du titre que les utilisateurs verront dans les onglets lorsqu'ils établiront un plan. Si votre plan compte une seule phase, choisissez un nom général, par exemple plan de gestion des données de Glasgow." + phase_number_help_text: "Cela vous permet de mettre les phases de votre modèle en ordre." + phase_desc_help_text_html: "Indiquez une description de base qui sera présentée aux utilisateurs et qui sera affichée au-dessus du résumé des sections et des questions auxquelles ils devront répondre." + phase_delete_message: "Vous êtes sur le point de supprimer '%{phase_title}', ce qui modifiera les versions, les sections et les questions en lien avec cette phase. Êtes-vous sûr de vouloir le supprimer?" + phase_new_text_html: "Lorsque vous créez une nouvelle phase pour votre modèle, une version sera automatiquement créée. Une fois que vous avez rempli le formulaire ci-dessous, des options vous seront présentées pour créer des sections et des questions." + versions_label: "Versions" + version_details_label: "Renseignements sur la version" + add_section: "Ajouter une section" + new_section: "Titre de la nouvelle section" + section_title_placeholder: "Titre de la nouvelle section" + section_desc_help_text_html: "

Indiquez une description de base. Il pourrait s'agir d'un résumé des points traités dans la section ou des directives sur la façon de répondre. Ce texte sera affiché dans la bannière de couleur une fois que la section pourra être modifiée.
" + section_number_help_text: "Cela vous permet de mettre les sections en ordre." + add_question: "Ajouter une question" + created: "Créé(e) à" + last_updated: "Dernière mise à jour" + published_label: "Publié(e)" + cannot_publish: "Assurez-vous que vous avez créé au moins une phase avec une version publiée." + title_label: "Titre" + desc_label: "Description" + actions: "Actions" + customise: "Personnaliser" + edit_customisation: "Modifier la personnalisation" + created_message: "Les renseignements ont été créés avec succès." + updated_message: "Les renseignements ont bien été mis à jour." + destroyed_message: "Les renseignements ont bien été supprimés." + section_delete_message: "Vous êtes sur le point de supprimer '%{section_title}', ce qui modifiera les questions en lien avec cette section. Êtes-vous sûr de vouloir le supprimer?" + versions: + clone_versions_label: "Effectuer d'importantes modifications" + edit_versions_label: "Effectuer de petites modifications" + edit_label: "Modifier" + versions_text_html: "Une première version est automatiquement créée. Si vous désirez plus tard effectuer d'importantes modifications à des versions publiées (p. ex. ajouter une section ou des questions), vous devez créer une nouvelle version. Si vous désirez seulement corriger des erreurs typographiques ou apporter de petites modifications sans en changer le sens, modifiez la version actuelle." + desc_help_text_html: "Indiquez une description de base." + delete_message: "Vous êtes sur le point de supprimer '%{version_title}', ce qui modifiera les sections et les questions en lien avec cette version. Êtes-vous sûr de vouloir le supprimer?" + edit_alert_label: "Modifier l'alerte" + edit_alert_text: "Veuillez examiner les types de modifications que vous êtes sur le point d'effectuer, car ce plan est déjà publié et peut être en cours d'utilisation." + questions: + question_text_label: "Texte de la question" + question_number_label: "Numéro de la question" + question_edit_button: "Modifier la question" + question_delete_button: "Supprimer la question" + answer_format_label: "Format de la réponse" + example_answer_label: "Exemple de réponse" + suggested_answer_label: "Suggestion de réponse" + suggested_answer_help_text_html: "Vous pouvez ajouter un exemple ou une suggestion de réponse pour aider les utilisateurs à répondre à la question. Ceux-ci seront affichés au-dessus de la case de réponse et peuvent être copiés et collés." + suggested_or_example_answer_label: "Suggestion de réponse / exemple" + suggested_or_example_answer_button: "Ajouter une suggestion de réponse ou un exemple" + edit_suggested_answer_button: "Modifier la suggestion de réponse ou l'exemple" + delete_suggested_answer_message: "Vous êtes sur le point de supprimer une suggestion de réponse ou un exemple pour '%{question_text}'. Êtes-vous sûr de vouloir le supprimer?" + default_value_label: "Valeur par défaut" + number_help_text: "Cela vous permet de mettre les questions en ordre dans une section." + question_format_help_text_html: "Vous pouvez choisir parmi ce qui suit :
  • - zone de texte (grande case pour les paragraphes);
  • - champ de texte (pour les réponses courtes);
  • +
  • - cases à cocher lorsque des options sont présentées dans une liste et plusieurs valeurs peuvent être sélectionnées;
  • +
  • - boutons d'options lorsque des options sont présentées dans une liste et qu'une seule option peut être sélectionnée;
  • +
  • - liste déroulante comme cette case – une seule option peut être sélectionnée;
  • +
  • - la case à choix multiples permet aux utilisateurs de sélectionner plusieurs options dans une liste déroulante à l'aide de la touche CTRL;
" + default_answer_help_text_html: "Tout ce que vous inscrivez dans cette section apparaîtra dans la case de réponse. Si vous désirez qu'une réponse apparaisse dans un certain format (p. ex. tableaux), vous pouvez indiquer le style ici." + themes_label: "Thèmes" + question_themes_help_text_html: "

Sélectionnez les thèmes applicables à cette question.

+

Cela permet ainsi d'intégrer vos directives générales destinées à l'établissement ainsi que celles provenant d'autres sources, par exemple de DCC ou de tous les départements ou les écoles pour lesquels vous fournissez des directives.

+

Vous pouvez sélectionner plusieurs thèmes à l'aide de la touche CTRL.

" + default_answer_label: "Réponse par défaut" + guidance_label: "Directives" + question_guidance_help_text_html: "Indiquez des directives précises pour accompagner cette question. Si vous possédez également des directives par thème, elles seront ajoutées en fonction de vos choix ci-dessous, il vaut mieux donc ne pas reproduire en double une trop grande quantité de texte." + delete_message: "Vous êtes sur le point de supprimer '%{question_text}'. Êtes-vous sûr de vouloir le supprimer?" + question_options_help_text_html: "Indiquez toute option que vous souhaitez afficher. Si vous désirez qu'une option soit sélectionnée au préalable, cochez la case par défaut." + + + + + helpers: + home: "Accueil" + return_home: "Revenir à la page d'accueil" + admin_area: "Section du super administrateur" + edit_profile: "Modifier le profil" + view_plans_label: "Mes plans" + create_plan_label: "Créer un plan" + about_us_label: "À propos" + news_label: "Nouvelles" + help_label: "Aide" + contact_label: "Contact" + jisc: "Le DCC est financé par" + + greeting: "Bonjour" + sign_in: "Se connecter" + sign_in_text: "Si vous avez déjà un compte avec l'Assistant PGD ou avec une version antérieure de l'Assistant PGD." + sign_out: "Se déconnecter" + sign_up: "S'inscrire" + sign_up_text: "Nouvel utilisateur de l'Assistant PGD? Inscrivez-vous aujourd'hui." + signed_in: "Connecté en tant que " + institution_sign_in_link: "Ou encore, connectez-vous avec l'authentifiant de votre établissement" + institution_sign_in: "Authentification à l'aide du compte institutionnel bientôt disponible!" + + + user_name: "Adresse électronique" + email: "Courriel" + org_not_listed: "Mon organisme n'est pas inscrit sur la liste." + email_tip: "Ceci doit être une adresse courriel valide - un message y sera envoyé pour le confirmer." + organisation_name_tip: "Veuillez saisir le nom de votre organisme." + password_tip: "Le mot de passe doit comprendre au moins huit caractères." + password_reentry_tip: "Celui-ci doit concorder avec ce que vous avez indiqué dans le champ précédent." + valid_email: "Vous devez entrer une adresse électronique valide." + user_details_text_html: "

Veuillez noter que votre adresse électronique sert de nom d'utilisateur. Si vous la modifiez, n'oubliez pas d'utiliser votre nouvelle adresse électronique pour vous connecter.

" + user_details_paragraph_html: "Vous pouvez modifier les renseignements ci-dessous." + remember_me: "Se souvenir de moi" + org_not_listed: "Mon organisme n'est pas inscrit sur la liste." + + password: "Mot de passe" + current_password: "Mot de passe actuel" + new_password: "Nouveau mot de passe" + password_conf: "Confirmation du mot de passe" + change_password: "Modifier votre mot de passe" + forgot_password: "Vous avez oublié votre mot de passe?" + password_too_small: "Votre mot de passe doit comprendre au moins huit caractères." + password_no_match: "La saisie doit correspondre à ce que vous avez indiqué dans le champ précédent." + no_pass_instructions: "Vous n'avez pas reçu les directives de confirmation?" + no_unlock_instructions: "Vous n'avez pas reçu les directives de déverrouillage?" + send_password_info: "Directives pour réinitialiser le mot de passe" + edit_password_info: "Si vous souhaitez modifier votre mot de passe, veuillez remplir les champs suivants." + accept_terms_html: "J'accepte les conditions *" + + text_area: "Zone de texte" + text_field: "Case de saisie simple" + radio_buttons: "Boutons d'option" + checkbox: "Case à cocher" + dropdown: "Liste déroulante" + multi_select_box: "Case à options multiples" + + error: "Erreur!" + comment: "Commentaire" + send: "Envoyer" + yes_text: "Oui" + no_text: "Non" + with: "avec" + singular_people: "personne" + plural_people: "personnes" + none: "Aucun" + title: "Titre" + note: "Remarque" + me: "Moi" + view: "Voir" + desc: "Description" + save: "Enregistrer" + preview: "Aperçu" + saving: "Enregistrement..." + loading: "Téléchargement..." + removing: "Suppression..." + unsaved: "Modifications non enregistrées" + unlink_account: "Dissocier le compte" + submit: + edit: "Modifier" + create: "Créer" + update: "Mettre à jour" + cancel: "Annuler" + save: "Enregistrer" + delete: "Supprimer" + back: "Retour" + discard: "Rejeter" + + name: "Nom" + first_name: "Prénom" + last_name: "Nom" + first_name_help_text: "Veuillez indiquer votre prénom." + surname_help_text: "Veuillez indiquer votre nom ou nom de famille." + owner: "Propriétaire" + orcid_id: "Numéro ORCID" + orcid_html: "Le numéro ORCID est un identifiant numérique constant qui différencie chaque chercheur, pour de plus amples renseignements." + sign_up_shibboleth_alert_text_html: "Remarque : Si vous avez déjà créé un compte de l'Assistant PGD et que vous désirez associer le compte à votre authentifiant de l'établissement, vous devez d'abord vous connecter à un compte existant de l'Assistant PGD. Si vous n'avez jamais créé de compte dans l'Assistant PDG, veuillez remplir le formulaire ci-dessous." + shibboleth_linked_text: "Votre compte est associé à votre authentifiant de l'établissement." + shibboleth_to_link_text: "Associez votre compte de l'Assistant PGD à votre authentifiant de l'établissement." + shibboleth_to_link_question: "Voulez-vous associer votre compte de l'Assistant PGD à votre authentifiant de l'établissement?" + shibboleth_unlink_label: "Dissociez votre authentifiant de l'établissement." + shibboleth_unlink_alert: "Alerte concernant la dissociation de votre authentifiant de l'établissement" + shibboleth_unlink_dialog_text: "

Vous êtes sur le point de dissocier l'Assistant PGD de votre authentifiant de l'établissement, voulez-vous continuer?

" + shibboleth_wait_confirmation: "En attente d'une confirmation pour :" + + section_label: "Section" + sections_label: "Sections" + questions_label: "Questions" + answers_label: "Réponses" + answer_questions: "Répondre aux questions" + last_edit: "Dernière modification" + select_action: "Choisir une action" + answered_by: "a répondu à cette question " + answered_by_part2: "" + suggested_answer: "Suggestion de réponse" + suggested_example: "Exemple de réponse" + notanswered: "Aucune réponse consignée" + noquestionanswered: "Aucune réponse aux questions" + guidance: "Directives" + policy_expectations: "Attentes de la politique" + export: "Exporter" + guidance_accordion_label: "Directives" + add_comment_accordion_label: "Ajouter une annotation" + comment_accordion_label: "Annotations" + + comments: + add_comment_label: "Ajouter une annotation" + add_comment_text: "Veuillez ajouter une annotation" + comment_label: "Annotations" + comments_label: "Annotations" + view_label: "Voir" + edit_label: "Modifier" + retract_label: "Supprimer" + clear_label: "Supprimer" + commented_by: "Annotation par :" + archive_own_comment_question: "Êtes-vous certain de vouloir supprimer cette annotation?" + archive_own_comment_button_label: "Supprimer" + archive_comment_question: "Êtes-vous certain de vouloir supprimer cette annotation?" + archive_comment_button_label: "Supprimer" + clear_by: "Annotation supprimée par" + retracted: "Annotation supprimée par vous" + + failures: + email_exists: "Cette adresse électronique est déjà inscrite." + registration_error: "Une erreur est survenue lors de l'inscription. Veuillez vérifier que l'adresse électronique saisie soit valide et que le mot de passe choisi soit d'au moins huit caractères." + notices: + successfully_updated: "Les renseignements ont bien été mis à jour. " + sharing_updated: "Les renseignements partagés ont bien été mis à jour." + invitation_issued: "L'invitation a bien été lancée." + enter_email: "Veuillez saisir votre adresse électronique." + access_removed: "Accès révoqué." + user_added: "L'utilisateur a été ajouté au projet." + answer_recorded: "La réponse a bien été sauvegardée." + answer_saving_error: "Une erreur est survenue lors de la sauvegarde de la réponse." + answer_not_changed: "Il n'y a aucun changement au contenu de la réponse - aucune sauvegarde." + comment_created: "Le commentaire a bien été créé." + comment_updated: "Le commentaire a bien été mis à jour." + comment_removed: "Le commentaire a été supprimé." + theme_created: "Le thème a bien été créé." + theme_updated: "Le thème a bien été mis à jour." + page_created: "La page a bien été créée." + page_updated: "La page a bien été mise à jour." + user_created: "L'utilisateur a bien été créé." + project_created: "Le projet a bien été créé." + project_updated: "Le projet a bien été mis à jour." + user_org_role_created: "Le rôle de l'utilisateur a bien été créé." + user_org_role_updated: "Le rôle de l'utilisateur a bien été mis à jour." + user_role_created: "Le type de rôle d'utilisateur a bien été créé." + user_role_updated: "Le type de rôle d'utilisateur a bien été mis à jour." + user_status_created: "Le statut de l'utilisateur a bien été créé." + user_status_updated: "Le statut de l'utilisateur a bien été mis à jour." + user_type_created: "Le type d'utilisateur a bien été créé." + user_type_updated: "Le type d'utilisateur a bien été mis à jour." + link_account_question: "Désirez-vous" + account_no_access: "Ce compte ne permet pas l'accès à ce plan." + plan_updated: "Le plan a bien été mis à jour." + settings_updated: "Les paramètres ont bien été mis à jour." + + progress_bar: + answered: "complétée(s)" + question: "question" + questions: "questions" + + org_type: + funder: "Bailleur de fonds" + institution: "Établissement" + project: "Projet" + organisation: "Organisme" + org_name: "Nom de l'organisme" + school: "École" + publisher: "Éditeur" + other_guidance: "Autres directives" + template: "Modèle" + templates: "Modèles" + child: "Unité" + other_org_help_text: "Veuillez indiquer le nom de votre organisme." + org_select_text: "Veuillez sélectionner un organisme: " + + + + + project: + create: "Créer un plan" + edit: "Modifier les renseignements sur le plan" + grant_title: "Numéro de la subvention" + grant_help_text: "Le numéro de référence de la subvention, le cas échéant [PLANS DE GESTION DES DONNÉES SUIVANT L'OCTROI SEULEMENT]" + not_applicable: "Sans objet / non inscrit dans la liste" + multi_templates: "Il existe un certain nombre de modèles que vous pouvez utiliser. Veuillez en choisir un." + project_name: "Nom du plan" + my_project_name: "Mon plan" + tips_label: "Conseils" + tips_text: "

Toutes les questions ne s'appliquent pas à tous les types de projets de recherche; les chercheurs sont invités à répondre aux questions pertinentes à leur projet.

Les chercheurs devraient revenir tout au long du projet pour réviser ou compléter des réponses.

" + success: "Le plan a été créé avec succès." + principal_investigator: "Chercheur principal/Chercheur" + principal_investigator_help_text: "Nom du ou des chercheurs principaux participant au projet" + principal_investigator_id: "Identification du chercheur principal/chercheur" + principal_investigator_id_help_text: "p. ex. ORCID http://orcid.org/." + funder_help_text: "Bailleur de fonds pour la recherche, s'il y a lieu" + funder_name: "Nom du bailleur de fonds" + project_question_desc_label: "Résumé au sujet des questions" + tab_plan: "Renseignements sur le plan" + tab_export: "Exporter" + export_text_html: "

Vous pouvez maintenant télécharger votre plan en divers formats, ce qui peut être utile si vous devez joindre votre plan à une demande de subvention.
+Sélectionnez le format que vous souhaitez utiliser et cliquez sur « Exporter ».

" + questions_answered: "questions complétées" + not_saved_answers_text_alert: "Vous avez modifié des réponses mais ne les avez pas sauvegardés :" + not_saved_answers_confirmation_alert: "Voulez-vous les sauvegarder maintenant?" + not_saved_answers_header: "Réponses non sauvegardées" + project_data_contact: "Personne-ressource pour les données du plan" + project_data_contact_help_text: "Nom (si différent de celui susmentionné), numéro de téléphone et adresse électronique" + project_name_help_text: "Si vous présentez une demande de financement, inscrivez le nom de la même façon que dans la demande de subvention." + project_desc_help_text_html: "
Questions à prendre en considération :
  • - Quelle est la nature de votre projet de recherche?
  • - Quelles questions de recherche abordez-vous?
  • - À quelle fin les données sont-elles recueillies ou créées?

Directives :

Résumez brièvement le type d'étude (ou les études) afin d'aider les autres à comprendre les raisons pour lesquelles les données sont recueillies ou créées.

" + project_identifier: "Identification" + project_identifier_help_text: "Une identification pertinente déterminée par le bailleur de fonds ou l'établissement" + project_static_info: "Ce plan s'appuie sur :" + projects_title: "Mes plans" + project_settings_text: "Les paramètres que vous sélectionnez seront affichés dans le tableau ci-dessous. Vous pouvez trier les données par en-tête ou les filtrer en indiquant une chaîne de texte dans la case de recherche." + project_text_when_no_project: "

Bienvenue
Vous êtes maintenant prêt à créer votre premier plan de gestion des données.
Cliquez sur le bouton « Créer un plan » ci-dessous pour commencer.

" + project_text_when_project: "

Le tableau ci-dessous contient une liste des plans que vous avez créés et de ceux que d'autres personnes partagent avec vous.
Ces plans peuvent être modifiés, partagés, exportés ou supprimés en tout temps.

" + confirmation_text: "Confirmer les renseignements sur le plan" + confirmation_text_desc: "Vous utilisez le modèle générique de plan de gestion des données Portage. Si vous avez des suggestions pour améliorer ce modèle, ou si vous souhaiteriez ajouter de nouveaux modèles basés sur les exigences d'un organisme subventionnaire ou sur les besoins d'une discipline, communiquez avec nous à l'adresse suivante : portage@carl-abrc.ca." + confirmation_button_text: "Oui, créer un plan" + project_details_text_html: "Cette page vous donne un aperçu de votre plan. Elle indique les éléments sur lesquels votre plan s'appuie et donne un aperçu des questions qui vous seront posées." + project_details_editing_text_html: "Répondre aux questions de base ci-dessous sur votre projet et cliquer sur 'Enregistrer' pour sauvegarder." + confirm_delete_text: "Êtes-vous sûr de vouloir supprimer ce plan? En supprimant le plan de votre liste, il sera également supprimé de la liste de plans des personnes avec lesquelles le plan est partagé, le cas échéant." + confirmation_text: "Confirmer les renseignements sur le plan" + confirmation_text_desc: "Vous utilisez le modèle générique de plan de gestion des données Portage. Si vous avez des suggestions pour améliorer ce modèle, ou si vous souhaiteriez ajouter de nouveaux modèles basés sur les exigences d'un organisme subventionnaire ou sur les besoins d'une discipline, communiquez avec nous à l'adresse suivante : portage@carl-abrc.ca." + + confirmation_button_text: "Oui, créer un plan" + default_confirmation_text_desc: "Vous avez sélectionné le plan de gestion des données par défaut, qui est établi en fonction de la liste de vérification du Digital Curation Center (UK). Vous avez ainsi accès à une série générale de questions et de directives sur le plan de gestion des données. Pour de plus amples renseignements, consultez la : DMP checklist 2013 (Liste de vérification 2013 pour un plan de gestion des données)." + default_confirmation_button_text: "Créer un plan" + alert_default_template_text_html: " Veuillez noter que %{org_name} fournit un modèle de plan de gestion des données. Si vous désirez l'utiliser, sélectionnez « Annuler », autrement cliquez sur « Créer un plan »." + share: + tab_share: "Partager" + shared_label: "Partagé?" + share_text_html: "

Vous pouvez permettre aux autres d'avoir accès à votre plan. Il y a trois niveaux d'autorisation.

  • Les utilisateurs ayant un accès en \"lecture seule\" peuvent seulement lire le plan.
  • Les éditeurs peuvent collaborer au plan.
  • Les copropriétaires peuvent également collaborer au plan, en plus de pouvoir modifier les renseignements sur le plan et contrôler l'accès au plan.

Ajoutez chaque collaborateur à tour de rôle en indiquant son adresse électronique ci-dessous, en choisissant un niveau d'autorisation et en cliquant sur \"Ajouter un collaborateur\".

Les personnes invitées recevront un avis par courriel pour les informer qu'elles ont accès à ce plan et pour les inviter à s'inscrire à l'Assistant PGD si elles n'ont pas déjà un compte. Un avis est également émis lorsque le niveau d'autorisation d'un utilisateur est modifié.

" + collaborators: "Collaborateurs" + add_collaborator: "Ajouter un collaborateur" + add: "Ajouter" + permissions: "Autorisations" + permissions_desc: "Les éditeurs peuvent collaborer aux plans. Les copropriétaires ont des droits supplémentaires et peuvent modifier les renseignements sur le plan et contrôler l'accès." + remove: "Supprimer l'accès d'un utilisateur" + confirmation_question: "Êtes-vous sûr?" + owner: "Propriétaire" + co_owner: "Copropriétaire" + edit: "Éditer" + read_only: "Lecture seule" + locked_section_text: "Cette section est verouillée pour permettre sa modification par " + email_text: "

Des droits d'accès '%{access_level}' au projet PGD %{project_link} vous ont été octroyés.

" + permission_email_text: "

Les droits d'accès au projet PGD '%{project_link}' ont été changés. Vous avez maintenant un accès %{access_level}.

" + access_removed_email_text: "

Votre droit d'accès au projet PGD '%{project_title}' a été révoqué.

" + export: + generated_by: "Ce document a été généré par l'Assistant PGD (https://reseauportage.ca)" + admin_details: "Renseignements administratifs" + create_page: + title: "Créer un nouveau plan" + desc_html: "

Choisissez parmi les listes déroulantes suivantes pour que nous puissions déterminer les questions et les directives à afficher dans votre plan.

+

Si vous n'avez pas à répondre aux exigences spécifiques d'un organisme subventionnaire ou d'un établissement, vous pouvez choisir le modèle de plan de gestion Portage qui s'appuie sur des normes internationales et sur les meilleures pratiques. Il a été préparé et est gardé à jour par un groupe d'experts en gestion des données de recherche travaillant au sein de bibliothèques de recherche à travers le Canada.

" + default_template: "Plan de gestion des données par défaut" + funders_question: "Si vous présentez une demande de financement, sélectionnez votre bailleur de fonds pour la recherche." + funders_question_description: "Autrement, laissez l'espace vide." + institution_question: "Choisir l'option appropriée dans le menu déroulant pour que les questions et conseils appropriés s'affichent dans votre plan." + institution_question_description: "Vous pouvez ne faire aucune sélection ou choisir un établissement ou organisme autre que le vôtre. Le modèle Portage sera utilisé par défaut s'il n'y a aucune sélection." + other_guidance_question: "Cochez les cases correspondantes pour sélectionner d'autres directives que vous aimeriez consulter." + other_funder_name_label: "Nom du bailleur de fonds, le cas échéant" + template_question: "Choisir un modèle" + configure: "Configurer" + columns: + name: "Nom" + owner: "Propriétaire" + shared: "Partagé?" + template_owner: "Propriétaire du modèle" + last_edited: "Dernière modification" + identifier: "Identifiant" + grant_number: "Numéro de la subvention" + principal_investigator: "Chercheur principal/chercheur" + data_contact: "Personne-ressource pour les données du plan" + description: "Description" + filter: + placeholder: "Filtrer les plans" + submit: "Filtrer" + cancel: "Annuler" + no_matches: "Aucune correspondance pour '%{filter}'" + + plan: + export: + default_title: "Titre PGD" + pdf: + question_not_answered: "Question sans réponse." + generated_by: "Ce document a été généré par l'Assistant PGD (https://reseauportage.ca)" + space_used: "Environ %{space_used}% de l'espace disponible utilisé (%{num_pages} pages maximum)" + project_name: "Nom du projet" + project_identifier: "Identifiant du projet" + grant_title: "Titre de la subvention" + principal_investigator: "Chercheur principal/chercheur" + project_data_contact: "Personne-ressource pour les données du plan" + project_description: "Description" + funder: "Bailleur de fonds" + institution: "Établissement" + section: "Section" + question: "Question" + answer: "Réponse" + selected_options: "Option(s) choisie(s)" + answered_by: "Réponse faite par" + answered_at: "Réponse faite à" + settings: + title: "Paramètres" + projects: + title: "Paramètres - Mes plans" + desc: "Le tableau ci-dessous indique les colonnes disponibles qui peuvent être affichées dans la liste « Mes plans ». Choisissez celles que vous souhaitez voir apparaître." + errors: + no_name: "La colonne « nom » doit faire partie de la liste de colonnes." + duplicate: "Copiez le nom de la colonne. Sélectionnez chaque colonne une seule fois." + unknown: "Nom de colonne inconnu" + plans: + admin_details: "Renseignements administratifs" + sections: "Sections" + title: "Titre du plan" + reset: "Réinitialiser" + custom_formatting: "(À l'aide des valeurs de mise en forme de PDF personnalisées)" + template_formatting: "(À l'aide des valeurs de mise en forme de PDF modèles)" + default_formatting: "(À l'aide des valeurs de mise en forme de PDF par défaut)" + included_elements: "Éléments inclus" + pdf_formatting: "Mise en forme du PDF" + font: "Police" + font_face: "Caractère" + font_size: "Taille" + margin: "Marges" + margins: + top: "Haut" + bottom: "Bas" + left: "Gauche" + right: "Droite" + max_pages: "Nombre maximal de pages" + errors: + missing_key: "Un paramètre demandé n'a pas été fourni." + invalid_margin: "La valeur de la marge est invalide." + negative_margin: "La valeur de la marge ne peut pas être négative." + unknown_margin: "Marge inconnue. On peut seulement choisir « haut », « bas », « gauche » ou « droite »." + invalid_font_size: "Taille de la police invalide" + invalid_font_face: "Caractère de la police invalide" + unknown_key: "Paramètre de mise en forme inconnu" + invalid_max_pages: "Nombre maximal de pages invalide" + mailer: + sharing_notification: "Des droits d'accès à un plan de gestion de données vous ont été octroyés" + permissions_change: "Plan de gestion de données : droits d'accès modifiés" + access_removed: "Plan de gestion de données : accès révoqué" + + about_page: + title: "À propos de l'Assistant PGD" + tab_1: "Assistant PGD" + tab_2: "Modèle de plan de gestion des données Portage" + body_text_tab_1_html: "
+

+L'Assistant PGD est un outil d'aide à la préparation d'un plan de gestion des données (PGD). +

+

Les meilleures pratiques en matière de gestion des données sont utilisées pour conseiller le chercheur.

+
    + +
  • L'outil guide celui-ci pas à pas à travers les questions clés pour le développement d'un plan. +
  • De l'aide et des exemples sont fournis en contexte. +
  • Toutes les questions ne s'appliquent pas à tous les types de projets de recherche; les chercheurs sont invités à répondre aux questions pertinentes à leur projet. +
  • Les chercheurs peuvent revenir tout au long de leur projet pour réviser ou compléter des réponses.
+
+ +

Comment fonctionne l'outil

+
+

L'Assistant PGD comprend un modèle générique de plan de gestion des données, Portage, que les chercheurs peuvent utiliser. Des directives sont fournies afin de les aider à interpréter les questions et à y répondre.

+ +

Nous souhaitons obtenir vos commentaires! Si vous avez des suggestions sur la façon d'améliorer le modèle existant, ou si vous aimeriez ajouter d'autres modèles basés sur les exigences d'organismes de financement ou sur les besoins des disciplines, communiquez avec votre établissement universitaire ou communiquez avec nous à portage@carl-abrc.ca. + +

+
+

Par où commencer

+
+ +

Si vous avez un compte, connectez-vous et commencez à créer ou modifier votre plan de gestion des données.

+

Si vous ne possédez pas de compte dans l'Assistant PGD, cliquez sur « S'inscrire » dans la page d'accueil.

+

Veuillez noter que nous travaillons actuellement à un système d'authentification unique. Vous pourrez éventuellement associer votre compte existant à votre identifiant campus dès que la fonction sera disponible. + +

Visitez la page « Aide » pour consulter l'aide disponible.

+
+

Commentaires

+
+

Si vous avez des questions ou des commentaires au sujet de l'Assistant PGD, communiquez avec votre établissement universitaire ou communiquez avec nous par courriel à portage@carl-abrc.ca.

+
" + + + body_text_tab_2_html: "

Le modèle de plan de gestion des données Portage s'appuie sur des normes internationales et sur les meilleures pratiques. Il a été préparé et est gardé à jour par un groupe d'experts en gestion des données de recherche travaillant au sein de bibliothèques de recherche à travers le Canada.

+ +

Les organismes peuvent rendre disponible leur propre modèle de plan dans l'Assistant PGD. Le modèle Portage est le modèle par défaut. On peut sélectionner le modèle d'un autre organisme à l'aide du menu déroulant.

+ +

Les organismes subventionnaires, universités et autres organismes qui souhaiteraient faire intégrer leur modèle de plan peuvent communiquer leur demande à l'adresse suivante : portage@carl-abrc.ca.

" + + + + help_page: + title: "Aide" + tab_1: "Concernant l'Assistant PGD" + tab_2: "Concernant la planification de la gestion des données" + tab_3: "Personne-ressource dans votre institution" + #body_text_tab_2_html: "

Le service des bibliothèques de l'Université de l'Alberta a mis au point un research data management guide (guide sur la gestion des données de recherche) qui peut fournir d'autres directives sur la planification de la gestion des données. Si vous avez besoin de plus de directives, communiquez avec nous par courriel à portage@carl-abrc.ca.

" + body_text_tab_2_html: "Si vous avez besoin de plus de directives, communiquez avec nous par courriel à portage@carl-abrc.ca.

" + + + body_text_tab_1_html: "

Lorsque vous vous connectez à l'Assistant PGD, vous serez dirigé vers la page « Mes plans ». À partir de cette page, vous pouvez modifier, partager, exporter ou supprimer l'un ou l'autre de vos plans. Vous verrez également les plans qui ont été partagés avec vous par d'autres personnes.

+

Créer un plan

+

Pour créer un plan, cliquez sur le bouton « Créer un plan » à la page « Mes plans » ou dans le menu du haut. Faites des choix dans les listes déroulantes et les cases à cocher afin de déterminer les questions et les directives qui seront affichées. Confirmez votre choix en cliquant sur « Oui, créer un plan ».

+

Rédiger votre plan

+

L'interface à onglets vous permet de naviguer dans diverses fonctions lorsque vous mettez au point votre plan.

+
    +
  • - L'option « renseignements sur le plan » comprend des renseignements administratifs de base, indique la série de questions et de directives sur laquelle votre plan s'appuie et vous donne un aperçu des questions auxquelles vous devez répondre.
  • +
  • - Les onglets suivants contiennent les questions auxquelles il faut répondre. Il peut y avoir plus d'un onglet si votre bailleur de fonds ou votre université pose différentes séries de questions à diverses étapes, par exemple lors d'une demande de subvention et après l'octroi d'une subvention.
  • +
  • - L'onglet « Partager » vous permet d'inviter d'autres personnes à lire votre plan ou à y collaborer.
  • +
  • - L'onglet « Exporter » vous permet de télécharger votre plan en divers formats, ce qui peut être utile si vous devez joindre votre plan à une demande de subvention.
  • +
+

Lorsque vous consultez l'un ou l'autre des onglets de questions, vous verrez les différentes sections de votre plan affichées. Cliquez sur ces onglets à tour de rôle pour répondre aux questions. Vous pouvez choisir le format de vos réponses à l'aide des boutons de mise en forme.

+

Les directives sont affichées dans la partie de droite. Cliquez sur le symbole « + » pour les consulter.

+

N'oubliez pas d'enregistrer vos réponses avant de poursuivre.

+

Partager les plans

+

Inscrivez l'adresse électronique de tout collaborateur que vous aimeriez inviter à lire ou à modifier votre plan. Choisissez le niveau d'autorisation que vous souhaitez lui accorder dans les options de la liste déroulante et cliquez sur « Ajouter un collaborateur ».

+

Exporter les plans

+

En choisissant cette option, vous pouvez télécharger votre plan en divers formats, ce qui peut être utile si vous devez joindre votre plan à une demande de subvention. Choisissez le format dans lequel vous aimeriez voir ou télécharger votre plan et cliquez pour l'exporter. Lorsque vous vous connectez à l'Assistant PGD, vous êtes dirigé vers la page « Mes plans ». À partir de cette page, vous pouvez modifier, partager, exporter ou supprimer l'un ou l'autre de vos plans. Vous voyez également les plans qui ont été partagés avec vous par d'autres personnes.

" + + + body_text_tab_3_html: "

Votre bibliothèque universitaire offre peut-être déjà du soutien dans le développement de plans de gestion de données. Communiquez avec le bibliothécaire responsable de votre discipline au sein de votre établissement pour en en savoir davantage. Vous trouverez ci-dessous les coordonnées dans le cas des bibliothèques universitaires qui ont une personne-ressource désignée ou un service spécialisé dans la gestion des données de recherche.

+

Si votre établissement n'est pas listé, vous pourriez aussi communiquer avec le Réseau Portage à l'adresse suivante : portage@carl-abrc.ca. On pourra vous rediriger vers la ressource la plus appropriée à votre demande.

+

Personne-ressource

+

Acadia University: Maggie Neilson

+

Brandon University: Carmen Kazakoff-Lane, Betty Braaksma

+

Brock University: Heather Whipple

+

Carleton University: Jane Fry, Sylvie Lafortune

+

Concordia University: Alex Guindon, Danielle Dennie

+

Kwantlen Polytechnic University: Chris Burns, Todd Mundle

+

Lakehead University: Debra Gold

+

MacEwan University: Tara Stieglitz

+

McGill University : K. Jane Burpee, Jenn Riley

+

McMaster University: RDM@McMaster, Jay Brodeur

+

Mount Allison University: Ruth Collings

+

Queen's University: Jeff Moon, Alexandra Cooper

+

Simon Fraser University: Carla Graebner

+

Université de Moncton: Victoria Volkanova

+

University of British Columbia: Eugene Barsky, Research Data Team

+

University of Alberta: Research Data Management Group, Larry Laliberte

+

University of Calgary: John Brosz, Susan Powelson

+

University of Guelph: Research Enterprise & Scholarly Communication Team

+

University of Lethbridge: Research Services Group [U. of Lethbridge Library]

+

University of Manitoba: Mayu Ishida, Gary Strike

+

University of Ontario Institute of Technology: Katie Harding

+

University of Ottawa / Université d\'Ottawa: uOttawa Library Research Data Management Group, Talia Chung

+

University of Regina: Marilyn Andrews

+

University of Victoria: Kathleen Matthews, Daniel Brendle-Moczuk

+

University of Waterloo: Research Data Management Services

+

Western University: Western RDM Group, Western Libraries RDM Subcommittee

+

Wilfrid Laurier University: Michael Steeleworthy

" + + + + contact_page: + title: "Communiquez avec nous" + intro_text_html: "

L'Assistant PGD est rendu disponible par les Bibliothèques de l'Université d'Alberta. Pour en savoir plus sur les services offerts par ces bibliothèques, consulter la page suivante : Research Data Management page. Si vous désirez communiquer avec nous concernant l'Assistant PGD, merci de saisir votre message dans le formulaire Web ci-dessous ou nous écrire à portage@carl-abrc.ca.

+

Nous joindre

" + + terms_page: + title: "Exploitation sous licence et conditions d'utilisation" + body_text_html: " + +
+

Le Réseau Portage est un regroupement de bibliothèques travaillant à la gestion des données de recherche au Canada.

+

Assistant PGD

+

L'Assistant PGD (\"l'outil\",\"le système\") est fourni grâce à une application à code source libre appelée DMPOnline qui a été mise au point par le Digital Curation Centre (DCC) et partagée en vertu de la AGPL license (licence publique générale Affero).

+ +

Modèle de plan de gestion des données et ressources associées

+

Le modèle de plan de gestion des données Portage ainsi que les directives reliées de l'Assistant PGD Portage (mais pas sur les plans mêmes) sont distribués en vertu d'une Creative Commons Zero License (licence Creative Commons Zéro).

+ +

CC0

+ +

Les modèles institutionnels de plan de gestion des données ainsi que les directives qui y sont reliées sont distribués en vertu de leurs propres licences Creative Commons. Contacter chaque institution pour obtenir plus d'information.

+
+ + +

Vos renseignements personnels

+
+

Le service des bibliothèques de l'Université de l'Alberta héberge l'Assistant PGD et conserve vos plans de gestion des données en votre nom, mais les plans vous appartiennent et sont sous votre responsabilité. Les renseignements conservés par Assistant PGD sont régis par la politique de confidentialité du Site Web du service des bibliothèques de l'Université de l'Alberta.

+
+ +

Mots de passe

+
+

Votre mot de passe est mémorisé sous forme codée et ne peut pas être récupéré. Si vous avez oublié votre mot de passe, vous devez le réinitialiser.

+
+ +
+
+

En utilisant l'outil, vous comprenez et acceptez ces conditions.

" diff --git a/config/routes.rb b/config/routes.rb index a921b78..ff2c5af 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,231 +1,239 @@ DMPonline4::Application.routes.draw do - - - devise_for :users, :controllers => {:registrations => "registrations", :confirmations => 'confirmations', :passwords => 'passwords', :sessions => 'sessions', :omniauth_callbacks => 'users/omniauth_callbacks'} do - get "/users/sign_out", :to => "devise/sessions#destroy" - end - resources :contacts, :controllers => {:contacts => 'contacts'} - - # WAYFless access point - use query param idp - get 'auth/shibboleth' => 'users/omniauth_shibboleth_request#redirect', :as => 'user_omniauth_shibboleth' - get 'auth/shibboleth/assoc' => 'users/omniauth_shibboleth_request#associate', :as => 'user_shibboleth_assoc' - - # You can have the root of your site routed with "root" - # just remember to delete public/index.html. - root :to => 'home#index' - - ActiveAdmin.routes(self) - get "about_us" => 'static_pages#about_us', :as => "about_us" get "help" => 'static_pages#help', :as => "help" get "news" => 'static_pages#news', :as => "news" get "terms" => 'static_pages#termsuse', :as => "terms" get "existing_users" => 'existing_users#index', :as => "existing_users" + devise_for :users, :controllers => {:registrations => "registrations", :confirmations => 'confirmations', :passwords => 'passwords', :sessions => 'sessions', :omniauth_callbacks => 'users/omniauth_callbacks'} do + get "/users/sign_out", :to => "devise/sessions#destroy" + end + + # WAYFless access point - use query param idp + get 'auth/shibboleth' => 'users/omniauth_shibboleth_request#redirect', :as => 'user_omniauth_shibboleth' + get 'auth/shibboleth/assoc' => 'users/omniauth_shibboleth_request#associate', :as => 'user_shibboleth_assoc' + + ActiveAdmin.routes(self) #organisation admin area - get "org/admin/users" => 'organisation_users#admin_index', :as => "org/admin/users" - - resources :organisations, :path => 'org/admin' do - member do - get 'children' - get 'templates' - get 'admin_show' - get 'admin_edit' - put 'admin_update' - end - end - - resources :guidances, :path => 'org/admin/guidance' do - member do - get 'admin_show' + #match "org/admin/users" => 'organisation_users#admin_index', :as => "org/admin/users" + resources :users, :path => 'org/admin/users', only: [] do + collection do get 'admin_index' - get 'admin_edit' - get 'admin_new' - delete 'admin_destroy' - post 'admin_create' - put 'admin_update' - - get 'update_phases', :as => 'update_phases' - get 'update_versions', :as => 'update_versions' - get 'update_sections', :as => 'update_sections' - get 'update_questions', :as => 'update_questions' + put 'admin_api_update' end end - resources :guidance_groups, :path => 'org/admin/guidancegroup' do - member do - get 'admin_show' - get 'admin_new' - get 'admin_edit' - delete 'admin_destroy' - post 'admin_create' - put 'admin_update' + # You can have the root of your site routed with "root" + # just remember to delete public/index.html. + root :to => 'home#index' + get '/:locale' => 'home#index', :as => 'locale_root' + + scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do + resources :contacts, :controllers => {:contacts => 'contacts'} + resources :organisations, :path => 'org/admin' do + member do + get 'children' + get 'templates' + get 'admin_show' + get 'admin_edit' + put 'admin_update' + end end - end - resource :organisation + resources :guidances, :path => 'org/admin/guidance' do + member do + get 'admin_show' + get 'admin_index' + get 'admin_edit' + get 'admin_new' + delete 'admin_destroy' + post 'admin_create' + put 'admin_update' - #resources :splash_logs - - resources :dmptemplates, :path => 'org/admin/templates' do - member do - get 'admin_index' - get 'admin_template' - get 'admin_new' - get 'admin_addphase' - get 'admin_phase' - get 'admin_previewphase' - get 'admin_cloneversion' - delete 'admin_destroy' - delete 'admin_destroyversion' - delete 'admin_destroyphase' - delete 'admin_destroysection' - delete 'admin_destroyquestion' - delete 'admin_destroysuggestedanswer' - post 'admin_create' - post 'admin_createphase' - post 'admin_createsection' - post 'admin_createquestion' - post 'admin_createsuggestedanswer' - put 'admin_update' - put 'admin_updatephase' - put 'admin_updateversion' - put 'admin_updatesection' - put 'admin_updatequestion' - put 'admin_updatesuggestedanswer' + get 'update_phases', :as => 'update_phases' + get 'update_versions', :as => 'update_versions' + get 'update_sections', :as => 'update_sections' + get 'update_questions', :as => 'update_questions' + end end - end - resources :phases - resources :versions - resources :sections - resources :questions - resources :question_themes + resources :guidance_groups, :path => 'org/admin/guidancegroup' do + member do + get 'admin_show' + get 'admin_new' + get 'admin_edit' + delete 'admin_destroy' + post 'admin_create' + put 'admin_update' + end + end + + #resource :organisation + + #resources :splash_logs + + resources :dmptemplates, :path => 'org/admin/templates' do + member do + get 'admin_index' + get 'admin_template' + get 'admin_new' + get 'admin_addphase' + get 'admin_phase' + get 'admin_previewphase' + get 'admin_cloneversion' + delete 'admin_destroy' + delete 'admin_destroyversion' + delete 'admin_destroyphase' + delete 'admin_destroysection' + delete 'admin_destroyquestion' + delete 'admin_destroysuggestedanswer' + post 'admin_create' + post 'admin_createphase' + post 'admin_createsection' + post 'admin_createquestion' + post 'admin_createsuggestedanswer' + put 'admin_update' + put 'admin_updatephase' + put 'admin_updateversion' + put 'admin_updatesection' + put 'admin_updatequestion' + put 'admin_updatesuggestedanswer' + end + end + + resources :phases + resources :versions + resources :sections + resources :questions + resources :question_themes - resources :themes + resources :themes - resources :answers - resources :plan_sections - resources :comments do - member do + resources :answers + resources :plan_sections + resources :comments do + member do put 'archive' + end end - end - resources :projects do - resources :plans do - member do - get 'status' - get 'locked' - get 'answer' - get 'edit' - post 'delete_recent_locks' - post 'lock_section' - post 'unlock_section' - post 'unlock_all_sections' - get 'export' - get 'warning' - get 'section_answers' + resources :projects do + resources :plans do + member do + get 'status' + get 'locked' + get 'answer' + get 'edit' + post 'delete_recent_locks' + post 'lock_section' + post 'unlock_section' + post 'unlock_all_sections' + get 'export' + get 'warning' + get 'section_answers' + end + end + + member do + get 'share' + get 'export' + post 'invite' + post 'create' + end + collection do + get 'possible_templates' + get 'possible_guidance' + end end - end - - member do - get 'share' - get 'export' - post 'invite' - post 'create' - end - collection do - get 'possible_templates' - get 'possible_guidance' - end - end - resources :project_partners - resources :project_groups + resources :project_partners + resources :project_groups - resources :users - resources :user_statuses - resources :user_types + resources :users + resources :user_statuses + resources :user_types - resources :user_role_types - resources :user_org_roles + resources :user_role_types + resources :user_org_roles - resources :organisation_types - resources :pages + resources :organisation_types + resources :pages - resources :file_types - resources :file_uploads + resources :file_types + resources :file_uploads - namespace :settings do - resource :projects - resources :plans - end - - namespace :api, defaults: { format: :json } do - namespace :v0 do - resources :guidance_groups, only: [ :index, :show ] - resources :guidances, only: [ :index, :show ] - resources :plans, only: :create, controller: "projects", path: "plans" + namespace :settings do + resource :projects + resources :plans end + + resources :token_permission_types, only: [:index] + + namespace :api, defaults: {format: :json} do + namespace :v0 do + resources :guidance_groups, only: [:index, :show] + resources :guidances, only: [:index, :show] + resources :plans, only: :create, controller: "projects", path: "plans" + end + end + + get '/api' => redirect('/swagger/dist/index.html?url=/apidocs/api-docs.json') + + # The priority is based upon order of creation: + # first created -> highest priority. + + # Sample of regular route: + # match 'products/:id' => 'catalog#view' + # Keep in mind you can assign values other than :controller and :action + + # Sample of named route: + # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase + # This route can be invoked with purchase_url(:id => product.id) + + # Sample resource route (maps HTTP verbs to controller actions automatically): + # resources :products + + # Sample resource route with options: + # resources :products do + # member do + # get 'short' + # post 'toggle' + # end + # + # collection do + # get 'sold' + # end + # end + + # Sample resource route with sub-resources: + # resources :products do + # resources :comments, :sales + # resource :seller + # end + + # Sample resource route with more complex sub-resources + # resources :products do + # resources :comments + # resources :sales do + # get 'recent', :on => :collection + # end + # end + + # Sample resource route within a namespace: + # namespace :admin do + # # Directs /admin/products/* to Admin::ProductsController + # # (app/controllers/admin/products_controller.rb) + # resources :products + # end + + + # See how all your routes lay out with "rake routes" + + # This is a legacy wild controller route that's not recommended for RESTful applications. + # Note: This route will make all actions in every controller accessible via GET requests. + # match ':controller(/:action(/:id))(.:format)' end - - get '/api' => redirect('/swagger/dist/index.html?url=/apidocs/api-docs.json') - - # The priority is based upon order of creation: - # first created -> highest priority. - - # Sample of regular route: - # match 'products/:id' => 'catalog#view' - # Keep in mind you can assign values other than :controller and :action - - # Sample of named route: - # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase - # This route can be invoked with purchase_url(:id => product.id) - - # Sample resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - # Sample resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Sample resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Sample resource route with more complex sub-resources - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', :on => :collection - # end - # end - - # Sample resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end - - - # See how all your routes lay out with "rake routes" - - # This is a legacy wild controller route that's not recommended for RESTful applications. - # Note: This route will make all actions in every controller accessible via GET requests. - # match ':controller(/:action(/:id))(.:format)' end diff --git a/db/migrate/20160719102542_remove_depricated_api_structure.rb b/db/migrate/20160719102542_remove_depricated_api_structure.rb new file mode 100644 index 0000000..d19cfb9 --- /dev/null +++ b/db/migrate/20160719102542_remove_depricated_api_structure.rb @@ -0,0 +1,9 @@ +class RemoveDepricatedApiStructure < ActiveRecord::Migration + def up + drop_table :token_permissions + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end diff --git a/db/migrate/20160719140055_create_languages.rb b/db/migrate/20160719140055_create_languages.rb new file mode 100644 index 0000000..81376d2 --- /dev/null +++ b/db/migrate/20160719140055_create_languages.rb @@ -0,0 +1,9 @@ +class CreateLanguages < ActiveRecord::Migration + def change + create_table :languages do |t| + t.string :abbreviation + t.string :description + t.string :name + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 5345ca5..aa83d1b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,9 +10,7 @@ # you'll amass, the slower it'll run and the greater likelihood for issues). # # It's strongly recommended that you check this file into your version control system. - -ActiveRecord::Schema.define(version: 20160615095101) do - +ActiveRecord::Schema.define(version: 20160719140055) do create_table "answers", force: true do |t| t.text "text" t.integer "plan_id" @@ -122,6 +120,12 @@ t.boolean "published" end + create_table "languages", force: true do |t| + t.string "abbreviation" + t.string "description" + t.string "name" + end + create_table "option_warnings", force: true do |t| t.integer "organisation_id" t.integer "option_id" @@ -398,7 +402,6 @@ t.datetime "invitation_sent_at" t.datetime "invitation_accepted_at" t.string "other_organisation" - t.boolean "dmponline3" t.boolean "accept_terms" t.integer "organisation_id" t.string "api_token" diff --git a/db/seeds.rb b/db/seeds.rb index 68923b5..96cb7b4 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -121,7 +121,7 @@ end end - users = { +users = { 'Super admin' => { email: "super_admin@example.com", password: "password123", @@ -599,18 +599,65 @@ end end -token_permission_types = { - 'guidances' => { - description: "allows a user access to the guidances api endpoint" - }, - 'plans' => { - description: "allows a user access to the plans api endpoint" - } +formatting = { + 'Funder' => { + font_face: "Arial, Helvetica, Sans-Serif", + font_size: 11, + margin: { top: 20, bottom: 20, left: 20, right: 20 } + }, + 'DCC' => { + font_face: "Arial, Helvetica, Sans-Serif", + font_size: 12, + margin: { top: 20, bottom: 20, left: 20, right: 20 } + } } -token_permission_types.each do |title, details| +formatting.each do |org, settings| + template = Dmptemplate.find_by_title("#{org} Template") + template.settings(:export).formatting = settings + template.save! +end + +token_permission_types = { + 'guidances' => { + description: "allows a user access to the guidances api endpoint" + }, + 'plans' => { + description: "allows a user access to the plans api endpoint" + } +} + +token_permission_types.each do |title,settings| token_permission_type = TokenPermissionType.new token_permission_type.token_type = title - token_permission_type.text_desription = details[:description] + token_permission_type.text_desription = settings[:description] token_permission_type.save! end + +languages = { + 'EN-UK' => { + abbreviation: "en-UK", + description: "", + name: "en-UK" + }, + 'FR' => { + abbreviation: "fr", + description: "", + name: "fr" + }, + 'DE' => { + abbreviation: "de", + description: "", + name: "de" + } +} + +languages.each do |l, details| + language = Language.new + language.abbreviation = details[:abbreviation] + language.description = details[:description] + language.name = details[:name] + language.save! +end + + diff --git a/test/fixtures/dmptemplates_guidance_groups.yml b/test/fixtures/dmptemplates_guidance_groups.yml new file mode 100644 index 0000000..f49066a --- /dev/null +++ b/test/fixtures/dmptemplates_guidance_groups.yml @@ -0,0 +1,27 @@ +# dcc_template_1: +# guidance_group: dcc_guidance_group_1 +# dmptemplate: dcc_template + +# ahrc_template_1: +# guidance_group: funder_guidance_group_1 +# dmptemplate: ahrc_template + +# bbsrc_template_1: +# guidance_group: funder_guidance_group_2 +# dmptemplate: bbsrc_template + +# aru_template_1: +# guidance_group: institution_guidance_group_1 +# dmptemplate: aru_template + +# au_template_1: +# guidance_group: institution_guidance_group_2 +# dmptemplate: au_template + +# bu_template_1: +# guidance_group: institution_guidance_group_3 +# dmptemplate: bu_template + +# bu_template_2: +# guidance_group: institution_guidance_group_4 +# dmptemplate: bu_template \ No newline at end of file diff --git a/test/fixtures/guidance_groups.yml b/test/fixtures/guidance_groups.yml index 86aa584..ce3dbdd 100644 --- a/test/fixtures/guidance_groups.yml +++ b/test/fixtures/guidance_groups.yml @@ -4,37 +4,50 @@ name: "DCC guidance group 1" organisation: dcc guidances: related_policies, existing_data, licensing_of_existing_data, relationship_to_existing_data, description_of_data_content, data_format, data_volumes, data_type, data_capture_methods, data_organisation, data_quality, documentation, metadata_capture, metadata_standards, discovery_by_users, ethical_issues, ipr_ownership_and_licencing, active_data_storage, backup_procedures, data_security, data_selection, preservation_plan, period_of_preservation, data_repository, audience, expected_reuse, method_for_data_sharing, timeframe_for_data_sharing, embargo_period, restrictions_on_sharing, managed_access_procedures, responsibilities, resourcing_skills_and_training, resourcing_hardware_and_software, resourcing_preservation_and_data_sharing + dmptemplates: dcc_template # funder groups funder_guidance_group_1: name: "Funder guidance group 1" organisation: ahrc guidances: ahrc_funder_guidance + dmptemplates: ahrc_template funder_guidance_group_2: name: "Funder guidance group 2" organisation: bbsrc guidances: bbsrc_funder_guidance + dmptemplates: bbsrc_template # institution groups institution_guidance_group_1: name: "Anglia Ruskin University guidance group" organisation: aru guidances: aru_institution_guidance + dmptemplates: aru_template institution_guidance_group_2: name: "Aston University guidance group" organisation: au guidances: au_institution_guidance_1, au_institution_guidance_2 + dmptemplates: au_template institution_guidance_group_3: name: "Bangor University guidance group 1" organisation: bu guidances: bu_institution_guidance_1 + dmptemplates: bu_template -institution_guidance_group_3: - name: "Bangor University guidance gruop 2" +institution_guidance_group_4: + name: "Bangor University guidance group 2" organisation: bu guidances: bu_institution_guidance_2 + dmptemplates: bu_template +institution_guidance_group_5: + name: "institution child guidance group 1" + organisation: institution_child_one +institution_guidance_group_6: + name: "institution child guidance group 2" + organisation: institution_child_one diff --git a/test/fixtures/option_warnings.yml b/test/fixtures/option_warnings.yml index 97c8505..1a67380 100644 --- a/test/fixtures/option_warnings.yml +++ b/test/fixtures/option_warnings.yml @@ -1,40 +1,40 @@ -#single_select_1_warning: -# option: single_select_1 -# organisation: uog -# text: This warning should display when option 1 of the single item select box example is selected for a project at the University of Glasgow -# -#single_select_2_warning: -# option: single_select_2 -# organisation: hatii -# text: This warning should display when option 2 of the single item select box example is selected for a project at HATII -# -# -#multiple_select_3_warning: -# option: multiple_select_3 -# organisation: uoe -# text: This warning should display when option 3 of the multiple item select box example is selected for a project at the University of Edinburgh -# -#multiple_select_4_warning: -# option: multiple_select_4 -# organisation: uoe_si -# text: This warning should display when option 4 of the multiple item select box example is selected for a project at the School of Informatics -# -#radio_button_1_warning: -# option: radio_button_1 -# organisation: uog -# text: This warning should display when option 1 of the radio button example is selected for a project at the University of Glasgow -# -#radio_button_2_warning: -# option: radio_button_2 -# organisation: hatii -# text: This warning should display when option 2 of the radio button example is selected for a project at HATII -# -#checkbox_3_warning: -# option: checkbox_3 -# organisation: uoe -# text: This warning should display when option 3 of the checkbox example is selected for a project at the University of Edinburgh -# -#checkbox_4_warning: -# option: checkbox_4 -# organisation: uoe_si -# text: This warning should display when option 4 of the checkbox example is selected for a project at the School of Informatics \ No newline at end of file +single_select_1_warning: + option: single_select_1 + organisation: uog + text: This warning should display when option 1 of the single item select box example is selected for a project at the University of Glasgow + +single_select_2_warning: + option: single_select_2 + organisation: hatii + text: This warning should display when option 2 of the single item select box example is selected for a project at HATII + + +multiple_select_3_warning: + option: multiple_select_3 + organisation: uoe + text: This warning should display when option 3 of the multiple item select box example is selected for a project at the University of Edinburgh + +multiple_select_4_warning: + option: multiple_select_4 + organisation: uoe_si + text: This warning should display when option 4 of the multiple item select box example is selected for a project at the School of Informatics + +radio_button_1_warning: + option: radio_button_1 + organisation: uog + text: This warning should display when option 1 of the radio button example is selected for a project at the University of Glasgow + +radio_button_2_warning: + option: radio_button_2 + organisation: hatii + text: This warning should display when option 2 of the radio button example is selected for a project at HATII + +checkbox_3_warning: + option: checkbox_3 + organisation: uoe + text: This warning should display when option 3 of the checkbox example is selected for a project at the University of Edinburgh + +checkbox_4_warning: + option: checkbox_4 + organisation: uoe_si + text: This warning should display when option 4 of the checkbox example is selected for a project at the School of Informatics \ No newline at end of file diff --git a/test/fixtures/options.yml b/test/fixtures/options.yml index e3bc074..866aaf3 100644 --- a/test/fixtures/options.yml +++ b/test/fixtures/options.yml @@ -1,82 +1,82 @@ -#single_select_1: -# question: single_select_box -# text: Option 1 -# number: 1 -# -#single_select_2: -# question: single_select_box -# text: Option 2 -# number: 2 -# -#single_select_3: -# question: single_select_box -# text: Option 3 -# number: 3 -# -#single_select_4: -# question: single_select_box -# text: Option 4 -# number: 4 -# -#multiple_select_1: -# question: multiple_select_box -# text: Option 1 -# number: 1 -# -#multiple_select_2: -# question: multiple_select_box -# text: Option 2 -# number: 2 -# -#multiple_select_3: -# question: multiple_select_box -# text: Option 3 -# number: 3 -# -#multiple_select_4: -# question: multiple_select_box -# text: Option 4 -# number: 4 -# -#radio_button_1: -# question: radio_button -# text: Option 1 -# number: 1 -# -#radio_button_2: -# question: radio_button -# text: Option 2 -# number: 2 -# -#radio_button_3: -# question: radio_button -# text: Option 3 -# number: 3 -# -#radio_button_4: -# question: radio_button -# text: Option 4 -# number: 4 -# -#checkbox_1: -# question: checkbox -# text: Option 1 -# number: 1 -# -#checkbox_2: -# question: checkbox -# text: Option 2 -# number: 2 -# -#checkbox_3: -# question: checkbox -# text: Option 3 -# number: 3 -# -#checkbox_4: -# question: checkbox -# text: Option 4 -# number: 4 +single_select_1: + question: single_select_box + text: Option 1 + number: 1 + +single_select_2: + question: single_select_box + text: Option 2 + number: 2 + +single_select_3: + question: single_select_box + text: Option 3 + number: 3 + +single_select_4: + question: single_select_box + text: Option 4 + number: 4 + +multiple_select_1: + question: multiple_select_box + text: Option 1 + number: 1 + +multiple_select_2: + question: multiple_select_box + text: Option 2 + number: 2 + +multiple_select_3: + question: multiple_select_box + text: Option 3 + number: 3 + +multiple_select_4: + question: multiple_select_box + text: Option 4 + number: 4 + +radio_button_1: + question: radio_button + text: Option 1 + number: 1 + +radio_button_2: + question: radio_button + text: Option 2 + number: 2 + +radio_button_3: + question: radio_button + text: Option 3 + number: 3 + +radio_button_4: + question: radio_button + text: Option 4 + number: 4 + +checkbox_1: + question: checkbox + text: Option 1 + number: 1 + +checkbox_2: + question: checkbox + text: Option 2 + number: 2 + +checkbox_3: + question: checkbox + text: Option 3 + number: 3 + +checkbox_4: + question: checkbox + text: Option 4 + number: 4 mrc_5_2_yes: question: mrc_5_2 diff --git a/test/fixtures/organisations.yml b/test/fixtures/organisations.yml index 4ac384e..5a3f464 100644 --- a/test/fixtures/organisations.yml +++ b/test/fixtures/organisations.yml @@ -891,4 +891,15 @@ ysju: name: York St John University domain: www.yorksj.ac.uk - organisation_type: institution \ No newline at end of file + organisation_type: institution + +institution_parent: + name: "Institution Parent" + domain: "www.example.com" + organisation_type: institution + +institution_child_one: + name: "instituiton Chile 1" + domain: "www.institution_child.com" + organisation_type: instituiton + parent: institution_parent \ No newline at end of file diff --git a/test/fixtures/sections.yml b/test/fixtures/sections.yml index f68a3c0..9adf97f 100644 --- a/test/fixtures/sections.yml +++ b/test/fixtures/sections.yml @@ -427,4 +427,16 @@ title: Required resources number: 7 version: wellcome_template_1_version_1 - organisation: wellcome \ No newline at end of file + organisation: wellcome + +institution_parent_1: + title: first section + number: 1 + version: institution_child_version_1 + organisation: institution_parent + +institution_parent_2: + title: seccond section + number: 2 + version: institution_child_version_1 + organisation: institution_parent \ No newline at end of file diff --git a/test/fixtures/user_org_roles.yml b/test/fixtures/user_org_roles.yml index a1e1b91..b710ec5 100644 --- a/test/fixtures/user_org_roles.yml +++ b/test/fixtures/user_org_roles.yml @@ -9,3 +9,17 @@ # user_id: 1 # organisation_id: 1 # user_role_type_id: 1 +# + +one: + user: user_one + organisation: aru + +two: + user: user_two + organisation: au + +three: + user: user_three + organisation: bu + diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index 2907d70..04d40ab 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -9,7 +9,7 @@ user_type_id: 1 user_status_id: 1 api_token: "guidances_api_token" - organisation_id: aru.id + #organisation: aru user_two: firstname: MyString @@ -20,7 +20,7 @@ user_type_id: 1 user_status_id: 1 api_token: "plans_api_token" - organisation_id: au.id + #organisation: au user_three: firstname: Mystring @@ -31,7 +31,7 @@ user_type_id: 1 user_status_id: 1 api_token: "plans_api_token" - organisation_id: bu.id + #organisation: bu with_many_projects: diff --git a/test/fixtures/versions.yml b/test/fixtures/versions.yml index cd91ab2..5a8d2f1 100644 --- a/test/fixtures/versions.yml +++ b/test/fixtures/versions.yml @@ -58,4 +58,10 @@ title: "Wellcome Trust Data Management Questions (Version 1)" published: 1 number: 1 - phase: wellcome_template_1 \ No newline at end of file + phase: wellcome_template_1 + +institution_child_version_1: + title: DCC Phase 1 Version 1 + published: 1 + number: 1 + phase: DCC_phase_1 \ No newline at end of file diff --git a/test/unit/dmptemplate_test.rb b/test/unit/dmptemplate_test.rb index db7d287..833a4be 100644 --- a/test/unit/dmptemplate_test.rb +++ b/test/unit/dmptemplate_test.rb @@ -18,7 +18,7 @@ Settings::Dmptemplate::DEFAULT_SETTINGS[:formatting] end - # settings + # ---------- settings ---------- test "settings should use defaults if none defined" do assert(!@template.settings(:export).value?) @@ -200,4 +200,80 @@ assert_equal(default_formatting, @template.settings(:export).formatting) end + # ---------- templates_org_type ---------- + test "templates_org_type returns all published" do + OrganisationType.find_each do |org_type| + result_templates = Dmptemplate.templates_org_type(org_type.name) + my_list = Array.new + org_type.organisations.each do |org| + my_list += org.dmptemplates + end + my_list.each do |template| + if template.published + assert_includes(result_templates, template, "Template: #{template.title}} of type #{org_type.name}, not returned by templates_org_type") + end + end + end + end + + # ---------- funders_templates ---------- + test "funders_templates returns all funder organisation templates" do + result_templates = Dmptemplate.funders_templates + funder_templates = OrganisationType.find_by(name: "funder").organisations do |org| + org.dmptemplates.each do |template| + assert_includes( result_templates, template, "Funder Template: #{template.title} not included in result of funders_templates") + end + end + end + + # ---------- own_institutional_templates ---------- + test "own_institutional_templates returns all templates belonging to given org_id" do + Organisation.find_each do |org| + result_templates = Dmptemplate.own_institutional_templates(org.id) + org.dmptemplates.each do |template| + assert_includes(result_templates, template, "Template: #{template.title} not returned by own_institutional_templates") + end + end + end + + # ---------- funders_and_own_templates ---------- + test "funders_and_own_templates returns all funder and own given org_id templates" do + Organisation.find_each do |org| + result_templates = Dmptemplate.funders_and_own_templates(org.id) + org.dmptemplates.each do |template| + assert_includes(result_templates, template, "Template #{template.title} not returned by funders and own templates") + end + end + funder_templates = OrganisationType.find_by(name: "funder").organisations do |org| + org.dmptemplates.each do |template| + assert_includes( result_templates, template, "Funder Template: #{template.title} not included in result of funders_and_own_templates") + end + end + end + + # ---------- org_type ---------- + test "org_type properly returns the name of the template's organisation's type" do + Dmptemplate.find_each do |template| + assert_equal( template.org_type, template.organisation.organisation_type.name, "Template: #{template.title} returned #{template.org_type}, instead of #{template.organisation.organisation_type.name}") + end + end + + # ---------- has_customisations? ---------- + test "has_customisations? correctly identifies if a given org has customised the template" do + # TODO: Impliment after understanding has_customisations + flunk + end + + # ---------- has_published_versions? ---------- + test "has_published_versions? correctly identifies published versions" do + Dmptemplate.find_each do |template| + template.phases.each do |phase| + unless phase.latest_published_version.nil? + assert(template.has_published_versions? , "there was a published version of phase: #{phase.title}") + end + end + end + end + + end diff --git a/test/unit/guidance_group_test.rb b/test/unit/guidance_group_test.rb new file mode 100644 index 0000000..45a8483 --- /dev/null +++ b/test/unit/guidance_group_test.rb @@ -0,0 +1,156 @@ +require 'test_helper' + +class GuidanceGroupTest < ActiveSupport::TestCase + # ---------- can_view? ---------- + test "DCC guidance groups should be viewable" do + assert GuidanceGroup.can_view?(users(:user_one), guidance_groups(:dcc_guidance_group_1)) + end + + test "Funder guidance groups should be viewable" do + organisation_types(:funder).organisations.each do |org| + org.guidance_groups.each do |funder_group| + assert GuidanceGroup.can_view?(users(:user_one), funder_group) + end + end + end + + test "User's organisation groups should be viewable" do + assert GuidanceGroup.can_view?(users(:user_one), guidance_groups(:institution_guidance_group_1).id) , "user_one cannot view aru_institution_guidance" + + assert GuidanceGroup.can_view?(users(:user_two), guidance_groups(:institution_guidance_group_2).id), "user_two cannot view au_..._1" + + assert GuidanceGroup.can_view?(users(:user_three), guidance_groups(:institution_guidance_group_3).id), "user_three cannot view bu_..._1" + assert GuidanceGroup.can_view?(users(:user_three), guidance_groups(:institution_guidance_group_4).id), "user_three cannot view bu_..._2" + end + + test "No other organisations's groups should be viewable" do + assert_not GuidanceGroup.can_view?(users(:user_one), guidance_groups(:institution_guidance_group_2).id) + assert_not GuidanceGroup.can_view?(users(:user_one), guidance_groups(:institution_guidance_group_3).id) + assert_not GuidanceGroup.can_view?(users(:user_one), guidance_groups(:institution_guidance_group_4).id) + + assert_not GuidanceGroup.can_view?(users(:user_two), guidance_groups(:institution_guidance_group_1).id) + assert_not GuidanceGroup.can_view?(users(:user_two), guidance_groups(:institution_guidance_group_3).id) + assert_not GuidanceGroup.can_view?(users(:user_two), guidance_groups(:institution_guidance_group_4).id) + + assert_not GuidanceGroup.can_view?(users(:user_three), guidance_groups(:institution_guidance_group_1).id) + assert_not GuidanceGroup.can_view?(users(:user_three), guidance_groups(:institution_guidance_group_2).id) + end + + + # ---------- all_viewable ---------- + # ensure that the all_viewable function returns all viewable groups + # should return true for groups owned by funders + # should return true for groups owned by DCC + # should return true for groups owned by the user's organisation + # should not return true for an organisation outwith those above + test "all_viewable returns all dcc groups" do + all_viewable_groups = GuidanceGroup.all_viewable(users(:user_one)) + organisations(:dcc).guidance_groups.each do |group| + assert_includes(all_viewable_groups, group) + end + end + + test "all_viewable returns all funder groups" do + all_viewable_groups = GuidanceGroup.all_viewable(users(:user_one)) + organisation_types(:funder).organisations.each do |org| + org.guidance_groups.each do |group| + assert_includes(all_viewable_groups, group) + end + end + end + + test "all_viewable returns all of a user's organisations's guidances" do + all_viewable_groups_one = GuidanceGroup.all_viewable(users(:user_one)) + organisations(:aru).guidance_groups.each do |group| + assert_includes(all_viewable_groups_one, group) + end + + all_viewable_groups_two = GuidanceGroup.all_viewable(users(:user_two)) + organisations(:au).guidance_groups.each do |group| + assert_includes(all_viewable_groups_two, group) + end + + all_viewable_groups_three = GuidanceGroup.all_viewable(users(:user_three)) + organisations(:bu).guidance_groups.each do |group| + assert_includes(all_viewable_groups_three, group) + end + end + + test "all_viewable does not return any other organisaition's guidance" do + all_viewable_groups = GuidanceGroup.all_viewable(users(:user_one)) + all_viewable_groups.delete_if do |group| + if group.organisation.id == organisations(:dcc).id + true + elsif group.organisation.organisation_type.id == organisation_types(:funder).id + true + elsif group.organisation.id == users(:user_one).organisations.first.id + true + else + false + end + end + assert_empty(all_viewable_groups) + end + + + # ---------- display_name ---------- + test "display_name should return an org name for an org with one guidance" do + assert_equal(guidance_groups(:funder_guidance_group_1).display_name, "Arts and Humanities Research Council", "result of display_name for an org with one group should be the org name") + end + + test "display_name should return an org and group name for an org with more than one guidance" do + assert_equal(guidance_groups(:institution_guidance_group_4).display_name, "Bangor University: Bangor University guidance group 2", "result of display_name for an org with more than one group should be : ") + end + + # ---------- self.guidance_groups_excluding ---------- + test "guidance_groups_excluding should not return a group belonging to specified single org" do + # generate a list + excluding_list = GuidanceGroup.guidance_groups_excluding([organisations(:dcc)]) + excluding_list.each do |group| + refute_equal(group.organisation, organisations(:dcc), "#{group.name} is owned by dcc") + end + end + + test "guidance_groups_excluding should not return a group belonging to specified orgs" do + org_list = [organisations(:ahrc), organisations(:bu)] + excluding_list = GuidanceGroup.guidance_groups_excluding(org_list) + excluding_list.each do |group| + org_list.each do |org| + refute_equal(group.organisation, org, "#{group.name} is owned by specified org: #{org.name}") + end + end + end + + test "guidance_groups_excluding should return all groups not belonging to the specified org" do + excluding_list = GuidanceGroup.guidance_groups_excluding([organisations(:dcc)]) + GuidanceGroup.all.each do |group| + if group.organisation_id != organisations(:dcc).id + assert_includes(excluding_list, group, "#{group.name} is not owned by dcc so should be included") + end + end + end + + test "guidance_groups_excluding should return all groups not belonging to specified orgs" do + excluded =false + org_list = [organisations(:ahrc), organisations(:bu)] + excluding_list = GuidanceGroup.guidance_groups_excluding(org_list) + GuidanceGroup.all.each do |group| + excluded = false + org_list.each do |org| + if group.organisation == org + excluded = true + end + end + unless excluded + assert_includes(excluding_list, group, "#{group.name} is not owned by a specified org so should be included") + end + end + end + +end + + + + + + diff --git a/test/unit/guidance_test.rb b/test/unit/guidance_test.rb index f781242..c2f3a5c 100644 --- a/test/unit/guidance_test.rb +++ b/test/unit/guidance_test.rb @@ -1,58 +1,52 @@ require 'test_helper' class GuidanceTest < ActiveSupport::TestCase - # ensure that the can_view function returns true all viewable guidances + # ---------- can_view? ---------- + # ensure that the can_view? function returns true all viewable guidances # should return true for groups owned by funders # should return true for groups owned by DCC # should return true for groups owned by the user's organisation # should not return true for an organisation outwith those above test "DCC guidances should be viewable" do guidance_groups(:dcc_guidance_group_1).guidances.each do |guidance| - assert Guidance.can_view(users(:user_one), guidance.id) + assert Guidance.can_view?(users(:user_one), guidance.id) end end test "Funder guidances should be viewable" do - assert Guidance.can_view(users(:user_one), guidances(:ahrc_funder_guidance).id) - assert Guidance.can_view(users(:user_one), guidances(:bbsrc_funder_guidance).id) + assert Guidance.can_view?(users(:user_one), guidances(:ahrc_funder_guidance).id) + assert Guidance.can_view?(users(:user_one), guidances(:bbsrc_funder_guidance).id) end + test "User's organisation guidances should be viewable" do -=begin - Organisation.find_by(id: users(:user_one).organisation_id) do |org| - logger.debug "#{org.name}" - end - assert Guidance.can_view(users(:user_one), guidances(:aru_institution_guidance).id) , "user_one cannot view aru_institution_guidance" + assert Guidance.can_view?(users(:user_one), guidances(:aru_institution_guidance).id) , "user_one cannot view aru_institution_guidance" - assert Guidance.can_view(users(:user_two), guidances(:au_institution_guidance_1).id), "user_two cannot view au_..._1" - assert Guidance.can_view(users(:user_two), guidances(:au_institution_guidance_2).id), "user_two cannot view au_..._2" + assert Guidance.can_view?(users(:user_two), guidances(:au_institution_guidance_1).id), "user_two cannot view au_..._1" + assert Guidance.can_view?(users(:user_two), guidances(:au_institution_guidance_2).id), "user_two cannot view au_..._2" - assert Guidance.can_view(users(:user_three), guidances(:bu_institution_guidance_1).id), "user_three cannot view bu_..._1" - assert Guidance.can_view(users(:user_three), guidances(:bu_institution_guidance_2).id), "user_three cannot view bu_..._2" -=end + assert Guidance.can_view?(users(:user_three), guidances(:bu_institution_guidance_1).id), "user_three cannot view bu_..._1" + assert Guidance.can_view?(users(:user_three), guidances(:bu_institution_guidance_2).id), "user_three cannot view bu_..._2" end test "No other organisations's guidances should be viewable" do # TOOD: add more fixtures with new types of guidances(i.e. not institution) # and add test cases + assert_not Guidance.can_view?(users(:user_one), guidances(:au_institution_guidance_1).id) + assert_not Guidance.can_view?(users(:user_one), guidances(:au_institution_guidance_2).id) + assert_not Guidance.can_view?(users(:user_one), guidances(:bu_institution_guidance_1).id) + assert_not Guidance.can_view?(users(:user_one), guidances(:bu_institution_guidance_2).id) - assert_not Guidance.can_view(users(:user_one), guidances(:au_institution_guidance_1).id) - assert_not Guidance.can_view(users(:user_one), guidances(:au_institution_guidance_2).id) - assert_not Guidance.can_view(users(:user_one), guidances(:bu_institution_guidance_1).id) - assert_not Guidance.can_view(users(:user_one), guidances(:bu_institution_guidance_2).id) + assert_not Guidance.can_view?(users(:user_two), guidances(:aru_institution_guidance).id) + assert_not Guidance.can_view?(users(:user_two), guidances(:bu_institution_guidance_1).id) + assert_not Guidance.can_view?(users(:user_two), guidances(:bu_institution_guidance_2).id) - assert_not Guidance.can_view(users(:user_two), guidances(:aru_institution_guidance).id) - assert_not Guidance.can_view(users(:user_two), guidances(:bu_institution_guidance_1).id) - assert_not Guidance.can_view(users(:user_two), guidances(:bu_institution_guidance_2).id) - - assert_not Guidance.can_view(users(:user_three), guidances(:aru_institution_guidance).id) - assert_not Guidance.can_view(users(:user_three), guidances(:au_institution_guidance_1).id) - assert_not Guidance.can_view(users(:user_three), guidances(:au_institution_guidance_2).id) + assert_not Guidance.can_view?(users(:user_three), guidances(:aru_institution_guidance).id) + assert_not Guidance.can_view?(users(:user_three), guidances(:au_institution_guidance_1).id) + assert_not Guidance.can_view?(users(:user_three), guidances(:au_institution_guidance_2).id) end - - - +# ---------- all_viewable ---------- # ensure that the all_viewable function returns all viewable guidances # should return true for groups owned by funders # should return true for groups owned by DCC @@ -60,8 +54,10 @@ # should not return true for an organisation outwith those above test "all_viewable returns all DCC guidances" do all_viewable_guidances = Guidance.all_viewable(users(:user_one)) - guidance_groups(:dcc_guidance_group_1).guidances.each do |guidance| - assert_includes(all_viewable_guidances, guidance) + organisations(:dcc).guidance_groups.each do |group| + group.guidances.each do |guidance| + assert_includes(all_viewable_guidances, guidance) + end end end @@ -76,7 +72,6 @@ end test "all_viewable returns all of a user's organisations's guidances" do -=begin all_viewable_guidances_one = Guidance.all_viewable(users(:user_one)) organisations(:aru).guidance_groups.each do |group| group.guidances.each do |guidance| @@ -97,11 +92,77 @@ assert_includes(all_viewable_guidances_three, guidance) end end -=end end + test "all_viewable does not return any other organisation's guidance" do # TODO: Add in a suitable test. should we check for non-institutions? - #flunk() + all_viewable_guidances = Guidance.all_viewable(users(:user_one)) + # remove all of the user's organisation + # remove all of each funder's organisations + # remove each of the dcc's organisations + # check if nill + all_viewable_guidances.delete_if do |guidance| + guidance.guidance_groups.each do |group| + if group.organisation.id == organisations(:dcc).id + true + elsif group.organisation.organisation_type.id == organisation_types(:funder).id + true + elsif group.organisation.id == users(:user_one).organisations.first.id + true + else + false + end + end + end + assert_empty(all_viewable_guidances, "there must not be any guidances which are not funders, DCC, or our own organisation") end + + # ---------- in_group_belonging_to? ---------- + test "in_group_belonging_to correctly identifies parent orgs" do + # test that the association works for all correct usages + Guidance.all.each do |guidance| + guidance.guidance_groups.each do |group| + assert(guidance.in_group_belonging_to?(group.organisation.id), "Guidance: #{guidance.text} should belong to organisation #{group.organisation.name}") + end + end + end + + test "in_group_belonging_to rejects non-parent orgs" do + # test that in_group_belonging_to rejects a few interesting organisation-guidance pairs + assert_not(guidances(:related_policies).in_group_belonging_to?(organisations(:ahrc)), "Organisation ahrc does not own guidance: related policies") + assert_not(guidances(:ahrc_funder_guidance).in_group_belonging_to?(organisations(:dcc)), "Organisation dcc does not own guidance: ahrc_funder_guidance") + end + + # ---------- by_organisation ---------- + test "by_organisation correctly returns all guidance belonging to a given org" do + Organisation.all.each do |org| + org_guidance = Guidance.by_organisation(org) + org.guidance_groups.each do |group| + group.guidances.each do |guidance| + assert_includes(org_guidance, guidance, "Guidance #{guidance.text} should belong to organisation: #{org.name}") + end + end + end + end + + # ---------- get_guidance_group_templates ---------- + ## the main function is completely bugged, so ask to remove it + # test "get_guidance_group_templates retuns all templates belonging to a guidance group" do + # GuidanceGroup.all.each do |group| + # group_templates = guidances(:related_policies).get_guidance_group_templates?(group) + # group.dmptemplates.each do |template| + # assert_includes(group_templates, template, "group #{group.name} should include template #{template.title}") + # end + # end + # end + end + + + + + + + + diff --git a/test/unit/organisation_test.rb b/test/unit/organisation_test.rb index 8dc35ff..e503b4c 100644 --- a/test/unit/organisation_test.rb +++ b/test/unit/organisation_test.rb @@ -1,7 +1,85 @@ require 'test_helper' class OrganisationTest < ActiveSupport::TestCase - # test "the truth" do - # assert true - # end + + # ---------- short_name ---------- + test "short_name should return the abbreviation if it exists" do + assert_equal(organisations(:dcc).short_name, organisations(:dcc).abbreviation, "Org: DCC has an abreviation and should return it") + end + + test "short_name should return the name if no abbreviation exists" do + assert_equal(organisations(:aru).short_name, organisations(:aru).name, "Org: ARU has no abbreviation and should return it's full name") + end + + # ---------- self.orgs_with_parent_of_type ---------- + test "self.orgs_with_parent_of_type correctly identifies organisation trees" do + children = Organisation.orgs_with_parent_of_type("institution") + assert_includes(children, organisations(:institution_child_one), "Org: institution_child_one is a child of an institution") + end + + # ---------- self.other_organisations ---------- + test "self.other_organisations correctly returns ___" do + + end + + # ---------- all_sections ---------- + test "all_sections returns correct sections" do + sections = organisations(:dcc).all_sections(versions(:DCC_phase_1_version_1).id) + org_sections = Section.find_by(organisation: organisations(:dcc)) + org_sections.each do |section| + if section.version_id == versions(:DCC_phase_1_version_1).id + assert_includes(sections, section, "Section: #{section.title} should be included") + end + end + end + + test "all_sections returns a parents sections" do + sections = organisations(:institution_child_one).all_sections(versions(:institution_child_version_1).id) + assert_includes( sections, sections(:institution_parent_1), "all_sections should return it's parent's sections") + assert_includes( sections, sections(:institution_parent_2), "all_sections should return it's parent's sections") + end + + test "all_sections returns [] if no sections are found" do + sections = organisations(:dcc).all_sections(versions(:institution_child_version_1).id) + assert_empty( sections, "no sections of that version exist") + end + + # ---------- all_guidance_groups ---------- + test "all_guidance_groups returns all of the organisations guidance groups" do + all_groups = organisations(:dcc).all_guidance_groups + organisations(:dcc).guidance_groups.each do |group| + assert_includes(all_groups, group, "group: #{group.name} belongs to the specified org") + end + end + + test "all_guidance_groups returns all of the organisations children's guidance groups" do + all_groups = organisations(:institution_parent).all_guidance_groups + organisations(:institution_child_one).guidance_groups.each do |group| + assert_includes(all_groups, group, "group: #{group.name} belongs to the specified org") + end + end + + # ---------- root ---------- + test "root correctly identifies the parent organisation" do + assert_equal(organisations(:institution_child_one).root, organizations(:institution_parent), "institution parent is the parent of institution child one") + end + + test "root returns self if an organisation has no parents" do + assert_equal(organisations(:dcc).root, organisations(:dcc), "dcc has no parent, so is root") + end + + # ---------- warning ---------- + test "warning returns specified warning if not nil" do + flunk + end + + test "warning returns the parent's warning if nil" do + flunk + end + + # ---------- published_templates ---------- + test "published_templates returns all owned and published templates" do + flunk + end + end