/, ' * ') )
- output += "\n#{qtext}\n"
- answer = self.plan.answer(question.id, false)
-
- if answer.nil? || answer.text.nil? then
- output += I18n.t('helpers.plan.export.pdf.question_not_answered')+ "\n"
- else
- output += answer.options.collect {|o| o.text}.join("\n")
- if question.option_comment_display == true then
- output += "\n#{sanitize_text(answer.text)}\n"
+ if answer.nil?
+ output += _('Question not answered.')+ "\n"
else
- output += "\n"
+ q_format = question.question_format
+ if q_format.option_based?
+ output += answer.question_options.collect {|o| o.text}.join("\n")
+ if question.option_comment_display
+ output += "\n#{sanitize_text(answer.text)}\n"
+ end
+ else
+ output += "\n#{sanitize_text(answer.text)}\n"
+ end
end
end
end
end
-
output
end
private
-
+ # Returns an Array of question_ids for the exported settings stored for a plan
def questions
- @questions ||= begin
- question_settings = self.settings(:export).fields[:questions]
-
- return [] if question_settings.is_a?(Array) && question_settings.empty?
-
- questions = if question_settings.present? && question_settings != :all
- Question.where(id: question_settings)
+ question_settings = self.settings(:export).fields[:questions]
+ @questions ||= if question_settings.present?
+ if question_settings == :all
+ Question.where(section_id: self.plan.sections.collect { |s| s.id }).pluck(:id)
+ elsif question_settings.is_a?(Array)
+ question_settings
else
- Question.where(section_id: self.plan.sections.collect {|s| s.id })
+ []
end
-
- questions.order(:number)
+ else
+ []
end
end
diff --git a/app/models/file_type.rb b/app/models/file_type.rb
deleted file mode 100644
index 7c836dc..0000000
--- a/app/models/file_type.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class FileType < ActiveRecord::Base
- #attr_accessible :name, :icon_location, :icon_name, :icon_size
-end
diff --git a/app/models/file_upload.rb b/app/models/file_upload.rb
deleted file mode 100644
index 7cf325c..0000000
--- a/app/models/file_upload.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class FileUpload < ActiveRecord::Base
- #attr_accessible :file_type_id, :description, :location, :name, :published, :size, :title
-
- #associations between tables
- belongs_to :file_type
-
-end
diff --git a/app/models/guidance.rb b/app/models/guidance.rb
index ac1e886..8ba321b 100644
--- a/app/models/guidance.rb
+++ b/app/models/guidance.rb
@@ -3,28 +3,29 @@
# This class keeps the information organisations enter to support users when answering questions.
# It always belongs to a guidance group class and it can be linked directly to a question or through one or more themes
# [+Created:+] 07/07/2014
-# [+Copyright:+] Digital Curation Centre and University of California Curation Center
+# [+Copyright:+] Digital Curation Centre and California Digital Library
class Guidance < ActiveRecord::Base
include GlobalHelpers
- #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
-
- #belongs_to :dmptemplate
- #belongs_to :theme
-
- has_and_belongs_to_many :guidance_groups, join_table: "guidance_in_group"
+ ##
+ # Associations
+ belongs_to :guidance_group
has_and_belongs_to_many :themes, join_table: "themes_in_guidance"
+# depricated, but required for migration "single_group_for_guidance"
+ #has_and_belongs_to_many :guidance_groups, join_table: "guidance_in_group"
- accepts_nested_attributes_for :themes
- accepts_nested_attributes_for :guidance_groups
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
+ #
+ # What do they do? do they do it efficiently, and do we need them?
+
+
+
+
+ validates :text, presence: {message: _("can't be blank")}
##
@@ -32,12 +33,12 @@
#
# @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
- return true
- end
- end
+ def in_group_belonging_to?(org_id)
+ unless guidance_group.nil?
+ if guidance_group.org.id == org_id
+ return true
+ end
+ end
return false
end
@@ -46,10 +47,11 @@
#
# @param org_id [Integer] the integer id for an organisation
# @return [Array] list of guidance
- def self.by_organisation(org_id)
+ def self.by_org(org_id)
org_guidance = []
- Organisation.find_by(id: org_id).guidance_groups.each do |group|
- org_guidance += group.guidances
+ # TODO: re-write below querry when guidance_in_group removed from model
+ Org.find_by(id: org_id).guidance_groups.each do |group|
+ org_guidance += Guidance.where(guidance_group_id: group.id)
end
return org_guidance
end
@@ -84,25 +86,21 @@
guidance = Guidance.find_by(id: id)
viewable = false
- # guidances may belong to many guidance groups, so we check the above case for each
- guidance.guidance_groups.each do |guidance_group|
-
- # guidances 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
+ unless guidance.nil?
+ unless guidance.guidance_group.nil?
+ # guidances are viewable if they are owned by the user's org
+ if guidance.guidance_group.org == user.org
viewable = true
end
- end
+ # guidance groups are viewable if they are owned by the Managing Curation Center
+ if Org.managing_orgs.include?(guidance.guidance_group.org)
+ viewable = true
+ end
- # guidance groups are viewable if they are owned by the Managing Curation Center
- if guidance_group.organisation.id == Organisation.find_by( name: GlobalHelpers.constant("organisation_types.managing_organisation")).id
- viewable = true
- end
-
- # guidance groups are viewable if they are owned by a funder
- if guidance_group.organisation.organisation_type == OrganisationType.find_by( name: GlobalHelpers.constant("organisation_types.funder"))
- viewable = true
+ # guidance groups are viewable if they are owned by a funder
+ if Org.funders.include?(guidance.guidance_group.org)
+ viewable = true
+ end
end
end
@@ -119,26 +117,17 @@
# @param user [User] a user object
# @return [Array] a list of all "viewable" guidances to a user
def self.all_viewable(user)
- managing_groups = (Organisation.find_by name: GlobalHelpers.constant("organisation_types.managing_organisation")).guidance_groups
+ managing_groups = Org.includes(guidance_groups: :guidances).managing_orgs.collect{|o| o.guidance_groups}
# find all groups owned by a Funder organisation
- funder_groups = []
- funders = OrganisationType.find_by( name: GlobalHelpers.constant("organisation_types.funder"))
- funders.organisations.each do |funder|
- funder_groups += funder.guidance_groups
- end
+ funder_groups = Org.includes(guidance_groups: :guidances).funders.collect{|org| org.guidance_groups}
# find all groups owned by any of the user's organisations
- organisation_groups = []
- user.organisations.each do |organisation|
- organisation_groups += organisation.guidance_groups
- end
+ organisation_groups = user.org.guidance_groups
+
# find all guidances belonging to any of the viewable groups
- all_viewable_guidances = []
- all_viewable_groups = managing_groups + funder_groups + organisation_groups
- all_viewable_groups.each do |group|
- all_viewable_guidances += group.guidances
- end
+ all_viewable_groups = (managing_groups + funder_groups + organisation_groups).flatten
+ all_viewable_guidances = all_viewable_groups.collect{|group| group.guidances}
# pass the list of viewable guidances to the view
- return all_viewable_guidances
+ return all_viewable_guidances.flatten
end
end
diff --git a/app/models/guidance_group.rb b/app/models/guidance_group.rb
index d9102a4..ee3e685 100644
--- a/app/models/guidance_group.rb
+++ b/app/models/guidance_group.rb
@@ -1,26 +1,31 @@
class GuidanceGroup < ActiveRecord::Base
include GlobalHelpers
-
- #associations between tables
- belongs_to :organisation
-
- has_and_belongs_to_many :guidances, join_table: "guidance_in_group"
-
- has_and_belongs_to_many :projects, join_table: "project_guidance"
- has_and_belongs_to_many :dmptemplates, join_table: "dmptemplates_guidance_groups"
-
- accepts_nested_attributes_for :dmptemplates
-
- attr_accessible :organisation_id, :name, :optional_subset, :published, :as => [:default, :admin]
- attr_accessible :dmptemplate_ids, :as => [:default, :admin]
+ ##
+ # Associations
+ belongs_to :org
+ has_many :guidances, dependent: :destroy
+ has_and_belongs_to_many :plans, join_table: :plans_guidance_groups
+ # depricated but needed for migration "single_group_for_guidance"
+ # has_and_belongs_to_many :guidances, join_table: "guidance_in_group"
+
##
- # Converts a guidance group to a string containing the display name
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :org_id, :name, :optional_subset, :published, :org, :guidances,
+ :as => [:default, :admin]
+
+ validates :name, :org, presence: {message: _("can't be blank")}
+
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
#
- # @return [String] the name of the organisation, with or without the name of the guidance group
- def to_s
- "#{display_name}"
- end
+ # What do they do? do they do it efficiently, and do we need them?
+
+
+
+
+
##
# Converts the current guidance group to a string containing the display name.
@@ -30,10 +35,10 @@
#
# @return [String] the display name for the guidance group
def display_name
- if organisation.guidance_groups.count > 1
- return "#{organisation.name}: #{name}"
+ if org.guidance_groups.count > 1
+ return "#{org.name}: #{name}"
else
- return organisation.name
+ return org.name
end
end
@@ -42,14 +47,20 @@
#
# @param 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|
- excluded_org_ids << org.id
- end
- return_orgs = GuidanceGroup.where("organisation_id NOT IN (?)", excluded_org_ids)
- return return_orgs
- end
+ def self.guidance_groups_excluding(excluded_orgs)
+ excluded_org_ids = Array.new
+
+ if excluded_orgs.is_a?(Array)
+ excluded_orgs.each do |org|
+ excluded_org_ids << org.id
+ end
+ else
+ excluded_org_ids << excluded_orgs
+ end
+
+ return_orgs = GuidanceGroup.where("org_id NOT IN (?)", excluded_org_ids)
+ return return_orgs
+ end
##
# Returns whether or not a given user can view a given guidance group
@@ -61,22 +72,20 @@
# @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)
+ def self.can_view?(user, guidance_group)
viewable = false
-
# groups are viewable if they are owned by any of the user's organisations
- if guidance_group.organisation == user.organisation
+ if guidance_group.org == user.org
viewable = true
end
# groups are viewable if they are owned by the managing curation center
- Organisation.where( name: GlobalHelpers.constant("organisation_types.managing_organisation")).find_each do |managing_group|
- if guidance_group.organisation.id == managing_group.id
+ Org.managing_orgs.each do |managing_group|
+ if guidance_group.org.id == managing_group.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: GlobalHelpers.constant("organisation_types.funder"))
+ if guidance_group.org.funder?
viewable = true
end
@@ -94,22 +103,16 @@
# @return [Array] a list of all "viewable" guidance groups to a user
def self.all_viewable(user)
# first find all groups owned by the Managing Curation Center
- managing_org_groups = []
- Organisation.where( name: GlobalHelpers.constant("organisation_types.managing_organisation")).find_each do |managing_org|
- managing_org_groups = managing_org_groups + managing_org.guidance_groups
- end
+ managing_org_groups = Org.includes(guidance_groups: [guidances: :themes]).managing_orgs.collect{|org| org.guidance_groups}
# find all groups owned by a Funder organisation
- funder_groups = []
- funders = OrganisationType.find_by( name: GlobalHelpers.constant("organisation_types.funder"))
- funders.organisations.each do |funder|
- funder_groups = funder_groups + funder.guidance_groups
- end
- organisation_groups = [user.organisation.guidance_groups]
-
+ funder_groups = Org.includes(:guidance_groups).funders.collect{|org| org.guidance_groups}
+
+ organisation_groups = [user.org.guidance_groups]
+
# pass this organisation guidance groups to the view with respond_with @all_viewable_groups
all_viewable_groups = managing_org_groups + funder_groups + organisation_groups
- all_viewable_groups = all_viewable_groups.uniq{|x| x.id}
+ all_viewable_groups = all_viewable_groups.flatten.uniq
return all_viewable_groups
end
end
diff --git a/app/models/identifier_scheme.rb b/app/models/identifier_scheme.rb
new file mode 100644
index 0000000..d07aafc
--- /dev/null
+++ b/app/models/identifier_scheme.rb
@@ -0,0 +1,6 @@
+class IdentifierScheme < ActiveRecord::Base
+ has_many :user_identifiers
+ has_many :users, through: :user_identifiers
+
+ validates :name, uniqueness: {message: _("must be unique")}, presence: {message: _("can't be blank")}
+end
\ No newline at end of file
diff --git a/app/models/language.rb b/app/models/language.rb
index 65477be..2d02783 100644
--- a/app/models/language.rb
+++ b/app/models/language.rb
@@ -1,5 +1,14 @@
class Language < ActiveRecord::Base
+ ##
+ # Associations
has_many :users
+ has_many :orgs
- validates :abbreviation, presence: true, uniqueness: true
+ ##
+ # Validations
+ # Cannot do FastGettext translations here because we constantize LANGUAGES in initializers/constants.rb
+ validates :abbreviation, presence: {message: "can't be blank"}, uniqueness: {message: "must be unique"}
+
+ scope :sorted_by_abbreviation, -> { all.order(:abbreviation) }
+ scope :default, -> { where(default_language: true).first }
end
\ No newline at end of file
diff --git a/app/models/note.rb b/app/models/note.rb
new file mode 100644
index 0000000..4341c2a
--- /dev/null
+++ b/app/models/note.rb
@@ -0,0 +1,14 @@
+class Note < ActiveRecord::Base
+ ##
+ # Associations
+ belongs_to :answer
+ belongs_to :user
+
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :text, :user_id, :answer_id, :archived, :archived_by,
+ :answer, :user, :as => [:default, :admin]
+
+ validates :text, :answer, :user, presence: {message: _("can't be blank")}
+end
diff --git a/app/models/option.rb b/app/models/option.rb
deleted file mode 100644
index 87dfc46..0000000
--- a/app/models/option.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-class Option < ActiveRecord::Base
-
- #associations between tables
- belongs_to :question
-
- has_many :option_warnings, :dependent => :destroy
-
- has_and_belongs_to_many :answers, join_table: "answers_options"
-
- attr_accessible :text, :question_id, :is_default, :number, :as => [:default, :admin]
-
- def to_s
- "#{text}"
- end
-end
\ No newline at end of file
diff --git a/app/models/option_warning.rb b/app/models/option_warning.rb
deleted file mode 100644
index d67709f..0000000
--- a/app/models/option_warning.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class OptionWarning < ActiveRecord::Base
-
- #associations between tables
- belongs_to :option
- belongs_to :organisation
-
- attr_accessible :text, :option_id, :organisation_id, :as => [:default, :admin]
-
- def to_s
- "#{text}"
- end
-end
\ No newline at end of file
diff --git a/app/models/org.rb b/app/models/org.rb
new file mode 100644
index 0000000..9abbe2e
--- /dev/null
+++ b/app/models/org.rb
@@ -0,0 +1,243 @@
+class Org < ActiveRecord::Base
+ include GlobalHelpers
+ include FlagShihTzu
+ extend Dragonfly::Model::Validations
+
+ ##
+ # Sort order: Name ASC
+ default_scope { order(name: :asc) }
+
+
+ ##
+ # Associations
+# belongs_to :organisation_type # depricated, but cannot be removed until migration run
+ belongs_to :language
+ has_many :guidance_groups
+ has_many :templates
+ has_many :users
+ has_many :annotations
+
+ has_and_belongs_to_many :token_permission_types, join_table: "org_token_permissions", unique: true
+
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :abbreviation, :banner_text, :logo, :remove_logo,
+ :logo_file_name, :name, :target_url,
+ :organisation_type_id, :wayfless_entity, :parent_id, :sort_name,
+ :token_permission_type_ids, :language_id, :contact_email,
+ :language, :org_type, :region, :token_permission_types,
+ :guidance_group_ids, :is_other, :region_id, :logo_uid, :logo_name
+
+ ##
+ # Validators
+ validates :contact_email, email: true, allow_nil: true
+ validates :name, presence: {message: _("can't be blank")}, uniqueness: {message: _("must be unique")}
+ # allow validations for logo upload
+ dragonfly_accessor :logo do
+ after_assign :resize_image
+ end
+ validates_property :height, of: :logo, in: (0..100), message: _("height must be less than 100px")
+ validates_property :format, of: :logo, in: ['jpeg', 'png', 'gif','jpg','bmp'], message: _("must be one of the following formats: jpeg, jpg, png, gif, bmp")
+ validates_size_of :logo, maximum: 500.kilobytes, message: _("can't be larger than 500KB")
+
+ ##
+ # Define Bit Field values
+ # Column org_type
+ has_flags 1 => :institution,
+ 2 => :funder,
+ 3 => :organisation,
+ 4 => :research_institute,
+ 5 => :project,
+ 6 => :school,
+ column: 'org_type'
+
+ # Predefined queries for retrieving the managain organisation and funders
+ scope :managing_orgs, -> { where(abbreviation: Rails.configuration.branding[:organisation][:abbreviation]) }
+ scope :funders, -> { where(org_type: 2) }
+ scope :institutions, -> { where(org_type: 1) }
+
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
+ #
+ # What do they do? do they do it efficiently, and do we need them?
+
+ # Determines the locale set for the organisation
+ # @return String or nil
+ def get_locale
+ if !self.language.nil?
+ return self.language.abbreviation
+ else
+ return nil
+ end
+ end
+
+# TODO: Should these be hardcoded? Also, an Org can currently be multiple org_types at one time.
+# For example you can do: funder = true; project = true; school = true
+# Calling type in the above scenario returns "Funder" which is a bit misleading
+# Is FlagShihTzu's Bit flag the appropriate structure here or should we use an enum?
+# Tests are setup currently to work with this issue.
+ ##
+ # returns the name of the type of the organisation as a string
+ # defaults to none if no org type present
+ #
+ # @return [String]
+ def type
+ if self.institution?
+ return "Institution"
+ elsif self.funder?
+ return "Funder"
+ elsif self.organisation?
+ return "Organisation"
+ elsif self.research_institute?
+ return "Research Institute"
+ elsif self.project?
+ return "Project"
+ elsif self.school?
+ return "School"
+ end
+ return "None"
+ end
+
+
+ ##
+ # returns the name of the organisation
+ #
+ # @return [String]
+ def to_s
+ name
+ end
+
+ ##
+ # returns the abbreviation for the organisation if it exists, or the name if not
+ #
+ # @return [String] name or abbreviation of the organisation
+ def short_name
+ if abbreviation.nil? then
+ return name
+ else
+ return abbreviation
+ end
+ end
+
+ ##
+ # finds all organisations who have a parent of the passed organisation type
+ #
+ # @param [String] the name of an organisation type
+ # @return [Array]
+=begin
+ 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
+ org_types = [GlobalHelpers.constant("organisation_types.funder")]
+ organisations_list = []
+ org_types.each do |ot|
+ new_org_obejct = OrganisationType.find_by_name(ot)
+
+ org_with_guidance = GuidanceGroup.joins(new_org_obejct.organisations)
+
+ organisations_list = organisations_list + org_with_guidance
+ end
+ return organisations_list
+ end
+
+
+ ##
+ # returns a list of all guidance groups belonging to other organisations
+ #
+ # @return [Array]
+ def self.other_organisations
+ org_types = [GlobalHelpers.constant("organisation_types.funder")]
+ organisations_list = []
+ org_types.each do |ot|
+ new_org_obejct = OrganisationType.find_by_name(ot)
+
+ org_with_guidance = GuidanceGroup.joins(new_org_obejct.organisations)
+
+ 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
+ #
+ # @param 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
+
+ ##
+ # 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
+
+ ##
+ # 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
+=end
+
+ ##
+ # returns all published templates belonging to the organisation
+ #
+ # @return [Array] published dmptemplates
+ def published_templates
+ return templates.where("published = ?", true)
+ end
+
+ def check_api_credentials
+ if token_permission_types.count == 0
+ users.each do |user|
+ user.api_token = ""
+ user.save!
+ end
+ end
+ end
+
+ private
+ ##
+ # checks size of logo and resizes if necessary
+ #
+ def resize_image
+ unless logo.nil?
+ if logo.height != 100
+ self.logo = logo.thumb('x100') # resize height and maintain aspect ratio
+ end
+ end
+ end
+end
diff --git a/app/models/org_token_permission.rb b/app/models/org_token_permission.rb
deleted file mode 100644
index c00a248..0000000
--- a/app/models/org_token_permission.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class OrgTokenPermission < ActiveRecord::Base
- attr_accessible :organisation_id, :token_permission_type_id, :organisation, :token_permission_type, :as => [:default, :admin]
-
- #associations between tables
- belongs_to :organisation
- belongs_to :token_permission_type
-
-end
diff --git a/app/models/organisation.rb b/app/models/organisation.rb
deleted file mode 100644
index 5aabbf0..0000000
--- a/app/models/organisation.rb
+++ /dev/null
@@ -1,194 +0,0 @@
-class Organisation < ActiveRecord::Base
- include GlobalHelpers
-
- extend Dragonfly::Model::Validations
-
- #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_and_belongs_to_many :token_permission_types, join_table: "org_token_permissions"
-
- belongs_to :parent, :class_name => 'Organisation'
-
- has_one :language
-
- has_many :children, :class_name => 'Organisation', :foreign_key => 'parent_id'
-
- accepts_nested_attributes_for :dmptemplates
- accepts_nested_attributes_for :token_permission_types
-
- attr_accessible :abbreviation, :banner_text, :logo, :remove_logo, :domain,
- :logo_file_name, :name, :stylesheet_file_id, :target_url,
- :organisation_type_id, :wayfless_entity, :parent_id, :sort_name,
- :token_permission_type_ids, :language_id, :contact_email
-
- validates :contact_email, email: true, allow_nil: true
- validates :name, presence: true, uniqueness: true
-
- # allow validations for logo upload
- dragonfly_accessor :logo do
- after_assign :resize_image
- end
-
- validates_property :height, of: :logo, in: (0..100)
- validates_property :format, of: :logo, in: ['jpeg', 'png', 'gif','jpg','bmp']
- validates_size_of :logo, maximum: 500.kilobytes
-
- ##
- # returns the name of the organisation
- #
- # @return [String]
- def to_s
- name
- end
-
- ##
- # returns the abbreviation for the organisation if it exists, or the name if not
- #
- # @return [String] name or abbreviation of the organisation
- def short_name
- if abbreviation.nil? then
- return name
- else
- return abbreviation
- end
- end
-
- ##
- # finds all organisations who have a parent of the passed organisation type
- #
- # @param [String] the name of an organisation type
- # @return [Array]
- 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
- org_types = [GlobalHelpers.constant("organisation_types.funder")]
- organisations_list = []
- org_types.each do |ot|
- new_org_obejct = OrganisationType.find_by_name(ot)
-
- org_with_guidance = GuidanceGroup.joins(new_org_obejct.organisations)
-
- organisations_list = organisations_list + org_with_guidance
- end
- return organisations_list
- end
-
-
- ##
- # returns a list of all guidance groups belonging to other organisations
- #
- # @return [Array]
- def self.other_organisations
- org_types = [GlobalHelpers.constant("organisation_types.funder")]
- organisations_list = []
- org_types.each do |ot|
- new_org_obejct = OrganisationType.find_by_name(ot)
-
- org_with_guidance = GuidanceGroup.joins(new_org_obejct.organisations)
-
- 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
- #
- # @param 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
-
- ##
- # 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
-
- ##
- # 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
-
- ##
- # takes in the id of, and returns an OptionWarning
- #
- # @param 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
-
- ##
- # returns all published templates belonging to the organisation
- #
- # @return [Array] published dmptemplates
- def published_templates
- return dmptemplates.where("published = ?", true)
- end
-
- def check_api_credentials
- if token_permission_types.count == 0
- users.each do |user|
- user.api_token = ""
- user.save!
- end
- end
- end
-
- private
- ##
- # checks size of logo and resizes if necessary
- #
- def resize_image
- unless logo.nil?
- if logo.height != 100
- self.logo = logo.thumb('x100') # resize height and maintain aspect ratio
- end
- end
- end
-end
diff --git a/app/models/organisation_type.rb b/app/models/organisation_type.rb
deleted file mode 100644
index 20df31d..0000000
--- a/app/models/organisation_type.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class OrganisationType < ActiveRecord::Base
- attr_accessible :description, :organisations, :name, :as => [:default, :admin]
-
- has_many :organisations
-
- validates :name, presence: true, uniqueness: true
-end
diff --git a/app/models/perm.rb b/app/models/perm.rb
new file mode 100644
index 0000000..58aad3e
--- /dev/null
+++ b/app/models/perm.rb
@@ -0,0 +1,32 @@
+class Perm < ActiveRecord::Base
+ ##
+ # Associations
+ has_and_belongs_to_many :users, :join_table => :users_perms
+
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ #attr_accessible :name, :as => [:default, :admin]
+
+ validates :name, presence: {message: _("can't be blank")}, uniqueness: {message: _("must be unique")}
+
+ ##
+ # Constant perms
+ #ADD_ORGS = Perm.where(name: 'add_organisations').first.freeze
+ #CHANGE_AFFILIATION = Perm.where(name: 'change_org_affiliation').first.freeze
+ #GRANT_PERMISSIONS = Perm.where(name: 'grant_permissions').first.freeze
+ #MODIFY_TEMPLATES = Perm.where(name: 'modify_templates').first.freeze
+ #MODIFY_GUIDANCE = Perm.where(name: 'modify_guidance').first.freeze
+ #USE_API = Perm.where(name: 'use_api').first.freeze
+ #CHANGE_ORG_DETAILS = Perm.where(name: 'change_org_details').first.freeze
+ #GRANT_API = Perm.where(name: 'grant_api_to_orgs').first.freeze
+
+ scope :add_orgs, -> {Perm.find_by(name: 'add_organisations')}
+ scope :change_affiliation, -> {Perm.find_by(name: 'change_org_affiliation')}
+ scope :grant_permissions, -> {Perm.find_by(name: 'grant_permissions')}
+ scope :modify_templates, -> {Perm.find_by(name: 'modify_templates')}
+ scope :modify_guidance, -> {Perm.find_by(name: 'modify_guidance')}
+ scope :use_api, -> {Perm.find_by(name: 'use_api')}
+ scope :change_org_details, -> {Perm.find_by(name: 'change_org_details')}
+ scope :grant_api, -> {Perm.find_by(name: 'grant_api_to_orgs')}
+end
diff --git a/app/models/phase.rb b/app/models/phase.rb
index 155a86f..5c2323f 100644
--- a/app/models/phase.rb
+++ b/app/models/phase.rb
@@ -5,75 +5,105 @@
# [+Copyright:+] Digital Curation Centre and University of California Curation Center
class Phase < ActiveRecord::Base
- extend FriendlyId
+ ##
+ # Sort order: Number ASC
+ default_scope { order(number: :asc) }
- #associations between tables
- belongs_to :dmptemplate
- has_many :versions, :dependent => :destroy
- has_many :sections, :through => :versions, :dependent => :destroy
- has_many :questions, :through => :sections, :dependent => :destroy
+# extend FriendlyId
+ ##
+ # Associations
+ belongs_to :template
+ has_many :sections, -> { order(:number => :asc) }, dependent: :destroy
+ has_many :questions, :through => :sections, dependent: :destroy
- #Link the child's data
- accepts_nested_attributes_for :versions, :allow_destroy => true
-# accepts_nested_attributes_for :dmptemplate
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :description, :number, :title, :template_id,
+ :template, :sections, :modifiable, :as => [:default, :admin]
- attr_accessible :description, :number, :title, :dmptemplate_id, :as => [:default, :admin]
+ ##
+ # sluggable title
+ #friendly_id :title, use: [:slugged, :history, :finders]
- friendly_id :title, use: [:slugged, :history, :finders]
+
+ validates :title, :number, :template, presence: {message: _("can't be blank")}
+
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
+ #
+ # What do they do? do they do it efficiently, and do we need them?
+
+
+
+
##
# returns the title of the phase
#
# @return [String] the title of the phase
- def to_s
- "#{title}"
- end
+ def to_s
+ "#{title}"
+ end
+# TODO: This function does not belong here anymore. It may be useless now.
##
- # returns the most_recent version of this phase
- #
- # @return [Version] the most recent version of this phase
- def latest_version
- return versions.order("number DESC").last
- end
-
- ##
- # returns either the latest published version of this phase
+ # returns either the latest published version of this phase
# also serves to verify if this phase has any published versions as returns nil
# if there are no published versions
#
# @return [Version, nil]
- def latest_published_version
- pub_vers = versions.where('published = ?', true).order('updated_at DESC')
- if pub_vers.any?() then
- return pub_vers.first
- else
- return nil
- end
- end
+# def latest_published_version
+# pub_vers = versions.where('published = ?', true).order('updated_at DESC')
+# if pub_vers.any?() then
+# return pub_vers.first
+# else
+# return nil
+# end
+# end
+# TODO: reevaluate this method. It seems like the 1st query is unecessary
##
- # verify if a phase has a published version or a version with one or more sections
+ # verify if a phase has a published version or a version with one or more sections
#
# @return [Boolean]
- def has_sections
- versions = self.versions.where('published = ?', true).order('updated_at DESC')
- if versions.any? then
- version = versions.first
- if !version.sections.empty? then
- has_section = true
- else
- has_section = false
- end
- else
- version = self.versions.order('updated_at DESC').first
- if !version.sections.empty? then
- has_section = true
- else
- has_section = false
- end
- end
- return has_section
- end
+=begin
+ def has_sections
+ versions = self.versions.where('published = ?', true).order('updated_at DESC')
+ if versions.any? then
+ version = versions.first
+ if !version.sections.empty? then
+ has_section = true
+ else
+ has_section = false
+ end
+ else
+ version = self.versions.order('updated_at DESC').first
+ if !version.sections.empty? then
+ has_section = true
+ else
+ has_section = false
+ end
+ end
+ return has_section
+ end
+=end
+
+ ##
+ # deep copy the given phase and all it's associations
+ #
+ # @params [Phase] phase to be deep copied
+ # @return [Phase] the saved, copied phase
+ def self.deep_copy(phase)
+ phase_copy = phase.dup
+ phase_copy.save!
+ phase.sections.each do |section|
+ section_copy = Section.deep_copy(section)
+ section_copy.phase_id = phase_copy.id
+ section_copy.save!
+ end
+ return phase_copy
+ end
+
end
diff --git a/app/models/plan.rb b/app/models/plan.rb
index f25998c..f3974d2 100644
--- a/app/models/plan.rb
+++ b/app/models/plan.rb
@@ -1,66 +1,102 @@
class Plan < ActiveRecord::Base
- attr_accessible :locked, :project_id, :version_id, :version, :plan_sections, :as => [:default, :admin]
-
- A4_PAGE_HEIGHT = 297 #(in mm)
- A4_PAGE_WIDTH = 210 #(in mm)
- ROUNDING = 5 #round estimate up to nearest 5%
- FONT_HEIGHT_CONVERSION_FACTOR = 0.35278 #convert font point size to mm
- FONT_WIDTH_HEIGHT_RATIO = 0.4 #Assume glyph width averages 2/5 the height
-
- #associations between tables
- belongs_to :project
- belongs_to :version
- has_many :answers
- has_many :plan_sections
-
-# accepts_nested_attributes_for :project
- accepts_nested_attributes_for :answers
-# accepts_nested_attributes_for :version
-
- has_settings :export, class_name: 'Settings::Dmptemplate' do |s|
- s.key :export, defaults: Settings::Dmptemplate::DEFAULT_SETTINGS
- end
-
- alias_method :super_settings, :settings
+ before_validation :set_creation_defaults
##
- # Proxy through to the template settings (or defaults if this plan doesn't have
- # an associated template) if there are no settings stored for this plan.
- # `key` is required by rails-settings, so it's required here, too.
+ # Associations
+ belongs_to :template
+ has_many :phases, through: :template
+ has_many :sections, through: :phases
+ has_many :questions, through: :sections
+ has_many :themes, through: :questions
+ has_many :answers, dependent: :destroy
+ has_many :notes, through: :answers
+ has_many :roles, dependent: :destroy
+ has_many :users, through: :roles
+ has_and_belongs_to_many :guidance_groups, join_table: :plans_guidance_groups
+
+ accepts_nested_attributes_for :template
+ has_many :exported_plans
+
+ has_many :roles
+
+
+# COMMENTED OUT THE DIRECT CONNECTION HERE TO Users to prevent assignment of users without an access_level specified (currently defaults to creator)
+# has_many :users, through: :roles
+
+
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :locked, :project_id, :version_id, :version, :plan_sections,
+ :exported_plans, :project, :title, :template, :grant_number,
+ :identifier, :principal_investigator, :principal_investigator_identifier,
+ :description, :data_contact, :funder_name, :visibility, :exported_plans,
+ :roles, :users, :org, :as => [:default, :admin]
+ accepts_nested_attributes_for :roles
+
+ # public is a Ruby keyword so using publicly
+ enum visibility: [:organisationally_visible, :publicly_visible, :is_test, :privately_visible]
+
+ #TODO: work out why this messes up plan creation :
+ # briley: Removed reliance on :users, its really on :roles (shouldn't have a plan without at least a creator right?) It should be ok like this though now
+# validates :template, :title, presence: true
+
+ ##
+ # Constants
+ A4_PAGE_HEIGHT = 297 #(in mm)
+ A4_PAGE_WIDTH = 210 #(in mm)
+ ROUNDING = 5 #round estimate up to nearest 5%
+ FONT_HEIGHT_CONVERSION_FACTOR = 0.35278 #convert font point size to mm
+ FONT_WIDTH_HEIGHT_RATIO = 0.4 #Assume glyph width averages 2/5 the height
+
+ # Scope queries
+ # Note that in ActiveRecord::Enum the mappings are exposed through a class method with the pluralized attribute name (e.g visibilities rather than visibility)
+ scope :publicly_visible, -> { where(:visibility => visibilities[:publicly_visible]).order(:title => :asc) }
+
+ ##
+ # Settings for the template
+ has_settings :export, class_name: 'Settings::Template' do |s|
+ s.key :export, defaults: Settings::Template::DEFAULT_SETTINGS
+ end
+ alias_method :super_settings, :settings
+
+
+ ##
+ # Proxy through to the template settings (or defaults if this plan doesn't have
+ # an associated template) if there are no settings stored for this plan.
+ # `key` is required by rails-settings, so it's required here, too.
#
# @param key [Key] a key required by rails
# @return [Settings] settings for this plan's template
- def settings(key)
- self_settings = self.super_settings(key)
- return self_settings if self_settings.value?
- self.dmptemplate.settings(key)
- end
+ def settings(key)
+ self_settings = self.super_settings(key)
+ return self_settings if self_settings.value?
+# self.dmptemplate.settings(key)
+ self.template.settings(key) unless self.template.nil?
+ end
##
# returns the template for this plan, or generates an empty template and returns that
#
# @return [Dmptemplate] the template associated with this plan
def dmptemplate
- self.project.try(:dmptemplate) || Dmptemplate.new
+ #self.project.try(:dmptemplate) || Dmptemplate.new
+ self.template
end
- ##
- # returns the title for this project as defined by the settings
- #
- # @return [String] the title for this project
- def title
- logger.debug "Title in settings: #{self.settings(:export).title}"
- if self.settings(:export).title == ""
- if !self.version.nil? && !self.version.phase.nil? && !self.version.phase.title? then
- return self.version.phase.title
- else
- return I18n.t('tool_title2')
- end
- else
- return self.settings(:export).title
- end
- end
+
+
+ def base_template
+ base = nil
+ t = self.template
+ if t.customization_of.present?
+ base = Template.where("dmptemplate_id = ? and created_at < ?", t.customization_of, self.created_at).order(version: :desc).first
+ end
+ return base
+ end
+
+
##
# returns the most recent answer to the given question id
@@ -78,69 +114,116 @@
answer.question_id = qid
answer.text = question.default_value
default_options = Array.new
- question.options.each do |option|
+ question.question_options.each do |option|
if option.is_default
default_options << option
end
end
- answer.options = default_options
+ answer.question_options = default_options
end
return answer
end
+# TODO: This just retrieves all of the guidance associated with the themes within the template
+# so why are we transferring it here to the plan?
##
# returns all of the sections for this version of the plan, and for the project's organisation
#
# @return [Array,nil] either a list of sections, or nil if none were found
- def sections
- unless project.organisation.nil? then
- sections = version.global_sections + project.organisation.all_sections(version_id)
- else
- sections = version.global_sections
- end
- return sections.uniq.sort_by &:number
- end
+ def set_possible_guidance_groups
+ # find all the themes in this plan
+ # and get the guidance groups they belong to
+ ggroups = []
+ self.template.phases.each do |phase|
+ phase.sections.each do |section|
+ section.questions.each do |question|
+ question.themes.each do |theme|
+ theme.guidances.each do |guidance|
+ ggroups << guidance.guidance_group
+ end
+ end
+ end
+ end
+ end
+
+ self.guidance_groups = ggroups.uniq
+ end
##
+ # returns all of the possible guidance groups for the plan (all options to
+ # be selected by the user to display)
+ #
+ # @return Array
+ def get_guidance_group_options
+ # find all the themes in this plan
+ # and get the guidance groups they belong to
+ ggroups = []
+ self.template.phases.each do |phase|
+ phase.sections.each do |section|
+ section.questions.each do |question|
+ question.themes.each do |theme|
+ theme.guidances.each do |guidance|
+ ggroups << guidance.guidance_group
+ end
+ end
+ end
+ end
+ end
+ return ggroups.uniq
+ end
+
+
+
+
+ ##
# returns the guidances associated with the project's organisation, for a specified question
#
# @param question [Question] the question to find guidance for
- # @return [Array] the list of guidances which pretain to the specified question
- def guidance_for_question(question)
- guidances = {}
- # If project org isn't nil, get guidance by theme from any "non-subset" groups belonging to project org
- unless project.organisation.nil? then
- project.organisation.guidance_groups.each do |group|
- if !group.optional_subset && (group.dmptemplates.pluck(:id).include?(project.dmptemplate_id) || group.dmptemplates.count == 0) then
- group.guidances.each do |guidance|
- guidance.themes.where("id IN (?)", question.theme_ids).each do |theme|
- guidances = self.add_guidance_to_array(guidances, group, theme, guidance)
- end
- end
- end
- end
- end
- # Get guidance by theme from any guidance groups selected on creation
- project.guidance_groups.each do |group|
- if group.dmptemplates.pluck(:id).include?(project.dmptemplate_id) || group.dmptemplates.count == 0 then
- group.guidances.each do |guidance|
- guidance.themes.where("id IN (?)", question.theme_ids).each do |theme|
- guidances = self.add_guidance_to_array(guidances, group, theme, guidance)
- end
- end
- end
- end
- # Get guidance by question where guidance group was selected on creation or if group is organisation default
- question.guidances.each do |guidance|
- guidance.guidance_groups.each do |group|
- if (group.organisation == project.organisation && !group.optional_subset) || project.guidance_groups.include?(group) then
- guidances = self.add_guidance_to_array(guidances, group, nil, guidance)
- end
+ # @return array of hashes with orgname, themes and the guidance itself
+ def guidance_for_question(question)
+ guidances = []
+
+ # add in the guidance for the template org
+ unless self.template.org.nil? then
+ self.template.org.guidance_groups.each do |group|
+ group.guidances.each do |guidance|
+ common_themes = guidance.themes.all & question.themes.all
+ if common_themes.length > 0
+ guidances << { orgname: self.template.org.name, theme: common_themes.join(','), guidance: guidance }
+ end
+ end
end
- end
+ end
+
+ # add in the guidance for the user's org
+ unless self.owner.nil?
+ unless self.owner.org.nil? then
+ self.owner.org.guidance_groups.each do |group|
+ group.guidances.each do |guidance|
+ common_themes = guidance.themes.all & question.themes.all
+ if common_themes.length > 0
+ guidances << { orgname: self.template.org.name, theme: common_themes.join(','), guidance: guidance }
+ end
+ end
+ end
+ end
+ end
- return guidances
- end
+ # Get guidance by theme from any guidance groups currently selected
+ self.guidance_groups.each do |group|
+ group.guidances.each do |guidance|
+ common_themes = guidance.themes.all & question.themes.all
+ if common_themes.length > 0
+ guidances << { orgname: self.template.org.name, theme: common_themes.join(','), guidance: guidance }
+ end
+ end
+ end
+
+ return guidances
+ end
+
+
+
##
# adds the given guidance to a hash indexed by a passed guidance group and theme
@@ -150,233 +233,300 @@
# @param theme [Theme] the theme object for the GuidanceGroup
# @param guidance [Guidance] the guidance object to be appended to the correct section of the array
# @return [{GuidanceGroup => {Theme => Array}}] the updated object which was passed in
- def add_guidance_to_array(guidance_array, guidance_group, theme, guidance)
- if guidance_array[guidance_group].nil? then
- guidance_array[guidance_group] = {}
- end
- if theme.nil? then
- if guidance_array[guidance_group]["no_theme"].nil? then
- guidance_array[guidance_group]["no_theme"] = []
- end
- if !guidance_array[guidance_group]["no_theme"].include?(guidance) then
- guidance_array[guidance_group]["no_theme"].push(guidance)
- end
- else
- if guidance_array[guidance_group][theme].nil? then
- guidance_array[guidance_group][theme] = []
- end
- if !guidance_array[guidance_group][theme].include?(guidance) then
- guidance_array[guidance_group][theme].push(guidance)
- end
- end
+ def add_guidance_to_array(guidance_array, guidance_group, theme, guidance)
+ if guidance_array[guidance_group].nil? then
+ guidance_array[guidance_group] = {}
+ end
+ if theme.nil? then
+ if guidance_array[guidance_group]["no_theme"].nil? then
+ guidance_array[guidance_group]["no_theme"] = []
+ end
+ if !guidance_array[guidance_group]["no_theme"].include?(guidance) then
+ guidance_array[guidance_group]["no_theme"].push(guidance)
+ end
+ else
+ if guidance_array[guidance_group][theme].nil? then
+ guidance_array[guidance_group][theme] = []
+ end
+ if !guidance_array[guidance_group][theme].include?(guidance) then
+ guidance_array[guidance_group][theme].push(guidance)
+ end
+ end
return guidance_array
- end
-
- ##
- # finds the specified warning for the plan's project's organisation
- #
- # @param option_id [Integer] the id to find the OptionWarning associated
- # @return [OptionWarning] the desired OptionWarning
- def warning(option_id)
- if project.organisation.nil?
- return nil
- else
- return project.organisation.warning(option_id)
- end
- end
+ end
##
# determines if the plan is editable by the specified user
- # NOTE: This should be renamed to editable_by?
#
# @param user_id [Integer] the id for a user
# @return [Boolean] true if user can edit the plan
- def editable_by(user_id)
- return project.editable_by(user_id)
+ def editable_by?(user_id)
+ user_id = user_id.id if user_id.is_a?(User)
+ role = roles.where(user_id: user_id).first
+ return role.present? && role.editor?
end
##
# determines if the plan is readable by the specified user
- # NOTE: This shoudl be renamed to readable_by?
+ # TODO: introduce explicit readable rather than implicit
+ # currently role with no flags = readable
#
# @param user_id [Integer] the id for a user
# @return [Boolean] true if the user can read the plan
- def readable_by(user_id)
- if project.nil?
- return false
- else
- return project.readable_by(user_id)
- end
+ def readable_by?(user_id)
+ user_id = user_id.id if user_id.is_a?(User)
+ role = roles.where(user_id: user_id).first
+ return role.present?
end
##
# determines if the plan is administerable by the specified user
- # NOTE: This should be renamed to administerable_by?
#
# @param user_id [Integer] the id for the user
# @return [Boolean] true if the user can administer the plan
- def administerable_by(user_id)
- return project.readable_by(user_id)
+ def administerable_by?(user_id)
+ user_id = user_id.id if user_id.is_a?(User)
+ role = roles.where(user_id: user_id).first
+ return role.present? && role.administrator?
end
##
# defines and returns the status of the plan
# status consists of a hash of the num_questions, num_answers, sections, questions, and spaced used.
- # For each section, it contains theid's of each of the questions
+ # For each section, it contains the id's of each of the questions
# for each question, it contains the answer_id, answer_created_by, answer_text, answer_options_id, aand answered_by
#
# @return [Status]
- def status
- status = {
- "num_questions" => 0,
- "num_answers" => 0,
- "sections" => {},
- "questions" => {},
- "space_used" => 0 # percentage of available space in pdf used
- }
- space_used = height_of_text(self.project.title, 2, 2)
+ def status
+ status = {
+ "num_questions" => 0,
+ "num_answers" => 0,
+ "sections" => {},
+ "questions" => {},
+ "space_used" => 0 # percentage of available space in pdf used
+ }
- sections.each do |s|
- space_used += height_of_text(s.title, 1, 1)
- section_questions = 0
- section_answers = 0
- status["sections"][s.id] = {}
- status["sections"][s.id]["questions"] = Array.new
- s.questions.each do |q|
- status["num_questions"] += 1
- section_questions += 1
- status["sections"][s.id]["questions"] << q.id
- status["questions"][q.id] = {}
- answer = answer(q.id, false)
+ space_used = height_of_text(self.title, 2, 2)
- space_used += height_of_text(q.text) unless q.text == s.title
- space_used += height_of_text(answer.try(:text) || I18n.t('helpers.plan.export.pdf.question_not_answered'))
+ section_ids = sections.map {|s| s.id}
- if ! answer.nil? then
- status["questions"][q.id] = {
- "answer_id" => answer.id,
- "answer_created_at" => answer.created_at.to_i,
- "answer_text" => answer.text,
- "answer_option_ids" => answer.option_ids,
- "answered_by" => answer.user.name
- }
- q_format = q.question_format
- status["num_answers"] += 1 if (q_format.title == I18n.t("helpers.checkbox") || q_format.title == I18n.t("helpers.multi_select_box") ||
- q_format.title == I18n.t("helpers.radio_buttons") || q_format.title == I18n.t("helpers.dropdown")) || answer.text.present?
- section_answers += 1
- #TODO: include selected options in space estimate
- else
- status["questions"][q.id] = {
- "answer_id" => nil,
- "answer_created_at" => nil,
- "answer_text" => nil,
- "answer_option_ids" => nil,
- "answered_by" => nil
- }
- end
- status["sections"][s.id]["num_questions"] = section_questions
- status["sections"][s.id]["num_answers"] = section_answers
- end
- end
+ # we retrieve this is 2 joins:
+ # 1. sections and questions
+ # 2. questions and answers
+ # why? because Rails 4 doesn't have any sensible left outer join.
+ # when we change to RAILS 5 it is meant to have so this can be fixed then
- status['space_used'] = estimate_space_used(space_used)
- return status
- end
+ records = Section.joins(questions: :question_format)
+ .select('sections.id as sectionid,
+ sections.title as stitle,
+ questions.id as questionid,
+ questions.text as questiontext,
+ question_formats.title as qformat')
+ .where("sections.id in (?) ", section_ids)
+ .to_a
+
+ # extract question ids to get answers
+ question_ids = records.map {|r| r.questionid}.uniq
+ status["num_questions"] = question_ids.count
+
+ arecords = Question.joins(answers: :user)
+ .select('questions.id as questionid,
+ answers.id as answerid,
+ answers.plan_id as plan_id,
+ answers.text as answertext,
+ answers.updated_at as updated,
+ users.email as username')
+ .where("questions.id in (?) and answers.plan_id = ?",question_ids, self.id)
+ .to_a
+
+ # we want answerids to extract options later
+ answer_ids = arecords.map {|r| r.answerid}.uniq
+ status["num_answers"] = answer_ids.count
+
+ # create map from questionid to answer structure
+ qa_map = {}
+ arecords.each do |rec|
+ qa_map[rec.questionid] = {
+ plan: rec.plan_id,
+ id: rec.answerid,
+ text: rec.answertext,
+ updated: rec.updated,
+ user: rec.username
+ }
+ end
+ # build main status structure
+ records.each do |rec|
+ sid = rec.sectionid
+ stitle = rec.stitle
+ qid = rec.questionid
+ qtext = rec.questiontext
+ format = rec.qformat
+
+ answer = nil
+ if qa_map.has_key?(qid)
+ answer = qa_map[qid]
+ end
+
+ aid = answer.nil? ? nil : answer[:id]
+ atext = answer.nil? ? nil : answer[:text]
+ updated = answer.nil? ? nil : answer[:updated]
+ uname = answer.nil? ? nil : answer[:user]
+
+ space_used += height_of_text(stitle, 1, 1)
+
+ shash = status["sections"]
+ if !shash.has_key?(sid)
+ shash[sid] = {}
+ shash[sid]["num_questions"] = 0
+ shash[sid]["num_answers"] = 0
+ shash[sid]["questions"] = Array.new
+ end
+
+ shash[sid]["questions"] << qid
+ shash[sid]["num_questions"] += 1
+
+ space_used += height_of_text(qtext) unless qtext == stitle
+ if atext.present?
+ space_used += height_of_text(atext)
+ else
+ space_used += height_of_text(_('Question not answered.'))
+ end
+
+ if answer.present? then
+ shash[sid]["num_answers"] += 1
+ end
+
+ status["questions"][qid] = {
+ "format" => format,
+ "answer_id" => aid,
+ "answer_updated_at" => updated.to_i,
+ "answer_text" => atext,
+ "answered_by" => uname
+ }
+
+ end
+
+ records = Answer.joins(:question_options).select('answers.id as answerid, question_options.id as optid').where(id: answer_ids).to_a
+ opt_hash = {}
+ records.each do |rec|
+ aid = rec.answerid
+ optid = rec.optid
+ if !opt_hash.has_key?(aid)
+ opt_hash[aid] = Array.new
+ end
+ opt_hash[aid] << optid
+ end
+
+ status["questions"].each_key do |questionid|
+ answerid = status["questions"][questionid]["answer_id"]
+ status["questions"][questionid]["answer_option_ids"] = opt_hash[answerid]
+ end
+
+ status['space_used'] = estimate_space_used(space_used)
+
+ return status
+ end
+
+# TODO: Guessing this isn't in use since it still refers to Project and Version
+=begin
##
# defines and returns the details for the plan
# details consists of a hash of: project_title, phase_title, and for each section,
# section: title, question text for each question, answer type and answer value
#
# @return [Details]
- def details
- details = {
- "project_title" => project.title,
- "phase_title" => version.phase.title,
- "sections" => {}
- }
- sections.sort_by(&:"number").each do |s|
- details["sections"][s.number] = {}
- details["sections"][s.number]["title"] = s.title
- details["sections"][s.number]["questions"] = {}
- s.questions.order("number").each do |q|
- details["sections"][s.number]["questions"][q.number] = {}
- details["sections"][s.number]["questions"][q.number]["question_text"] = q.text
- answer = answer(q.id, false)
- if ! answer.nil? then
+ def details
+ details = {
+ "project_title" => project.title,
+ "phase_title" => version.phase.title,
+ "sections" => {}
+ }
+ sections.sort_by(&:"number").each do |s|
+ details["sections"][s.number] = {}
+ details["sections"][s.number]["title"] = s.title
+ details["sections"][s.number]["questions"] = {}
+ s.questions.order("number").each do |q|
+ details["sections"][s.number]["questions"][q.number] = {}
+ details["sections"][s.number]["questions"][q.number]["question_text"] = q.text
+ answer = answer(q.id, false)
+ if ! answer.nil? then
q_format = q.question_format
- if (q_format.title == t("helpers.checkbox") || q_format.title == t("helpers.multi_select_box") ||
+ if (q_format.title == t("helpers.checkbox") || q_format.title == t("helpers.multi_select_box") ||
q_format.title == t("helpers.radio_buttons") || q_format.title == t("helpers.dropdown")) then
- details["sections"][s.number]["questions"][q.number]["selections"] = {}
- answer.options.each do |o|
- details["sections"][s.number]["questions"][q.number]["selections"][o.number] = o.text
- end
- end
- details["sections"][s.number]["questions"][q.number]["answer_text"] = answer.text
- end
- end
- end
- return details
- end
+ details["sections"][s.number]["questions"][q.number]["selections"] = {}
+ answer.options.each do |o|
+ details["sections"][s.number]["questions"][q.number]["selections"][o.number] = o.text
+ end
+ end
+ details["sections"][s.number]["questions"][q.number]["answer_text"] = answer.text
+ end
+ end
+ end
+ return details
+ end
+=end
+# TODO: commenting this old lock stuff out since PlanSection is gone and we wanted to get rid of it
+=begin
##
# determines wether or not a specified section of a plan is locked to a specified user and returns a status hash
#
# @param section_id [Integer] the setion to determine if locked
# @param user_id [Integer] the user to determine if locked for
# @return [Hash{String => Hash{String => Boolean, nil, String, Integer}}]
- def locked(section_id, user_id)
- plan_section = plan_sections.where("section_id = ? AND user_id != ? AND release_time > ?", section_id, user_id, Time.now).last
- if plan_section.nil? then
- status = {
- "locked" => false,
- "locked_by" => nil,
- "timestamp" => nil,
- "id" => nil
- }
- else
- status = {
- "locked" => true,
- "locked_by" => plan_section.user.name,
- "timestamp" => plan_section.updated_at,
- "id" => plan_section.id
- }
- end
- end
+ def locked(section_id, user_id)
+ plan_section = plan_sections.where("section_id = ? AND user_id != ? AND release_time > ?", section_id, user_id, Time.now).last
+ if plan_section.nil? then
+ status = {
+ "locked" => false,
+ "locked_by" => nil,
+ "timestamp" => nil,
+ "id" => nil
+ }
+ else
+ status = {
+ "locked" => true,
+ "locked_by" => plan_section.user.name,
+ "timestamp" => plan_section.updated_at,
+ "id" => plan_section.id
+ }
+ end
+ end
##
# for each section, lock the section with the given user_id
#
# @param user_id [Integer] the id for the user who can use the sections
- def lock_all_sections(user_id)
- sections.each do |s|
- lock_section(s.id, user_id, 1800)
- end
- end
+ def lock_all_sections(user_id)
+ sections.each do |s|
+ lock_section(s.id, user_id, 1800)
+ end
+ end
##
# for each section, unlock the section
#
# @param user_id [Integer] the id for the user to unlock the sections for
- def unlock_all_sections(user_id)
- plan_sections.where(:user_id => user_id).order("created_at DESC").each do |lock|
- lock.delete
- end
- end
+ def unlock_all_sections(user_id)
+ plan_sections.where(:user_id => user_id).order("created_at DESC").each do |lock|
+ lock.delete
+ end
+ end
##
# for each section, unlock the section
# Not sure how this is different from unlock_all_sections
#
# @param user_id [Integer]
- def delete_recent_locks(user_id)
- plan_sections.where(:user_id => user_id).each do |lock|
- lock.delete
- end
- end
+ def delete_recent_locks(user_id)
+ plan_sections.where(:user_id => user_id).each do |lock|
+ lock.delete
+ end
+ end
##
# Locks the specified section to only be used by the specified user, for the number of secconds specified
@@ -385,23 +535,23 @@
# @param user_id [Integer] the id of the user who can use the section
# @param release_time [Integer] the number of secconds the section will be locked for, defaults to 60
# @return [Boolean] wether or not the section was locked
- def lock_section(section_id, user_id, release_time = 60)
- status = locked(section_id, user_id)
- if ! status["locked"] then
- plan_section = PlanSection.new
- plan_section.plan_id = id
- plan_section.section_id = section_id
- plan_section.release_time = Time.now + release_time.seconds
- plan_section.user_id = user_id
- plan_section.save
- elsif status["current_user"] then
- plan_section = PlanSection.find(status["id"])
- plan_section.release_time = Time.now + release_time.seconds
- plan_section.save
- else
- return false
- end
- end
+ def lock_section(section_id, user_id, release_time = 60)
+ status = locked(section_id, user_id)
+ if ! status["locked"] then
+ plan_section = PlanSection.new
+ plan_section.plan_id = id
+ plan_section.section_id = section_id
+ plan_section.release_time = Time.now + release_time.seconds
+ plan_section.user_id = user_id
+ plan_section.save
+ elsif status["current_user"] then
+ plan_section = PlanSection.find(status["id"])
+ plan_section.release_time = Time.now + release_time.seconds
+ plan_section.save
+ else
+ return false
+ end
+ end
##
# unlocks the specified section for the specified user
@@ -409,65 +559,521 @@
# @param section_id [Integer] the id for the section to be unlocked
# @param user_id [Integer] the id for the user for whom the section was previously locked
# @return [Boolean] wether or not the lock was removed
- def unlock_section(section_id, user_id)
- plan_sections.where(:section_id => section_id, :user_id => user_id).order("created_at DESC").each do |lock|
- lock.delete
- end
- end
+ def unlock_section(section_id, user_id)
+ plan_sections.where(:section_id => section_id, :user_id => user_id).order("created_at DESC").each do |lock|
+ lock.delete
+ end
+ end
+=end
+# TODO: Commenting out because this method appears below as well so this one is overwritten
+=begin
##
# returns the time of either the latest answer to any question, or the latest update to the model
#
# @return [DateTime] the time at which the plan was last changed
- def latest_update
- if answers.any? then
- last_answered = answers.order("updated_at DESC").first.updated_at
- if last_answered > updated_at then
- return last_answered
- else
- return updated_at
- end
- else
- return updated_at
- end
- end
+ def latest_update
+ if answers.any? then
+ last_answered = answers.order("updated_at DESC").first.updated_at
+ if last_answered > updated_at then
+ return last_answered
+ else
+ return updated_at
+ end
+ else
+ return updated_at
+ end
+ end
+=end
+# TODO: Guessing this isn't in use since it still refers to Project and Version
+=begin
##
# returns an array of hashes. Each hash contains the question's id, the answer_id,
# the answer_text, the answer_timestamp, and the answer_options
#
# @param section_id [Integer] the section to find answers of
# @return [Array nil,String,Integer,DateTime}]
- def section_answers(section_id)
- section = Section.find(section_id)
- section_questions = Array.new
- counter = 0
- section.questions.each do |q|
- section_questions[counter] = {}
- section_questions[counter]["id"] = q.id
- #section_questions[counter]["multiple_choice"] = q.multiple_choice
- q_answer = answer(q.id, false)
- if q_answer.nil? then
- section_questions[counter]["answer_id"] = nil
- if q.suggested_answers.find_by_organisation_id(project.organisation_id).nil? then
- section_questions[counter]["answer_text"] = ""
- else
- section_questions[counter]["answer_text"] = q.default_value
- end
- section_questions[counter]["answer_timestamp"] = nil
- section_questions[counter]["answer_options"] = Array.new
- else
- section_questions[counter]["answer_id"] = q_answer.id
- section_questions[counter]["answer_text"] = q_answer.text
- section_questions[counter]["answer_timestamp"] = q_answer.created_at
- section_questions[counter]["answer_options"] = q_answer.options.pluck(:id)
- end
- counter = counter + 1
- end
- return section_questions
- end
+ def section_answers(section_id)
+ section = Section.find(section_id)
+ section_questions = Array.new
+ counter = 0
+ section.questions.each do |q|
+ section_questions[counter] = {}
+ section_questions[counter]["id"] = q.id
+ #section_questions[counter]["multiple_choice"] = q.multiple_choice
+ q_answer = answer(q.id, false)
+ if q_answer.nil? then
+ section_questions[counter]["answer_id"] = nil
+ if q.suggested_answers.find_by_organisation_id(project.organisation_id).nil? then
+ section_questions[counter]["answer_text"] = ""
+ else
+ section_questions[counter]["answer_text"] = q.default_value
+ end
+ section_questions[counter]["answer_timestamp"] = nil
+ section_questions[counter]["answer_options"] = Array.new
+ else
+ section_questions[counter]["answer_id"] = q_answer.id
+ section_questions[counter]["answer_text"] = q_answer.text
+ section_questions[counter]["answer_timestamp"] = q_answer.created_at
+ section_questions[counter]["answer_options"] = q_answer.options.pluck(:id)
+ end
+ counter = counter + 1
+ end
+ return section_questions
+ end
+=end
-private
+
+ ##
+ # assigns the passed user_id to the creater_role for the project
+ # gives the user rights to read, edit, administrate, and defines them as creator
+ #
+ # @param user_id [Integer] the user to be given priveleges' id
+ def assign_creator(user_id)
+ user_id = user_id.id if user_id.is_a?(User)
+ add_user(user_id, true, true, true)
+ end
+
+
+
+# TODO: commenting these out because they are overriden by private methods below, so this
+# is unreachable
+=begin
+ ##
+ # Based on the height of the text gathered so far and the available vertical
+ # space of the pdf, estimate a percentage of how much space has been used.
+ # This is highly dependent on the layout in the pdf. A more accurate approach
+ # would be to render the pdf and check how much space had been used, but that
+ # could be very slow.
+ # NOTE: This is only an estimate, rounded up to the nearest 5%; it is intended
+ # for guidance when editing plan data, not to be 100% accurate.
+ #
+ # @param used_height [Integer] an estimate of the height used so far
+ # @return [Integer] the estimate of space used of an A4 portrain
+ def estimate_space_used(used_height)
+ @formatting ||= self.settings(:export).formatting
+
+ return 0 unless @formatting[:font_size] > 0
+
+ margin_height = @formatting[:margin][:top].to_i + @formatting[:margin][:bottom].to_i
+ page_height = A4_PAGE_HEIGHT - margin_height # 297mm for A4 portrait
+ available_height = page_height * self.template.settings(:export).max_pages
+
+ percentage = (used_height / available_height) * 100
+ (percentage / ROUNDING).ceil * ROUNDING # round up to nearest five
+ end
+
+ ##
+ # Take a guess at the vertical height (in mm) of the given text based on the
+ # font-size and left/right margins stored in the plan's settings.
+ # This assumes a fixed-width for each glyph, which is obviously
+ # incorrect for the font-face choices available; the idea is that
+ # they'll hopefully average out to that in the long-run.
+ # Allows for hinting different font sizes (offset from base via font_size_inc)
+ # and vertical margins (i.e. for heading text)
+ #
+ # @param text [String] the text to estimate size of
+ # @param font_size_inc [Integer] the size of the font of the text, defaults to 0
+ # @param vertical_margin [Integer] the top margin above the text, defaults to 0
+ def height_of_text(text, font_size_inc = 0, vertical_margin = 0)
+ @formatting ||= self.settings(:export).formatting
+ @margin_width ||= @formatting[:margin][:left].to_i + @formatting[:margin][:right].to_i
+ @base_font_size ||= @formatting[:font_size]
+
+ return 0 unless @base_font_size > 0
+
+ font_height = FONT_HEIGHT_CONVERSION_FACTOR * (@base_font_size + font_size_inc)
+ font_width = font_height * FONT_WIDTH_HEIGHT_RATIO # Assume glyph width averages at 2/5s the height
+ leading = font_height / 2
+
+ chars_in_line = (A4_PAGE_WIDTH - @margin_width) / font_width # 210mm for A4 portrait
+ num_lines = (text.length / chars_in_line).ceil
+
+ (num_lines * font_height) + vertical_margin + leading
+ end
+=end
+
+# TODO: What are these used for? Should just be using self.org and self.org.funder?
+=begin
+ ##
+ # sets a new funder for the project
+ # defaults to the first dmptemplate if the current template is nill and the funder has more than one dmptemplate
+ #
+ # @param new_funder_id [Integer] the id for a new funder
+ # @return [Organisation] the new funder
+ def funder_id=(new_funder_id)
+ if new_funder_id != "" then
+ new_funder = Org.find(new_funder_id);
+ if new_funder.templates.count >= 1 && self.template.nil? then
+ self.template = new_funder.templates.first
+ end
+ end
+ end
+=end
+
+ ##
+ # returns the funder id for the plan
+ #
+ # @return [Integer, nil] the id for the funder
+ def funder_id
+ if self.template.nil? then
+ return nil
+ end
+ return self.template.org
+ end
+
+ ##
+ # returns the funder organisation for the project or nil if none is specified
+ #
+ # @return [Organisation, nil] the funder for project, or nil if none exists
+ def funder
+ template = self.template
+ if template.nil? then
+ return nil
+ end
+
+ if template.customization_of
+ return template.customization_of.org
+ else
+ return template.org
+ end
+ end
+
+=begin
+ ##
+ # returns the name of the funder for the project
+ #
+ # @return [String] the name fo the funder for the project
+ def funder_name
+ if self.funder.nil?
+ return read_attribute(:funder_name)
+ else
+ return self.funder.name
+ end
+ end
+
+ ##
+ # defines a new funder_name for the project.
+ #
+ # @param new_funder_name [String] the string name of the new funder
+ # @return [Integer, nil] the org_id of the new funder
+ def funder_name=(new_funder_name)
+ write_attribute(:funder_name, new_funder_name)
+ org_table = Org.arel_table
+ existing_org = Org.where(org_table[:name].matches(new_funder_name))
+ if existing_org.nil?
+ existing_org = Org.where(org_table[:abbreviation].matches(new_funder_name))
+ end
+ unless existing_org.empty?
+ self.funder_id=existing_org.id
+ end
+ end
+
+ ##
+ # sets a new institution_id if there is no current organisation
+ #
+ # @param new_institution_id [Integer] the id for the new institution
+ # @return [Integer, Bool] false if an organisation exists, or the id of the set org if a new organisation is set
+ def institution_id=(new_institution_id)
+ if organisation.nil? then
+ self.organisation_id = new_institution_id
+ end
+ end
+
+ ##
+ # returns the organisation which is root over the owning organisation
+ #
+ # @return [Integer, nil] the organisation_id or nil
+ def institution_id
+# if organisation.nil?
+# return nil
+# else
+# return organisation.root.id
+# end
+ return template.org.id
+ end
+
+ ##
+ # defines a new organisation_id for the project
+ # but is confusingly labled unit_id
+ #
+ # @param new_unit_id [Integer]
+ # @return [Integer, Boolean] the new organisation ID or false if no unit_id was passed
+ def unit_id=(new_unit_id)
+ unless new_unit_id.nil? ||new_unit_id == ""
+ self.organisation_id = new_unit_id
+ end
+ end
+
+ ##
+ # returns the organisation_id or nil
+ # again seems redundant
+ #
+ # @return [nil, Integer] nil if no organisation, or the id if there is an organisation specified
+ def unit_id
+ if organisation.nil? || organisation.parent_id.nil?
+ return nil
+ else
+ return organisation_id
+ end
+ end
+=end
+
+ ##
+ # assigns the passed user_id as an editor for the project
+ # gives the user rights to read and edit
+ #
+ # @param user_id [Integer] the user to be given priveleges' id
+ def assign_editor(user_id)
+ add_user(user_id, true)
+ end
+
+ ##
+ # assigns the passed user_id as a reader for the project
+ # gives the user rights to read
+ #
+ # @param user_id [Integer] the user to be given priveleges' id
+ def assign_reader(user_id)
+ add_user(user_id)
+ end
+
+ ##
+ # assigns the passed user_id as an administrator for the project
+ # gives the user rights to read, adit, and administrate the project
+ #
+ # @param user_id [Integer] the user to be given priveleges' id
+ def assign_administrator(user_id)
+ add_user(user_id, true, true)
+ end
+
+# TODO: ProjectGroup doesn't exist anymore so commenting these out
+=begin
+ ##
+ # returns the projects which the user can atleast read
+ #
+ # @param user_id [Integer] the user to lookup projects for
+ # @return [Array] list of all projects the user can atleast read
+ def self.projects_for_user(user_id)
+ projects = Array.new
+ groups = ProjectGroup.where("user_id = ?", user_id)
+ unless groups.nil? then
+ groups.each do |group|
+ unless group.project.nil? then
+ projects << group.project
+ end
+ end
+ end
+ return projects
+ end
+
+ ##
+ # whether or not the specified user_id created this project
+ # should be renamed to created_by?
+ #
+ # @param user_id [Integer] the user to check the priveleges of
+ # @return [Boolean] true if the user created the project
+ def created_by(user_id)
+ user = project_groups.find_by_user_id(user_id)
+ if (! user.nil?) && user.project_creator then
+ return true
+ else
+ return false
+ end
+ end
+=end
+
+ ##
+ # the datetime for the latest update of this plan
+ #
+ # @return [DateTime] the time of latest update
+ def latest_update
+ latest_update = updated_at
+ phases.each do |phase|
+ if phase.updated_at > latest_update then
+ latest_update = phase.updated_at
+ end
+ end
+ return latest_update
+ end
+
+ # Getters to match 'My plans' columns
+
+ ##
+ # the title of the project
+ #
+ # @return [String] the title of the project
+ def name
+ self.title
+ end
+
+ ##
+ # the owner of the project
+ #
+ # @return [User] the creater of the project
+ def owner
+ self.roles.each do |role|
+ if role.creator?
+ return role.user
+ end
+ end
+ return nil
+ end
+
+ ##
+ # the time the project was last updated, formatted as a date
+ #
+ # @return [Date] last update as a date
+ def last_edited
+ self.latest_update.to_date
+ end
+
+# TODO: These next 2 reference defunct models so commenting out
+=begin
+ ##
+ # whether or not the plan is shared with anybody
+ #
+ # @return [Boolean] true if the project has been shared
+ def shared?
+ self.project_groups.count > 1
+ end
+
+ alias_method :shared, :shared?
+
+ ##
+ # the organisation who owns the project
+ #
+ # @return [Dmptemplate,Organisation,String] the template, it's owner, or it's owner's abreviation
+ def template_owner
+ self.dmptemplate.try(:organisation).try(:abbreviation)
+ end
+=end
+
+ # Returns the number of answered questions from the entire plan
+ def num_answered_questions
+ n = 0
+ self.sections.each do |s|
+ n+= s.num_answered_questions(self.id)
+ end
+ return n
+ end
+
+ # Returns a section given its id or nil if does not exist for the current plan
+ def get_section(section_id)
+ self.sections.find { |s| s.id == section_id }
+ end
+
+ # Returns the number of questions for a plan. Note, this method becomes useful
+ # for when sections and their questions are eager loaded so that avoids SQL queries.
+ def num_questions
+ n = 0
+ self.sections.each do |s|
+ n+= s.questions.size()
+ end
+ return n
+ end
+ # the following two methods are for eager loading. One gets used for the plan/show
+ # page and the oter for the plan/edit. The difference is just that one pulls in more than
+ # the other.
+ # TODO: revisit this and work out for sure that maintaining the difference is worthwhile.
+ # it may not be. Also make sure nether is doing more thanit needs to.
+ #
+ def self.eager_load(id)
+ Plan.includes(
+ [{template: [
+ {phases: {sections: {questions: :answers}}},
+ {customizations: :org}
+ ]},
+ {plans_guidance_groups: {guidance_group: :guidances}}
+ ]).find(id)
+ end
+
+ def self.eager_load2(id)
+ Plan.includes(
+ [{template: [
+ {phases: {sections: {questions: [{answers: :notes}, :annotations, :question_format, :themes]}}},
+ {customizations: :org},
+ :org
+ ]},
+ {plans_guidance_groups: {guidance_group: {guidances: :themes}}},
+ {questions: :themes}
+ ]).find(id)
+ end
+
+
+
+ private
+
+
+ ##
+ # adds a user to the project
+ # if no flags are specified, the user is given read privleges
+ #
+ # @param user_id [Integer] the user to be given privleges
+ # @param is_editor [Boolean] whether or not the user can edit the project
+ # @param is_administrator [Boolean] whether or not the user can administrate the project
+ # @param is_creator [Boolean] wheter or not the user created the project
+ # @return [Array]
+ #
+ # TODO: change this to specifying uniqueness of user/plan association and handle
+ # that way
+ #
+ def add_user(user_id, is_editor = false, is_administrator = false, is_creator = false)
+ Role.where(plan_id: self.id, user_id: user_id).each do |r|
+ r.destroy
+ end
+
+ role = Role.new
+ role.user_id = user_id
+ role.plan_id = id
+
+ # if you get assigned a role you can comment
+ role.commenter= true
+
+ # the rest of the roles are inclusing so creator => administrator => editor
+ if is_creator
+ role.creator = true
+ role.administrator = true
+ role.editor = true
+ end
+
+ if is_administrator
+ role.administrator = true
+ role.editor = true
+ end
+
+ if is_editor
+ role.editor = true
+ end
+
+ role.save
+
+ # This is necessary because we're creating the associated record but not assigning it
+ # to roles. Auto-saving like this may be confusing when coding upstream in a controller,
+ # view or api. Should probably change this to:
+ # self.roles << role
+ # and then let the save be called manually via:
+ # plan.save!
+ #self.reload
+ end
+
+ ##
+ # creates a plan for each phase in the dmptemplate associated with this project
+ # unless the phase is unpublished, it creates a new plan, and a new version of the plan and adds them to the project's plans
+ #
+ # @return [Array]
+ def create_plans
+ dmptemplate.phases.each do |phase|
+ latest_published_version = phase.latest_published_version
+ unless latest_published_version.nil?
+ new_plan = Plan.new
+ new_plan.version = latest_published_version
+ plans << new_plan
+ end
+ end
+ end
+
+
##
# Based on the height of the text gathered so far and the available vertical
@@ -522,4 +1128,14 @@
(num_lines * font_height) + vertical_margin + leading
end
+ # Initialize the title and dirty flags for new templates
+ # --------------------------------------------------------
+ def set_creation_defaults
+ # Only run this before_validation because rails fires this before save/create
+ if self.id.nil?
+ self.title = "My plan (#{self.template.title})" if self.title.nil? && !self.template.nil?
+ self.visibility = 3
+ end
+ end
+
end
diff --git a/app/models/plan_section.rb b/app/models/plan_section.rb
deleted file mode 100644
index 6a92a74..0000000
--- a/app/models/plan_section.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class PlanSection < ActiveRecord::Base
- attr_accessible :plan_id, :release_time, :section_id, :user_id, :as => [:default, :admin]
-
- #associations between tables
- belongs_to :section
- belongs_to :plan
- belongs_to :user
-
-end
diff --git a/app/models/project.rb b/app/models/project.rb
deleted file mode 100644
index f205429..0000000
--- a/app/models/project.rb
+++ /dev/null
@@ -1,359 +0,0 @@
-class Project < ActiveRecord::Base
- include GlobalHelpers
-
- extend FriendlyId
-
- attr_accessible :dmptemplate_id, :title, :organisation_id, :unit_id, :guidance_group_ids,
- :project_group_ids, :funder_id, :institution_id, :grant_number, :identifier,
- :description, :principal_investigator, :principal_investigator_identifier,
- :data_contact, :funder_name, :as => [:default, :admin]
-
- #associations between tables
- belongs_to :dmptemplate
- belongs_to :organisation
- has_many :plans
- has_many :project_groups, :dependent => :destroy
- has_and_belongs_to_many :guidance_groups, join_table: "project_guidance"
-
- friendly_id :title, use: [:slugged, :history, :finders]
-
- ##
- # returns the title of the project
- #
- # @return [String] the project's title
- def to_s
- "#{title}"
- end
-
- after_create :create_plans
-
- ##
- # sets a new funder for the project
- # defaults to the first dmptemplate if the current template is nill and the funder has more than one dmptemplate
- #
- # @param new_funder_id [Integer] the id for a new funder
- # @return [Organisation] the new funder
- def funder_id=(new_funder_id)
- if new_funder_id != "" then
- new_funder = Organisation.find(new_funder_id);
- if new_funder.dmptemplates.count >= 1 && self.dmptemplate.nil? then
- self.dmptemplate = new_funder.dmptemplates.first
- end
- end
- end
-
- ##
- # returns the funder id for the project
- #
- # @return [Integer, nil] the id for the funder
- def funder_id
- if self.dmptemplate.nil? then
- return nil
- end
- template_org = self.dmptemplate.organisation
- if template_org.organisation_type.name == constant("organisation_types.funder").downcase
- return template_org.id
- else
- return nil
- end
- end
-
- ##
- # returns the funder organisation for the project or nil if none is specified
- #
- # @return [Organisation, nil] the funder for project, or nil if none exists
- def funder
- if self.dmptemplate.nil? then
- return nil
- end
- template_org = self.dmptemplate.organisation
- if template_org.organisation_type.name == constant("organisation_types.funder").downcase
- return template_org
- else
- return nil
- end
- end
-
- ##
- # returns the name of the funder for the project
- #
- # @return [String] the name fo the funder for the project
- def funder_name
- if self.funder.nil?
- return read_attribute(:funder_name)
- else
- return self.funder.name
- end
- end
-
- ##
- # defines a new funder_name for the project.
- #
- # @param new_funder_name [String] the string name of the new funder
- # @return [Integer, nil] the org_id of the new funder
- def funder_name=(new_funder_name)
- write_attribute(:funder_name, new_funder_name)
- org_table = Organisation.arel_table
- existing_org = Organisation.where(org_table[:name].matches(new_funder_name))
- if existing_org.nil?
- existing_org = Organisation.where(org_table[:abbreviation].matches(new_funder_name))
- end
- unless existing_org.empty?
- self.funder_id=existing_org.id
- end
- end
-
- ##
- # sets a new institution_id if there is no current organisation
- #
- # @param new_institution_id [Integer] the id for the new institution
- # @return [Integer, Bool] false if an organisation exists, or the id of the set org if a new organisation is set
- def institution_id=(new_institution_id)
- if organisation.nil? then
- self.organisation_id = new_institution_id
- end
- end
-
- ##
- # returns the organisation which is root over the owning organisation
- #
- # @return [Integer, nil] the organisation_id or nil
- def institution_id
- if organisation.nil?
- return nil
- else
- return organisation.root.id
- end
- end
-
- ##
- # defines a new organisation_id for the project
- # but is confusingly labled unit_id
- #
- # @param new_unit_id [Integer]
- # @return [Integer, Boolean] the new organisation ID or false if no unit_id was passed
- def unit_id=(new_unit_id)
- unless new_unit_id.nil? ||new_unit_id == ""
- self.organisation_id = new_unit_id
- end
- end
-
- ##
- # returns the organisation_id or nil
- # again seems redundant
- #
- # @return [nil, Integer] nil if no organisation, or the id if there is an organisation specified
- def unit_id
- if organisation.nil? || organisation.parent_id.nil?
- return nil
- else
- return organisation_id
- end
- end
-
- ##
- # assigns the passed user_id to the creater_role for the project
- # gives the user rights to read, edit, administrate, and defines them as creator
- #
- # @param user_id [Integer] the user to be given priveleges' id
- def assign_creator(user_id)
- add_user(user_id, true, true, true)
- end
-
- ##
- # assigns the passed user_id as an editor for the project
- # gives the user rights to read and edit
- #
- # @param user_id [Integer] the user to be given priveleges' id
- def assign_editor(user_id)
- add_user(user_id, true)
- end
-
- ##
- # assigns the passed user_id as a reader for the project
- # gives the user rights to read
- #
- # @param user_id [Integer] the user to be given priveleges' id
- def assign_reader(user_id)
- add_user(user_id)
- end
-
- ##
- # assigns the passed user_id as an administrator for the project
- # gives the user rights to read, adit, and administrate the project
- #
- # @param user_id [Integer] the user to be given priveleges' id
- def assign_administrator(user_id)
- add_user(user_id, true, true)
- end
-
- ##
- # whether or not the current plan is administrable by the user
- #
- # @param user_id [Integer] the user to check if has privleges
- # @return [Boolean] true if user can administer project, false otherwise
- def administerable_by(user_id)
- user = project_groups.find_by_user_id(user_id)
- if (! user.nil?) && user.project_administrator then
- return true
- else
- return false
- end
- end
-
- ##
- # whether or not the current plan is editable by the user
- #
- # @param user_id [Integer] the user to check if has privleges
- # @return [Boolean] true if user can edit project, false otherwise
- def editable_by(user_id)
- user = project_groups.find_by_user_id(user_id)
- if (! user.nil?) && user.project_editor then
- return true
- else
- return false
- end
- end
-
- ##
- # whether or not the current plan is readable by the user
- # should be renamed to readable_by?
- #
- # @param user_id [Integer] the user to check if has privleges
- # @return [Boolean] true if user can read project, false otherwise
- def readable_by(user_id)
- user = project_groups.find_by_user_id(user_id)
- if (! user.nil?) then
- return true
- else
- return false
- end
- end
-
- ##
- # returns the projects which the user can atleast read
- #
- # @param user_id [Integer] the user to lookup projects for
- # @return [Array] list of all projects the user can atleast read
- def self.projects_for_user(user_id)
- projects = Array.new
- groups = ProjectGroup.where("user_id = ?", user_id)
- unless groups.nil? then
- groups.each do |group|
- unless group.project.nil? then
- projects << group.project
- end
- end
- end
- return projects
- end
-
- ##
- # whether or not the specified user_id created this project
- # should be renamed to created_by?
- #
- # @param user_id [Integer] the user to check the priveleges of
- # @return [Boolean] true if the user created the project
- def created_by(user_id)
- user = project_groups.find_by_user_id(user_id)
- if (! user.nil?) && user.project_creator then
- return true
- else
- return false
- end
- end
-
- ##
- # the datetime for the latest update of this project, or any plan it owns
- #
- # @return [DateTime] the time of latest update
- def latest_update
- latest_update = updated_at
- plans.each do |plan|
- if plan.latest_update > latest_update then
- latest_update = plan.latest_update
- end
- end
- return latest_update
- end
-
- # Getters to match 'My plans' columns
-
- ##
- # the title of the project
- #
- # @return [String] the title of the project
- def name
- self.title
- end
-
- ##
- # the owner of the project
- #
- # @return [User] the creater of the project
- def owner
- self.project_groups.find_by_project_creator(true).try(:user)
- end
-
- ##
- # the time the project was last updated, formatted as a date
- #
- # @return [Date] last update as a date
- def last_edited
- self.latest_update.to_date
- end
-
- ##
- # whether or not the plan is shared with anybody
- #
- # @return [Boolean] true if the project has been shared
- def shared?
- self.project_groups.count > 1
- end
-
- alias_method :shared, :shared?
-
- ##
- # the organisation who owns the project
- #
- # @return [Dmptemplate,Organisation,String] the template, it's owner, or it's owner's abreviation
- def template_owner
- self.dmptemplate.try(:organisation).try(:abbreviation)
- end
-
- private
-
- ##
- # adds a user to the project
- # if no flags are specified, the user is given read privleges
- #
- # @param user_id [Integer] the user to be given privleges
- # @param is_editor [Boolean] whether or not the user can edit the project
- # @param is_administrator [Boolean] whether or not the user can administrate the project
- # @param is_creator [Boolean] wheter or not the user created the project
- # @return [Array]
- def add_user(user_id, is_editor = false, is_administrator = false, is_creator = false)
- group = ProjectGroup.new
- group.user_id = user_id
- group.project_creator = is_creator
- group.project_editor = is_editor
- group.project_administrator = is_administrator
- project_groups << group
- end
-
- ##
- # creates a plan for each phase in the dmptemplate associated with this project
- # unless the phase is unpublished, it creates a new plan, and a new version of the plan and adds them to the project's plans
- #
- # @return [Array]
- def create_plans
- dmptemplate.phases.each do |phase|
- latest_published_version = phase.latest_published_version
- unless latest_published_version.nil?
- new_plan = Plan.new
- new_plan.version = latest_published_version
- plans << new_plan
- end
- end
- end
-end
diff --git a/app/models/project_group.rb b/app/models/project_group.rb
deleted file mode 100644
index 05a4c1e..0000000
--- a/app/models/project_group.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-class ProjectGroup < ActiveRecord::Base
-
- #associations between tables
- belongs_to :project
- belongs_to :user
-
- attr_accessible :project_creator, :project_editor, :project_administrator, :project_id, :user_id, :email, :access_level, :as => [:default, :admin]
-
- ##
- # returns the user's email unless it is nil
- #
- # @return [Boolean, String] false if no email exists, the email otherwise
- def email
- unless user.nil?
- return user.email
- end
- end
-
- ##
- # define a new user for the project group by email
- #
- # @param new_email [String] the email of the new user for the project group
- # @return [User] the new user
- def email=(new_email)
- unless User.find_by(email: email).nil? then
- user = User.find_by(email: email)
- end
- end
-
- ##
- # return the access level for the current project group
- # 3 if the user is an administrator
- # 2 if the user is an editor
- # 1 if the user can only read
- #
- # @return [Integer]
- def access_level
- if project_administrator then
- return 3
- elsif project_editor then
- return 2
- else
- return 1
- end
- end
-
- ##
- # define a new access level for the current project group
- # if >=3, the user is a project administrator
- # if >=2, the user is an editor
- #
- # @param new_access_level [Integer] the access level to give the user
- def access_level=(new_access_level)
- new_access_level = new_access_level.to_i
- if new_access_level >= 3 then
- project_administrator = true
- else
- project_administrator = false
- end
- if new_access_level >= 2 then
- project_editor = true
- else
- project_editor = false
- end
- end
-end
diff --git a/app/models/project_partner.rb b/app/models/project_partner.rb
deleted file mode 100644
index 3c82e18..0000000
--- a/app/models/project_partner.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class ProjectPartner < ActiveRecord::Base
- attr_accessible :leader_org, :organisation_id, :project_id, :as => [:default, :admin]
-end
diff --git a/app/models/question.rb b/app/models/question.rb
index aed95fb..0a3e947 100644
--- a/app/models/question.rb
+++ b/app/models/question.rb
@@ -1,26 +1,43 @@
class Question < ActiveRecord::Base
- #associations between tables
- has_many :answers, :dependent => :destroy
- has_many :options, :dependent => :destroy
- has_many :suggested_answers, :dependent => :destroy
- has_many :guidances
- has_many :comments
-
- has_and_belongs_to_many :themes, join_table: "questions_themes"
-
+ ##
+ # Sort order: Number ASC
+ default_scope { order(number: :asc) }
+ ##
+ # Associations
+ has_many :answers, :dependent => :destroy
+ has_many :question_options, :dependent => :destroy, :inverse_of => :question # inverse_of needed for nester forms
+ has_many :annotations, :dependent => :destroy
+ has_and_belongs_to_many :themes, join_table: "questions_themes"
belongs_to :section
belongs_to :question_format
+ ##
+ # Nested Attributes
+ # TODO: evaluate if we need this
accepts_nested_attributes_for :answers, :reject_if => lambda {|a| a[:text].blank? }, :allow_destroy => true
-# accepts_nested_attributes_for :section
-# accepts_nested_attributes_for :question_format
- accepts_nested_attributes_for :options, :reject_if => lambda {|a| a[:text].blank? }, :allow_destroy => true
- accepts_nested_attributes_for :suggested_answers, :allow_destroy => true
+ accepts_nested_attributes_for :question_options, :reject_if => lambda {|a| a[:text].blank? }, :allow_destroy => true
+ accepts_nested_attributes_for :annotations, :allow_destroy => true
accepts_nested_attributes_for :themes
- attr_accessible :default_value, :dependency_id, :dependency_text, :guidance,:number, :parent_id, :suggested_answer, :text, :section_id,:question_format_id,:options_attributes, :suggested_answers_attributes, :option_comment_display, :theme_ids, :as => [:default, :admin]
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :default_value, :dependency_id, :dependency_text, :guidance,:number,
+ :annotation, :text, :section_id, :question_format_id,
+ :question_options_attributes, :annotations_attributes,
+ :option_comment_display, :theme_ids, :section, :question_format,
+ :question_options, :annotations, :answers, :themes,
+ :modifiable, :option_comment_display, :as => [:default, :admin]
+
+ validates :text, :section, :number, presence: {message: _("can't be blank")}
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
+ #
+ # What do they do? do they do it efficiently, and do we need them?
+
+
##
# returns the text from the question
@@ -30,91 +47,83 @@
"#{text}"
end
- def select_text
- cleantext = text.gsub(/<[^<]+>/, '')
- if cleantext.length > 120
- cleantext = cleantext.slice(0,120)
+
+ def option_based?
+ format = self.question_format
+ return format.option_based
+ end
+
+ def plan_answers(plan_id)
+ return self.answers.to_a.select{|ans| ans.plan_id == plan_id}
+ end
+
+ ##
+ # deep copy the given question and all it's associations
+ #
+ # @params [Question] question to be deep copied
+ # @return [Question] the saved, copied question
+ def self.deep_copy(question)
+ question_copy = question.dup
+ question_copy.save!
+ question.question_options.each do |question_option|
+ question_option_copy = QuestionOption.deep_copy(question_option)
+ question_option_copy.question_id = question_copy.id
+ question_option_copy.save!
end
- cleantext
+ question.annotations.each do |annotation|
+ annotation_copy = Annotation.deep_copy(annotation)
+ annotation_copy.question_id = question_copy.id
+ annotation_copy.save!
+ end
+ question.themes.each do |theme|
+ question_copy.themes << theme
+ end
+ return question_copy
end
- amoeba do
- include_association :options
- include_association :suggested_answers
- clone [:themes]
- end
-
- #def question_type?
- # type_label = {}
- # if self.is_text_field?
- # type_label = 'Text field'
- # elsif self.multiple_choice?
- # type_label = 'Multiple choice'
- # else
- # type_label = 'Text area'
- # end
- # return type_label
- #end
-
##
- # for each question theme, appends them separated by comas
- # shouldnt have a ? after the method name
+ # guidance for org
#
- # @return [Hash{String=> String}]
- def question_themes?
- themes_label = {}
- i = 1
- themes_quest = self.themes
-
- themes_quest.each do |tt|
- themes_label = tt.title
-
- if themes_quest.count > i then
- themes_label += ','
- i +=1
- end
- end
-
- return themes_label
- end
-
- ##
- # guidance for question in the org admin
- #
- # @param question [Question] the question to find guidance for
- # @param org_admin [Organisation] the organisation to find guidance for
+ # @param org [Org] the org to find guidance for
# @return [Hash{String => String}]
- def guidance_for_question(question, org_admin)
- # pulls together guidance from various sources for question
- guidances = {}
- theme_ids = question.theme_ids
-
- 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} " + I18n.t('admin.guidance_lowercase_on') + " #{gg.title}"] = g
- end
+ def guidance_for_org(org)
+ # pulls together guidance from various sources for question
+ guidances = {}
+ theme_ids = themes.collect{|t| t.id}
+ if theme_ids.present?
+ GuidanceGroup.includes(guidances: :themes).where(org_id: org.id).each do |group|
+ group.guidances.each do |g|
+ g.themes.each do |theme|
+ if theme_ids.include? theme.id
+ guidances["#{group.name} " + _('guidance on') + " #{theme.title}"] = g
end
+ end
end
- # Guidance link to directly to a question
- question.guidances.each do |g_by_q|
- g_by_q.guidance_groups.each do |group|
- if group.organisation == org_admin
- guidances["#{group.name} " + I18n.t('admin.guidance_lowercase')] = g_by_q
- end
- end
- end
+ end
+ end
+
return guidances
end
##
- # get suggested answer belonging to the currents user for this question
+ # get example answer belonging to the currents user for this question
#
# @param org_id [Integer] the id for the organisation
- # @return [String] the suggested_answer for this question for the specified organisation
- def get_suggested_answer(org_id)
- suggested_answer = suggested_answers.find_by_organisation_id(org_id)
- return suggested_answer
+ # @return [String] the example answer for this question for the specified org
+ def get_example_answer(org_id)
+ example_answer = self.annotations.where(org_id: org_id).where(type: Annotation.types[:example_answer]).order(:created_at)
+ return example_answer.first
end
+ ##
+ # get guidance belonging to the current user's org for this question(need org
+ # to distinguish customizations)
+ #
+ # @param org_id [Integer] the id for the organisation
+ # @return [String] the annotation guidance for this question for the specified org
+ def get_guidance_annotation(org_id)
+ guidance = self.annotations.where(org_id: org_id).where(type: Annotation.types[:guidance])
+ return guidance.first
+ end
+
end
diff --git a/app/models/question_format.rb b/app/models/question_format.rb
index b8ede7c..b7d6afc 100644
--- a/app/models/question_format.rb
+++ b/app/models/question_format.rb
@@ -1,8 +1,31 @@
class QuestionFormat < ActiveRecord::Base
- attr_accessible :title, :description, :as => [:default, :admin]
- #associations between tables
+ ##
+ # Associations
has_many :questions
+
+ enum formattype: [ :textarea, :textfield, :radiobuttons, :checkbox, :dropdown, :multiselectbox, :date ]
+ attr_accessible :formattype
+
+ validates :title, presence: {message: _("can't be blank")}, uniqueness: {message: _("must be unique")}
+
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :title, :description, :option_based, :questions, :as => [:default, :admin]
+
+ # Retrieves the id for a given formattype passed
+ scope :id_for, -> (formattype) { where(formattype: formattype).pluck(:id).first }
+
+ ##
+ # Define Bit Field Values so we can test a format without doing string comps
+ # Column type
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
+ #
+ # What do they do? do they do it efficiently, and do we need them?
+
+
##
# gives the title of the question_format
#
@@ -11,4 +34,4 @@
"#{title}"
end
-end
\ No newline at end of file
+end
diff --git a/app/models/question_option.rb b/app/models/question_option.rb
new file mode 100644
index 0000000..b0fec82
--- /dev/null
+++ b/app/models/question_option.rb
@@ -0,0 +1,26 @@
+class QuestionOption < ActiveRecord::Base
+ ##
+ # Associations
+ belongs_to :question
+ has_and_belongs_to_many :answers, join_table: :answers_question_options
+
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :text, :question_id, :is_default, :number, :question,
+ :as => [:default, :admin]
+
+ validates :text, :question, :number, presence: {message: _("can't be blank")}
+
+ scope :by_number, -> { order(:number) }
+ ##
+ # deep copy the given question_option and all it's associations
+ #
+ # @params [QuestionOption] question_option to be deep copied
+ # @return [QuestionOption] the saved, copied question_option
+ def self.deep_copy(question_option)
+ question_option_copy = question_option.dup
+ question_option_copy.save!
+ return question_option_copy
+ end
+end
diff --git a/app/models/region.rb b/app/models/region.rb
index 8147fed..a7e366a 100644
--- a/app/models/region.rb
+++ b/app/models/region.rb
@@ -1,3 +1,8 @@
class Region < ActiveRecord::Base
-
+ has_many :sub_regions, class_name: 'Region', foreign_key: 'super_region_id'
+
+ belongs_to :super_region, class_name: 'Region'
+
+ validates :name, presence: {message: _("can't be blank")}, uniqueness: {message: _("must be unique")}
+ validates :abbreviation, uniqueness: {message: _("must be unique")}, allow_nil: true
end
\ No newline at end of file
diff --git a/app/models/region_group.rb b/app/models/region_group.rb
deleted file mode 100644
index 8f83a83..0000000
--- a/app/models/region_group.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class RegionGroup < ActiveRecord::Base
-
-end
\ No newline at end of file
diff --git a/app/models/role.rb b/app/models/role.rb
index dbe0a80..a51177d 100644
--- a/app/models/role.rb
+++ b/app/models/role.rb
@@ -1,8 +1,59 @@
class Role < ActiveRecord::Base
- has_and_belongs_to_many :users, :join_table => :users_roles
+ include FlagShihTzu
+
+ ##
+ # Associationsrequire "role"
- belongs_to :resource, :polymorphic => true
-
- attr_accessible :name, :role_in_plans, :resource_id, :resource_type, :as => [:default, :admin]
-
+ belongs_to :user
+ belongs_to :plan
+
+ ##
+ # Define Bit Field Values
+ # Column access
+ has_flags 1 => :creator, # 1
+ 2 => :administrator, # 2
+ 3 => :editor, # 4
+ 4 => :commenter, # 8
+ column: 'access'
+
+ validates :user, :plan, :access, presence: {message: _("can't be blank")}
+ validates :access, numericality: {greater_than: 0, message: _("can't be less than zero")}
+
+ ##
+ # return the access level for the current project group
+ # 3 if the user is an administrator
+ # 2 if the user is an editor
+ # 1 if the user can only read
+ # used to facilliatte formtastic
+ #
+ # @return [Integer]
+ def access_level
+ if self.administrator?
+ return 3
+ elsif self.editor?
+ return 2
+ elsif self.commenter?
+ return 1
+ end
+ end
+
end
+
+# -----------------------------------------------------
+# Bitwise key
+# -----------------------------------------------------
+# 01 - creator
+# 02 - administrator
+# 03 - creator + administrator
+# 04 - editor
+# 05 - creator + editor
+# 06 - administraor + editor
+# 07 - creator + editor + administrator
+# 08 - commenter
+# 09 - creator + commenter
+# 10 - administrator + commenter
+# 11 - creator + administrator + commenter
+# 12 - editor + commenter
+# 13 - creator + editor + commenter
+# 14 - administrator + editor + commenter
+# 15 - creator + administrator + editor + commenter
\ No newline at end of file
diff --git a/app/models/section.rb b/app/models/section.rb
index fd1dcb7..4d4562b 100644
--- a/app/models/section.rb
+++ b/app/models/section.rb
@@ -1,16 +1,19 @@
class Section < ActiveRecord::Base
-
- #associations between tables
- belongs_to :version
+ ##
+ # Associations
+ belongs_to :phase
belongs_to :organisation
has_many :questions, :dependent => :destroy
- has_many :plan_sections, :dependent => :destroy
#Link the data
accepts_nested_attributes_for :questions, :reject_if => lambda {|a| a[:text].blank? }, :allow_destroy => true
# accepts_nested_attributes_for :version
- attr_accessible :organisation_id, :description, :number, :title, :version_id , :published, :questions_attributes, :as => [:default, :admin]
+ attr_accessible :phase_id, :description, :number, :title, :published,
+ :questions_attributes, :organisation, :phase, :modifiable,
+ :as => [:default, :admin]
+
+ validates :phase, :title, :number, presence: {message: _("can't be blank")}
##
# return the title of the section
@@ -20,8 +23,28 @@
"#{title}"
end
- amoeba do
- include_association :questions
+ # Returns the number of answered questions for a given plan id
+ def num_answered_questions(plan_id)
+ n = 0
+ self.questions.each do |question|
+ n += question.plan_answers(plan_id).select{|answer| answer.is_valid?}.count
+ end
+ return n
end
+ ##
+ # deep copy of the given section and all it's associations
+ #
+ # @params [Section] section to be deep copied
+ # @return [Section] the saved, copied section
+ def self.deep_copy(section)
+ section_copy = section.dup
+ section_copy.save!
+ section.questions.each do |question|
+ question_copy = Question.deep_copy(question)
+ question_copy.section_id = section_copy.id
+ question_copy.save!
+ end
+ return section_copy
+ end
end
diff --git a/app/models/settings/dmptemplate.rb b/app/models/settings/dmptemplate.rb
deleted file mode 100644
index a5ce2de..0000000
--- a/app/models/settings/dmptemplate.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-module Settings
- class Dmptemplate < RailsSettings::SettingObject
-
- #attr_accessible :var, :target, :target_id, :target_type
-
- VALID_FONT_FACES = [
- 'Arial, Helvetica, Sans-Serif',
- '"Times New Roman", Times, Serif'
- ]
-
- VALID_FONT_SIZE_RANGE = (8..14)
- VALID_MARGIN_RANGE = (5..25)
-
- VALID_ADMIN_FIELDS = ['project_name', 'project_identifier', 'grant_title', 'principal_investigator',
- 'project_data_contact', 'project_description', 'funder', 'institution']
-
- DEFAULT_SETTINGS = {
- formatting: {
- margin: { # in millimeters
- top: 20,
- bottom: 20,
- left: 20,
- right: 20
- },
- font_face: VALID_FONT_FACES.first,
- font_size: 12 # pt
- },
- max_pages: 3,
- fields: {
- admin: VALID_ADMIN_FIELDS,
- questions: :all
- },
- title: ""
- }
-
- validate do
- formatting = value['formatting']
- max_pages = value['max_pages']
- fields = value['fields']
-
- if formatting.present?
- errs = []
- default_formatting = DEFAULT_SETTINGS[:formatting]
-
- unless (default_formatting.keys - formatting.keys).empty?
- errs << :missing_key
- else
- unless formatting[:margin].is_a?(Hash)
- errs << :invalid_margin
- else
- errs << :negative_margin if formatting[:margin].any? {|k,v| v.to_i < 0 }
- errs << :unknown_margin unless (formatting[:margin].keys - default_formatting[:margin].keys).empty?
- errs << :invalid_margin unless formatting[:margin].all? {|k,v| VALID_MARGIN_RANGE.member?(v) }
- end
-
- errs << :invalid_font_size unless VALID_FONT_SIZE_RANGE.member?(formatting[:font_size])
- errs << :invalid_font_face unless VALID_FONT_FACES.member?(formatting[:font_face])
- errs << :unknown_key unless (formatting.keys - default_formatting.keys).empty?
- end
-
- errs.map do |key|
- errors.add(:formatting, I18n.t("helpers.settings.plans.errors.#{key}"))
- end
-
- end
-
- if max_pages.present? && (!max_pages.is_a?(Integer) || max_pages <= 0)
- errors.add(:max_pages, I18n.t('helpers.settings.plans.errors.invalid_max_pages'))
- end
- end
-
- before_validation do
- self.formatting[:font_size] = self.formatting[:font_size].to_i if self.formatting[:font_size].present?
- unless self.formatting[:margin].nil? or (not self.formatting[:margin].is_a?(Hash))
- self.formatting[:margin].each do |key, val|
- self.formatting[:margin][key] = val.to_i
- end
- end
-
- self.fields.each do |key, val|
- if val.is_a?(Hash)
- val = key == :questions ? val.keys.map {|k| k.to_s.to_i } : val.keys
- end
-
- self.fields[key] = val
- end
-
- # Save empty arrays if we don't have any fields for them
- self.fields[:admin] ||= []
- self.fields[:questions] ||= []
- end
- end
-end
diff --git a/app/models/settings/plan_list.rb b/app/models/settings/plan_list.rb
deleted file mode 100644
index 17e93a9..0000000
--- a/app/models/settings/plan_list.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module Settings
- class PlanList < RailsSettings::SettingObject
-
- #attr_accessible :var, :target, :target_type, :target_id
-
- # TODO: can these be taken from somewhere else rather than hard-coded here?
- DEFAULT_COLUMNS = ['name', 'owner', 'shared', 'last_edited']
- ALL_COLUMNS = DEFAULT_COLUMNS + ['template_owner', 'identifier', 'grant_number',
- 'principal_investigator', 'data_contact', 'description']
-
- validate do
- cols = value["columns"]
-
- if cols.present? # columns can be empty, in which case they revert to defaults
- errors.add(:columns, I18n.t("helpers.settings.projects.errors.no_name")) unless cols.member?("name")
- errors.add(:columns, I18n.t("helpers.settings.projects.errors.duplicate")) unless cols.keys.uniq == cols.keys
- errors.add(:columns, I18n.t("helpers.settings.projects.errors.unknown")) unless (cols.keys.uniq & ALL_COLUMNS) == cols.keys.uniq
- end
- end
- end
-end
diff --git a/app/models/settings/template.rb b/app/models/settings/template.rb
new file mode 100644
index 0000000..59ac3de
--- /dev/null
+++ b/app/models/settings/template.rb
@@ -0,0 +1,107 @@
+module Settings
+ class Template < RailsSettings::SettingObject
+
+ #attr_accessible :var, :target, :target_id, :target_type
+
+ VALID_FONT_FACES = [
+ 'Arial, Helvetica, Sans-Serif',
+ '"Times New Roman", Times, Serif'
+ ]
+
+ VALID_FONT_SIZE_RANGE = (8..14)
+ VALID_MARGIN_RANGE = (5..25)
+
+ VALID_ADMIN_FIELDS = ['project_name', 'project_identifier', 'grant_title', 'principal_investigator',
+ 'project_data_contact', 'project_description', 'funder', 'institution', 'orcid']
+
+ DEFAULT_SETTINGS = {
+ formatting: {
+ margin: { # in millimeters
+ top: 20,
+ bottom: 20,
+ left: 20,
+ right: 20
+ },
+ font_face: VALID_FONT_FACES.first,
+ font_size: 12 # pt
+ },
+ max_pages: 3,
+ fields: {
+ admin: VALID_ADMIN_FIELDS,
+ questions: :all
+ },
+ title: ""
+ }
+
+ validate do
+ formatting = value['formatting']
+ max_pages = value['max_pages']
+ fields = value['fields']
+
+ if formatting.present?
+ errs = []
+ default_formatting = DEFAULT_SETTINGS[:formatting]
+
+ unless (default_formatting.keys - formatting.keys).empty?
+ errs << :missing_key
+ else
+ unless formatting[:margin].is_a?(Hash)
+ errs << :invalid_margin
+ else
+ errs << :negative_margin if formatting[:margin].any? {|k,v| v.to_i < 0 }
+ errs << :unknown_margin unless (formatting[:margin].keys - default_formatting[:margin].keys).empty?
+ errs << :invalid_margin unless formatting[:margin].all? {|k,v| VALID_MARGIN_RANGE.member?(v) }
+ end
+
+ errs << :invalid_font_size unless VALID_FONT_SIZE_RANGE.member?(formatting[:font_size])
+ errs << :invalid_font_face unless VALID_FONT_FACES.member?(formatting[:font_face])
+ errs << :unknown_key unless (formatting.keys - default_formatting.keys).empty?
+ end
+
+ errs.map do |key|
+ if key == :missing_key
+ errors.add(:formatting, _('A required setting has not been provided'))
+ elsif key == :invalid_margin
+ errors.add(:formatting, _('Margin value is invalid'))
+ elsif key == :negative_margin
+ errors.add(:formatting, _('Margin cannot be negative'))
+ elsif key == :unknown_margin
+ errors.add(:formatting, _("Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"))
+ elsif key == :invalid_font_size
+ errors.add(:formatting, _('Invalid font size'))
+ elsif key == :invalid_font_face
+ errors.add(:formatting, _('Invalid font face'))
+ elsif key == :unknown_key
+ errors.add(:formatting, _('Unknown formatting setting'))
+ end
+ end
+
+ end
+
+ if max_pages.present? && (!max_pages.is_a?(Integer) || max_pages <= 0)
+ errors.add(:max_pages, _('Invalid maximum pages'))
+ end
+ end
+
+ before_validation do
+ self.formatting[:font_size] = self.formatting[:font_size].to_i if self.formatting[:font_size].present?
+ unless self.formatting[:margin].nil? or (not self.formatting[:margin].is_a?(Hash))
+ self.formatting[:margin].each do |key, val|
+ self.formatting[:margin][key] = val.to_i
+ end
+ end
+
+ self.fields.each do |key, val|
+ if val.is_a?(Hash)
+ val = key == :questions ? val.keys.map {|k| k.to_s.to_i } : val.keys
+ end
+
+ self.fields[key] = val
+ end
+
+ # Save empty arrays if we don't have any fields for them
+ self.fields[:admin] ||= []
+ self.fields[:questions] ||= []
+ end
+ end
+end
diff --git a/app/models/suggested_answer.rb b/app/models/suggested_answer.rb
deleted file mode 100644
index 3bbefa8..0000000
--- a/app/models/suggested_answer.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class SuggestedAnswer < ActiveRecord::Base
-
- belongs_to :organisation
- belongs_to :question
-
-# accepts_nested_attributes_for :question
-
- attr_accessible :organisation_id, :question_id, :text, :is_example, :as => [:default, :admin]
-
- ##
- # returns the text from the suggested_answer
- #
- # @return [String] the text from the suggested_answer
- def to_s
- "#{text}"
- end
-
-end
\ No newline at end of file
diff --git a/app/models/template.rb b/app/models/template.rb
new file mode 100644
index 0000000..b72d216
--- /dev/null
+++ b/app/models/template.rb
@@ -0,0 +1,159 @@
+class Template < ActiveRecord::Base
+ include GlobalHelpers
+
+ before_validation :set_creation_defaults
+ scope :valid, -> {where(migrated: false)}
+ ##
+ # Associations
+ belongs_to :org
+ has_many :plans
+ has_many :phases, dependent: :destroy
+ has_many :sections, through: :phases
+ has_many :questions, through: :sections
+
+ has_many :customizations, class_name: 'Template', foreign_key: 'dmptemplate_id'
+ belongs_to :dmptemplate, class_name: 'Template'
+
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ attr_accessible :id, :org_id, :description, :published, :title, :locale, :customization_of,
+ :is_default, :guidance_group_ids, :org, :plans, :phases, :dmptemplate_id,
+ :migrated, :version, :visibility, :published, :as => [:default, :admin]
+
+ # defines the export setting for a template object
+ has_settings :export, class_name: 'Settings::Template' do |s|
+ s.key :export, defaults: Settings::Template::DEFAULT_SETTINGS
+ end
+
+ validates :org, :title, :version, presence: {message: _("can't be blank")}
+
+ # Retrieves the list of all dmptemplate_ids (template versioning families) for the specified Org
+ def self.dmptemplate_ids
+ Template.all.valid.distinct.pluck(:dmptemplate_id)
+ end
+
+ # Retrieves the most recent version of the template for the specified Org and dmptemplate_id
+ def self.current(dmptemplate_id)
+ Template.where(dmptemplate_id: dmptemplate_id).order(version: :desc).valid.first
+ end
+
+ # Retrieves the current published version of the template for the specified Org and dmptemplate_id
+ def self.live(dmptemplate_id)
+ Template.where(dmptemplate_id: dmptemplate_id, published: true).valid.first
+ end
+
+ ##
+ # Retrieves the most current customization of the template for the
+ # specified org and dmptemplate_id
+ # returns nil if no customizations found
+ #
+ # @params [integer] dmptemplate_id of the original template
+ # @params [integer] org_id for the customizing organisation
+ # @return [nil, Template] the customized template or nil
+ def self.org_customizations(dmptemplate_id, org_id)
+ Template.where(customization_of: dmptemplate_id, org_id: org_id).order(version: :desc).valid.first
+ end
+
+ ##
+ # deep copy the given template and all of it's associations
+ #
+ # @params [Template] template to be deep copied
+ # @return [Template] saved copied template
+ def self.deep_copy(template)
+ template_copy = template.dup
+ template_copy.save!
+ template.phases.each do |phase|
+ phase_copy = Phase.deep_copy(phase)
+ phase_copy.template_id = template_copy.id
+ phase_copy.save!
+ end
+ return template_copy
+ end
+
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
+ #
+ # What do they do? do they do it efficiently, and do we need them?
+
+
+ ##
+ # convert the given template to a hash and return with all it's associations
+ # to use, please pre-fetch org, phases, section, questions, annotations,
+ # question_options, question_formats,
+ # TODO: Themes & guidance?
+ #
+ # @return [hash] hash of template, phases, sections, questions, question_options, annotations
+ def to_hash
+ hash = {}
+ hash[:template] = {}
+ hash[:template][:data] = self
+ hash[:template][:org] = self.org
+ phases = {}
+ hash[:template][:phases] = phases
+ self.phases.each do |phase|
+ phases[phase.number] = {}
+ phases[phase.number][:data] = phase
+ phases[phase.number][:sections] = {}
+ phase.sections.each do |section|
+ phases[phase.number][:sections][section.number] = {}
+ phases[phase.number][:sections][section.number][:data] = section
+ phases[phase.number][:sections][section.number][:questions] = {}
+ section.questions.each do |question|
+ phases[phase.number][:sections][section.number][:questions][question.number] = {}
+ phases[phase.number][:sections][section.number][:questions][question.number][:data] = question
+ phases[phase.number][:sections][section.number][:questions][question.number][:annotations] = {}
+ question.annotations.each do |annotation|
+ phases[phase.number][:sections][section.number][:questions][question.number][:annotations][annotation.id] = {}
+ phases[phase.number][:sections][section.number][:questions][question.number][:annotations][annotation.id][:data] = annotation
+ end
+ phases[phase.number][:sections][section.number][:questions][question.number][:question_options] = {}
+ question.question_options.each do |question_option|
+ phases[phase.number][:sections][section.number][:questions][question.number][:question_options][:data] = question_option
+ phases[phase.number][:sections][section.number][:questions][question.number][:question_format] = question.question_format
+ end
+ end
+ end
+ end
+ return hash
+ end
+
+# TODO: Why are we passing in an org and template here?
+ ##
+ # 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)
+ modifiable = true
+ phases.each do |phase|
+ modifiable = modifiable && phase.modifiable
+ end
+ return !modifiable
+ end
+
+ # --------------------------------------------------------
+ private
+ # Initialize the published and dirty flags for new templates
+ def set_creation_defaults
+ # Only run this before_validation because rails fires this before save/create
+ if self.id.nil?
+ self.published = false
+ self.migrated = false
+ self.dirty = false
+ self.visibility = 1
+ self.is_default = false
+ self.version = 0 if self.version.nil?
+
+ # Generate a unique identifier for the dmptemplate_id if necessary
+ if self.dmptemplate_id.nil?
+ self.dmptemplate_id = loop do
+ random = rand 2147483647
+ break random unless Template.exists?(dmptemplate_id: random)
+ end
+ end
+ end
+ end
+
+end
diff --git a/app/models/theme.rb b/app/models/theme.rb
index 0b31f36..bd787f6 100644
--- a/app/models/theme.rb
+++ b/app/models/theme.rb
@@ -1,17 +1,26 @@
class Theme < ActiveRecord::Base
- #associations between tables
+ ##
+ # Associations
has_and_belongs_to_many :questions, join_table: "questions_themes"
has_and_belongs_to_many :guidances, join_table: "themes_in_guidance"
-
-# accepts_nested_attributes_for :guidances
-# accepts_nested_attributes_for :questions
-
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
attr_accessible :guidance_ids , :as => [:default, :admin]
attr_accessible :question_ids, :as => [:default, :admin]
attr_accessible :description, :title, :locale , :as => [:default, :admin]
+
+ validates :title, presence: {message: _("can't be blank")}
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
+ #
+ # What do they do? do they do it efficiently, and do we need them?
+
+
+
##
# returns the title of the theme
#
diff --git a/app/models/token_permission_type.rb b/app/models/token_permission_type.rb
index 8d368b6..5770e6c 100644
--- a/app/models/token_permission_type.rb
+++ b/app/models/token_permission_type.rb
@@ -1,12 +1,26 @@
class TokenPermissionType < ActiveRecord::Base
+ ##
+ # Associations
+ #has_and_belongs_to_many :org_token_permissions, join_table: "org_token_permissions"
+# has_and_belongs_to_many :organisations, join_table: 'org_token_permissions', unique: true
+ has_and_belongs_to_many :orgs, join_table: 'org_token_permissions', unique: true
+ ##
+ # Possibly needed for active_admin
+ # - relies on proetected_attributes gem as syntax depricated in rails 4.2
attr_accessible :token_type, :text_description, :as => [:default, :admin]
- #associations between tables
- #has_and_belongs_to_many :org_token_permissions, join_table: "org_token_permissions"
- has_and_belongs_to_many :organisations, join_table: 'org_token_permissions'
+ ##
+ # Validators
+ validates :token_type, presence: {message: _("can't be blank")}, uniqueness: {message: _("must be unique")}
- validates :token_type, presence: true, uniqueness: true
+ ##
+ # Constant Token Permission Types
+ GUIDANCES = TokenPermissionType.where(token_type: 'guidances').first.freeze
+ PLANS = TokenPermissionType.where(token_type: 'plans').first.freeze
+ TEMPLATES = TokenPermissionType.where(token_type: 'templates').first.freeze
+ STATISTICS = TokenPermissionType.where(token_type: 'statistics').first.freeze
+
##
# returns the token_type of the token_permission_type
diff --git a/app/models/user.rb b/app/models/user.rb
index f6fbde2..c1350f6 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,61 +1,78 @@
class User < ActiveRecord::Base
include GlobalHelpers
- # Include default devise modules. Others available are:
- # :token_authenticatable, :confirmable,
- # :lockable, :timeoutable and :omniauthable
- devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable,
- :trackable, :validatable, :confirmable, :omniauthable, :omniauth_providers => [:shibboleth]
+ ##
+ # Devise
+ # Include default devise modules. Others available are:
+ # :token_authenticatable, :confirmable,
+ # :lockable, :timeoutable and :omniauthable
+ devise :invitable, :database_authenticatable, :registerable, :recoverable,
+ :rememberable, :trackable, :validatable, :omniauthable,
+ :omniauth_providers => [:shibboleth, :orcid]
- #associations between tables
- belongs_to :user_type
- belongs_to :user_status
- has_many :answers
- has_many :user_org_roles
- has_many :project_groups, :dependent => :destroy
- has_many :user_role_types, through: :user_org_roles
- belongs_to :language
-
- belongs_to :organisation
-
- has_many :projects, through: :project_groups do
- def filter(query)
- return self unless query.present?
-
- t = self.arel_table
- q = "%#{query}%"
-
- conditions = t[:title].matches(q)
-
- columns = %i(
- grant_number identifier description principal_investigator data_contact
- )
- columns = ['grant_number', 'identifier', 'description', 'principal_investigator', 'data_contact']
-
- columns.each {|col| conditions = conditions.or(t[col].matches(q)) }
-
- self.where(conditions)
- end
+ ##
+ # Associations
+ has_and_belongs_to_many :perms, join_table: :users_perms
+ belongs_to :language
+ belongs_to :org
+ has_many :answers
+ has_many :notes
+ has_many :exported_plans
+ has_many :roles, dependent: :destroy
+ has_many :plans, through: :roles do
+ def filter(query)
+ return self unless query.present?
+ t = self.arel_table
+ q = "%#{query}%"
+ conditions = t[:title].matches(q)
+ columns = %i(
+ grant_number identifier description principal_investigator data_contact
+ )
+ columns = ['grant_number', 'identifier', 'description', 'principal_investigator', 'data_contact']
+ columns.each {|col| conditions = conditions.or(t[col].matches(q)) }
+ self.where(conditions)
end
+ end
+
+ has_many :user_identifiers
+ has_many :identifier_schemes, through: :user_identifiers
- has_and_belongs_to_many :roles, :join_table => :users_roles
+ ##
+ # Possibly needed for active_admin
+ # -relies on protected_attributes gem as syntax depricated in rails 4.2
+ #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, :org_id, :skip_invitation, :other_organisation,
+ # :accept_terms, :role_ids, :dmponline3, :api_token,
+ # :organisation, :language, :language_id, :org, :perms,
+ # :confirmed_at, :org_id
- has_many :plan_sections
+ validates :email, email: true, allow_nil: true, uniqueness: {message: _("must be unique")}
- 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, :api_token,
- :organisation, :language, :language_id
+ ##
+ # Scopes
+ default_scope { includes(:org, :perms, :plans) }
- validates :email, email: true, allow_nil: true, uniqueness: true
- # 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.
- has_settings :plan_list, class_name: 'Settings::PlanList' do |s|
- s.key :plan_list, defaults: { columns: Settings::PlanList::DEFAULT_COLUMNS }
+
+ # EVALUATE CLASS AND INSTANCE METHODS BELOW
+ #
+ # What do they do? do they do it efficiently, and do we need them?
+
+ # Determines the locale set for the user or the organisation he/she belongs
+ # @return String or nil
+ def get_locale
+ if !self.language.nil?
+ return self.language.abbreviation
+ elsif !self.org.nil?
+ return self.org.get_locale
+ else
+ return nil
end
+ end
+
##
# gives either the name of the user, or the email if name unspecified
@@ -63,7 +80,7 @@
# @param user_email [Boolean] defaults to true, allows the use of email if there is no firstname or surname
# @return [String] the email or the firstname and surname of the user
def name(use_email = true)
- if ((firstname.nil? && surname.nil?) || (firstname.strip == "" && surname.strip == "")) && use_email then
+ if (firstname.blank? && surname.blank?) || use_email then
return email
else
name = "#{firstname} #{surname}"
@@ -72,19 +89,31 @@
end
##
+ # Returns the user's identifier for the specified scheme name
+ #
+ # @param the identifier scheme name (e.g. ORCID)
+ # @return [UserIdentifier] the user's identifier for that scheme
+ def identifier_for(scheme)
+ user_identifiers.where(identifier_scheme: scheme).first
+ end
+
+# TODO: Check the logic here. Its deleting the permissions if the user does not have permission
+# to change orgs and either the incoming or existing org is nil.
+# We should also NOT be auto-saving here!!!
+ ##
# sets a new organisation id for the user
- # if the user has any roles such as org_admin or admin, those are removed
+ # if the user has any perms such as org_admin or admin, those are removed
# if the user had an api_token, that is removed
#
# @param new_organisation_id [Integer] the id for an organisation
# @return [String] the empty string as a causality of setting api_token
- def organisation_id=(new_organisation_id)
- unless self.can_change_org? || new_organisation_id.nil? || self.organisation.nil?
+ def org_id=(new_org_id)
+ unless self.can_change_org? || new_org_id.nil? || self.org.nil? || (new_org_id.to_s == self.org.id.to_s)
# rip all permissions from the user
- self.roles.delete_all
+ self.perms.delete_all
end
# set the user's new organisation
- super(new_organisation_id)
+ super(new_org_id)
self.save!
# rip api permissions from the user
self.remove_token!
@@ -94,10 +123,10 @@
# sets a new organisation for the user
#
# @param new_organisation [Organisation] the new organisation for the user
- def organisation=(new_organisation)
- organisation_id = new_organisation.id unless new_organisation.nil?
+ def organisation=(new_org)
+ org_id = new_org.id unless new_org.nil?
end
-
+
##
# checks if the user is a super admin
# if the user has any privelege which requires them to see the super admin page
@@ -105,7 +134,7 @@
#
# @return [Boolean] true if the user is an admin
def can_super_admin?
- return self.can_add_orgs? || self.can_grant_api_to_orgs? || can_change_org?
+ return self.can_add_orgs? || self.can_grant_api_to_orgs? || self.can_change_org?
end
##
@@ -115,7 +144,8 @@
#
# @return [Boolean] true if the user is an organisation admin
def can_org_admin?
- return self.can_grant_permissions? || self.can_modify_guidance? || self.can_modify_templates? || self.can_modify_org_details?
+ return self.can_grant_permissions? || self.can_modify_guidance? ||
+ self.can_modify_templates? || self.can_modify_org_details?
end
##
@@ -123,7 +153,7 @@
#
# @return [Boolean] true if the user can add new organisations
def can_add_orgs?
- roles.include? Role.find_by(name: constant("user_role_types.add_organisations"))
+ perms.include? Perm.add_orgs
end
##
@@ -131,7 +161,7 @@
#
# @return [Boolean] true if the user can change their organisation affiliations
def can_change_org?
- roles.include? Role.find_by(name: constant("user_role_types.change_org_affiliation"))
+ perms.include? Perm.change_affiliation
end
##
@@ -139,7 +169,7 @@
#
# @return [Boolean] true if the user can grant their permissions to others
def can_grant_permissions?
- roles.include? Role.find_by(name: constant("user_role_types.grant_permissions"))
+ perms.include? Perm.grant_permissions
end
##
@@ -147,7 +177,7 @@
#
# @return [Boolean] true if the user can modify organisation templates
def can_modify_templates?
- roles.include? Role.find_by(name: constant("user_role_types.modify_templates"))
+ self.perms.include? Perm.modify_templates
end
##
@@ -155,7 +185,7 @@
#
# @return [Boolean] true if the user can modify organistion guidance
def can_modify_guidance?
- roles.include? Role.find_by(name: constant("user_role_types.modify_guidance"))
+ perms.include? Perm.modify_guidance
end
##
@@ -163,7 +193,7 @@
#
# @return [Boolean] true if the user can use the api
def can_use_api?
- roles.include? Role.find_by(name: constant("user_role_types.use_api"))
+ perms.include? Perm.use_api
end
##
@@ -171,15 +201,7 @@
#
# @return [Boolean] true if the user can modify the org's details
def can_modify_org_details?
- roles.include? Role.find_by(name: constant("user_role_types.change_org_details"))
- end
-
- ##
- # checks if the user can grant the api to organisations
- #
- # @return [Boolean] true if the user can grant api permissions to organisations
- def can_grant_api_to_orgs?
- roles.include? Role.find_by(name: constant('user_role_types.grant_api_to_orgs'))
+ perms.include? Perm.change_org_details
end
@@ -188,18 +210,20 @@
#
# @return [Boolean] true if the user can grant api permissions to organisations
def can_grant_api_to_orgs?
- roles.include? Role.find_by(name: constant('user_role_types.grant_api_to_orgs'))
+ perms.include? Perm.grant_api
end
##
# checks what type the user's organisation is
#
# @return [String] the organisation type
+=begin
def org_type
- org_type = organisation.organisation_type.name
+ org_type = org.organisation_type
return org_type
end
-
+=end
+
##
# removes the api_token from the user
# modifies the user model
@@ -221,53 +245,37 @@
end
self.save!
# send an email to the user to notify them of their new api token
- UserMailer.api_token_granted_notification(self)
+ #UserMailer.api_token_granted_notification(self)
end
end
##
- # updates the user permissions to the new system.
- # the old system only had admin and org-admin roles, which loosely map to the
- # new permissions system.
- def self.update_user_permissions
- admin = Role.find_by(name: 'admin')
- org_admin = Role.find_by(name: 'org_admin')
- add_orgs = Role.find_by(name: 'add_organisations')
- change_org_affiliation = Role.find_by(name: 'change_org_affiliation')
- grant_api_to_orgs = Role.find_by(name: 'grant_api_to_orgs')
- grant_permissions = Role.find_by(name: 'grant_permissions')
- modify_templates = Role.find_by(name: 'modify_templates')
- modify_guidance = Role.find_by(name: 'modify_guidance')
- change_org_details = Role.find_by(name: 'change_org_details')
- User.includes(:roles).all.each do |user|
- if user.roles.include? admin
- #add admin roles
- user.roles << add_orgs unless user.roles.include? add_orgs
- user.roles << change_org_affiliation unless user.roles.include? change_org_affiliation
- user.roles << grant_api_to_orgs unless user.roles.include? grant_api_to_orgs
- user.roles << grant_permissions unless user.roles.include? grant_permissions
- user.roles.delete(admin)
- user.save!
- end
- if user.roles.include? org_admin
- #add org-admin roles
- user.roles << grant_permissions unless user.roles.include? grant_permissions
- user.roles << modify_templates unless user.roles.include? modify_templates
- user.roles << modify_guidance unless user.roles.include? modify_guidance
- user.roles << change_org_details unless user.roles.include? change_org_details
- user.roles.delete(org_admin)
- # save the user
- user.save!
- end
+ # Load the user based on the scheme and id provided by the Omniauth call
+ # --------------------------------------------------------------
+ def self.from_omniauth(auth)
+ scheme = IdentifierScheme.find_by(name: auth.provider.downcase)
+
+ if scheme.nil?
+ throw Exception.new('Unknown OAuth provider: ' + auth.provider)
+ else
+ joins(:user_identifiers).where('user_identifiers.identifier': auth.uid,
+ 'user_identifiers.identifier_scheme_id': scheme.id).first
end
end
+ ##
+ # Override devise_invitable email title
+ # --------------------------------------------------------------
+ def deliver_invitation(options = {})
+ super(options.merge(subject: _('A Data Management Plan in %{application_name} has been shared with you') % {application_name: Rails.configuration.branding[:application][:name]}))
+ end
-
+# TODO: Remove this, its never called.
# this generates a reset password link for a given user
# which can then be sent to them with the appropriate host
# prepended.
+=begin
def reset_password_link
raw, enc = Devise.token_generator.generate(self.class, :reset_password_token)
self.reset_password_token = enc
@@ -276,6 +284,6 @@
edit_user_password_path + '?reset_password_token=' + raw
end
-
-
+=end
+
end
diff --git a/app/models/user_identifier.rb b/app/models/user_identifier.rb
new file mode 100644
index 0000000..840e394
--- /dev/null
+++ b/app/models/user_identifier.rb
@@ -0,0 +1,9 @@
+class UserIdentifier < ActiveRecord::Base
+ belongs_to :user
+ belongs_to :identifier_scheme
+
+ # Should only be able to have one identifier per scheme!
+ validates_uniqueness_of :identifier_scheme, scope: :user
+
+ validates :identifier, :user, :identifier_scheme, presence: {message: _("can't be blank")}
+end
\ No newline at end of file
diff --git a/app/models/user_org_role.rb b/app/models/user_org_role.rb
deleted file mode 100644
index 10fca3c..0000000
--- a/app/models/user_org_role.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class UserOrgRole < ActiveRecord::Base
- attr_accessible :organisation_id, :user_id, :user_role_type_id, :as => [:default, :admin]
-
- #associations between tables
- belongs_to :user
- belongs_to :organisation
- belongs_to :user_role_type
-
-end
diff --git a/app/models/user_role_type.rb b/app/models/user_role_type.rb
deleted file mode 100644
index e012aca..0000000
--- a/app/models/user_role_type.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class UserRoleType < ActiveRecord::Base
-
- #associations between tables
- has_many :user_org_roles
-
- attr_accessible :description, :name, :as => [:default, :admin]
-end
diff --git a/app/models/user_status.rb b/app/models/user_status.rb
deleted file mode 100644
index a8c4dcd..0000000
--- a/app/models/user_status.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class UserStatus < ActiveRecord::Base
- attr_accessible :description, :name, :as => [:default, :admin]
-
- #associations between tables
- has_many :users
-end
diff --git a/app/models/user_type.rb b/app/models/user_type.rb
deleted file mode 100644
index 8ceb4d4..0000000
--- a/app/models/user_type.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class UserType < ActiveRecord::Base
- attr_accessible :description, :name, :as => [:default, :admin]
-
- #associations between tables
- has_many :users
-end
diff --git a/app/models/version.rb b/app/models/version.rb
deleted file mode 100644
index db03966..0000000
--- a/app/models/version.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-class Version < ActiveRecord::Base
-
- #associations between tables
- belongs_to :phase
-
- has_many :sections, :dependent => :destroy
- has_many :questions, :through => :sections, :dependent => :destroy
- has_many :plans
-
- #Link the data
-# accepts_nested_attributes_for :phase
- accepts_nested_attributes_for :sections, :allow_destroy => true
-
- attr_accessible :id, :description, :number, :published, :title, :phase_id,
- :sections_attributes, :as => [:default, :admin]
-
- ##
- # returns the title of the version
- #
- # @return [String] the title of the version
- def to_s
- "#{title}"
- end
-
-
- ##
- # returns all sections where the org_id is the same as this version's phase's org_id
- #
- # @return [Array]
- def global_sections
- sections.where("organisation_id = ? ", phase.dmptemplate.organisation_id).load
- end
-
- amoeba do
- include_association :sections
- include_association :questions
- set :published => 'false'
- prepend :title => "Copy of "
- end
-
-end
diff --git a/app/policies/annotation_policy.rb b/app/policies/annotation_policy.rb
new file mode 100644
index 0000000..a426546
--- /dev/null
+++ b/app/policies/annotation_policy.rb
@@ -0,0 +1,29 @@
+class AnnotationPolicy < ApplicationPolicy
+ attr_reader :user, :annotation
+
+ def initialize(user, annotation)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @annotation = annotation
+ end
+
+ ##
+ # Users can modify annotations if:
+ # - They can modify templates
+ # - The template which they are modifying belongs to their orggi
+ ##
+
+ def admin_create?
+ # here we pass through a question instead of an annotation object
+ user.can_modify_templates? && (annotation.section.phase.template.org_id == user.org_id)
+ end
+
+ def admin_update?
+ user.can_modify_templates? && (annotation.question.section.phase.template.org_id == user.org_id) && annotation.org_id == user.org_id
+ end
+
+ def admin_destroy?
+ user.can_modify_templates? && (annotation.question.section.phase.template.org_id == user.org_id)
+ end
+
+end
\ No newline at end of file
diff --git a/app/policies/answer_policy.rb b/app/policies/answer_policy.rb
index 61f6989..1e9502c 100644
--- a/app/policies/answer_policy.rb
+++ b/app/policies/answer_policy.rb
@@ -8,8 +8,10 @@
@answer = answer
end
- def create?
- @answer.plan.editable_by(@user.id)
+ def update?
+ # TODO: Remove the owner check after the Roles have been updated
+ # is the plan editable by the user or the user is the owner of the plan
+ @answer.plan.editable_by?(@user.id) || @user == @answer.plan.owner
end
end
\ No newline at end of file
diff --git a/app/policies/api/v0/guidance_group_policy.rb b/app/policies/api/v0/guidance_group_policy.rb
new file mode 100644
index 0000000..1ea52f4
--- /dev/null
+++ b/app/policies/api/v0/guidance_group_policy.rb
@@ -0,0 +1,29 @@
+module Api
+ module V0
+ class GuidanceGroupPolicy < ApplicationPolicy
+ attr_reader :user, :guidance_group
+
+ def initialize(user, guidance_group)
+ raise Pundit::NotAuthorizedError, _("must be logged in") unless user
+ unless user.org.token_permission_types.include? TokenPermissionType::GUIDANCES
+ raise Pundit::NotAuthorizedError, _("must have access to guidances api")
+ end
+ @user = user
+ @guidance_group = guidance_group
+ end
+
+ ##
+ # is the plan editable by the user
+ def show?
+ GuidanceGroup.can_view?(@user, @guidance_group)
+ end
+
+ ##
+ # always allowed as index chooses which guidances to display
+ def index?
+ true
+ end
+
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/policies/api/v0/guidance_policy.rb b/app/policies/api/v0/guidance_policy.rb
new file mode 100644
index 0000000..fd17c4e
--- /dev/null
+++ b/app/policies/api/v0/guidance_policy.rb
@@ -0,0 +1,29 @@
+module Api
+ module V0
+ class GuidancePolicy < ApplicationPolicy
+ attr_reader :user
+ attr_reader :guidance
+
+ def initialize(user, guidance)
+ raise Pundit::NotAuthorizedError, _("must be logged in") unless user
+ unless user.org.token_permission_types.include? TokenPermissionType::GUIDANCES
+ raise Pundit::NotAuthorizedError, _("must have access to guidances api")
+ end
+ @user = user
+ @guidance = guidance
+ end
+
+ ##
+ # is the plan editable by the user
+ def show?
+ Guidance.can_view(@user, @guidance.id)
+ end
+
+ ##
+ # always allowed as index chooses which guidances to display
+ def index?
+ true
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/policies/api/v0/plans_policy.rb b/app/policies/api/v0/plans_policy.rb
new file mode 100644
index 0000000..6d0ab77
--- /dev/null
+++ b/app/policies/api/v0/plans_policy.rb
@@ -0,0 +1,23 @@
+module Api
+ module V0
+ class PlansPolicy < ApplicationPolicy
+ attr_reader :user
+ attr_reader :template
+
+ def initialize(user, template)
+ raise Pundit::NotAuthorizedError, _("must be logged in") unless user
+ unless user.org.token_permission_types.include? TokenPermissionType::PLANS
+ raise Pundit::NotAuthorizedError, _("must have access to plans api")
+ end
+ @user = user
+ @template = template
+ end
+
+ ##
+ # users can create a plan if their template exists
+ def create?
+ @template.present?
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/policies/api/v0/statistics_policy.rb b/app/policies/api/v0/statistics_policy.rb
new file mode 100644
index 0000000..155a3da
--- /dev/null
+++ b/app/policies/api/v0/statistics_policy.rb
@@ -0,0 +1,41 @@
+module Api
+ module V0
+ class StatisticsPolicy < ApplicationPolicy
+ attr_reader :user
+
+ def initialize(user, statistic)
+ raise Pundit::NotAuthorizedError, _("must be logged in") unless user
+ unless user.org.token_permission_types.include? TokenPermissionType::STATISTICS
+ raise Pundit::NotAuthorizedError, _("must have access to guidances api")
+ end
+ @user = user
+ @statistic = statistic
+ end
+
+ ##
+ # always allowed to see how many users joined your org within a date range
+ def users_joined?
+ true
+ end
+
+ ##
+ # need to check if your org owns this template
+ def using_template?
+ @statistic.org_id == @user.org_id
+ end
+
+ ##
+ # always allowed to get plans by template
+ def plans_by_template?
+ true
+ end
+
+ ##
+ # always allowed to get plans
+ def plans?
+ true
+ end
+
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/policies/api/v0/template_policy.rb b/app/policies/api/v0/template_policy.rb
new file mode 100644
index 0000000..7ec770b
--- /dev/null
+++ b/app/policies/api/v0/template_policy.rb
@@ -0,0 +1,23 @@
+module Api
+ module V0
+ class TemplatePolicy < ApplicationPolicy
+ attr_reader :user, :template
+
+ def initialize(user, template)
+ raise Pundit::NotAuthorizedError, _("must be logged in") unless user
+ unless user.org.token_permission_types.include? TokenPermissionType::TEMPLATES
+ raise Pundit::NotAuthorizedError, _("must have access to guidances api")
+ end
+ @user = user
+ @template = template
+ end
+
+ ##
+ # always allowed as index chooses which guidances to display
+ def index?
+ true
+ end
+
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb
index de9b7ba..c0664f3 100644
--- a/app/policies/application_policy.rb
+++ b/app/policies/application_policy.rb
@@ -13,7 +13,7 @@
end
def show?
- scope.where(:id => record.id).exists?
+ scope.where(id: record.id).exists?
end
def create?
diff --git a/app/policies/comment_policy.rb b/app/policies/comment_policy.rb
deleted file mode 100644
index 570c0a1..0000000
--- a/app/policies/comment_policy.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-class CommentPolicy < ApplicationPolicy
- attr_reader :user
- attr_reader :comment
-
- def initialize(user, comment)
- raise Pundit::NotAuthorizedError, "must be logged in" unless user
- @user = user
- @comment = comment
- end
-
- def create?
- Plan.find(@comment.plan_id).readable_by(@user.id)
- end
-
- def update?
- Plan.find(@comment.plan_id).readable_by(@user.id)
- end
-
- def archive?
- Plan.find(@comment.plan_id).readable_by(@user.id)
- end
-
-end
\ No newline at end of file
diff --git a/app/policies/dmptemplate_policy.rb b/app/policies/dmptemplate_policy.rb
deleted file mode 100644
index c2dbe91..0000000
--- a/app/policies/dmptemplate_policy.rb
+++ /dev/null
@@ -1,124 +0,0 @@
-class DmptemplatePolicy < ApplicationPolicy
- attr_reader :user, :dmptemplate
-
- def initialize(user, dmptemplate)
- raise Pundit::NotAuthorizedError, "must be logged in" unless user
- @user = user
- @dmptemplate = dmptemplate
- end
-
- def admin_index?
- user.can_modify_templates?
- end
-
- def admin_template?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_update?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_new?
- user.can_modify_templates?
- end
-
- def admin_create?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_destroy?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_phase?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_previewphase?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_addphase?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_createphase?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_updatephase?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_destroyphase?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_updateversion?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_cloneversion?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_destroyversion?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_createsection?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_updatesection?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_destroysection?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_createquestion?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_updatequestion?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_destroyquestion?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_createsuggestedanswer?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_updatesuggestedanswer?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_destroysuggestedanswer?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_createguidance?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_updateguidance?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- def admin_destroyguidance?
- user.can_modify_templates? #&& (dmptemplate.organisation_id == user.organisation_id)
- end
-
- class Scope < Scope
- def resolve
- scope.where(organisation_id: user.organisation_id)
- end
- end
-
-end
\ No newline at end of file
diff --git a/app/policies/guidance_group_policy.rb b/app/policies/guidance_group_policy.rb
index 422ea26..bb514c3 100644
--- a/app/policies/guidance_group_policy.rb
+++ b/app/policies/guidance_group_policy.rb
@@ -8,19 +8,19 @@
end
def admin_show?
- user.can_modify_guidance? && (guidance_group.organisation_id == user.organisation_id)
+ user.can_modify_guidance? && (guidance_group.org_id == user.org_id)
end
def admin_edit?
- user.can_modify_guidance? && (guidance_group.organisation_id == user.organisation_id)
+ user.can_modify_guidance? && (guidance_group.org_id == user.org_id)
end
def admin_update?
- user.can_modify_guidance? && (guidance_group.organisation_id == user.organisation_id)
+ user.can_modify_guidance? && (guidance_group.org_id == user.org_id)
end
def admin_update_publish?
- user.can_modify_guidance? && (guidance_group.organisation_id == user.organisation_id)
+ user.can_modify_guidance? && (guidance_group.org_id == user.org_id)
end
def admin_new?
@@ -32,12 +32,12 @@
end
def admin_destroy?
- user.can_modify_guidance? && (guidance_group.organisation_id == user.organisation_id)
+ user.can_modify_guidance? && (guidance_group.org_id == user.org_id)
end
class Scope < Scope
def resolve
- scope.where(organisation_id: user.organisation_id)
+ scope.where(org_id: user.org_id)
end
end
diff --git a/app/policies/guidance_policy.rb b/app/policies/guidance_policy.rb
index e527c4a..725326c 100644
--- a/app/policies/guidance_policy.rb
+++ b/app/policies/guidance_policy.rb
@@ -8,15 +8,15 @@
end
def admin_show?
- user.can_modify_guidance? && guidance.in_group_belonging_to?(user.organisation_id)
+ user.can_modify_guidance? && guidance.in_group_belonging_to?(user.org_id)
end
def admin_edit?
- user.can_modify_guidance? && guidance.in_group_belonging_to?(user.organisation_id)
+ user.can_modify_guidance? && guidance.in_group_belonging_to?(user.org_id)
end
def admin_update?
- user.can_modify_guidance? && guidance.in_group_belonging_to?(user.organisation_id)
+ user.can_modify_guidance? && guidance.in_group_belonging_to?(user.org_id)
end
def admin_index?
@@ -32,7 +32,7 @@
end
def admin_destroy?
- user.can_modify_guidance? && guidance.in_group_belonging_to?(user.organisation_id)
+ user.can_modify_guidance? && guidance.in_group_belonging_to?(user.org_id)
end
def update_phases?
@@ -53,7 +53,7 @@
class Scope < Scope
def resolve
- scope = Guidance.by_organisation(user.organisation_id)
+ scope = Guidance.includes(:guidance_group, :themes).by_org(user.org_id)
end
end
end
\ No newline at end of file
diff --git a/app/policies/note_policy.rb b/app/policies/note_policy.rb
new file mode 100644
index 0000000..88a9e11
--- /dev/null
+++ b/app/policies/note_policy.rb
@@ -0,0 +1,23 @@
+class NotePolicy < ApplicationPolicy
+ attr_reader :user
+ attr_reader :note
+
+ def initialize(user, note)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @note = note
+ end
+
+ def create?
+ @note.answer.plan.readable_by?(@user.id)
+ end
+
+ def update?
+ Plan.find(@note.answer.plan_id).readable_by?(@user.id)
+ end
+
+ def archive?
+ Plan.find(@note.answer.plan_id).readable_by?(@user.id)
+ end
+
+end
diff --git a/app/policies/org_policy.rb b/app/policies/org_policy.rb
new file mode 100644
index 0000000..311d389
--- /dev/null
+++ b/app/policies/org_policy.rb
@@ -0,0 +1,34 @@
+class OrgPolicy < ApplicationPolicy
+ attr_reader :user, :org
+
+ def initialize(user, org)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @org = org
+ end
+
+ def admin_show?
+ user.can_modify_org_details? && (user.org_id == org.id)
+ end
+
+ def admin_edit?
+ user.can_modify_org_details? && (user.org_id == org.id)
+ end
+
+ def admin_update?
+ user.can_modify_org_details? && (user.org_id == org.id)
+ end
+
+ def parent?
+ true
+ end
+
+ def children?
+ true
+ end
+
+ def templates?
+ true
+ end
+
+end
\ No newline at end of file
diff --git a/app/policies/organisation_policy.rb b/app/policies/organisation_policy.rb
deleted file mode 100644
index 8fb3bb2..0000000
--- a/app/policies/organisation_policy.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-class OrganisationPolicy < ApplicationPolicy
- attr_reader :user, :organisation
-
- def initialize(user, organisation)
- raise Pundit::NotAuthorizedError, "must be logged in" unless user
- @user = user
- @organisation = organisation
- end
-
- def admin_show?
- user.can_modify_org_details? && (user.organisation.id == organisation.id)
- end
-
- def admin_edit?
- user.can_modify_org_details? && (user.organisation.id == organisation.id)
- end
-
- def admin_update?
- user.can_modify_org_details? && (user.organisation.id == organisation.id)
- end
-
- def parent?
- true
- end
-
- def children?
- true
- end
-
- def templates?
- true
- end
-
-end
\ No newline at end of file
diff --git a/app/policies/phase_policy.rb b/app/policies/phase_policy.rb
new file mode 100644
index 0000000..caa0e3c
--- /dev/null
+++ b/app/policies/phase_policy.rb
@@ -0,0 +1,40 @@
+class PhasePolicy < ApplicationPolicy
+ attr_reader :user, :phase
+
+ def initialize(user, phase)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @phase = phase
+ end
+
+ ##
+ # Org-admin side
+ # Users can modify phases if:
+ # - They can modify templates
+ # - The template which they are modifying belongs to their org
+
+ def admin_show?
+ user.can_modify_templates? && (phase.template.org_id == user.org_id)
+ end
+
+ def admin_preview?
+ user.can_modify_templates? && (phase.template.org_id == user.org_id)
+ end
+
+ def admin_update?
+ user.can_modify_templates? && (phase.template.org_id == user.org_id)
+ end
+
+ def admin_add?
+ user.can_modify_templates? && (phase.template.org_id == user.org_id)
+ end
+
+ def admin_create?
+ user.can_modify_templates? && (phase.template.org_id == user.org_id)
+ end
+
+ def admin_destroy?
+ user.can_modify_templates? && (phase.template.org_id == user.org_id)
+ end
+
+end
\ No newline at end of file
diff --git a/app/policies/plan_policy.rb b/app/policies/plan_policy.rb
index 2d4d08a..aa99a2b 100644
--- a/app/policies/plan_policy.rb
+++ b/app/policies/plan_policy.rb
@@ -8,51 +8,75 @@
@plan = plan
end
+ def show?
+ @plan.readable_by?(@user.id)
+ end
+
def edit?
- @plan.editable_by(@user.id)
+ @plan.readable_by?(@user.id)
+ end
+
+ def update_guidance_choices?
+ @plan.editable_by?(@user.id)
+ end
+
+ def share?
+ @plan.readable_by?(@user.id)
end
def export?
- @plan.readable_by(@user.id)
+ @plan.readable_by?(@user.id)
+ end
+
+ def show_export?
+ @plan.readable_by?(@user.id)
end
def update?
- @plan.editable_by(@user.id)
+ @plan.editable_by?(@user.id)
end
+ def destroy?
+ @plan.editable_by?(@user.id)
+ end
+
def status?
- @plan.readable_by(@user.id)
+ @plan.readable_by?(@user.id)
+ end
+
+ def possible_templates?
+ @plan.id.nil?
end
+# TODO: These routes are no lonmger used
+=begin
def section_answers?
- @plan.readable_by(@user.id)
+ @plan.readable_by?(@user.id)
end
def locked?
- @plan.readable_by(@user.id)
+ @plan.readable_by?(@user.id)
end
def delete_recent_locks?
- @plan.editable_by(@user.id)
+ @plan.editable_by?(@user.id)
end
def unlock_all_sections?
- @plan.editable_by(@user.id)
+ @plan.editable_by?(@user.id)
end
def lock_section?
- @plan.editable_by(@user.id)
+ @plan.editable_by?(@user.id)
end
def unlock_section?
- @plan.editable_by(@user.id)
+ @plan.editable_by?(@user.id)
end
+=end
def answer?
- @plan.readable_by(@user.id)
+ @plan.readable_by?(@user.id)
end
- def warning?
- @plan.readable_by(@user.id)
- end
-end
\ No newline at end of file
+end
diff --git a/app/policies/project_group_policy.rb b/app/policies/project_group_policy.rb
deleted file mode 100644
index 595687e..0000000
--- a/app/policies/project_group_policy.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-class ProjectGroupPolicy < ApplicationPolicy
- attr_reader :user
- attr_reader :project_group
-
- def initialize(user, project_group)
- raise Pundit::NotAuthorizedError, "must be logged in" unless user
- @user = user
- @project_group = project_group
- end
-
- def create?
- @project_group.project.administerable_by(@user.id)
- end
-
- def update?
- @project_group.project.administerable_by(@user.id)
- end
-
- def destroy?
- @project_group.project.administerable_by(@user.id)
- end
-end
\ No newline at end of file
diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb
index 60c76fd..9ca5bcc 100644
--- a/app/policies/project_policy.rb
+++ b/app/policies/project_policy.rb
@@ -39,4 +39,5 @@
def possible_guidance?
true
end
+
end
\ No newline at end of file
diff --git a/app/policies/question_policy.rb b/app/policies/question_policy.rb
new file mode 100644
index 0000000..5ea487c
--- /dev/null
+++ b/app/policies/question_policy.rb
@@ -0,0 +1,28 @@
+class QuestionPolicy < ApplicationPolicy
+ attr_reader :user, :question
+
+ def initialize(user, question)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @question = question
+ end
+
+ ##
+ # Users can modify questions if:
+ # - They can modify templates
+ # - The template which they are modifying belongs to their org
+ ##
+
+ def admin_create?
+ user.can_modify_templates? && (question.section.phase.template.org_id == user.org_id)
+ end
+
+ def admin_update?
+ user.can_modify_templates? && (question.section.phase.template.org_id == user.org_id)
+ end
+
+ def admin_destroy?
+ user.can_modify_templates? && (question.section.phase.template.org_id == user.org_id)
+ end
+
+end
\ No newline at end of file
diff --git a/app/policies/role_policy.rb b/app/policies/role_policy.rb
new file mode 100644
index 0000000..cf2b691
--- /dev/null
+++ b/app/policies/role_policy.rb
@@ -0,0 +1,22 @@
+class RolePolicy < ApplicationPolicy
+ attr_reader :user
+ attr_reader :role
+
+ def initialize(user, role)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @role = role
+ end
+
+ def create?
+ @role.plan.administerable_by?(@user.id)
+ end
+
+ def update?
+ @role.plan.administerable_by?(@user.id)
+ end
+
+ def destroy?
+ @role.plan.administerable_by?(@user.id)
+ end
+end
\ No newline at end of file
diff --git a/app/policies/section_policy.rb b/app/policies/section_policy.rb
new file mode 100644
index 0000000..6effdbe
--- /dev/null
+++ b/app/policies/section_policy.rb
@@ -0,0 +1,28 @@
+class SectionPolicy < ApplicationPolicy
+ attr_reader :user, :section
+
+ def initialize(user, section)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @section = section
+ end
+
+ ##
+ # Users can modify sections if:
+ # - They can modify templates
+ # - The template which they are modifying belongs to their org
+ ##
+
+ def admin_create?
+ user.can_modify_templates? && (section.phase.template.org_id == user.org_id)
+ end
+
+ def admin_update?
+ user.can_modify_templates? && (section.phase.template.org_id == user.org_id)
+ end
+
+ def admin_destroy?
+ user.can_modify_templates? && (section.phase.template.org_id == user.org_id)
+ end
+
+end
\ No newline at end of file
diff --git a/app/policies/template_policy.rb b/app/policies/template_policy.rb
new file mode 100644
index 0000000..754e622
--- /dev/null
+++ b/app/policies/template_policy.rb
@@ -0,0 +1,67 @@
+class TemplatePolicy < ApplicationPolicy
+ attr_reader :user, :template
+
+ def initialize(user, template)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @template = template
+ end
+
+ ##
+ # Users can modify templates if:
+ # - They can modify templates
+ # - The template which they are modifying belongs to their org
+ ##
+
+ def admin_index?
+ user.can_modify_templates?
+ end
+
+ def admin_template?
+ user.can_modify_templates? && (template.org_id == user.org_id)
+ end
+
+ def admin_customize?
+ user.can_modify_templates?
+ end
+
+ def admin_publish?
+ user.can_modify_templates? && (template.org_id == user.org_id)
+ end
+
+ def admin_unpublish?
+ user.can_modify_templates? && (template.org_id == user.org_id)
+ end
+
+ def admin_update?
+ user.can_modify_templates? && (template.org_id == user.org_id)
+ end
+
+ def admin_new?
+ user.can_modify_templates?
+ end
+
+ def admin_create?
+ user.can_modify_templates? && (template.org_id.nil? || (template.org_id == user.org_id))
+ end
+
+ def admin_destroy?
+ user.can_modify_templates? && (template.org_id == user.org_id)
+ end
+
+ def admin_template_history?
+ user.can_modify_templates? && (template.org_id == user.org_id)
+ end
+
+ def admin_transfer_customization?
+ user.can_modify_templates?
+ end
+
+
+ class Scope < Scope
+ def resolve
+ scope.where(org_id: user.org_id)
+ end
+ end
+
+end
\ No newline at end of file
diff --git a/app/policies/token_permission_type_policy.rb b/app/policies/token_permission_type_policy.rb
index fb4699e..ee4a947 100644
--- a/app/policies/token_permission_type_policy.rb
+++ b/app/policies/token_permission_type_policy.rb
@@ -8,7 +8,7 @@
end
def index?
- user.can_use_api? && (user.organisation.token_permission_types.count > 0)
+ user.can_use_api? && (user.org.token_permission_types.count > 0)
end
diff --git a/app/policies/user_identifier_policy.rb b/app/policies/user_identifier_policy.rb
new file mode 100644
index 0000000..e57f1c9
--- /dev/null
+++ b/app/policies/user_identifier_policy.rb
@@ -0,0 +1,20 @@
+class UserIdentifierPolicy < ApplicationPolicy
+ attr_reader :user_identifier
+
+ def initialize(user, users)
+ raise Pundit::NotAuthorizedError, "must be logged in" unless user
+ @user = user
+ @users = users
+ end
+
+ def destroy?
+ !user.nil?
+ end
+
+ class Scope < Scope
+ def resolve
+ scope.where(user_id: user.id)
+ end
+ end
+
+end
\ No newline at end of file
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index bb44ae5..a97a91b 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -12,16 +12,16 @@
end
def admin_grant_permissions?
- @user.can_grant_permissions? && (@users.organisation_id == @user.organisation_id)
+ @user.can_grant_permissions? && (@users.org_id == @user.org_id)
end
def admin_update_permissions?
- @user.can_grant_permissions? && (@users.organisation_id == @user.organisation_id)
+ @user.can_grant_permissions? && (@users.org_id == @user.org_id)
end
class Scope < Scope
def resolve
- scope.where(organisation_id: user.organisation_id)
+ scope.where(org_id: user.org_id)
end
end
diff --git a/app/validators/answer_for_correct_template_validator.rb b/app/validators/answer_for_correct_template_validator.rb
new file mode 100644
index 0000000..8ec15ee
--- /dev/null
+++ b/app/validators/answer_for_correct_template_validator.rb
@@ -0,0 +1,10 @@
+class AnswerForCorrectTemplateValidator < ActiveModel::Validator
+ def validate(record)
+ # Make sure that the question and plan belong to the same template!
+ unless record.plan.nil? || record.question.nil?
+ unless record.plan.template == record.question.section.phase.template
+ record.errors[:question] << I18n.t('helpers.answer.question_must_belong_to_correct_template')
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb
new file mode 100644
index 0000000..a967c32
--- /dev/null
+++ b/app/validators/url_validator.rb
@@ -0,0 +1,7 @@
+class UrlValidator < ActiveModel::EachValidator
+ def validate_each(record, attribute, value)
+ unless value =~ /https?:\/\/[-a-zA-Z0-9@:%_\+.~#?&\/=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&\/=]*)?/
+ record.errors[attribute] << (options[:message] || "is not a valid URL")
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/views/admin/dmptemplates/settings.html.erb b/app/views/admin/dmptemplates/settings.html.erb
deleted file mode 100644
index 171d5bc..0000000
--- a/app/views/admin/dmptemplates/settings.html.erb
+++ /dev/null
@@ -1,38 +0,0 @@
-<% @settings.errors.full_messages.each do |error| %>
-
<%= error %>
-<% end %>
-
-<%= form_for(@settings, url: update_settings_admin_dmptemplate_path(@template), method: :put, as: 'settings[export][formatting]', html: { class: 'formtastic' }) do |f| %>
-
-
-
-
-
-<% end %>
diff --git a/app/views/administrate/application/_admin_header.html.erb b/app/views/administrate/application/_admin_header.html.erb
new file mode 100644
index 0000000..115db95
--- /dev/null
+++ b/app/views/administrate/application/_admin_header.html.erb
@@ -0,0 +1,4 @@
+
diff --git a/app/views/administrate/application/_navigation.html.erb b/app/views/administrate/application/_navigation.html.erb
new file mode 100644
index 0000000..a5cfa7a
--- /dev/null
+++ b/app/views/administrate/application/_navigation.html.erb
@@ -0,0 +1,26 @@
+<%# Hack for customisation %>
+
+<%#
+# Navigation
+
+This partial is used to display the navigation in Administrate.
+By default, the navigation contains navigation links
+for all resources in the admin dashboard,
+as defined by the routes in the `admin/` namespace
+%>
+
+
diff --git a/app/views/administrate/application/_search.html.erb b/app/views/administrate/application/_search.html.erb
new file mode 100644
index 0000000..7145011
--- /dev/null
+++ b/app/views/administrate/application/_search.html.erb
@@ -0,0 +1,21 @@
+
diff --git a/app/views/annotations/_add_annotation.html.erb b/app/views/annotations/_add_annotation.html.erb
new file mode 100644
index 0000000..8add942
--- /dev/null
+++ b/app/views/annotations/_add_annotation.html.erb
@@ -0,0 +1,32 @@
+
+
<%= _('Add Annotations') %>
+<%= form_tag admin_create_annotation_path , class: 'add_annotation_form' do %>
+
<%= _('since %{name} saved the answer below while you were editing. Please, combine your changes and then save the answer again.') % { name: user.name} %>
+
diff --git a/app/views/answers/_new_edit.html.erb b/app/views/answers/_new_edit.html.erb
new file mode 100644
index 0000000..2434033
--- /dev/null
+++ b/app/views/answers/_new_edit.html.erb
@@ -0,0 +1,101 @@
+
+<% q_format = question.question_format %>
+<%= semantic_form_for answer, :url => {controller: :answers, action: :update }, html: {method: "put", class: "roadmap-form", 'data-autosave': question.id }, remote: true do |f| %>
+
+ <% end %>
\ No newline at end of file
diff --git a/app/views/answers/_status.html.erb b/app/views/answers/_status.html.erb
new file mode 100644
index 0000000..ddf8dcf
--- /dev/null
+++ b/app/views/answers/_status.html.erb
@@ -0,0 +1,9 @@
+
+ <%= _('Saving...')%>
+ <%= _('Unsaved changes') %>
+
+ <% if answer.updated_at.blank? %>
+ <%= _('Not answered yet') %>
+ <% else %>
+ <%= _('Answered')%> <%= answer.updated_at.iso8601 %><%= _(' by')%> <%= answer.user.name %>
+ <% end %>
\ No newline at end of file
diff --git a/app/views/answers/update.js.erb b/app/views/answers/update.js.erb
new file mode 100644
index 0000000..2290a67
--- /dev/null
+++ b/app/views/answers/update.js.erb
@@ -0,0 +1,26 @@
+// partial /answers/locking
+<% if @stale_answer %>
+ $("#answer-locking-<%= @question.id%>")
+ .html("<%= escape_javascript(render partial: '/answers/locking', locals: { question: @question, answer: @stale_answer, user: @answer.user }) %>");
+<% else %>
+ $("#answer-locking-<%= @question.id%>").html("");
+<% end %>
+
+// partial /answer/new_edit
+if(tinymce)
+ tinymce.remove("#answer-text-<%= @question.id %>");
+$("#answer-form-<%= @question.id%>")
+ .html("<%= escape_javascript(render partial: '/answers/new_edit', locals: { question: @question, answer: @answer, readonly: false }) %>");
+
+// partial /answer/status
+$("#answer-status-<%= @question.id %>")
+ .html("<%= escape_javascript(render partial: '/answers/status', locals: { answer: @answer}) %>");
+if($.fn.init_answer_status)
+ $.fn.init_answer_status();
+
+// partial /plans/progress
+$(".progress").html("<%= escape_javascript(render :partial => '/plans/progress', locals: { plan: @plan }) %>");
+
+// partial /sections/progress
+$("#section-progress-<%= @section.id %>")
+ .html("<%= escape_javascript(render partial: '/sections/progress', locals: { section: @section, plan: @plan }) %>");
\ No newline at end of file
diff --git a/app/views/api/v0/dmptemplates/index.json.jbuilder b/app/views/api/v0/dmptemplates/index.json.jbuilder
deleted file mode 100644
index 33ebd74..0000000
--- a/app/views/api/v0/dmptemplates/index.json.jbuilder
+++ /dev/null
@@ -1,14 +0,0 @@
-# builds a json response to api query for a list of all dmptemplates
-json.prettify!
-
-json.templates Organisation.all.each do |org|
- unless org.published_templates.blank?
- json.organisation_name org.name
- json.organisation_id org.id
- json.organisation_templates org.published_templates.each do |template|
- json.title template.title
- json.id template.id
- json.description template.description
- end
- end
-end
\ No newline at end of file
diff --git a/app/views/api/v0/guidance_groups/index.json.jbuilder b/app/views/api/v0/guidance_groups/index.json.jbuilder
index 908b19d..7a5fd3d 100644
--- a/app/views/api/v0/guidance_groups/index.json.jbuilder
+++ b/app/views/api/v0/guidance_groups/index.json.jbuilder
@@ -5,17 +5,13 @@
json.name guidance_group.name
json.id guidance_group.id
- # for each template associated with the guidance group, list the template name
- @templates = guidance_group.dmptemplates
- # if the template is empty, instead use all avalable templates
- if @templates.empty?
- @templates = Dmptemplate.all
- end
- json.templates @templates do |template|
- json.title template.title
- json.id template.id
- end
-
json.optional guidance_group.optional_subset
json.updated guidance_group.updated_at
-end
+ json.guidances guidance_group.guidances.each do |guidance|
+ json.text guidance.text
+ json.updated guidance.updated_at
+ json.themes guidance.themes.each do |theme|
+ json.title theme.title
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/views/api/v0/guidance_groups/show.json.jbuilder b/app/views/api/v0/guidance_groups/show.json.jbuilder
deleted file mode 100644
index 1a412db..0000000
--- a/app/views/api/v0/guidance_groups/show.json.jbuilder
+++ /dev/null
@@ -1,25 +0,0 @@
-# builds a json response to api query for a list of guidance groups
-json.prettify!
-
-json.guidance_group do
- json.name @guidance_group.name
- json.id @guidance_group.id
-
- # for each template associated with the guidance group, list the template name
- @templates = @guidance_group.dmptemplates
- # if the template is empty, instead use all avalable templates
- if @templates.empty?
- @templates = Dmptemplate.all
- end
- json.templates @templates do |template|
- json.title template.title
- json.id template.id
- 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/guidances/index.json.jbuilder b/app/views/api/v0/guidances/index.json.jbuilder
deleted file mode 100644
index 82edd20..0000000
--- a/app/views/api/v0/guidances/index.json.jbuilder
+++ /dev/null
@@ -1,29 +0,0 @@
-# builds a json response to api querry for all guidances
-
-json.prettify!
-
-json.guidance @all_viewable_guidances do |guidance|
- json.id guidance.id
- json.text guidance.text
- json.updated_at guidance.updated_at
-
- # each guidance may be associated with many guidance groups
- @guidance_groups = guidance.guidance_groups
- json.guidance_groups @guidance_groups do |guidance_group|
- json.name guidance_group.name
- json.id guidance_group.id
-
- # for each template associated with the guidance group, list the template name
- @templates = guidance_group.dmptemplates
- # if the template is empty, instead use all avalable templates
- if @templates.empty?
- @templates = Dmptemplate.all
- end
- json.templates @templates do |template|
- json.title template.title
- end
- json.optional guidance_group.optional_subset
- json.updated guidance_group.updated_at
- end
-
-end
diff --git a/app/views/api/v0/guidances/show.json.jbuilder b/app/views/api/v0/guidances/show.json.jbuilder
deleted file mode 100644
index be04df7..0000000
--- a/app/views/api/v0/guidances/show.json.jbuilder
+++ /dev/null
@@ -1,30 +0,0 @@
-# builds a json response to api querry for a specific guidance
-
-json.prettify!
-
-json.guidance do
- json.id @guidance.id
- json.text @guidance.text
- json.updated_at @guidance.updated_at
-
- # each guidance may be associated with many guidance groups
- @guidance_groups = @guidance.guidance_groups
- unless @guidance_groups.empty?
- json.guidance_groups @guidance_groups do |guidance_group|
- json.name guidance_group.name
- json.id guidance_group.id
-
- # for each template associated with the guidance group, list the template name
- @templates = guidance_group.dmptemplates
- # if the template is empty, instead use all avalable templates
- if @templates.empty?
- @templates = Dmptemplate.all
- end
- json.templates @templates do |template|
- json.title template.title
- end
- json.optional guidance_group.optional_subset
- json.updated guidance_group.updated_at
- end
- end
-end
\ No newline at end of file
diff --git a/app/views/api/v0/plans/create.json.jbuilder b/app/views/api/v0/plans/create.json.jbuilder
new file mode 100644
index 0000000..0c3b359
--- /dev/null
+++ b/app/views/api/v0/plans/create.json.jbuilder
@@ -0,0 +1,12 @@
+# builds a json response to a successful project createtion
+
+json.prettify!
+
+json.plan do
+ json.title @plan.title
+ json.template @plan.template.title
+ # TODO add after decision on user creation/identification
+ json.created_by @plan.owner.email
+ json.id @plan.id
+ json.created_at @plan.created_at
+end
\ No newline at end of file
diff --git a/app/views/api/v0/plans/show.json.jbuilder b/app/views/api/v0/plans/show.json.jbuilder
new file mode 100644
index 0000000..2cd84bf
--- /dev/null
+++ b/app/views/api/v0/plans/show.json.jbuilder
@@ -0,0 +1,13 @@
+# builds a json response to a successful project createtion
+
+json.prettify!
+
+json.project do
+ json.title @project.title
+ # TODO add after decision on user creation/identification
+ json.created_by @project.owner.email
+ json.id @project.id
+ json.created_at @project.created_at
+ #json.template @project.dmptemplate
+ json.dmptemplate @project.dmptemplate.title
+end
diff --git a/app/views/api/v0/projects/create.json.jbuilder b/app/views/api/v0/projects/create.json.jbuilder
deleted file mode 100644
index ebb8c58..0000000
--- a/app/views/api/v0/projects/create.json.jbuilder
+++ /dev/null
@@ -1,15 +0,0 @@
-# builds a json response to a successful project createtion
-
-json.prettify!
-
-json.project do
- json.title @project.title
- # TODO add after decision on user creation/identification
- #json.created_by @project.owner.email
- json.id @project.id
- json.created_at @project.created_at
-end
-
-# json.location do
-# json.link (url_for action: 'show', controller: 'project')
-# end
diff --git a/app/views/api/v0/projects/show.json.jbuilder b/app/views/api/v0/projects/show.json.jbuilder
deleted file mode 100644
index 2cd84bf..0000000
--- a/app/views/api/v0/projects/show.json.jbuilder
+++ /dev/null
@@ -1,13 +0,0 @@
-# builds a json response to a successful project createtion
-
-json.prettify!
-
-json.project do
- json.title @project.title
- # TODO add after decision on user creation/identification
- json.created_by @project.owner.email
- json.id @project.id
- json.created_at @project.created_at
- #json.template @project.dmptemplate
- json.dmptemplate @project.dmptemplate.title
-end
diff --git a/app/views/api/v0/statistics/plans.json.jbuilder b/app/views/api/v0/statistics/plans.json.jbuilder
index 1a05c9b..fdefac1 100644
--- a/app/views/api/v0/statistics/plans.json.jbuilder
+++ b/app/views/api/v0/statistics/plans.json.jbuilder
@@ -1,25 +1,22 @@
json.prettify!
-json.plans @org_projects.each do |project|
- json.id project.id
- json.grant_number project.grant_number
- json.org_id project.organisation_id
+json.plans @org_plans.each do |plan|
+ json.id plan.id
+ json.grant_number plan.grant_number
+ json.title plan.title
json.template do
- json.title project.dmptemplate.title
- json.id project.dmptemplate.id
- end
- json.project do
- json.title project.title
+ json.title plan.template.title
+ json.id plan.template.dmptemplate_id
end
json.funder do
- json.name project.funder_name
+ json.name (plan.template.org.funder? ? plan.template.org.name : '')
end
json.principal_investigator do
- json.name project.principal_investigator
+ json.name plan.principal_investigator
end
json.data_contact do
- json.info project.data_contact
+ json.info plan.data_contact
end
- json.description project.description
+ json.description plan.description
end
\ No newline at end of file
diff --git a/app/views/api/v0/statistics/plans_by_template.json.jbuilder b/app/views/api/v0/statistics/plans_by_template.json.jbuilder
index 155bbba..9a7efd8 100644
--- a/app/views/api/v0/statistics/plans_by_template.json.jbuilder
+++ b/app/views/api/v0/statistics/plans_by_template.json.jbuilder
@@ -1,20 +1,7 @@
json.prettify!
-templates = {}
-@org_projects.each do |project|
- # if hash exists
- if templates[project.dmptemplate.title].blank?
- templates[project.dmptemplate.title] = {}
- templates[project.dmptemplate.title][:title] = project.dmptemplate.title
- templates[project.dmptemplate.title][:id] = project.dmptemplate.id
- templates[project.dmptemplate.title][:uses] = 1
- else
- templates[project.dmptemplate.title][:uses] += 1
- end
-end
-json.templates templates.each do |template, info|
+json.templates @templates.each do |template, info|
json.template_name info[:title]
json.template_id info[:id]
json.template_uses info[:uses]
-end
-
+end
\ No newline at end of file
diff --git a/app/views/api/v0/statistics/using_template.json.jbuilder b/app/views/api/v0/statistics/using_template.json.jbuilder
index 04a77b6..9a7efd8 100644
--- a/app/views/api/v0/statistics/using_template.json.jbuilder
+++ b/app/views/api/v0/statistics/using_template.json.jbuilder
@@ -1,3 +1,7 @@
json.prettify!
-json.plans_using_template @template_count
\ No newline at end of file
+json.templates @templates.each do |template, info|
+ json.template_name info[:title]
+ json.template_id info[:id]
+ json.template_uses info[:uses]
+end
\ No newline at end of file
diff --git a/app/views/api/v0/templates/index.json.jbuilder b/app/views/api/v0/templates/index.json.jbuilder
new file mode 100644
index 0000000..5f9b5ff
--- /dev/null
+++ b/app/views/api/v0/templates/index.json.jbuilder
@@ -0,0 +1,19 @@
+# builds a json response to api query for a list of all dmptemplates
+json.prettify!
+
+json.templates @org_templates.each do |org, templates|
+ json.organisation_name org.name
+ json.organisation_id org.id
+ json.is_funder org.funder?
+ json.organisation_templates templates[:own].each do |_, template|
+ json.title template.title
+ json.id template.dmptemplate_id
+ json.description template.description
+ end
+ json.customized_templates templates[:cust].each do |_,template|
+ json.title template.title
+ json.id template.dmptemplate_id
+ json.customization_of template.customization_of
+ json.description template.description
+ end
+end
\ No newline at end of file
diff --git a/app/views/contact_us/contacts/new.html.erb b/app/views/contact_us/contacts/new.html.erb
index 73562ec..c4d2f30 100644
--- a/app/views/contact_us/contacts/new.html.erb
+++ b/app/views/contact_us/contacts/new.html.erb
@@ -1,114 +1,111 @@
-
+<% javascript "contacts/new_contact.js" %>
+
- <%= raw t("contact_page.intro_text_html",
- organisation_name: Rails.configuration.branding[:organisation][:name],
- organisation_email: Rails.configuration.branding[:organisation][:email],
- organisation_url: Rails.configuration.branding[:organisation][:url],
- application_name: Rails.configuration.branding[:application][:name],
- application_url: Rails.configuration.branding[:application][:url],
- application_issue_list_url: Rails.configuration.branding[:application][:issue_list_url]) %>
- <%= raw t("contact_page.github_text_html") %>
+ <%= raw _('%{application_name} is provided by the %{organisation_name}. You can find out more about us on our website. If you would like to contact us about %{application_name}, please fill out the form below.') % {organisation_name: Rails.configuration.branding[:organisation][:name],
+ organisation_url: Rails.configuration.branding[:organisation][:url],
+ application_name: Rails.configuration.branding[:application][:name]} %>
<%= link_to _("Click here to confirm your account"), confirmation_url(@resource, :confirmation_token => @token) %> (<%= _("or copy") %> <%= confirmation_url(@resource, :confirmation_token => @token) %> <%= _("into your browser") %>).
+<% end %>
\ No newline at end of file
diff --git a/app/views/devise/mailer/invitation_instructions.html.erb b/app/views/devise/mailer/invitation_instructions.html.erb
index 7beb75d..c7235c1 100644
--- a/app/views/devise/mailer/invitation_instructions.html.erb
+++ b/app/views/devise/mailer/invitation_instructions.html.erb
@@ -1,7 +1,8 @@
-
+<% FastGettext.with_locale FastGettext.default_locale do %>
+
<%= _("Hello") %> <%= @resource.email %>,
+
<%= _("A colleague has invited you to contribute to their Data Management Plan at ") %> <%= link_to Rails.configuration.branding[:application][:name], root_url %>.
+
<%= link_to _("Click here to accept the invitation"), accept_invitation_url(@resource, :invitation_token => @token) %> (<%= _("or copy") %> <%= accept_invitation_url(@resource, :invitation_token => @token) %> <%= _("into your browser") %>).
+
<%= _("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.") %>
+
<%=_('All the best,')%> <%= _('The ')%><%= Rails.configuration.branding[:application][:name] %><%=_(' team')%>.
-
-<%= t('custom_devise.ignore_wont_be_created') %>
\ No newline at end of file
+<% end %>
diff --git a/app/views/devise/mailer/reset_password_instructions.html.erb b/app/views/devise/mailer/reset_password_instructions.html.erb
index b4c0ac6..55858c9 100644
--- a/app/views/devise/mailer/reset_password_instructions.html.erb
+++ b/app/views/devise/mailer/reset_password_instructions.html.erb
@@ -1,7 +1,13 @@
-
<%= _("Someone has requested a link to change your ") %><%= Rails.configuration.branding[:application][:name] %><%= _(" password. You can do this through the link below.") %>
-
<%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @token) %>
+
<%= link_to _('Change my password'), edit_password_url(@resource, :reset_password_token => @token) %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/devise/mailer/unlock_instructions.html.erb b/app/views/devise/mailer/unlock_instructions.html.erb
index 0346189..3787b7a 100644
--- a/app/views/devise/mailer/unlock_instructions.html.erb
+++ b/app/views/devise/mailer/unlock_instructions.html.erb
@@ -1,7 +1,9 @@
-
<%= _("Your") %> <%= link_to Rails.configuration.branding[:application][:name], root_url %> <%= _("account has been locked due to an excessive number of unsuccessful sign in attempts.") %>
-
<%= t('custom_devise.click_to_unlock') %>
+
<%= _("Click the link below to unlock your account") %>:
<%= link_to _("Unlock my account"), unlock_url(@resource, :unlock_token => @token) %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/devise/registrations/_external_identifier.html.erb b/app/views/devise/registrations/_external_identifier.html.erb
new file mode 100644
index 0000000..226b270
--- /dev/null
+++ b/app/views/devise/registrations/_external_identifier.html.erb
@@ -0,0 +1,21 @@
+
+ <% if id.nil? || id.identifier == '' %>
+ <%= link_to "#{_("Link account with #{scheme.description} ID")}",
+ Rails.application.routes.url_helpers.send(
+ "user_#{scheme.name.downcase}_omniauth_authorize_path"
+ ),
+ title: t("identifier_schemes.schemes.#{scheme.name}.connect_tooltip", default: "")
+ %>
+ <% else %>
+ <% if scheme.user_landing_url.nil? %>
+ <%= _("Your account has been linked to #{scheme.description}.") %>
+ <% else %>
+ <%= link_to "#{_("Your account has been linked to #{scheme.description}.")}", "#{scheme.user_landing_url}/#{id.identifier}", target: '_blank',
+ title: t("identifier_schemes.schemes.#{scheme.name}.connect_tooltip", default: "") %>
+ <% end %>
+ <%= link_to ''.html_safe,
+ destroy_user_identifier_path(id), method: :delete,
+ title: _("Unlink your account from #{scheme.description}. You can link again at any time."),
+ data: {confirm: _("Are you sure you want to unlink #{scheme.description} ID?")} %>
+ <% end %>
+
- <%= raw t('helpers.sign_up_shibboleth_alert_text_html')%>
+ <%= (_("%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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.") % { :application_name => Rails.configuration.branding[:application][:name] }).html_safe %>
\ No newline at end of file
+
diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb
index 95c5cf1..90556a7 100644
--- a/app/views/devise/sessions/new.html.erb
+++ b/app/views/devise/sessions/new.html.erb
@@ -1,15 +1,15 @@
-
- <% end %>
-
- <% if current_user.can_org_admin? && (dmptemplate.org_type != constant("organisation_types.funder")|| current_user.org_type == constant("organisation_types.funder")) then %>
- <% if active == 'add_plan' then %>
-
- <%= 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')) %>
+ <%= link_to(image_tag('help_button.png'), '#', class: 'guidance_group_title_popover', rel: "popover", 'data-html' => "true", 'data-content' => _('Add an appropriate name for your guidance group. This name will be used to tell the end user where the guidance has come from. It will be appended to text identifying the theme e.g. "[guidance group name]: guidance on data sharing" so we suggest you just use the institution or department name.')) %>
- <%= 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')) %>
+ <%= link_to(image_tag('help_button.png'), '#', class: 'guidance_group_subset_popover', rel: "popover", 'data-html' => "true", 'data-content' => _("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.")) %>
- <%= 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'))%>
+ <%= link_to( image_tag("help_button.png"), "#", class: 'guidance_group_title_popover', rel: "popover", 'data-html' => "true", 'data-content' => _('Add an appropriate name for your guidance group. This name will be used to tell the end user where the guidance has come from. It will be appended to text identifying the theme e.g. "[guidance group name]: guidance on data sharing" so we suggest you just use the institution or department name.'))%>
- <%= 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'))%>
+ <%= link_to( image_tag('help_button.png'), '#', class: 'guidance_group_subset_popover', rel: "popover", 'data-html' => "true", 'data-content' => _("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."))%>
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/views/guidances/_add_guidance.html.erb b/app/views/guidances/_add_guidance.html.erb
new file mode 100644
index 0000000..bd036d2
--- /dev/null
+++ b/app/views/guidances/_add_guidance.html.erb
@@ -0,0 +1,83 @@
+
+
+ <%= link_to( image_tag("help_button.png"), "#", class: "guidance_text_popover", rel: "popover", "data-html" => "true", "data-content" => _('Enter your guidance here. You can include links where needed.'))%>
+
- <%= t("org_admin.guidance_group.guidance_group_list") %>
+ <%= _('Guidance group list') %>
- <%= raw t("org_admin.guidance_group.guidance_group_text_html")%>
+ <%= raw _("
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.
- <%= raw t("org_admin.guidance.guidance_text_html")%>
+ <%= raw _('
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
<% @guidances.each do |guidance| %>
- <% if guidance.in_group_belonging_to?(current_user.organisation_id) then %>
+ <% if guidance.in_group_belonging_to?(current_user.org_id) then %>
<%= guidance.text.html_safe%>
- <% if guidance.themes != [] then %>
+ <% if guidance.themes.present? then %>
<% guidance.themes.each do |th| %>
<%= th.title %>
- <%end%>
+ <% end %>
- <%else%>
+ <% else %>
-
- <%end%>
- <% if !guidance.question_id.nil? then %>
-
- <%= raw guidance.question.text.truncate(70, omission: t('helpers.truncate_continued')) %>
-
- <%else%>
+ <% end %>
+ <% if guidance.guidance_group.present? then %>
+
+ <%= guidance.guidance_group.name %>
+
+ <% else %>
- -
-
- <%end%>
- <% if guidance.guidance_groups != [] then %>
-
<% if user_signed_in? %>
- <% if !current_user.organisation.nil? %>
+ <% if !current_user.org.nil? %>
- <% if current_user.organisation.logo.present? %>
+ <% if current_user.org.logo.present? %>
<% end %>
<% if current_user.can_grant_permissions? %>
- <% if current_path == "/org/admin/users/admin_index" || current_path == "/org/admin/users/admin_api_update" then %>
-
<%= f.text_field :target_url, as: :string, class: 'text_field has-tooltip', data_toggle: "tooltip", title: _('Please enter a valid web address.') %>
+
+
+
+
<%= _('Contact Email') %>
+
<%= f.text_field :contact_email, as: :string, class: 'text_field has-tooltip', data_toggle: "tooltip", title: _('The email address of an administrator at your organisation. Your users will use this address if they have questions.') %>
\ No newline at end of file
diff --git a/app/views/phases/_answer_form.html.erb b/app/views/phases/_answer_form.html.erb
new file mode 100644
index 0000000..c95732b
--- /dev/null
+++ b/app/views/phases/_answer_form.html.erb
@@ -0,0 +1,123 @@
+
+
+
+ <%
+ answers = question.plan_answers(plan.id)
+ if answers.present?
+ answer = answers.first
+ else
+ answer = Answer.new({ plan_id: plan.id, question_id: question.id, user_id: current_user.id })
+ if question.default_value.present?
+ answer.text = question.default_value
+ end
+ end
+ %>
+
+
+
+<% if last_question_id == question.id then %>
+
+<% else %>
+
+<% end %>
diff --git a/app/views/phases/_edit_phase.html.erb b/app/views/phases/_edit_phase.html.erb
new file mode 100644
index 0000000..de7b425
--- /dev/null
+++ b/app/views/phases/_edit_phase.html.erb
@@ -0,0 +1,46 @@
+
+
+<%= form_for(phase, url: admin_update_phase_path(phase.id), html: { method: :put}) do |f| %>
+
+
+ <%= _('Phase details')%>
+
+
+ <%= raw _("
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.
")%>
+
+
+
+
+
+
+
<%= _('Title') %>
+
<%= f.text_field :title,
+ as: :string,
+ class: 'text_field has-tooltip', 'data-toggle' => "tooltip", 'title' => _('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') %>
+
+
+
<%= _('Order of display') %>
+
<%= f.number_field :number, in: 0..5, class: "number_field has-tooltip", 'data-toggle' => "tooltip", 'title' => _('This allows you to order the phases of your template.') %>
+ <%= link_to( image_tag('help_button.png'), '#', class: 'phase_desc_popover', rel: "popover", 'data-html' => "true", 'data-content' => _("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."))%>
+
+ <%= raw _('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.')%>
+
+
+ <%= f.hidden_field :template_id, value: @template.id%>
+
+
+
<%= _('Title') %>
+
<%= f.text_field :title,
+ as: :string,
+ class: "text_field has-tooltip", "data-toggle" => "tooltip", "title" => _('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') %>
+
+
+
<%= _('Order of display') %>
+
<%= f.number_field :number, in: 1..5, class: "number_field has-tooltip", "data-toggle" => "tooltip", title: _('This allows you to order the phases of your template.') %>
+ <%= link_to( image_tag("help_button.png"), "#", class: "phase_desc_popover", rel: "popover", "data-html" => "true", "data-content" => _("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."))%>
+
-
-<%end%>
\ No newline at end of file
diff --git a/app/views/plans/_export.html.erb b/app/views/plans/_export.html.erb
index 6c0e8de..cd7ed05 100644
--- a/app/views/plans/_export.html.erb
+++ b/app/views/plans/_export.html.erb
@@ -1,9 +1,9 @@
-
+
diff --git a/app/views/plans/_plan_list_head.html.erb b/app/views/plans/_plan_list_head.html.erb
new file mode 100644
index 0000000..6b05f86
--- /dev/null
+++ b/app/views/plans/_plan_list_head.html.erb
@@ -0,0 +1,6 @@
+
+ <% ['name', 'owner', 'shared', 'last_edited'].each do |column| %>
+ <%= plan_list_column_heading(column) %>
+ <% end %>
+
<%= _('Select an action')%>
+
diff --git a/app/views/plans/_plan_list_item.html.erb b/app/views/plans/_plan_list_item.html.erb
new file mode 100644
index 0000000..ad1dff2
--- /dev/null
+++ b/app/views/plans/_plan_list_item.html.erb
@@ -0,0 +1,27 @@
+
+ <% ['name', 'owner', 'shared', 'last_edited'].each do |column| %>
+ <%= plan_list_column_body(column, plan) %>
+ <% end %>
+
+ <% if plan.editable_by?(current_user.id) then %>
+ <%= link_to _('Edit'), plan_path(plan), :class => "dmp_table_link"%>
+
+ <% if plan.administerable_by?(current_user.id) then %>
+ <%= link_to _('Share'), share_plan_path(plan), :class => "dmp_table_link"%>
+ <% end %>
+
+ <%= link_to _('Export'), show_export_plan_path(plan), :class => "dmp_table_link"%>
+
+ <% if plan.administerable_by?(current_user.id) then %>
+ <%= link_to _('Delete'), plan_path(plan), :class => "dmp_table_link",
+ :method => :delete, :data => {
+ :confirm => _('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')
+ }%>
+ <% end %>
+ <% else %>
+ <%= link_to _('View'), plan_path(plan), :class => "dmp_table_link"%>
+ <%= link_to _('Export'), show_export_plan_path(plan), :class => "dmp_table_link"%>
+ <% end %>
+
+
+
diff --git a/app/views/plans/_plan_nav_tabs.html.erb b/app/views/plans/_plan_nav_tabs.html.erb
new file mode 100644
index 0000000..c25f416
--- /dev/null
+++ b/app/views/plans/_plan_nav_tabs.html.erb
@@ -0,0 +1,39 @@
+
+
- <% section.questions.order("number").each do |question| %>
- <% if question.id == session[:question_id_comments].to_i then id_css = "current_question" end %>
-
-
+ <% section.questions.order("number").each do |question| %>
+ <% if question.id == session[:question_id_comments].to_i then id_css = "current_question" end %>
+
-<%= render :partial => "export", locals: {plan: @plan} %>
+<%= render :partial => "export", locals: {plan: @plan, phase: @phase} %>
<% session.delete(:question_id_comments)%>
diff --git a/app/views/plans/export.docx.caracal b/app/views/plans/export.docx.caracal
deleted file mode 100644
index e6b4fbb..0000000
--- a/app/views/plans/export.docx.caracal
+++ /dev/null
@@ -1,251 +0,0 @@
-#-----------------------------------------------------
-# page settings
-#-----------------------------------------------------
-
-docx.page_numbers true do
- align :center
-end
-
-docx.font do
- name 'Arial'
-end
-
-docx.p do
- size 32
-end
-
-
-#---------------------------------------------
-# Structure for docx format
-#---------------------------------------------
-
-docx.h1 @exported_plan.plan.project.title.upcase, font: 'Arial', color: '000000'
-docx.h2 @exported_plan.plan.title.upcase, font: 'Arial', color: '000000'
-
-#---- PLAN ADMIN DETAILS -----
-if @exported_plan.admin_details.present?
- docx.p
- docx.h3 'Admin Details'.upcase , italic: false, font: 'Arial', color: '000000'
- @exported_plan.admin_details.each do |field|
- value = @exported_plan.send(field)
- label = "helpers.plan.export.#{field}"
- if value.present?
- docx.p do
- text I18n.t(label), bold: true, color: '000000'
- text ': ', bold: true, color: '000000'
- text value
- end
- end
- end
-end
-
-
-#---- PLAN SECTIONS, QUESTIONS AND ANSWERS -----
-@exported_plan.sections.each do |section|
- docx.p
- docx.h3 section.title.upcase, italic: false, font: 'Arial', color: '000000'
-
- @exported_plan.questions_for_section(section.id).each do |question|
- docx.p strip_tags(question.text.gsub(/
/, ' * ')), bold: true
-
- answer = @exported_plan.plan.answer(question.id, false)
- if answer.nil?
- docx.p 'Question not answered', italic: true
- else
- q_format = question.question_format
- if q_format.title == I18n.t("helpers.checkbox") || q_format.title == I18n.t("helpers.multi_select_box") ||
- q_format.title == I18n.t("helpers.radio_buttons") || q_format.title == I18n.t("helpers.dropdown") then
- answer.options.each do |option|
- docx.ul do
- if !option.text.nil?
- li option.text
- end
- end
- end
- end
-
- if !answer.text.nil? && question.option_comment_display == true then
- search_answer = Nokogiri::HTML::DocumentFragment.parse "
"
- search_answer.at(".//div").inner_html = answer.text
-
- if search_answer.css('table').present? then
- table_content = search_answer.css('table').css('tbody')
-
- if table_content.size > 0 then
- table_array = Array.new
-
- table_content.css('tr').each do |tr|
- row_th_array = Array.new
- row_td_array = Array.new
-
- if tr.search('th') then
- tr.search('th').each do |cell|
- row_th_array << cell.text.to_s
- end
- end
-
- if tr.search('td') then
- tr.search('td').each do |td_cell|
- if !td_cell.text.to_s.blank? then
- new_val = Nokogiri::HTML::DocumentFragment.parse "
"
- new_val.at(".//p").inner_html = td_cell
- td_tags = new_val.at_css('td').children.map {|x| x.name.strip}
- td_text = new_val.at_css('td').children.map {|x| x.text.strip}
-
- start_c = 0
- end_c = td_tags.size
-
- c1 = Caracal::Core::Models::TableCellModel.new do
- while start_c < end_c do
- p do
- #-- TEXT
- if td_tags[start_c] == 'text' then
- text td_text[start_c]
- else
- #-- LINK
- if td_tags[start_c] == 'a' then
- l_address = ""
- l_text = td_text[start_c]
- #-- GET HREF
- td_cell.search('a').each do |link|
- if link.content == td_text[start_c] then
- l_address = link["href"]
- end
- end
- link td_text[start_c], l_address
- #-- BOLD TEXT
- else
- if td_tags[start_c] == 'strong' && td_text[start_c] != "" then
- text td_text[start_c], bold: true
- text ' '
- #-- ITALIC TEXT
- else
- if td_tags[start_c] == 'em' && td_text[start_c] != "" then
- text td_text[start_c], italic: true
- text ' '
- end
- end
- end
- end
- end
- start_c += 1
- end
- end
- row_td_array << c1
- else
- row_td_array << td_cell.text.to_s
- end
- end
- end
-
- #--- check if all cells are empty
- if row_td_array.size > 0 then
- if row_td_array.all?(&:blank?) then
- row_td_array = []
- end
- end
-
- if !row_th_array.empty? then
- table_array << row_th_array
- end
- if !row_td_array.empty? then
- table_array << row_td_array
- end
-
- end
-
- #--- build the table layout
- docx.table table_array, border_size: 4 do
- cell_style rows[0], bold: true, background: 'fbb400'
- cell_style cells, size: 18, margins: { top: 100, bottom: 0, left: 100, right: 100 }
- end
-
- end
-
- else
- higher_level = search_answer.search('div.container').children.map {|x| x.name.strip}
- all_text = search_answer.search('div.container').children.map {|x| x.inner_html.strip}
- high_count = 0
- high_end_count = higher_level.size
-
- while high_count < high_end_count do
-
- if higher_level[high_count] == 'p' then
- inner_txt_with_tags = Nokogiri::HTML::DocumentFragment.parse "
"
- inner_txt_with_tags.at(".//p").inner_html = all_text[high_count]
- tags_type = inner_txt_with_tags.at_css('p').children.map {|x| x.name.strip}
- inner_txt = inner_txt_with_tags.at_css('p').children.map {|x| x.text.strip}
-
- start_count = 0
- end_counter = tags_type.size
-
- docx.p do
- while start_count < end_counter do
- text_val = inner_txt[start_count].to_s
- #-- TEXT
- if tags_type[start_count] == 'text' && text_val != "" then
- text text_val
- text ' '
- #-- LINK
- else
- if tags_type[start_count] == 'a' && text_val != "" then
- l_text = text_val
- l_address = ""
- # all links
- search_answer.search('a').each do |link|
- if link.content == text_val then
- l_address = link["href"]
- end
- end
- link text_val, l_address
- #-- BOLD TEXT
- else
- if tags_type[start_count] == 'strong' && text_val != "" then
- text text_val, bold: true
- text ' '
- #-- ITALIC TEXT
- else
- if tags_type[start_count] == 'em' && text_val != "" then
- text text_val, italic: true
- text ' '
- end
- end
- end
- end
- start_count +=1
- end
- end
- #-- END OF P
- else
- if higher_level[high_count] == 'ul' then
- ul_text = search_answer.search('ul').children.map {|x| x.text.strip}
- docx.ul do
- ul_text.each do |txt|
- if !txt.blank?
- li txt
- end
- end
- end
- else
- if higher_level[high_count] == 'ol' then
- ol_text = search_answer.search('ol').children.map {|x| x.text.strip}
- docx.ol do
- ol_text.each do |txt|
- if !txt.blank?
- li txt
- end
- end
- end
- end
- end
- end
-
- high_count += 1
- end
- end
- end
- end
- #-- add a new line
- docx.p
- end
-end
diff --git a/app/views/plans/export.docx.erb b/app/views/plans/export.docx.erb
new file mode 100644
index 0000000..be267a8
--- /dev/null
+++ b/app/views/plans/export.docx.erb
@@ -0,0 +1,47 @@
+
+
+ <% if question.option_comment_display == true then%>
+ <% if !answer.text.nil? then %>
+ <%= raw answer.text.gsub(/
(\s|
|<\/td>| )*(<\/tr>|
)/,"") %>
+ <%end%>
+ <%end%>
+ <%else%>
+
+ <% if !answer.text.nil? then %>
+ <%= raw answer.text.gsub(/
(\s|
|<\/td>| )*(<\/tr>|
)/,"") %>
+ <%end%>
+ <% end %>
+ <% end %>
+
+ <% end %>
+ <% end %>
+
+
\ No newline at end of file
diff --git a/app/views/static_pages/public_plans.html.erb b/app/views/static_pages/public_plans.html.erb
new file mode 100644
index 0000000..6a14750
--- /dev/null
+++ b/app/views/static_pages/public_plans.html.erb
@@ -0,0 +1,39 @@
+<%- model_class = Plan -%>
+
+ <%= raw _('Public DMPs') %>
+
+
+
+<% if @plans.count > 0 %>
+
+ <%= _('Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines.') %>
+
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
- <%= raw t("roadmap_page.body_text_tab_2_html",
+ <%= raw _("
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
\ No newline at end of file
diff --git a/app/views/static_pages/termsuse.html.erb b/app/views/static_pages/termsuse.html.erb
index bf943a1..b7a70f8 100644
--- a/app/views/static_pages/termsuse.html.erb
+++ b/app/views/static_pages/termsuse.html.erb
@@ -1,10 +1,10 @@
- <%= t('terms_page.title')%>
+ <%= _('Terms of use')%>
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
+ <%= link_to( image_tag("help_button.png"), "#", class: "suggested_answer_popover", rel: "popover", "data-html" => "true", "data-content" => _('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.'))%>
+
+ <%= link_to( image_tag("help_button.png"), "#", class: "question_guidance_popover", rel: "popover", "data-html" => "true", "data-content" => _("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."))%>
+
+
+
+
+
+
+
+
+
+ <%= f.submit _('Save'), class: "btn btn-primary" %>
+ <% if !question.section.phase.template.published? %>
+ <%= link_to _('Delete'), admin_destroy_question_path(question_id: question.id),
+ confirm: _("You are about to delete '%{question_text}'. Are you sure?") % { :question_text => question.text }, method: :delete, class: "btn btn-primary"%>
+ <% end %>
+ <%= hidden_field_tag :question_id, question.id, class: "question_id" %>
+ <%= link_to _('Cancel'), "#", class: "btn cancel cancel_edit_question" %>
+
<%= f.text_field :title, as: :string,
+ class: 'text_field has-tooltip', 'data-toggle' => "tooltip", title: _('Please enter a title for your template.') %>
+ <%= link_to( image_tag('help_button.png'), '#', class: 'template_desc_popover', rel: "popover", 'data-html' => "true", 'data-content' => _('Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences'))%>
+
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.
<%= f.text_field :title, as: :string,
+ class: "text_field has-tooltip", "data-toggle" => "tooltip", title: _('Please enter a title for your template.') %>
+
+
\ 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
index e72d6f2..69051d0 100644
--- a/app/views/user_mailer/api_token_granted_notification.html.erb
+++ b/app/views/user_mailer/api_token_granted_notification.html.erb
@@ -1,6 +1,12 @@
-
+<% FastGettext.with_locale FastGettext.default_locale do %>
+
<% _('Hello ') %><%= @user.name %>
+
+
<%= _('You have been granted permission by your organisation to use our API. Your API token and instructions for using the API endpoints can be found ')%>here.
+
+<% end %>
\ No newline at end of file
diff --git a/app/views/user_mailer/permissions_change_notification.html.erb b/app/views/user_mailer/permissions_change_notification.html.erb
index 10e3c8a..c2c0740 100644
--- a/app/views/user_mailer/permissions_change_notification.html.erb
+++ b/app/views/user_mailer/permissions_change_notification.html.erb
@@ -1,12 +1,18 @@
-
-
+<% FastGettext.with_locale FastGettext.default_locale do %>
<%
-access_level = "read-only"
-if @project_group.access_level == 2 then
- access_level = "editor"
-elsif @project_group.access_level == 3 then
- access_level = "co-owner"
-end
+ access_level = "read-only"
+ permissions = "This means you can read the plan and leave comments."
+ if @role.editor?
+ access_level = "editor"
+ permissions = "This means you can write and edit the plan in a collaborative manner."
+ end
+ if @role.administrator?
+ access_level = "co-owner"
+ permissions = "This means you can write and edit the plan in a collaborative manner. You can also grant rights to other collaborators."
+ end
%>
+
<%= _('Hello ') %><%= @role.user.name %>,
+
<%= _('Your permissions relating to ') %> "<%= link_to @role.plan.title, url_for(action: 'show', controller: 'plans', id: @role.plan.id, locale: FastGettext.default_locale) %>" <%= _(' have been changed by') %><%="#{@current_user.name(false)}. " %><%= _('You now have ') %><%= access_level %><%= _(' access. ') %><%= permissions %>
+
<%=_('All the best,')%> <%= _('The ')%><%= Rails.configuration.branding[:application][:name] %><%=_(' team')%>.
-
+<% FastGettext.with_locale FastGettext.default_locale do %>
<%
-access_level = "read-only"
-if @project_group.access_level == 2 then
- access_level = "editor"
-elsif @project_group.access_level == 3 then
- access_level = "co-owner"
-end
+ access_level = "read-only"
+ permissions = "This means you can read the plan and leave comments."
+ if @role.editor?
+ access_level = "editor"
+ permissions = "This means you can write and edit the plan in a collaborative manner."
+ end
+ if @role.administrator?
+ access_level = "co-owner"
+ permissions = "This means you can write and edit the plan in a collaborative manner. You can also grant rights to other collaborators."
+ end
%>
+
<%= _('Hello ') %><%= @role.user.name %>,
+
<%= _('A colleague has invited you to contribute to their Data Management Plan at ') %><%= link_to Rails.configuration.branding[:application][:name], root_url %>.
+
<%= _('You have been given ') %><%= access_level %><%= _(' access to') %> "<%= link_to @role.plan.title, url_for(action: 'show', controller: 'plans', id: @role.plan.id, locale: FastGettext.default_locale) %>" <%=_('by ')%><%= "#{@user.name(false)}" %>.
+
<%= link_to _('Click here'), url_for(action: 'show', controller: 'plans', id: @role.plan.id, locale: FastGettext.default_locale) %><%= _(' to accept the invitation, (or copy ') %><%= url_for(action: 'show', controller: 'plans', id: @role.plan.id, locale: FastGettext.default_locale) %><%= _(' into your browser)')%>
+
<%= _('If you don\'t want to accept the invitation, please ignore this email.') %>
+
<%=_('All the best,')%> <%= _('The ')%><%= Rails.configuration.branding[:application][:name] %><%=_(' team')%>.
+<% end %>
diff --git a/app/views/user_mailer/welcome_notification.html.erb b/app/views/user_mailer/welcome_notification.html.erb
new file mode 100644
index 0000000..7bda2d0
--- /dev/null
+++ b/app/views/user_mailer/welcome_notification.html.erb
@@ -0,0 +1,11 @@
+<% FastGettext.with_locale FastGettext.default_locale do %>
+
<%= _('Welcome to ') %><%= Rails.configuration.branding[:application][:name] %>
+
+
<%= Rails.configuration.branding[:application][:name] %><%= _(' will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on ') %><%= Rails.configuration.branding[:application][:email] %>
- <%= submit_tag t('helpers.submit.save') %>
+ <%= submit_tag _('Save') %>
<% end %>
-
\ No newline at end of file
+
diff --git a/app/views/users/admin_index.html.erb b/app/views/users/admin_index.html.erb
index c914f49..5a8a19c 100644
--- a/app/views/users/admin_index.html.erb
+++ b/app/views/users/admin_index.html.erb
@@ -1,18 +1,18 @@
<%= stylesheet_link_tag "admin" %>
- <%= t('org_admin.users_list') %>
+ <%= _('List of users') %>
-<%= raw t('org_admin.user_text_html')%>
+<%= raw _('Below is a list of users registered for your organisation. You can sort the data by each field.')%>
-
<%= 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.privileges') %>
+
<%= _('Name') %>
+
<%= _('Email address') %>
+
<%= _('Last logged in') %>
+
<%= _('How many plans?') %>
+
<%= _('Privileges') %>
@@ -33,13 +33,13 @@
<% end %>
- <% if !user.project_groups.nil? then%>
- <%= user.project_groups.length %>
+ <% if !user.roles.nil? then%>
+ <%= user.roles.length %>
<% end %>
diff --git a/config/application.rb b/config/application.rb
index f13810f..96f8c18 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -68,15 +68,26 @@
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *ico)
config.assets.precompile += %w(*mp4 *webm *ogg *ogv *swf)
- config.assets.precompile += %w(plans.js)
- config.assets.precompile += %w(projects.js)
+ config.assets.precompile += %w(plans.js)
config.assets.precompile += %w(jquery.placeholder.js)
config.assets.precompile += %w(jquery.tablesorter.js)
+ config.assets.precompile += %w(jquery-accessible-autocomplet-list-aria.js)
config.assets.precompile += %w(export_configure.js)
config.assets.precompile += %w(toolbar.js)
config.assets.precompile += %w(admin.js)
config.assets.precompile += %w(admin.css)
+ config.assets.precompile += %w(roadmap-form.scss)
+ config.assets.precompile += %w(plans/new_plan.js)
+ config.assets.precompile += %w(plans/edit.js)
+ config.assets.precompile += %w(plans/share.js)
+ config.assets.precompile += %w(contacts/new_contact.js)
+ config.assets.precompile += %w(shared/register_form.js)
+ config.assets.precompile += %w(answers/status.js)
+ config.assets.precompile += %w(notes/index.js)
+ config.assets.precompile += %w(bootstrap_listeners.js)
+ config.assets.precompile += %w(Dmproadmap.js)
+
config.autoload_paths += %W(#{config.root}/lib)
config.action_controller.include_all_helpers = true
@@ -85,12 +96,12 @@
# Enable shibboleth as an alternative authentication method
# Requires server configuration and omniauth shibboleth provider configuration
- # See config/initializers/omniauth.rb
- config.shibboleth_enabled = false
+ # See config/initializers/devise.rb
+ config.shibboleth_enabled = true
- # Absolute path to Shibboleth SSO Login
- #config.shibboleth_login = 'https://localhost/Shibboleth.sso/Login'
-
+ # Relative path to Shibboleth SSO Logout
+ config.shibboleth_logout_url = '/Shibboleth.sso/Logout?return='
+
# Active Record will no longer suppress errors raised in after_rollback or after_commit
# in the next version. Devise appears to be using those callbacks.
# To accept the new behaviour use 'true' otherwise use 'false'
@@ -98,6 +109,5 @@
# Load Branded terminology (e.g. organization name, application name, etc.)
config.branding = config_for(:branding).deep_symbolize_keys
-
end
end
diff --git a/config/base_site.html b/config/base_site.html
new file mode 100644
index 0000000..e20fabe
--- /dev/null
+++ b/config/base_site.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+ Bootstrap 101 Template
+
+
+
+
+
+
+
+
+
+
Hello, world!
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/config/branding.yml b/config/branding.yml
deleted file mode 100644
index 578347c..0000000
--- a/config/branding.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-defaults: &defaults
- legal_entity: 'the University of Edinburgh, University of Glasgow and the University of California'
-
- organisation:
- name: 'Digital Curation Center and University of California Curation Center'
- abbreviation: 'DCC and UC3'
- url: 'https://github.com/DMPRoadmap/roadmap/wiki'
- copywrite_name: 'DCC and UC3'
- email: 'dmponline@dcc.ac.uk'
-
- application:
- name: 'DMPRoadmap'
- url: 'https://github.com/DMPRoadmap/roadmap'
- version: '0.1.0'
- release_notes_url: 'https://github.com/DMPRoadmap/roadmap/wiki/Releases'
- issue_list_url: 'https://github.com/DMPRoadmap/roadmap/issues'
- user_group_subscription_url: 'http://listserv.ucop.edu/cgi-bin/wa.exe?SUBED1=ROADMAP-L&A=1'
-
-development:
- <<: *defaults
-
-test:
- <<: *defaults
-
-staging:
- <<: *defaults
-
-production:
- <<: *defaults
\ No newline at end of file
diff --git a/config/branding_example.yml b/config/branding_example.yml
new file mode 100644
index 0000000..329fa1d
--- /dev/null
+++ b/config/branding_example.yml
@@ -0,0 +1,30 @@
+defaults: &defaults
+ legal_entity: 'the University of Edinburgh, University of Glasgow and the University of California'
+
+ # Warning: The abbreviation here should match the org.abbreviation value registered in your database!
+ organisation:
+ name: 'Curation Center'
+ abbreviation: 'CC'
+ url: 'https://github.com/DMPRoadmap/roadmap/wiki'
+ copywrite_name: 'Curation Centre (CC)'
+ email: 'tester@cc_curation_centre.org'
+
+ application:
+ name: 'DMPRoadmap'
+ url: 'https://github.com/DMPRoadmap/roadmap'
+ version: '0.1.0'
+ release_notes_url: 'https://github.com/DMPRoadmap/roadmap/wiki/Releases'
+ issue_list_url: 'https://github.com/DMPRoadmap/roadmap/issues'
+ user_group_subscription_url: 'http://listserv.ucop.edu/cgi-bin/wa.exe?SUBED1=ROADMAP-L&A=1'
+
+development:
+ <<: *defaults
+
+test:
+ <<: *defaults
+
+stage:
+ <<: *defaults
+
+production:
+ <<: *defaults
diff --git a/config/environment.rb b/config/environment.rb
index c82b616..3488440 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -5,5 +5,4 @@
Rails.logger = Logger.new(STDOUT)
# Initialize the Rails application.
-#DMPonline4::Application.initialize!
Rails.application.initialize!
\ No newline at end of file
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 0978811..d7fd24b 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -37,6 +37,8 @@
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
+ config.log_level = :debug
+
# Only use best-standards-support built into browsers
config.action_dispatch.best_standards_support = :builtin
@@ -48,4 +50,10 @@
config.action_mailer.perform_deliveries = false
BetterErrors::Midleware.allow_ip! "10.0.2.2" if defined?(BetterErrors) && Rails.env == :development
+
+ config.after_initialize do
+ ActiveRecord::Base.logger = Rails.logger.clone
+ ActiveRecord::Base.logger.level = Logger::INFO
+ ActiveRecord::Base.logger.level = Logger::DEBUG
+ end
end
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 1128592..76a2c35 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -64,6 +64,9 @@
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
# config.action_mailer.raise_delivery_errors = false
+ # Set default host for mailer URLs
+ # config.action_mailer.default_url_options = {host: "example.com"}
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation cannot be found).
config.i18n.fallbacks = true
diff --git a/config/initializers/active_admin.rb b/config/initializers/active_admin.rb
deleted file mode 100644
index 2e1c9c6..0000000
--- a/config/initializers/active_admin.rb
+++ /dev/null
@@ -1,274 +0,0 @@
-ActiveAdmin.setup do |config|
- # == Site Title
- #
- # Set the title that is displayed on the main layout
- # for each of the active admin pages.
- #
- config.site_title = "DMPRoadmap"
-
- # Set the link url for the title. For example, to take
- # users to your main site. Defaults to no link.
- #
- config.site_title_link = "/"
-
- # Set an optional image to be displayed for the header
- # instead of a string (overrides :site_title)
- #
- # Note: Aim for an image that's 21px high so it fits in the header.
- #
- # config.site_title_image = "logo.png"
-
- # == Default Namespace
- #
- # Set the default namespace each administration resource
- # will be added to.
- #
- # eg:
- # config.default_namespace = :hello_world
- #
- # This will create resources in the HelloWorld module and
- # will namespace routes to /hello_world/*
- #
- # To set no namespace by default, use:
- # config.default_namespace = false
- #
- # Default:
- # config.default_namespace = :admin
- #
- # You can customize the settings for each namespace by using
- # a namespace block. For example, to change the site title
- # within a namespace:
- #
- # config.namespace :admin do |admin|
- # admin.site_title = "Custom Admin Title"
- # end
- #
- # This will ONLY change the title for the admin section. Other
- # namespaces will continue to use the main "site_title" configuration.
-
- # == User Authentication
- #
- # Active Admin will automatically call an authentication
- # method in a before filter of all controller actions to
- # ensure that there is a currently logged in admin user.
- #
- # This setting changes the method which Active Admin calls
- # within the application controller.
- # config.authentication_method = :authenticate_admin_user!
- config.authentication_method = :authenticate_admin!
-
- # == User Authorization
- #
- # Active Admin will automatically call an authorization
- # method in a before filter of all controller actions to
- # ensure that there is a user with proper rights. You can use
- # CanCanAdapter or make your own. Please refer to documentation.
- # config.authorization_adapter = ActiveAdmin::CanCanAdapter
-
- # In case you prefer Pundit over other solutions you can here pass
- # the name of default policy class. This policy will be used in every
- # case when Pundit is unable to find suitable policy.
- # config.pundit_default_policy = "MyDefaultPunditPolicy"
-
- # You can customize your CanCan Ability class name here.
- # config.cancan_ability_class = "Ability"
-
- # You can specify a method to be called on unauthorized access.
- # This is necessary in order to prevent a redirect loop which happens
- # because, by default, user gets redirected to Dashboard. If user
- # doesn't have access to Dashboard, he'll end up in a redirect loop.
- # Method provided here should be defined in application_controller.rb.
- # config.on_unauthorized_access = :access_denied
-
- # == Current User
- #
- # Active Admin will associate actions with the current
- # user performing them.
- #
- # This setting changes the method which Active Admin calls
- # (within the application controller) to return the currently logged in user.
- # config.current_user_method = :current_admin_user
- config.current_user_method = :current_user
-
- # == Logging Out
- #
- # Active Admin displays a logout link on each screen. These
- # settings configure the location and method used for the link.
- #
- # This setting changes the path where the link points to. If it's
- # a string, the strings is used as the path. If it's a Symbol, we
- # will call the method to return the path.
- #
- # Default:
- config.logout_link_path = :destroy_user_session_path
-
- # This setting changes the http method used when rendering the
- # link. For example :get, :delete, :put, etc..
- #
- # Default:
- # config.logout_link_method = :get
-
- # == Root
- #
- # Set the action to call for the root path. You can set different
- # roots for each namespace.
- #
- # Default:
- # config.root_to = 'dashboard#index'
-
- # == Admin Comments
- #
- # This allows your users to comment on any resource registered with Active Admin.
- #
- # You can completely disable comments:
- # config.comments = false
- #
- # You can change the name under which comments are registered:
- # config.comments_registration_name = 'AdminComment'
- #
- # You can change the order for the comments and you can change the column
- # to be used for ordering:
- # config.comments_order = 'created_at ASC'
- #
- # You can disable the menu item for the comments index page:
- config.comments_menu = false
- #
- # You can customize the comment menu:
- # config.comments_menu = { parent: 'Admin', priority: 1 }
-
- # == Batch Actions
- #
- # Enable and disable Batch Actions
- #
- config.batch_actions = true
-
- # == Controller Filters
- #
- # You can add before, after and around filters to all of your
- # Active Admin resources and pages from here.
- #
- # config.before_filter :do_something_awesome
-
- # == Localize Date/Time Format
- #
- # Set the localize format to display dates and times.
- # To understand how to localize your app with I18n, read more at
- # https://github.com/svenfuchs/i18n/blob/master/lib%2Fi18n%2Fbackend%2Fbase.rb#L52
- #
- config.localize_format = :long
-
- # == Setting a Favicon
- #
- # config.favicon = 'favicon.ico'
-
- # == Meta Tags
- #
- # Add additional meta tags to the head element of active admin pages.
- #
- # Add tags to all pages logged in users see:
- # config.meta_tags = { author: 'My Company' }
-
- # By default, sign up/sign in/recover password pages are excluded
- # from showing up in search engine results by adding a robots meta
- # tag. You can reset the hash of meta tags included in logged out
- # pages:
- # config.meta_tags_for_logged_out_pages = {}
-
- # == Removing Breadcrumbs
- #
- # Breadcrumbs are enabled by default. You can customize them for individual
- # resources or you can disable them globally from here.
- #
- # config.breadcrumb = false
-
- # == Register Stylesheets & Javascripts
- #
- # We recommend using the built in Active Admin layout and loading
- # up your own stylesheets / javascripts to customize the look
- # and feel.
- #
- # To load a stylesheet:
- # config.register_stylesheet 'my_stylesheet.css'
- #
- # You can provide an options hash for more control, which is passed along to stylesheet_link_tag():
- # config.register_stylesheet 'my_print_stylesheet.css', media: :print
- #
- # To load a javascript file:
- # config.register_javascript 'my_javascript.js'
-
- # == CSV options
- #
- # Set the CSV builder separator
- # config.csv_options = { col_sep: ';' }
- #
- # Force the use of quotes
- # config.csv_options = { force_quotes: true }
-
- # == Menu System
- #
- # You can add a navigation menu to be used in your application, or configure a provided menu
- #
- # To change the default utility navigation to show a link to your website & a logout btn
- #
- # config.namespace :admin do |admin|
- # admin.build_menu :utility_navigation do |menu|
- # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank }
- # admin.add_logout_button_to_menu menu
- # end
- # end
- #
- # If you wanted to add a static menu item to the default menu provided:
- #
- # config.namespace :admin do |admin|
- # admin.build_menu :default do |menu|
- # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank }
- # end
- # end
-
- # == Download Links
- #
- # You can disable download links on resource listing pages,
- # or customize the formats shown per namespace/globally
- #
- # To disable/customize for the :admin namespace:
- #
- # config.namespace :admin do |admin|
- #
- # # Disable the links entirely
- # admin.download_links = false
- #
- # # Only show XML & PDF options
- # admin.download_links = [:xml, :pdf]
- #
- # # Enable/disable the links based on block
- # # (for example, with cancan)
- # admin.download_links = proc { can?(:view_download_links) }
- #
- # end
-
- # == Pagination
- #
- # Pagination is enabled by default for all resources.
- # You can control the default per page count for all resources here.
- #
- # config.default_per_page = 30
- #
- # You can control the max per page count too.
- #
- # config.max_per_page = 10_000
-
- # == Filters
- #
- # By default the index screen includes a "Filters" sidebar on the right
- # hand side with a filter for each attribute of the registered model.
- # You can enable or disable them for all resources here.
- #
- # config.filters = true
- #
- # By default the filters include associations in a select, which means
- # that every record will be loaded for each association.
- # You can enabled or disable the inclusion
- # of those filters by default here.
- #
- # config.include_default_association_filters = true
-end
\ No newline at end of file
diff --git a/config/initializers/constants.rb b/config/initializers/constants.rb
new file mode 100644
index 0000000..927a84f
--- /dev/null
+++ b/config/initializers/constants.rb
@@ -0,0 +1,2 @@
+LANGUAGES = (ActiveRecord::Base.connection.table_exists? 'languages') ? Language.sorted_by_abbreviation : []
+MANY_LANGUAGES = LANGUAGES.length > 1
diff --git a/config/initializers/contac_us_example.rb b/config/initializers/contac_us_example.rb
deleted file mode 100644
index 0d3b4f6..0000000
--- a/config/initializers/contac_us_example.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-# Use this hook to configure contact mailer.
-ContactUs.setup do |config|
-
- # ==> Mailer Configuration
-
- # Configure the e-mail address which email notifications should be sent from. If emails must be sent from a verified email address you may set it here.
- # Example:
- # config.mailer_from = "contact@please-change-me.com"
- config.mailer_from = nil
-
- # Configure the e-mail address which should receive the contact form email notifications.
- config.mailer_to = "example@email.address"
-
- # ==> Form Configuration
-
- # Configure the form to ask for the users name.
- config.require_name = true
-
- # Configure the form to ask for a subject.
- config.require_subject = true
-
- # Configure the form gem to use.
- # Example:
- # config.form_gem = 'formtastic
- # config.form_gem = 'formtastic'
-
-end
diff --git a/config/initializers/contact_us.rb.example b/config/initializers/contact_us.rb.example
new file mode 100644
index 0000000..0d3b4f6
--- /dev/null
+++ b/config/initializers/contact_us.rb.example
@@ -0,0 +1,27 @@
+# Use this hook to configure contact mailer.
+ContactUs.setup do |config|
+
+ # ==> Mailer Configuration
+
+ # Configure the e-mail address which email notifications should be sent from. If emails must be sent from a verified email address you may set it here.
+ # Example:
+ # config.mailer_from = "contact@please-change-me.com"
+ config.mailer_from = nil
+
+ # Configure the e-mail address which should receive the contact form email notifications.
+ config.mailer_to = "example@email.address"
+
+ # ==> Form Configuration
+
+ # Configure the form to ask for the users name.
+ config.require_name = true
+
+ # Configure the form to ask for a subject.
+ config.require_subject = true
+
+ # Configure the form gem to use.
+ # Example:
+ # config.form_gem = 'formtastic
+ # config.form_gem = 'formtastic'
+
+end
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
deleted file mode 100644
index f31db11..0000000
--- a/config/initializers/devise.rb
+++ /dev/null
@@ -1,272 +0,0 @@
-require "custom_failure"
-
-# Use this hook to configure devise mailer, warden hooks and so forth.
-# Many of these configuration options can be set straight in your model.
-Devise.setup do |config|
- # The secret key used by Devise. Devise uses this key to generate
- # random tokens. Changing this key will render invalid all existing
- # confirmation, reset password and unlock tokens in the database.
- # Devise will use the `secret_key_base` on Rails 4+ applications as its `secret_key`
- # by default. You can change it below and use your own secret key.
- # config.secret_key = '65991d837d53ee81812e8c15598e3f691d03d5517d9e0073b6f6eab94df0e8a8c3d6a8bc3c11f1972520187f233bf5e355645a0c7224108ed2a578e45af759cd'
-
- # ==> Mailer Configuration
- # Configure the e-mail address which will be shown in Devise::Mailer,
- # note that it will be overwritten if you use your own mailer class
- # with default "from" parameter.
- config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'
-
- # Configure the class responsible to send e-mails.
- # config.mailer = 'Devise::Mailer'
-
- # ==> ORM configuration
- # Load and configure the ORM. Supports :active_record (default) and
- # :mongoid (bson_ext recommended) by default. Other ORMs may be
- # available as additional gems.
- require 'devise/orm/active_record'
-
- # ==> Configuration for any authentication mechanism
- # Configure which keys are used when authenticating a user. The default is
- # just :email. You can configure it to use [:username, :subdomain], so for
- # authenticating a user, both parameters are required. Remember that those
- # parameters are used only when authenticating and not when retrieving from
- # session. If you need permissions, you should implement that in a before filter.
- # You can also supply a hash where the value is a boolean determining whether
- # or not authentication should be aborted when the value is not present.
- # config.authentication_keys = [:email]
-
- # Configure parameters from the request object used for authentication. Each entry
- # given should be a request method and it will automatically be passed to the
- # find_for_authentication method and considered in your model lookup. For instance,
- # if you set :request_keys to [:subdomain], :subdomain will be used on authentication.
- # The same considerations mentioned for authentication_keys also apply to request_keys.
- # config.request_keys = []
-
- # Configure which authentication keys should be case-insensitive.
- # These keys will be downcased upon creating or modifying a user and when used
- # to authenticate or find a user. Default is :email.
- config.case_insensitive_keys = [:email]
-
- # Configure which authentication keys should have whitespace stripped.
- # These keys will have whitespace before and after removed upon creating or
- # modifying a user and when used to authenticate or find a user. Default is :email.
- config.strip_whitespace_keys = [:email]
-
- # Tell if authentication through request.params is enabled. True by default.
- # It can be set to an array that will enable params authentication only for the
- # given strategies, for example, `config.params_authenticatable = [:database]` will
- # enable it only for database (email + password) authentication.
- # config.params_authenticatable = true
-
- # Tell if authentication through HTTP Auth is enabled. False by default.
- # It can be set to an array that will enable http authentication only for the
- # given strategies, for example, `config.http_authenticatable = [:database]` will
- # enable it only for database authentication. The supported strategies are:
- # :database = Support basic authentication with authentication key + password
- # config.http_authenticatable = false
-
- # If 401 status code should be returned for AJAX requests. True by default.
- # config.http_authenticatable_on_xhr = true
-
- # The realm used in Http Basic Authentication. 'Application' by default.
- # config.http_authentication_realm = 'Application'
-
- # It will change confirmation, password recovery and other workflows
- # to behave the same regardless if the e-mail provided was right or wrong.
- # Does not affect registerable.
- # config.paranoid = true
-
- # By default Devise will store the user in session. You can skip storage for
- # particular strategies by setting this option.
- # Notice that if you are skipping storage for all authentication paths, you
- # may want to disable generating routes to Devise's sessions controller by
- # passing skip: :sessions to `devise_for` in your config/routes.rb
- config.skip_session_storage = [:http_auth]
-
- # By default, Devise cleans up the CSRF token on authentication to
- # avoid CSRF token fixation attacks. This means that, when using AJAX
- # requests for sign in and sign up, you need to get a new CSRF token
- # from the server. You can disable this option at your own risk.
- # config.clean_up_csrf_token_on_authentication = true
-
- # ==> Configuration for :database_authenticatable
- # For bcrypt, this is the cost for hashing the password and defaults to 10. If
- # using other encryptors, it sets how many times you want the password re-encrypted.
- #
- # Limiting the stretches to just one in testing will increase the performance of
- # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use
- # a value less than 10 in other environments. Note that, for bcrypt (the default
- # encryptor), the cost increases exponentially with the number of stretches (e.g.
- # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation).
- config.stretches = Rails.env.test? ? 1 : 10
-
- # Setup a pepper to generate the encrypted password.
- config.pepper = 'fce14df8477896bd9cc8ea3724d97270a5f19cb6544173d17b7e148cf360bf16449d96318275bfb3efde7b3b377db06cede2b64efb0a6d07dd02dd5076f639c9'
-
- # Send a notification email when the user's password is changed
- # config.send_password_change_notification = false
-
- # ==> Configuration for :confirmable
- # A period that the user is allowed to access the website even without
- # confirming their account. For instance, if set to 2.days, the user will be
- # able to access the website for two days without confirming their account,
- # access will be blocked just in the third day. Default is 0.days, meaning
- # the user cannot access the website without confirming their account.
- # config.allow_unconfirmed_access_for = 2.days
-
- # A period that the user is allowed to confirm their account before their
- # token becomes invalid. For example, if set to 3.days, the user can confirm
- # their account within 3 days after the mail was sent, but on the fourth day
- # their account can't be confirmed with the token any more.
- # Default is nil, meaning there is no restriction on how long a user can take
- # before confirming their account.
- # config.confirm_within = 3.days
-
- # If true, requires any email changes to be confirmed (exactly the same way as
- # initial account confirmation) to be applied. Requires additional unconfirmed_email
- # db field (see migrations). Until confirmed, new email is stored in
- # unconfirmed_email column, and copied to email column on successful confirmation.
- config.reconfirmable = false
-
- # Defines which key will be used when confirming an account
- # config.confirmation_keys = [:email]
-
- # ==> Configuration for :rememberable
- # The time the user will be remembered without asking for credentials again.
- # config.remember_for = 2.weeks
-
- # Invalidates all the remember me tokens when the user signs out.
- config.expire_all_remember_me_on_sign_out = true
-
- # If true, extends the user's remember period when remembered via cookie.
- # config.extend_remember_period = false
-
- # Options to be passed to the created cookie. For instance, you can set
- # secure: true in order to force SSL only cookies.
- # config.rememberable_options = {}
-
- # ==> Configuration for :validatable
- # Range for password length.
- config.password_length = 8..72
-
- # Email regex used to validate email formats. It simply asserts that
- # one (and only one) @ exists in the given string. This is mainly
- # to give user feedback and not to assert the e-mail validity.
- # config.email_regexp = /\A[^@]+@[^@]+\z/
-
- # ==> Configuration for :timeoutable
- # The time you want to timeout the user session without activity. After this
- # time the user will be asked for credentials again. Default is 30 minutes.
- config.timeout_in = 1.minutes
-
- # ==> Configuration for :lockable
- # Defines which strategy will be used to lock an account.
- # :failed_attempts = Locks an account after a number of failed attempts to sign in.
- # :none = No lock strategy. You should handle locking by yourself.
- # config.lock_strategy = :failed_attempts
-
- # Defines which key will be used when locking and unlocking an account
- # config.unlock_keys = [:email]
-
- # Defines which strategy will be used to unlock an account.
- # :email = Sends an unlock link to the user email
- # :time = Re-enables login after a certain amount of time (see :unlock_in below)
- # :both = Enables both strategies
- # :none = No unlock strategy. You should handle unlocking by yourself.
- # config.unlock_strategy = :both
-
- # Number of authentication tries before locking an account if lock_strategy
- # is failed attempts.
- # config.maximum_attempts = 20
-
- # Time interval to unlock the account if :time is enabled as unlock_strategy.
- # config.unlock_in = 1.hour
-
- # Warn on the last attempt before the account is locked.
- # config.last_attempt_warning = true
-
- # ==> Configuration for :recoverable
- #
- # Defines which key will be used when recovering the password for an account
- # config.reset_password_keys = [:email]
-
- # Time interval you can reset your password with a reset password key.
- # Don't put a too small interval or your users won't have the time to
- # change their passwords.
- config.reset_password_within = 6.hours
-
- # When set to false, does not sign a user in automatically after their password is
- # reset. Defaults to true, so a user is signed in automatically after a reset.
- # config.sign_in_after_reset_password = true
-
- # ==> Configuration for :encryptable
- # Allow you to use another encryption algorithm besides bcrypt (default). You can use
- # :sha1, :sha512 or encryptors from others authentication tools as :clearance_sha1,
- # :authlogic_sha512 (then you should set stretches above to 20 for default behavior)
- # and :restful_authentication_sha1 (then you should set stretches to 10, and copy
- # REST_AUTH_SITE_KEY to pepper).
- #
- # Require the `devise-encryptable` gem when using anything other than bcrypt
- # config.encryptor = :sha512
-
- # ==> Scopes configuration
- # Turn scoped views on. Before rendering "sessions/new", it will first check for
- # "users/sessions/new". It's turned off by default because it's slower if you
- # are using only default views.
- # config.scoped_views = false
-
- # Configure the default scope given to Warden. By default it's the first
- # devise role declared in your routes (usually :user).
- # config.default_scope = :user
-
- # Set this configuration to false if you want /users/sign_out to sign out
- # only the current scope. By default, Devise signs out all scopes.
- # config.sign_out_all_scopes = true
-
- # ==> Navigation configuration
- # Lists the formats that should be treated as navigational. Formats like
- # :html, should redirect to the sign in page when the user does not have
- # access, but formats like :xml or :json, should return 401.
- #
- # If you have any extra navigational formats, like :iphone or :mobile, you
- # should add them to the navigational formats lists.
- #
- # The "*/*" below is required to match Internet Explorer requests.
- # config.navigational_formats = ['*/*', :html]
-
- # The default HTTP method used to sign out a resource. Default is :delete.
- config.sign_out_via = :delete
-
- # ==> OmniAuth
- # Add a new OmniAuth provider. Check the wiki for more information on setting
- # up on your models and hooks.
- # config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'
-
- # ==> Warden configuration
- # If you want to use other strategies, that are not supported by Devise, or
- # change the failure app, you can configure them inside the config.warden block.
- #
- # config.warden do |manager|
- # manager.intercept_401 = false
- # manager.default_strategies(scope: :user).unshift :some_external_strategy
- # end
-
- # ==> Mountable engine configurations
- # When using Devise inside an engine, let's call it `MyEngine`, and this engine
- # is mountable, there are some extra configurations to be taken into account.
- # The following options are available, assuming the engine is mounted as:
- #
- # mount MyEngine, at: '/my_engine'
- #
- # The router that invoked `devise_for`, in the example above, would be:
- # config.router_name = :my_engine
- #
- # When using OmniAuth, Devise cannot automatically set OmniAuth path,
- # so you need to do it manually. For the users scope, it would be:
- # config.omniauth_path_prefix = '/my_engine/users/auth'
-
- # Configure the system to redirect to the home page after a session timeout
- config.warden do |manager|
- manager.failure_app = CustomFailure
- end
-end
diff --git a/config/initializers/devise.rb.example b/config/initializers/devise.rb.example
index 17b481e..63aa90d 100644
--- a/config/initializers/devise.rb.example
+++ b/config/initializers/devise.rb.example
@@ -247,7 +247,30 @@
# Add a new OmniAuth provider. Check the wiki for more information on setting
# up on your models and hooks.
# config.omniauth :github, 'APP_ID', 'APP_SECRET', :scope => 'user,public_repo'
+
+ # Any entries here MUST match a corresponding entry in the identifier_schemes table as
+ # well as an identifier_schemes.schemes section in each locale file!
+ OmniAuth.config.full_host = 'https://my_service.hostname'
+ config.omniauth :orcid,
+ 'client_id', 'client_secret',
+ {
+ #member: false,
+ }
+
+ config.omniauth :shibboleth,
+ {
+ #debug: true,
+ #uid_field: "HTTP_REMOTE_USER",
+ #shib_application_id_field: "HTTP_SHIB_APPLICATION_ID",
+ #shib_session_id_field: "HTTP_SHIB_SESSION_ID",
+ fields: [],
+ info_fields: {
+ #affiliation: "HTTP_AFFILIATION",
+ },
+ extra_fields: [],
+ }
+
# ==> Warden configuration
# If you want to use other strategies, that are not supported by Devise, or
# change the failure app, you can configure them inside the config.warden block.
@@ -269,7 +292,7 @@
#
# When using omniauth, Devise cannot automatically set Omniauth path,
# so you need to do it manually. For the users scope, it would be:
- # config.omniauth_path_prefix = "/my_engine/users/auth"
+ config.omniauth_path_prefix = "/users/auth"
config.warden do |manager|
manager.failure_app = CustomFailure
diff --git a/config/initializers/fast_gettext.rb b/config/initializers/fast_gettext.rb
new file mode 100644
index 0000000..4cbca7e
--- /dev/null
+++ b/config/initializers/fast_gettext.rb
@@ -0,0 +1,18 @@
+def get_available_locales
+ languages = LANGUAGES # LANGUAGES is defined in config/initializers/constants.rb
+ locales = []
+ languages.each do |l|
+ locales << l.abbreviation
+ end
+ return locales.empty? ? ['en_GB'] : locales
+end
+
+def get_default_locale
+ language = LANGUAGES.empty? ? nil : Language.default()
+ return language.nil? ? 'en_GB' : language.abbreviation
+end
+
+FastGettext.add_text_domain 'app', :path => 'config/locale', :type => :po, :ignore_fuzzy => true, :report_warning => false
+FastGettext.default_text_domain = 'app'
+FastGettext.default_available_locales = get_available_locales()
+FastGettext.default_locale = get_default_locale()
diff --git a/config/initializers/gettext_i18n_rails_js.rb b/config/initializers/gettext_i18n_rails_js.rb
new file mode 100644
index 0000000..71ee9f4
--- /dev/null
+++ b/config/initializers/gettext_i18n_rails_js.rb
@@ -0,0 +1,10 @@
+GettextI18nRailsJs.config do |config|
+ config.output_path = "lib/assets/javascripts/locale"
+
+ config.handlebars_function = "__"
+ config.javascript_function = "__"
+
+ config.jed_options = {
+ pretty: false
+ }
+end
\ No newline at end of file
diff --git a/config/initializers/locale.rb b/config/initializers/locale.rb
index 1e37c81..4f18d7f 100644
--- a/config/initializers/locale.rb
+++ b/config/initializers/locale.rb
@@ -1,30 +1,24 @@
-module DMPonline4
- class Application < Rails::Application
-
- # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
- # Set the list of locales that we will support here (ie those for which we have translations for the DMPOnline application)
- # tell the I18n library where to find your translations
- config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
- # set default locale
- # in config/initializers/locale.rb
-
- # set default locale to something other than :en
- # initializers are run before migrations, languages table might not be present
- if ActiveRecord::Base.connection.tables.include?('languages') &&
- ActiveRecord::Base.connection.column_exists?(:languages, :default_language)
-
- # If a default language is not defined in the DB use en-UK
- if Language.where(default_language: true).empty?
- config.i18n.default_locale = 'en-UK'
- else
- config.i18n.default_locale = Language.where(default_language: true).first.abbreviation
- end
-
- else
- config.i18n.default_locale = 'en-UK' # if this is not set then admin area is not working, which is required to change the default_language
+# This initilializer should not be removed unless all internationalisation is handled by gettext_rails
+DMPRoadmap::Application.config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
+module I18n
+ class Config
+ def locale
+ FastGettext.locale
+ end
+ def locale=(new_locale)
+ FastGettext.locale = (new_locale)
+ end
+ def default_locale
+ FastGettext.default_locale
+ end
+ def default_locale=(new_default_locale)
+ FastGettext.default_locale = (new_default_locale)
+ end
+ def available_locales
+ FastGettext.default_available_locales
+ end
+ def available_locales=(new_available_locales)
+ FastGettext.default_available_locales = (new_available_locales)
+ end
end
-
- # set fallback locale
- config.i18n.fallbacks = true
- end
end
\ No newline at end of file
diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb
deleted file mode 100644
index ddc6ce1..0000000
--- a/config/initializers/omniauth.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-Rails.application.config.middleware.use OmniAuth::Builder do
- provider :shibboleth, {
- # We're using a UK Access Management Federation IdPs here
- # Shibboleth server config needs to return eppn and persistent-id attributes
- # Priority given to eppn in controller if present, assuming persistent-id always populated
- # Doing this the omniauth way rather than using REMOTE_USER
- # See controllers/users/omniauth_callbacks_controller.rb
- # Shibboleth authentication is enabled in config/application.rb
- :uid_field => :"persistent-id",
- :fields => [],
- :extra_fields => [
- :eppn,
- :affiliation,
- :entitlement,
- :"unscoped-affiliation",
- :"targeted-id",
- :mail
- ],
- }
-end
diff --git a/config/initializers/recaptcha.rb.example b/config/initializers/recaptcha.rb.example
index a9e681a..0848591 100644
--- a/config/initializers/recaptcha.rb.example
+++ b/config/initializers/recaptcha.rb.example
@@ -1,5 +1,5 @@
Recaptcha.configure do |config|
- config.public_key = 'replace_this_with_your_public_key'
- config.private_key = 'replace_this_with_your_private_key'
+ config.site_key = 'replace_this_with_your_public_key'
+ config.secret_key = 'replace_this_with_your_private_key'
config.proxy = 'http://someproxy.com:port'
end
diff --git a/config/initializers/wicked_pdf.rb.example b/config/initializers/wicked_pdf.rb.example
new file mode 100644
index 0000000..1473351
--- /dev/null
+++ b/config/initializers/wicked_pdf.rb.example
@@ -0,0 +1,7 @@
+module DMPRoadmap
+ class Application < Rails::Application
+ WickedPdf.config = {
+ :exe_path => '/usr/local/bin/wkhtmltopdf'
+ }
+ end
+end
\ No newline at end of file
diff --git a/config/initializers/wicked_pdf_example.rb b/config/initializers/wicked_pdf_example.rb
deleted file mode 100644
index 103b3e5..0000000
--- a/config/initializers/wicked_pdf_example.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module DMPRoadmap
- class Application < Rails::Application
-
- WickedPdf.config = {
- :exe_path => '/usr/local/bin/wkhtmltopdf'
- }
-
- end
-end
\ No newline at end of file
diff --git a/config/locale/app.pot b/config/locale/app.pot
new file mode 100644
index 0000000..30adcde
--- /dev/null
+++ b/config/locale/app.pot
@@ -0,0 +1,1711 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the app package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: app 1.0.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-15 12:42+0000\n"
+"PO-Revision-Date: 2017-06-15 12:42+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+msgid " (UK users only)"
+msgstr ""
+
+msgid " - "
+msgstr ""
+
+msgid " I accept the terms and conditions *"
+msgstr ""
+
+msgid " Plan"
+msgstr ""
+
+msgid " access to"
+msgstr ""
+
+msgid " access. "
+msgstr ""
+
+msgid " and "
+msgstr ""
+
+msgid " by"
+msgstr ""
+
+msgid " by "
+msgstr ""
+
+msgid " has been removed by "
+msgstr ""
+
+msgid " have been changed by"
+msgstr ""
+
+msgid " into your browser)"
+msgstr ""
+
+msgid " on "
+msgstr ""
+
+msgid " or "
+msgstr ""
+
+msgid " password. You can do this through the link below."
+msgstr ""
+
+msgid " provided by "
+msgstr ""
+
+msgid " team"
+msgstr ""
+
+msgid " that has been customised by "
+msgstr ""
+
+msgid " to accept the invitation, (or copy "
+msgstr ""
+
+msgid " will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on "
+msgstr ""
+
+msgid "\"Are you sure you want to unlink #{scheme.description} ID?\""
+msgstr ""
+
+msgid "\"Unlink your account from #{scheme.description}. You can link again at any time.\""
+msgstr ""
+
+msgid "\"Your account has been linked to #{scheme.description}.\""
+msgstr ""
+
+msgid "%d days"
+msgstr ""
+
+msgid "%d minutes"
+msgstr ""
+
+msgid "%d months"
+msgstr ""
+
+msgid "%d years"
+msgstr ""
+
+msgid "%{application_name}"
+msgstr ""
+
+msgid "%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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."
+msgstr ""
+
+msgid "%{application_name} is provided by the %{organisation_name}. You can find out more about us on our website. If you would like to contact us about %{application_name}, please fill out the form below."
+msgstr ""
+
+msgid "%{format} is not a valid exporting format. Available formats to export are %{available_formats}."
+msgstr ""
+
+msgid "%{value} is not a valid format"
+msgstr ""
+
+msgid "(Using custom PDF formatting values)"
+msgstr ""
+
+msgid "(Using template PDF formatting values)"
+msgstr ""
+
+msgid "-"
+msgstr ""
+
+msgid "... (continued)"
+msgstr ""
+
+msgid "
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.
"
+msgstr ""
+
+msgid "
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.
"
+msgstr ""
+
+msgid "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
"
+msgstr ""
+
+msgid "
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in %{application_name}, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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 Digital Curation Centre 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.
"
+msgstr ""
+
+msgid "
%{application_name} has been jointly developed by the %{organisation_name} to help you write data management plans.
"
+msgstr ""
+
+msgid "
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
"
+msgstr ""
+
+msgid "
%{application_name} stories from the %{organisation_abbreviation} website
"
+msgstr ""
+
+msgid "
Welcome. You are now ready to create your first DMP.Click the 'Create plan' button below to begin.
"
+msgstr ""
+
+msgid "
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.
"
+msgstr ""
+
+msgid "
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'.
"
+msgstr ""
+
+msgid "
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. %{application_name} has been produced by the %{organisation_name} to help research teams respond to this requirement, and any expectations that their institution or others may apply.
The %{organisation_abbreviation} 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 %{application_name} account, click on 'Create account' on the homepage.
We are constantly improving the user interface and functionality of %{application_name}. 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
"
+msgstr ""
+
+msgid "
Here you can view previously published versions of your template. These can no longer be modified.
"
+msgstr ""
+
+msgid "
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.
"
+msgstr ""
+
+msgid "
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.
"
+msgstr ""
+
+msgid "
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 %{organisation_abbreviation} or any Schools/Departments that you provide guidance for.
You can select multiple themes by using the CTRL button.
"
+msgstr ""
+
+msgid "
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
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.
"
+msgstr ""
+
+msgid "
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.
"
+msgstr ""
+
+msgid "
When you login to %{application_name} 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 %{application_name} 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.
"
+msgstr ""
+
+msgid "
You are about to unlink %{application_name} of your institutional credentials, would you like to continue?
"
+msgstr ""
+
+msgid "
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 %{application_name} if they don't already have an account. A notification is also issued when a user's permission level is changed.
"
+msgstr ""
+
+msgid "
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
"
+msgstr ""
+
+msgid "A Data Management Plan in %{application_name} has been shared with you"
+msgstr ""
+
+msgid "A colleague has invited you to contribute to their Data Management Plan at "
+msgstr ""
+
+msgid "A pertinent ID as determined by the funder and/or institution."
+msgstr ""
+
+msgid "A required setting has not been provided"
+msgstr ""
+
+msgid "A version of "
+msgstr ""
+
+msgid "API Information"
+msgstr ""
+
+msgid "API rights"
+msgstr ""
+
+msgid "API token"
+msgstr ""
+
+msgid "Abbreviation"
+msgstr ""
+
+msgid "About"
+msgstr ""
+
+msgid "About %{application_name}"
+msgstr ""
+
+msgid "Access removed"
+msgstr ""
+
+msgid "Actions"
+msgstr ""
+
+msgid "Add Annotations"
+msgstr ""
+
+msgid "Add an appropriate name for your guidance group. This name will be used to tell the end user where the guidance has come from. It will be appended to text identifying the theme e.g. \"[guidance group name]: guidance on data sharing\" so we suggest you just use the institution or department name."
+msgstr ""
+
+msgid "Add collaborator"
+msgstr ""
+
+msgid "Add guidance"
+msgstr ""
+
+msgid "Add guidance group"
+msgstr ""
+
+msgid "Add new phase +"
+msgstr ""
+
+msgid "Add note"
+msgstr ""
+
+msgid "Add option"
+msgstr ""
+
+msgid "Add question"
+msgstr ""
+
+msgid "Add section"
+msgstr ""
+
+msgid "Additional comment area will be displayed."
+msgstr ""
+
+msgid "Admin Details"
+msgstr ""
+
+msgid "Admin area"
+msgstr ""
+
+msgid "All the best,"
+msgstr ""
+
+msgid "Allows the user to amend the organisation details (name, URL etc) and add basic branding such as the logo"
+msgstr ""
+
+msgid "Allows the user to assign permissions to other users within the same organisation. Users can only assign permissions they own themselves"
+msgstr ""
+
+msgid "Allows the user to create and edit guidance"
+msgstr ""
+
+msgid "Allows the user to create new institutional templates, edit existing ones and customise funder templates"
+msgstr ""
+
+msgid "An error has occurred while saving/resetting your export settings."
+msgstr ""
+
+msgid "Annotations"
+msgstr ""
+
+msgid "Answer"
+msgstr ""
+
+msgid "Answer format"
+msgstr ""
+
+msgid "Answer questions"
+msgstr ""
+
+msgid "Answered"
+msgstr ""
+
+msgid "Answered at"
+msgstr ""
+
+msgid "Answered by"
+msgstr ""
+
+msgid "Answers"
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "Are you sure you want to remove this note?"
+msgstr ""
+
+msgid "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"
+msgstr ""
+
+msgid "Are you sure?"
+msgstr ""
+
+msgid "Back"
+msgstr ""
+
+msgid "Back to edit view"
+msgstr ""
+
+msgid "Background"
+msgstr ""
+
+msgid "Bad Credentials"
+msgstr ""
+
+msgid "Bad Parameters"
+msgstr ""
+
+msgid "Before submitting, please consider:"
+msgstr ""
+
+msgid "Before you get started, we need to ask a few questions to set you up with the best DMP template for your needs."
+msgstr ""
+
+msgid "Begin typing to see a filtered list"
+msgstr ""
+
+msgid "Below is a list of users registered for your organisation. You can sort the data by each field."
+msgstr ""
+
+msgid "Bottom"
+msgstr ""
+
+msgid "By "
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Cannot share plan with %{email} since that email matches with the owner of the plan."
+msgstr ""
+
+msgid "Change language"
+msgstr ""
+
+msgid "Change my password"
+msgstr ""
+
+msgid "Change organisation details"
+msgstr ""
+
+msgid "Check box"
+msgstr ""
+
+msgid "Check this box when you are ready for this guidance to appear on user's plans."
+msgstr ""
+
+msgid "Click here"
+msgstr ""
+
+msgid "Click here to accept the invitation"
+msgstr ""
+
+msgid "Click here to confirm your account"
+msgstr ""
+
+msgid "Click the link below to unlock your account"
+msgstr ""
+
+msgid "Co-owner"
+msgstr ""
+
+msgid "Collaborators"
+msgstr ""
+
+msgid "Comment"
+msgstr ""
+
+msgid "Comment removed."
+msgstr ""
+
+msgid "Comment was successfully created."
+msgstr ""
+
+msgid "Comment was successfully saved."
+msgstr ""
+
+msgid "Contact Email"
+msgstr ""
+
+msgid "Contact Us"
+msgstr ""
+
+msgid "Contact us"
+msgstr ""
+
+msgid "Create a new plan"
+msgstr ""
+
+msgid "Create a template"
+msgstr ""
+
+msgid "Create account"
+msgstr ""
+
+msgid "Create plan"
+msgstr ""
+
+msgid "Created"
+msgstr ""
+
+msgid "Created at"
+msgstr ""
+
+msgid "Current password"
+msgstr ""
+
+msgid "Customise"
+msgstr ""
+
+msgid "Default"
+msgstr ""
+
+msgid "Default answer"
+msgstr ""
+
+msgid "Default value"
+msgstr ""
+
+msgid "Delete"
+msgstr ""
+
+msgid "Delete Example Answer"
+msgstr ""
+
+msgid "Delete question"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Details"
+msgstr ""
+
+msgid "Details successfully updated."
+msgstr ""
+
+msgid "Didn't receive confirmation instructions?"
+msgstr ""
+
+msgid "Didn't receive unlock instructions?"
+msgstr ""
+
+msgid "Discard"
+msgstr ""
+
+msgid "Display additional comment area."
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dropdown"
+msgstr ""
+
+msgid "E.g ORCID http://orcid.org/."
+msgstr ""
+
+msgid "Edit"
+msgstr ""
+
+msgid "Edit Annotations"
+msgstr ""
+
+msgid "Edit User Privileges"
+msgstr ""
+
+msgid "Edit customisation"
+msgstr ""
+
+msgid "Edit phase"
+msgstr ""
+
+msgid "Edit phase details"
+msgstr ""
+
+msgid "Edit plan details"
+msgstr ""
+
+msgid "Edit profile"
+msgstr ""
+
+msgid "Edit question"
+msgstr ""
+
+msgid "Edit template details"
+msgstr ""
+
+msgid "Editor"
+msgstr ""
+
+msgid "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access."
+msgstr ""
+
+msgid "Email"
+msgstr ""
+
+msgid "Email address"
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences"
+msgstr ""
+
+msgid "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"
+msgstr ""
+
+msgid "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box."
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "Enter your guidance here. You can include links where needed."
+msgstr ""
+
+msgid "Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long."
+msgstr ""
+
+msgid "Error!"
+msgstr ""
+
+msgid "Example Answer"
+msgstr ""
+
+msgid "Example of answer"
+msgstr ""
+
+msgid "Export"
+msgstr ""
+
+msgid "Export settings updated successfully."
+msgstr ""
+
+msgid "Exporting public plan is under development. Apologies for any inconvience."
+msgstr ""
+
+msgid "Face"
+msgstr ""
+
+msgid "File Name"
+msgstr ""
+
+msgid "Fill in the required fields"
+msgstr ""
+
+msgid "Filter plans"
+msgstr ""
+
+msgid "First name"
+msgstr ""
+
+msgid "Font"
+msgstr ""
+
+msgid "Forgot your password?"
+msgstr ""
+
+msgid "Format"
+msgstr ""
+
+msgid "Funder"
+msgstr ""
+
+msgid "Funders templates"
+msgstr ""
+
+msgid "Funding organisation"
+msgstr ""
+
+msgid "Future plans"
+msgstr ""
+
+msgid "Get involved"
+msgstr ""
+
+msgid "Grant number"
+msgstr ""
+
+msgid "Grant permissions"
+msgstr ""
+
+msgid "Grant reference number if applicable [POST-AWARD DMPs ONLY]"
+msgstr ""
+
+msgid "Guidance"
+msgstr ""
+
+msgid "Guidance choices saved."
+msgstr ""
+
+msgid "Guidance group"
+msgstr ""
+
+msgid "Guidance group list"
+msgstr ""
+
+msgid "Guidance group was successfully created."
+msgstr ""
+
+msgid "Guidance group was successfully deleted."
+msgstr ""
+
+msgid "Guidance group was successfully updated."
+msgstr ""
+
+msgid "Guidance list"
+msgstr ""
+
+msgid "Guidance was successfully created."
+msgstr ""
+
+msgid "Guidance was successfully deleted."
+msgstr ""
+
+msgid "Guidance was successfully updated."
+msgstr ""
+
+msgid "Hello"
+msgstr ""
+
+msgid "Hello "
+msgstr ""
+
+msgid "Help"
+msgstr ""
+
+msgid "History"
+msgstr ""
+
+msgid "Home"
+msgstr ""
+
+msgid "How many plans?"
+msgstr ""
+
+msgid "How to use the API"
+msgstr ""
+
+msgid "ID"
+msgstr ""
+
+msgid "If applying for funding, state the name exactly as in the grant proposal."
+msgstr ""
+
+msgid "If applying for funding, state the title exactly as in the proposal."
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+msgstr ""
+
+msgid "If you decide to use the default DMPRoadmap logo, please check this box to remove your current logo."
+msgstr ""
+
+msgid "If you didn't request this, please ignore this email."
+msgstr ""
+
+msgid "If you don't want to accept the invitation, please ignore this email."
+msgstr ""
+
+msgid "If you would like to change your password please complete the following fields."
+msgstr ""
+
+msgid "Included Elements"
+msgstr ""
+
+msgid "Information was successfully created."
+msgstr ""
+
+msgid "Information was successfully deleted."
+msgstr ""
+
+msgid "Information was successfully updated."
+msgstr ""
+
+msgid "Institution"
+msgstr ""
+
+msgid "Invalid font face"
+msgstr ""
+
+msgid "Invalid font size"
+msgstr ""
+
+msgid "Invalid maximum pages"
+msgstr ""
+
+msgid "Invitation to %{email} issued successfully."
+msgstr ""
+
+msgid "Language"
+msgstr ""
+
+msgid "Last logged in"
+msgstr ""
+
+msgid "Last name"
+msgstr ""
+
+msgid "Last updated"
+msgstr ""
+
+msgid "Latest news"
+msgstr ""
+
+msgid "Left"
+msgstr ""
+
+msgid "List of users"
+msgstr ""
+
+msgid "Logo"
+msgstr ""
+
+msgid "Main organisation"
+msgstr ""
+
+msgid "Many thanks,"
+msgstr ""
+
+msgid "Margin"
+msgstr ""
+
+msgid "Margin cannot be negative"
+msgstr ""
+
+msgid "Margin value is invalid"
+msgstr ""
+
+msgid "Me"
+msgstr ""
+
+msgid "Message"
+msgstr ""
+
+msgid "Modify guidance"
+msgstr ""
+
+msgid "Modify templates"
+msgstr ""
+
+msgid "Multi select box"
+msgstr ""
+
+msgid "My Plan"
+msgstr ""
+
+msgid "My organisation isn't listed."
+msgstr ""
+
+msgid "My plans"
+msgstr ""
+
+msgid "My research organisation is not on the list"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Name (if different to above), telephone and email contact details"
+msgstr ""
+
+msgid "Name of Principal Investigator(s) or main researcher(s) on the project."
+msgstr ""
+
+msgid "New guidance"
+msgstr ""
+
+msgid "New password"
+msgstr ""
+
+msgid "New section title"
+msgstr ""
+
+msgid "New template"
+msgstr ""
+
+msgid "New to %{application_name}? Create an account today."
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "No additional comment area will be displayed."
+msgstr ""
+
+msgid "No funder associated with this plan"
+msgstr ""
+
+msgid "No items available."
+msgstr ""
+
+msgid "No matches"
+msgstr ""
+
+msgid "None"
+msgstr ""
+
+msgid "Not answered yet"
+msgstr ""
+
+msgid "Note"
+msgstr ""
+
+msgid "Note removed by"
+msgstr ""
+
+msgid "Note removed by you"
+msgstr ""
+
+msgid "Noted by:"
+msgstr ""
+
+msgid "Ok"
+msgstr ""
+
+msgid "On %{application_name}"
+msgstr ""
+
+msgid "On data management planning"
+msgstr ""
+
+msgid "Optional subset"
+msgstr ""
+
+msgid "Or, sign in with your institutional credentials"
+msgstr ""
+
+msgid "Order"
+msgstr ""
+
+msgid "Order of display"
+msgstr ""
+
+msgid "Organisation"
+msgstr ""
+
+msgid "Organisation details"
+msgstr ""
+
+msgid "Organisation name"
+msgstr ""
+
+msgid "Organisation type"
+msgstr ""
+
+msgid "Organisation was successfully updated."
+msgstr ""
+
+msgid "Organisational"
+msgstr ""
+
+msgid "Organisational (visibile to others within your organisation)"
+msgstr ""
+
+msgid "Organization"
+msgstr ""
+
+msgid "Original funder template has changed!"
+msgstr ""
+
+msgid "Other institutions"
+msgstr ""
+
+msgid "Own templates"
+msgstr ""
+
+msgid "Owner"
+msgstr ""
+
+msgid "PDF Formatting"
+msgstr ""
+
+msgid "Password"
+msgstr ""
+
+msgid "Password and comfirmation must match"
+msgstr ""
+
+msgid "Password confirmation"
+msgstr ""
+
+msgid "Permissions"
+msgstr ""
+
+msgid "Phase details"
+msgstr ""
+
+msgid "Plan Data Contact"
+msgstr ""
+
+msgid "Plan Description"
+msgstr ""
+
+msgid "Plan ID"
+msgstr ""
+
+msgid "Plan Name"
+msgstr ""
+
+msgid "Plan data contact"
+msgstr ""
+
+msgid "Plan details"
+msgstr ""
+
+msgid "Plan is already shared with %{email}."
+msgstr ""
+
+msgid "Plan name"
+msgstr ""
+
+msgid "Plan shared with %{email}."
+msgstr ""
+
+msgid "Plan was successfully deleted."
+msgstr ""
+
+msgid "Plan was successfully updated."
+msgstr ""
+
+msgid "Please add an abbreviation to your org for display with annotations!"
+msgstr ""
+
+msgid "Please enter a First name."
+msgstr ""
+
+msgid "Please enter a Last name."
+msgstr ""
+
+msgid "Please enter a password confirmation"
+msgstr ""
+
+msgid "Please enter a title for your template."
+msgstr ""
+
+msgid "Please enter a valid web address."
+msgstr ""
+
+msgid "Please enter an email address"
+msgstr ""
+
+msgid "Please enter an email address."
+msgstr ""
+
+msgid "Please enter the name of your organisation."
+msgstr ""
+
+msgid "Please enter your current password"
+msgstr ""
+
+msgid "Please enter your current password below when changing your email address."
+msgstr ""
+
+msgid "Please enter your email"
+msgstr ""
+
+msgid "Please enter your first name."
+msgstr ""
+
+msgid "Please enter your organisation's name."
+msgstr ""
+
+msgid "Please enter your password to change email address."
+msgstr ""
+
+msgid "Please enter your surname or family name."
+msgstr ""
+
+msgid "Please fill in the basic project details below"
+msgstr ""
+
+msgid "Please fill in the basic project details below and click 'Update' to save"
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "Please only enter up to 165 characters, you have used"
+msgstr ""
+
+msgid "Please select an organisation, or select Other."
+msgstr ""
+
+msgid "Please select one"
+msgstr ""
+
+msgid "Preview"
+msgstr ""
+
+msgid "Primary research organisation"
+msgstr ""
+
+msgid "Principal Investigator / Researcher"
+msgstr ""
+
+msgid "Principal Investigator/Researcher"
+msgstr ""
+
+msgid "Principal Investigator/Researcher ID"
+msgstr ""
+
+msgid "Private"
+msgstr ""
+
+msgid "Private (owners, co-owners, and administrators only) See our Terms of Use."
+msgstr ""
+
+msgid "Privileges"
+msgstr ""
+
+msgid "Project title"
+msgstr ""
+
+msgid "Provides the user with an API token and grants rights to harvest information from the tool"
+msgstr ""
+
+msgid "Public"
+msgstr ""
+
+msgid "Public (Your DMP will appear on the Public DMPs page of this site)"
+msgstr ""
+
+msgid "Public DMPs"
+msgstr ""
+
+msgid "Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines."
+msgstr ""
+
+msgid "Publish"
+msgstr ""
+
+msgid "Publish changes"
+msgstr ""
+
+msgid "Published"
+msgstr ""
+
+msgid "Question"
+msgstr ""
+
+msgid "Question not answered"
+msgstr ""
+
+msgid "Question not answered."
+msgstr ""
+
+msgid "Question number"
+msgstr ""
+
+msgid "Question text"
+msgstr ""
+
+msgid "Question text is empty, please enter your question."
+msgstr ""
+
+msgid "Questions"
+msgstr ""
+
+msgid "Radio buttons"
+msgstr ""
+
+msgid "Read more on the "
+msgstr ""
+
+msgid "Read only"
+msgstr ""
+
+msgid "Releases"
+msgstr ""
+
+msgid "Remember me"
+msgstr ""
+
+msgid "Remove"
+msgstr ""
+
+msgid "Remove user access"
+msgstr ""
+
+msgid "Reset"
+msgstr ""
+
+msgid "Right"
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Save Unsuccessful."
+msgstr ""
+
+msgid "Saving..."
+msgstr ""
+
+msgid "Screencast on how to use %{application_name}"
+msgstr ""
+
+msgid "Section"
+msgstr ""
+
+msgid "Sections"
+msgstr ""
+
+msgid "Select a template"
+msgstr ""
+
+msgid "Select an action"
+msgstr ""
+
+msgid "Select the funding organisation"
+msgstr ""
+
+msgid "Select the primary research organisation responsible"
+msgstr ""
+
+msgid "Select which group this guidance relates to."
+msgstr ""
+
+msgid "Select which theme(s) this guidance relates to."
+msgstr ""
+
+msgid "Selected option(s)"
+msgstr ""
+
+msgid "Share"
+msgstr ""
+
+msgid "Share note"
+msgstr ""
+
+msgid "Share note with collaborators"
+msgstr ""
+
+msgid "Sharing details successfully updated."
+msgstr ""
+
+msgid "Should this guidance apply:"
+msgstr ""
+
+msgid "Sign in"
+msgstr ""
+
+msgid "Sign out"
+msgstr ""
+
+msgid "Signed in as "
+msgstr ""
+
+msgid "Size"
+msgstr ""
+
+msgid "Someone has requested a link to change your "
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Successfully unlinked your account from %{is}."
+msgstr ""
+
+msgid "Suggested answer"
+msgstr ""
+
+msgid "Suggested answer/ Example"
+msgstr ""
+
+msgid "Super admin area"
+msgstr ""
+
+msgid "Template"
+msgstr ""
+
+msgid "Template History"
+msgstr ""
+
+msgid "Template details"
+msgstr ""
+
+msgid "Templates"
+msgstr ""
+
+msgid "Terms of use"
+msgstr ""
+
+msgid "Test/Practice"
+msgstr ""
+
+msgid "Test/Practice (your plan is not visible to other users) See our Terms of Use."
+msgstr ""
+
+msgid "Text"
+msgstr ""
+
+msgid "Text area"
+msgstr ""
+
+msgid "Text field"
+msgstr ""
+
+msgid "Thank you for registering. Please confirm your email address"
+msgstr ""
+
+msgid "That email address is already registered."
+msgstr ""
+
+msgid "That template is not currently published."
+msgstr ""
+
+msgid "The"
+msgstr ""
+
+msgid "The "
+msgstr ""
+
+msgid "The email address of an administrator at your organisation. Your users will use this address if they have questions."
+msgstr ""
+
+msgid "The following answer cannot be saved"
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "Themes"
+msgstr ""
+
+msgid "There are no public DMPs."
+msgstr ""
+
+msgid "There seems to be a problem with your logo. Please upload it again."
+msgstr ""
+
+msgid "These are the basic details for your organisation."
+msgstr ""
+
+msgid "This allows you to order questions within a section."
+msgstr ""
+
+msgid "This allows you to order sections."
+msgstr ""
+
+msgid "This allows you to order the phases of your template."
+msgstr ""
+
+msgid "This document was generated by %{application_name}"
+msgstr ""
+
+msgid "This must match what you entered in the previous field."
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "This plan is based on the default template."
+msgstr ""
+
+msgid "This plan is based on:"
+msgstr ""
+
+msgid "This section is locked for editing by "
+msgstr ""
+
+msgid "Title"
+msgstr ""
+
+msgid "Top"
+msgstr ""
+
+msgid "Top banner text"
+msgstr ""
+
+msgid "Transfer customisation"
+msgstr ""
+
+msgid "Un-published"
+msgstr ""
+
+msgid "Unable to link your account to %{scheme}."
+msgstr ""
+
+msgid "Unable to unlink your account from %{is}."
+msgstr ""
+
+msgid "Unknown column name."
+msgstr ""
+
+msgid "Unknown formatting setting"
+msgstr ""
+
+msgid "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"
+msgstr ""
+
+msgid "Unlink account"
+msgstr ""
+
+msgid "Unlink institutional credentials alert"
+msgstr ""
+
+msgid "Unlock my account"
+msgstr ""
+
+msgid "Unpublish"
+msgstr ""
+
+msgid "Unpublished"
+msgstr ""
+
+msgid "Unpublished changes"
+msgstr ""
+
+msgid "Unsaved answers"
+msgstr ""
+
+msgid "Unsaved changes"
+msgstr ""
+
+msgid "Upload a new logo file"
+msgstr ""
+
+msgid "Users"
+msgstr ""
+
+msgid "Using the generic Data Management Plan"
+msgstr ""
+
+msgid "Version"
+msgstr ""
+
+msgid "View"
+msgstr ""
+
+msgid "View all guidance"
+msgstr ""
+
+msgid "View all templates"
+msgstr ""
+
+msgid "View phase"
+msgstr ""
+
+msgid "View plans"
+msgstr ""
+
+msgid "Visibility"
+msgstr ""
+
+msgid "We found multiple DMP templates corresponding to the funder."
+msgstr ""
+
+msgid "We found multiple DMP templates corresponding to the research organisation."
+msgstr ""
+
+msgid "We found multiple DMP templates corresponding to your funder."
+msgstr ""
+
+msgid "Website"
+msgstr ""
+
+msgid "Welcome to "
+msgstr ""
+
+msgid "Welcome to %{application_name}"
+msgstr ""
+
+msgid "Welcome."
+msgstr ""
+
+msgid "What research project are you planning?"
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "Which DMP template would you like to use?"
+msgstr ""
+
+msgid "Would you like to save them now?"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?"
+msgstr ""
+
+msgid "You are about to delete '%{guidance_summary}'. Are you sure?"
+msgstr ""
+
+msgid "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?"
+msgstr ""
+
+msgid "You are about to delete '%{question_text}'. Are you sure?"
+msgstr ""
+
+msgid "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?"
+msgstr ""
+
+msgid "You are about to delete a guidance for '%{question_text}'. Are you sure?"
+msgstr ""
+
+msgid "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+msgstr ""
+
+msgid "You are about to delete an example answer for '%{question_text}'. Are you sure?"
+msgstr ""
+
+msgid "You are not authorized to perform this action."
+msgstr ""
+
+msgid "You are viewing a historical version of this template. You will not be able to make changes."
+msgstr ""
+
+msgid "You can add an example answer to help users respond. These will be presented above the answer box and can be copied/ pasted."
+msgstr ""
+
+msgid "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."
+msgstr ""
+
+msgid "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;
"
+msgstr ""
+
+msgid "You can edit any of the details below."
+msgstr ""
+
+msgid "You can not continue until you have filled in all of the required information."
+msgstr ""
+
+msgid "You can not edit a historical version of this template."
+msgstr ""
+
+msgid "You can not publish a historical version of this template."
+msgstr ""
+
+msgid "You cannot delete historical versions of this template."
+msgstr ""
+
+msgid "You have altered answers but have not saved them:"
+msgstr ""
+
+msgid "You have been given "
+msgstr ""
+
+msgid "You have been granted permission by your organisation to use our API. Your API token and instructions for using the API endpoints can be found "
+msgstr ""
+
+msgid "You have un-published changes"
+msgstr ""
+
+msgid "You have unsaved answers in the following sections:"
+msgstr ""
+
+msgid "You must accept the terms and conditions to register."
+msgstr ""
+
+msgid "You must enter a valid email address."
+msgstr ""
+
+msgid "You need to sign in or sign up before continuing."
+msgstr ""
+
+msgid "You now have "
+msgstr ""
+
+msgid "Your"
+msgstr ""
+
+msgid "Your ORCID"
+msgstr ""
+
+msgid "Your access to "
+msgstr ""
+
+msgid "Your account has been successfully linked to %{scheme}."
+msgstr ""
+
+msgid "Your account won't be created until you access the link above and set your password."
+msgstr ""
+
+msgid "Your browser does not support the video tag."
+msgstr ""
+
+msgid "Your password must contain at least 8 characters."
+msgstr ""
+
+msgid "Your permissions relating to "
+msgstr ""
+
+msgid "Your template has been published and is now available to users."
+msgstr ""
+
+msgid "Your template is no longer published. Users will not be able to create new DMPs for this template until you re-publish it"
+msgstr ""
+
+msgid "a day"
+msgstr ""
+
+msgid "about %d hours"
+msgstr ""
+
+msgid "about a minute"
+msgstr ""
+
+msgid "about a month"
+msgstr ""
+
+msgid "about a year"
+msgstr ""
+
+msgid "about an hour"
+msgstr ""
+
+msgid "account has been locked due to an excessive number of unsuccessful sign in attempts."
+msgstr ""
+
+msgid "activerecord.errors.messages.record_invalid"
+msgstr ""
+
+msgid "activerecord.errors.models.user.attributes.current_password.invalid"
+msgstr ""
+
+msgid "activerecord.errors.models.user.attributes.email.blank"
+msgstr ""
+
+msgid "activerecord.errors.models.user.attributes.password.blank"
+msgstr ""
+
+msgid "activerecord.errors.models.user.attributes.password_confirmation.confirmation"
+msgstr ""
+
+msgid "add guidance text"
+msgstr ""
+
+msgid "ago"
+msgstr ""
+
+msgid "approx. %{space_used}%% of available space used (max %{num_pages} pages)"
+msgstr ""
+
+msgid "by "
+msgstr ""
+
+msgid "can't be blank"
+msgstr ""
+
+msgid "can't be larger than 500KB"
+msgstr ""
+
+msgid "can't be less than zero"
+msgstr ""
+
+msgid "e.g. School/ Department"
+msgstr ""
+
+msgid "example answer"
+msgstr ""
+
+msgid "from now"
+msgstr ""
+
+msgid "generic template"
+msgstr ""
+
+msgid "guidance"
+msgstr ""
+
+msgid "guidance group"
+msgstr ""
+
+msgid "guidance on"
+msgstr ""
+
+msgid "height must be less than 100px"
+msgstr ""
+
+msgid "helpers.is_test"
+msgstr ""
+
+msgid "helpers.links.cancel"
+msgstr ""
+
+msgid "helpers.project.is_test_help_text"
+msgstr ""
+
+msgid "into your browser"
+msgstr ""
+
+msgid "less than a minute"
+msgstr ""
+
+msgid "must be logged in"
+msgstr ""
+
+msgid "must be one of the following formats: jpeg, jpg, png, gif, bmp"
+msgstr ""
+
+msgid "must be unique"
+msgstr ""
+
+msgid "must have access to guidances api"
+msgstr ""
+
+msgid "must have access to plans api"
+msgstr ""
+
+msgid "no research organisation is associated with this plan"
+msgstr ""
+
+msgid "note"
+msgstr ""
+
+msgid "or copy"
+msgstr ""
+
+msgid "organisation"
+msgstr ""
+
+msgid "phase"
+msgstr ""
+
+msgid "plan"
+msgstr ""
+
+msgid "profile"
+msgstr ""
+
+msgid "question"
+msgstr ""
+
+msgid "questions answered"
+msgstr ""
+
+msgid "role"
+msgstr ""
+
+msgid "section"
+msgstr ""
+
+msgid "select a guidance group"
+msgstr ""
+
+msgid "select at least one theme"
+msgstr ""
+
+msgid "since %{name} saved the answer below while you were editing. Please, combine your changes and then save the answer again."
+msgstr ""
+
+msgid "template"
+msgstr ""
+
+msgid "user"
+msgstr ""
+
+msgid "user must be in your organisation"
+msgstr ""
diff --git a/config/locale/de/app.po b/config/locale/de/app.po
new file mode 100644
index 0000000..b28632b
--- /dev/null
+++ b/config/locale/de/app.po
@@ -0,0 +1,1835 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the app package.
+# FIRST AUTHOR , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: app 1.0.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2017-05-02 14:54+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+msgid " (UK users only)"
+msgstr ""
+
+msgid " - "
+msgstr " - "
+
+#, fuzzy
+msgid " I accept the terms and conditions *"
+msgstr "Ich akzeptiere die Nutzungsbedingungen *"
+
+#, fuzzy
+msgid " Plan"
+msgstr "plans"
+
+msgid " access to"
+msgstr ""
+
+msgid " access. "
+msgstr ""
+
+msgid " and "
+msgstr ""
+
+#, fuzzy
+msgid " by"
+msgstr " von "
+
+msgid " by "
+msgstr " von "
+
+#, fuzzy
+msgid " has been removed by "
+msgstr " von "
+
+#, fuzzy
+msgid " have been changed by"
+msgstr " von "
+
+#, fuzzy
+msgid " into your browser)"
+msgstr "into your browser)."
+
+msgid " on "
+msgstr ""
+
+msgid " or "
+msgstr ""
+
+#, fuzzy
+msgid " password. You can do this through the link below."
+msgstr "password. You can do this through the link below."
+
+#, fuzzy
+msgid " provided by "
+msgstr " von "
+
+#, fuzzy
+msgid " team"
+msgstr "am"
+
+#, fuzzy
+msgid " that has been customised by "
+msgstr " von "
+
+#, fuzzy
+msgid " to accept the invitation, (or copy "
+msgstr "(or copy"
+
+msgid " will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on "
+msgstr ""
+
+#, fuzzy
+msgid "\"Are you sure you want to unlink #{scheme.description} ID?\""
+msgstr "ID"
+
+msgid "\"Unlink your account from #{scheme.description}. You can link again at any time.\""
+msgstr ""
+
+#, fuzzy
+msgid "\"Your account has been linked to #{scheme.description}.\""
+msgstr "Your "
+
+msgid "%d days"
+msgstr ""
+
+msgid "%d minutes"
+msgstr ""
+
+msgid "%d months"
+msgstr ""
+
+msgid "%d years"
+msgstr ""
+
+msgid "%{application_name}"
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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."
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "%{application_name} is provided by the %{organisation_name}. You can find out more about us on our website. If you would like to contact us about %{application_name}, please fill out the form below."
+msgstr "DMPonline"
+
+msgid "%{format} is not a valid exporting format. Available formats to export are %{available_formats}."
+msgstr ""
+
+msgid "%{value} is not a valid format"
+msgstr ""
+
+msgid "(Using custom PDF formatting values)"
+msgstr "(Verwende eigene Werte bei PDF-Formatierung)"
+
+msgid "(Using template PDF formatting values)"
+msgstr "(Verwende Vorlagenwerte bei PDF-Formatting)"
+
+msgid "-"
+msgstr ""
+
+msgid "... (continued)"
+msgstr ""
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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."
+
+msgid "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
"
+msgstr "
Geben Sie eine Beschreibung ein, die Ihnen bei der Unterscheidung von Vorlagen hilft, falls Sie z.B. welche für unterschiedliche Zielgruppen besitzen.
"
+
+msgid "
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
"
+msgstr "
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.
DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in %{application_name}, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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 Digital Curation Centre 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.
"
+msgstr "
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.
/files/DMP_Checklist_2013.pdf'>DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in DMPonline, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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.
"
+
+msgid "
%{application_name} has been jointly developed by the %{organisation_name} to help you write data management plans.
"
+msgstr "
DMPonline wurde vom Digital Curation Centre entwickelt, um Sie bei der Erstellung von Data-Managment-Plänen zu unterstützen.
"
+
+msgid "
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
"
+msgstr ""
+
+msgid "
%{application_name} stories from the %{organisation_abbreviation} website
"
+msgstr "
Geschichten zu DMPonline auf der DCC-Seite
"
+
+msgid "
Welcome. You are now ready to create your first DMP.Click the 'Create plan' button below to begin.
"
+msgstr "
Willkommen. Sie können nun ihren ersten DMP erstellen. Wählen Sie 'Plan erstellen' weiter unten aus, um zu beginnen.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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'.
"
+msgstr "
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'.
"
+
+msgid "
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. %{application_name} has been produced by the %{organisation_name} to help research teams respond to this requirement, and any expectations that their institution or others may apply.
The %{organisation_abbreviation} 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 %{application_name} account, click on 'Create account' on the homepage.
We are constantly improving the user interface and functionality of %{application_name}. 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
"
+msgstr "
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.
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.
"
+
+msgid "
Here you can view previously published versions of your template. These can no longer be modified.
"
+msgstr ""
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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 %{organisation_abbreviation} or any Schools/Departments that you provide guidance for.
You can select multiple themes by using the CTRL button.
"
+msgstr "
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.
"
+
+msgid "
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
When you login to %{application_name} 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 %{application_name} 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.
"
+msgstr "
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.
"
+
+msgid "
You are about to unlink %{application_name} of your institutional credentials, would you like to continue?
"
+msgstr "
You are about to unlink DMP Builder of your institutional credentials, would you like to continue?
"
+
+#, fuzzy
+msgid "
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 %{application_name} if they don't already have an account. A notification is also issued when a user's permission level is changed.
"
+msgstr "
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.
"
+
+#, fuzzy
+msgid "
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
"
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "A Data Management Plan in %{application_name} has been shared with you"
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "A colleague has invited you to contribute to their Data Management Plan at "
+msgstr "A colleague has invited you to contribute to their Data Management Plan at"
+
+msgid "A pertinent ID as determined by the funder and/or institution."
+msgstr "Eine Identifikationskürzel, wie es von Förderern oder Institutionen vergeben wird."
+
+msgid "A required setting has not been provided"
+msgstr "Eine benötigte Einstellung wurde nicht erbracht"
+
+msgid "A version of "
+msgstr ""
+
+msgid "API Information"
+msgstr ""
+
+msgid "API rights"
+msgstr ""
+
+msgid "API token"
+msgstr ""
+
+msgid "Abbreviation"
+msgstr "Abkürzung"
+
+msgid "About"
+msgstr "Über uns"
+
+msgid "About %{application_name}"
+msgstr "Über DMPonline"
+
+msgid "Access removed"
+msgstr ""
+
+msgid "Actions"
+msgstr "Aktionen"
+
+msgid "Add Annotations"
+msgstr ""
+
+#, fuzzy
+msgid "Add an appropriate name for your guidance group. This name will be used to tell the end user where the guidance has come from. It will be appended to text identifying the theme e.g. \"[guidance group name]: guidance on data sharing\" so we suggest you just use the institution or department name."
+msgstr "Hilfestellungsgruppe"
+
+msgid "Add collaborator"
+msgstr "Mitarbeitende(n) hinzufügen"
+
+msgid "Add guidance"
+msgstr "Hilfestellung hinzufügen"
+
+msgid "Add guidance group"
+msgstr "Gruppe für Hilfestellungen hinzufügen"
+
+msgid "Add new phase +"
+msgstr "Neue Phase hinzufügen"
+
+msgid "Add note"
+msgstr "Füge Kommentar hinzu"
+
+msgid "Add option"
+msgstr "Option hinzufügen"
+
+msgid "Add question"
+msgstr "Frage hinzufügen"
+
+msgid "Add section"
+msgstr "Abschnitt hinzufügen"
+
+msgid "Additional comment area will be displayed."
+msgstr ""
+
+msgid "Admin Details"
+msgstr ""
+
+msgid "Admin area"
+msgstr "Administativer Bereich"
+
+msgid "All the best,"
+msgstr ""
+
+#, fuzzy
+msgid "Allows the user to amend the organisation details (name, URL etc) and add basic branding such as the logo"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "Allows the user to assign permissions to other users within the same organisation. Users can only assign permissions they own themselves"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "Allows the user to create and edit guidance"
+msgstr "user"
+
+#, fuzzy
+msgid "Allows the user to create new institutional templates, edit existing ones and customise funder templates"
+msgstr "templates"
+
+msgid "An error has occurred while saving/resetting your export settings."
+msgstr ""
+
+msgid "Annotations"
+msgstr ""
+
+#, fuzzy
+msgid "Answer"
+msgstr "Antworten"
+
+msgid "Answer format"
+msgstr "Antwortform"
+
+msgid "Answer questions"
+msgstr "Fragen beantworten"
+
+#, fuzzy
+msgid "Answered"
+msgstr "Beantwortet "
+
+#, fuzzy
+msgid "Answered at"
+msgstr "Beantwortet "
+
+#, fuzzy
+msgid "Answered by"
+msgstr "Beantwortet "
+
+msgid "Answers"
+msgstr "Antworten"
+
+msgid "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."
+msgstr "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."
+
+msgid "Are you sure you want to remove this note?"
+msgstr ""
+
+msgid "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"
+msgstr "Sind Sie sicher, dass sie diesen Plan löschen wollen?"
+
+msgid "Are you sure?"
+msgstr "Sind Sie sicher?"
+
+msgid "Back"
+msgstr "Zurück"
+
+msgid "Back to edit view"
+msgstr "Zurück, um die Ansicht zu bearbeiten"
+
+msgid "Background"
+msgstr "Hintergrund"
+
+msgid "Bad Credentials"
+msgstr ""
+
+msgid "Bad Parameters"
+msgstr ""
+
+msgid "Before submitting, please consider:"
+msgstr ""
+
+#, fuzzy
+msgid "Before you get started, we need to ask a few questions to set you up with the best DMP template for your needs."
+msgstr "Fragen"
+
+msgid "Begin typing to see a filtered list"
+msgstr ""
+
+msgid "Below is a list of users registered for your organisation. You can sort the data by each field."
+msgstr "Folgend findet sich die Liste von Benutzern registriert bzgl. Ihrer Org. Sie können diese Liste bzgl. aller Felder sortieren."
+
+msgid "Bottom"
+msgstr "Unten"
+
+msgid "By "
+msgstr ""
+
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#, fuzzy
+msgid "Cannot share plan with %{email} since that email matches with the owner of the plan."
+msgstr "plans"
+
+msgid "Change language"
+msgstr ""
+
+#, fuzzy
+msgid "Change my password"
+msgstr "Passwort ändern"
+
+#, fuzzy
+msgid "Change organisation details"
+msgstr "Organisation"
+
+msgid "Check box"
+msgstr "Checkbox"
+
+msgid "Check this box when you are ready for this guidance to appear on user's plans."
+msgstr "Markieren Sie dieses Kästchen, wenn Sie bereit sind, für diese Anleitung für Benutzer-Pläne zu erscheinen."
+
+msgid "Click here"
+msgstr ""
+
+msgid "Click here to accept the invitation"
+msgstr "Click here to accept the invitation"
+
+msgid "Click here to confirm your account"
+msgstr "Click here to confirm your account"
+
+#, fuzzy
+msgid "Click the link below to unlock your account"
+msgstr "Click the link below to unlock your account:"
+
+msgid "Co-owner"
+msgstr "Miteigentümer"
+
+msgid "Collaborators"
+msgstr "Mitarbeitende"
+
+msgid "Comment"
+msgstr "Kommentar"
+
+#, fuzzy
+msgid "Comment removed."
+msgstr "Kommentar"
+
+msgid "Comment was successfully created."
+msgstr ""
+
+#, fuzzy
+msgid "Comment was successfully saved."
+msgstr "Plan wurde erfolgreich angelegt."
+
+msgid "Contact Email"
+msgstr "Kontakt Email"
+
+#, fuzzy
+msgid "Contact Us"
+msgstr "Kontakt"
+
+msgid "Contact us"
+msgstr "Kontakt"
+
+msgid "Create a new plan"
+msgstr "Einen neuen Plan erstellen"
+
+msgid "Create a template"
+msgstr "Vorlage erstellen"
+
+msgid "Create account"
+msgstr "Registrieren"
+
+msgid "Create plan"
+msgstr "Erstelle Plan"
+
+msgid "Created"
+msgstr "Erstellt"
+
+msgid "Created at"
+msgstr "Angelegt am"
+
+msgid "Current password"
+msgstr "Aktuelles Passwort"
+
+msgid "Customise"
+msgstr "Anpassen"
+
+msgid "Default"
+msgstr "Vorgabe"
+
+msgid "Default answer"
+msgstr "Vorauswahl"
+
+msgid "Default value"
+msgstr "Wertvorgabe"
+
+msgid "Delete"
+msgstr "Löschen"
+
+#, fuzzy
+msgid "Delete Example Answer"
+msgstr "Beispielantwort"
+
+msgid "Delete question"
+msgstr "Frage löschen"
+
+msgid "Description"
+msgstr ""
+
+msgid "Details"
+msgstr "Details"
+
+msgid "Details successfully updated."
+msgstr ""
+
+msgid "Didn't receive confirmation instructions?"
+msgstr "Bestätigungsanleitungen nicht erhalten?"
+
+msgid "Didn't receive unlock instructions?"
+msgstr "Entsperrungsanleitungen nicht erhalten?"
+
+msgid "Discard"
+msgstr "Verwerfen"
+
+msgid "Display additional comment area."
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dropdown"
+msgstr "Klappliste"
+
+msgid "E.g ORCID http://orcid.org/."
+msgstr "z.B. die ORCID (http://orcid.org/)."
+
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#, fuzzy
+msgid "Edit Annotations"
+msgstr "Bearbeiten"
+
+msgid "Edit User Privileges"
+msgstr "Bearbeiten Benutzerberechtigungen"
+
+msgid "Edit customisation"
+msgstr "Anpassungen bearbeiten"
+
+msgid "Edit phase"
+msgstr "Phase bearbeiten"
+
+msgid "Edit phase details"
+msgstr "Details der Phase bearbeiten"
+
+msgid "Edit plan details"
+msgstr "Plandetails bearbeiten"
+
+msgid "Edit profile"
+msgstr "Profil bearbeiten"
+
+msgid "Edit question"
+msgstr "Frage bearbeiten"
+
+msgid "Edit template details"
+msgstr "Details der Vorlage bearbeiten"
+
+#, fuzzy
+msgid "Editor"
+msgstr "Bearbeiten"
+
+msgid "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access."
+msgstr "Editoren können zu Plan beitragen. Miteigentümer haben zusätzliche Rechte um Plandetails und Zugriffsrechte bearbeiten zu können."
+
+msgid "Email"
+msgstr "E-Mail"
+
+msgid "Email address"
+msgstr "E-Mail-Adresse"
+
+msgid "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."
+msgstr "Geben Sie eine kurze Beschreibung an. Diese wird den Nutzern oberhalb der Zusammenfassung der Abschnitte und der Fragen, die sie beantowrten müssen, angezeigt."
+
+msgid "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences"
+msgstr "Geben Sie eine Beschreibung, die hilft, zwischen den verschiedenen Vorlagen zu unterscheiden, z.B. für verschiedene Zielgruppen"
+
+msgid "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"
+msgstr "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'"
+
+msgid "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box."
+msgstr "Geben Sie alle Optionen an, die angezeigt werden sollen. Sie können eine der Option als Vorauswahl mit Hilfe der entsprechenden Checkbox markieren."
+
+msgid "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."
+msgstr "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."
+
+msgid "Enter your guidance here. You can include links where needed."
+msgstr "Hilfestellung hier eingeben; Verweise auf andere Web-Seiten können integriert werden."
+
+msgid "Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long."
+msgstr ""
+
+msgid "Error!"
+msgstr "Fehler!"
+
+#, fuzzy
+msgid "Example Answer"
+msgstr "Beispielantwort"
+
+#, fuzzy
+msgid "Example of answer"
+msgstr "Beispielantwort"
+
+msgid "Export"
+msgstr "Export"
+
+#, fuzzy
+msgid "Export settings updated successfully."
+msgstr "Export"
+
+#, fuzzy
+msgid "Exporting public plan is under development. Apologies for any inconvience."
+msgstr "Export"
+
+msgid "Face"
+msgstr "Schriftart"
+
+msgid "File Name"
+msgstr "Dateiname"
+
+msgid "Fill in the required fields"
+msgstr ""
+
+msgid "Filter plans"
+msgstr "Filter Pläne"
+
+msgid "First name"
+msgstr "Vorname"
+
+msgid "Font"
+msgstr "Schrift"
+
+msgid "Forgot your password?"
+msgstr "Passwort vergessen?"
+
+msgid "Format"
+msgstr ""
+
+msgid "Funder"
+msgstr "Funder"
+
+msgid "Funders templates"
+msgstr "Vorlagen der Geldgeber"
+
+#, fuzzy
+msgid "Funding organisation"
+msgstr "Organisation"
+
+msgid "Future plans"
+msgstr ""
+
+msgid "Get involved"
+msgstr ""
+
+msgid "Grant number"
+msgstr "Grantnummer"
+
+msgid "Grant permissions"
+msgstr ""
+
+msgid "Grant reference number if applicable [POST-AWARD DMPs ONLY]"
+msgstr "Das Förderkennzeichen als Referenz, sofern sinnvoll (Nur für Datenmanagement-Pläne nach der Bewilligung)."
+
+msgid "Guidance"
+msgstr "Hilfestellung"
+
+#, fuzzy
+msgid "Guidance choices saved."
+msgstr "Hilfestellung"
+
+msgid "Guidance group"
+msgstr "Hilfestellungsgruppe"
+
+msgid "Guidance group list"
+msgstr "Liste der Gruppen für Hilfestellungen"
+
+msgid "Guidance group was successfully created."
+msgstr "Hilfestellungsgruppe erfolgreich erzeugt."
+
+msgid "Guidance group was successfully deleted."
+msgstr "Hilfestellungsgruppe erfolgreich gelöscht."
+
+msgid "Guidance group was successfully updated."
+msgstr "Hilfestellungsgruppe erfolgreich aktualisiert."
+
+msgid "Guidance list"
+msgstr "Liste der Hilfestellungen"
+
+msgid "Guidance was successfully created."
+msgstr "Hilfestellung erfolgreich angelegt."
+
+#, fuzzy
+msgid "Guidance was successfully deleted."
+msgstr "Hilfestellung erfolgreich angelegt."
+
+msgid "Guidance was successfully updated."
+msgstr "Hilfestellung erfolgreich aktualisiert."
+
+msgid "Hello"
+msgstr "Hello"
+
+#, fuzzy
+msgid "Hello "
+msgstr "Hello"
+
+msgid "Help"
+msgstr "Hilfe"
+
+msgid "History"
+msgstr ""
+
+msgid "Home"
+msgstr "Start"
+
+msgid "How many plans?"
+msgstr "Wie viele Pläne?"
+
+msgid "How to use the API"
+msgstr ""
+
+msgid "ID"
+msgstr "ID"
+
+msgid "If applying for funding, state the name exactly as in the grant proposal."
+msgstr "Falls Sie einen Förderantrag stellen, geben Sie bitte den Namen exakt genau so an, wie im Förderantrag."
+
+#, fuzzy
+msgid "If applying for funding, state the title exactly as in the proposal."
+msgstr "Falls Sie einen Förderantrag stellen, geben Sie bitte den Namen exakt genau so an, wie im Förderantrag."
+
+msgid "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."
+msgstr "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."
+
+msgid "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+msgstr "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+
+msgid "If you decide to use the default DMPRoadmap logo, please check this box to remove your current logo."
+msgstr "Wenn Sie die Standard DMPRoadmap Logo verwenden entscheiden , prüfen Sie bitte dieses Feld Ihre aktuelle Logo zu entfernen."
+
+msgid "If you didn't request this, please ignore this email."
+msgstr ""
+
+msgid "If you don't want to accept the invitation, please ignore this email."
+msgstr ""
+
+msgid "If you would like to change your password please complete the following fields."
+msgstr "Zum Ändern Ihres Passworts folgende Felder ausfüllen."
+
+msgid "Included Elements"
+msgstr "Enthaltene Elemente"
+
+msgid "Information was successfully created."
+msgstr "Information wurde erfolgreich angelegt."
+
+msgid "Information was successfully deleted."
+msgstr "Information wurde erfolgreiche entfernt."
+
+msgid "Information was successfully updated."
+msgstr "Information wurde erfolgreich aktuallisiert"
+
+msgid "Institution"
+msgstr "Institution"
+
+msgid "Invalid font face"
+msgstr "Ungültige Schriftart"
+
+msgid "Invalid font size"
+msgstr "Ungültige Schriftgröße"
+
+msgid "Invalid maximum pages"
+msgstr "Ungültige maximale Anzahl von Seiten"
+
+msgid "Invitation to %{email} issued successfully."
+msgstr ""
+
+msgid "Language"
+msgstr ""
+
+msgid "Last logged in"
+msgstr "Zuletzt angemeldet"
+
+msgid "Last name"
+msgstr "Nachname"
+
+msgid "Last updated"
+msgstr "Zuletzt aktualisiert"
+
+msgid "Latest news"
+msgstr "Neuigkeiten"
+
+msgid "Left"
+msgstr "Links"
+
+msgid "List of users"
+msgstr "Liste der Nutzer"
+
+msgid "Logo"
+msgstr "Logo"
+
+msgid "Main organisation"
+msgstr "Übergeordnete Organisation"
+
+msgid "Many thanks,"
+msgstr ""
+
+msgid "Margin"
+msgstr "Rand"
+
+msgid "Margin cannot be negative"
+msgstr "Rand darf nicht negativ sein"
+
+msgid "Margin value is invalid"
+msgstr "Randwert ist ungültig"
+
+msgid "Me"
+msgstr "Ich"
+
+#, fuzzy
+msgid "Message"
+msgstr "Ich"
+
+#, fuzzy
+msgid "Modify guidance"
+msgstr "Hilfestellung hinzufügen"
+
+#, fuzzy
+msgid "Modify templates"
+msgstr "templates"
+
+msgid "Multi select box"
+msgstr "Mehrfachauswahlliste"
+
+#, fuzzy
+msgid "My Plan"
+msgstr "Mein Plan"
+
+msgid "My organisation isn't listed."
+msgstr "Meine Organisation ist nicht in der Auflistung."
+
+msgid "My plans"
+msgstr "Meine Pläne"
+
+#, fuzzy
+msgid "My research organisation is not on the list"
+msgstr "Organisation"
+
+msgid "Name"
+msgstr "Name"
+
+msgid "Name (if different to above), telephone and email contact details"
+msgstr "Name (falls abweichend von obigen Angaben), Telefonnummer und E-Mail-Adresse."
+
+msgid "Name of Principal Investigator(s) or main researcher(s) on the project."
+msgstr "Name des Principal Investigators oder der Leitung des Projektes."
+
+msgid "New guidance"
+msgstr "Neue Hilfestellung"
+
+msgid "New password"
+msgstr "Neues Passwort"
+
+msgid "New section title"
+msgstr "Neue Abschnittsüberschrift"
+
+msgid "New template"
+msgstr "Neue Vorlage"
+
+msgid "New to %{application_name}? Create an account today."
+msgstr "Neu auf DMPonline? Heute noch registrieren."
+
+msgid "No"
+msgstr ""
+
+msgid "No additional comment area will be displayed."
+msgstr ""
+
+#, fuzzy
+msgid "No funder associated with this plan"
+msgstr "plans"
+
+msgid "No items available."
+msgstr ""
+
+msgid "No matches"
+msgstr "Kein Plan erfüllt '%{filter}'"
+
+msgid "None"
+msgstr "Keines"
+
+msgid "Not answered yet"
+msgstr "Noch nicht beantwortet"
+
+msgid "Note"
+msgstr "Kommentar"
+
+msgid "Note removed by"
+msgstr "Kommentar entfernt von"
+
+msgid "Note removed by you"
+msgstr "Kommentar von Ihnen entfernt"
+
+msgid "Noted by:"
+msgstr "Kommentar von:"
+
+msgid "Ok"
+msgstr ""
+
+msgid "On %{application_name}"
+msgstr "DMPonline"
+
+msgid "On data management planning"
+msgstr "Datenmanagement-Planung"
+
+msgid "Optional subset"
+msgstr "Optionale Untergruppe"
+
+msgid "Or, sign in with your institutional credentials"
+msgstr "Oder melden Sie sich mit den Zugangsdaten Ihres Instituts an"
+
+msgid "Order"
+msgstr "Reihenfolge"
+
+msgid "Order of display"
+msgstr "Reihenfolge"
+
+msgid "Organisation"
+msgstr "Organisation"
+
+msgid "Organisation details"
+msgstr "Organisations-Details"
+
+msgid "Organisation name"
+msgstr "Name der Organisation"
+
+msgid "Organisation type"
+msgstr "Organisationsart"
+
+msgid "Organisation was successfully updated."
+msgstr "Organisation wurde erfolgreich aktualisiert."
+
+msgid "Organisational"
+msgstr "Organisatorische"
+
+msgid "Organisational (visibile to others within your organisation)"
+msgstr "Mit anderen innerhalb Ihrer Organisation"
+
+msgid "Organization"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "Original funder template has changed!"
+msgstr "templates"
+
+msgid "Other institutions"
+msgstr ""
+
+msgid "Own templates"
+msgstr "Eigene Vorlagen"
+
+msgid "Owner"
+msgstr "Besitzer"
+
+msgid "PDF Formatting"
+msgstr "PDF Formatierung"
+
+msgid "Password"
+msgstr "Passwort"
+
+#, fuzzy
+msgid "Password and comfirmation must match"
+msgstr "Passwort"
+
+msgid "Password confirmation"
+msgstr "Passwort bestätigen"
+
+msgid "Permissions"
+msgstr "Zugriffsrechte"
+
+msgid "Phase details"
+msgstr "Details der Phase"
+
+msgid "Plan Data Contact"
+msgstr "Kontakt für Planen"
+
+msgid "Plan Description"
+msgstr "Beschreibung"
+
+msgid "Plan ID"
+msgstr "Planenbezeichner"
+
+msgid "Plan Name"
+msgstr "Planenname"
+
+msgid "Plan data contact"
+msgstr "Plandatenkontakt"
+
+msgid "Plan details"
+msgstr "Plandetails"
+
+msgid "Plan is already shared with %{email}."
+msgstr ""
+
+msgid "Plan name"
+msgstr "Name des Plans"
+
+msgid "Plan shared with %{email}."
+msgstr ""
+
+#, fuzzy
+msgid "Plan was successfully deleted."
+msgstr "Plan wurde erfolgreich angelegt."
+
+msgid "Plan was successfully updated."
+msgstr ""
+
+msgid "Please add an abbreviation to your org for display with annotations!"
+msgstr ""
+
+#, fuzzy
+msgid "Please enter a First name."
+msgstr "Bitte geben Sie ihren Vornamen ein."
+
+#, fuzzy
+msgid "Please enter a Last name."
+msgstr "Bitte geben Sie ihren Vornamen ein."
+
+msgid "Please enter a password confirmation"
+msgstr ""
+
+msgid "Please enter a title for your template."
+msgstr "Bitte geben sie einen Titel für Ihre Vorlage an."
+
+msgid "Please enter a valid web address."
+msgstr "Bitte prüfen Sie die Korrektheit ihrer Web-Adresse."
+
+msgid "Please enter an email address"
+msgstr ""
+
+#, fuzzy
+msgid "Please enter an email address."
+msgstr "Bitte prüfen Sie die Korrektheit ihrer Web-Adresse."
+
+msgid "Please enter the name of your organisation."
+msgstr "Bitte geben Sie den Namen Ihrer Organisation an."
+
+msgid "Please enter your current password"
+msgstr ""
+
+msgid "Please enter your current password below when changing your email address."
+msgstr ""
+
+msgid "Please enter your email"
+msgstr ""
+
+msgid "Please enter your first name."
+msgstr "Bitte geben Sie ihren Vornamen ein."
+
+msgid "Please enter your organisation's name."
+msgstr "Bitte geben Sie den Namen Ihrer Organisation an."
+
+msgid "Please enter your password to change email address."
+msgstr ""
+
+msgid "Please enter your surname or family name."
+msgstr "Bitte geben Sie ihren Familien- bzw. Nachnamen ein."
+
+msgid "Please fill in the basic project details below"
+msgstr ""
+
+msgid "Please fill in the basic project details below and click 'Update' to save"
+msgstr "Bitte geben Sie im Folgenden die Projektdetails an und wählen 'Aktualisieren' aus, um die Änderungen zu speichern."
+
+#, fuzzy
+msgid "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."
+msgstr "
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.
"
+
+msgid "Please only enter up to 165 characters, you have used"
+msgstr "Please only enter up to 165 characters, you have used"
+
+#, fuzzy
+msgid "Please select an organisation, or select Other."
+msgstr "Organisation"
+
+msgid "Please select one"
+msgstr ""
+
+msgid "Preview"
+msgstr "Vorschau"
+
+#, fuzzy
+msgid "Primary research organisation"
+msgstr "Organisation"
+
+msgid "Principal Investigator / Researcher"
+msgstr "Principal Investigator / Forscher"
+
+msgid "Principal Investigator/Researcher"
+msgstr "Projektleitung / Principal Investigator"
+
+msgid "Principal Investigator/Researcher ID"
+msgstr "Principal Investigator ID"
+
+msgid "Private"
+msgstr "Private"
+
+msgid "Private (owners, co-owners, and administrators only) See our Terms of Use."
+msgstr "Private (Besitzer, Miteigentümer und Admins) Siehe unsere Nutzungsbedingungen."
+
+msgid "Privileges"
+msgstr ""
+
+msgid "Project title"
+msgstr ""
+
+#, fuzzy
+msgid "Provides the user with an API token and grants rights to harvest information from the tool"
+msgstr "user"
+
+msgid "Public"
+msgstr "Öffentlichkeit"
+
+msgid "Public (Your DMP will appear on the Public DMPs page of this site)"
+msgstr "Öffentlich im Internet. Ihr DMP erscheint auf der Public DMPs Seite dieser Seite."
+
+msgid "Public DMPs"
+msgstr "Öffentliche DMPs"
+
+msgid "Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines."
+msgstr "Öffentliche DMPs sind Pläne, die mit dem DMPTool erstellt und öffentlich von ihren Eigentümern veröffentlicht werden. Sie werden nicht auf Qualität, Vollständigkeit oder die Einhaltung der funder Richtlinien überprüft."
+
+msgid "Publish"
+msgstr ""
+
+msgid "Publish changes"
+msgstr ""
+
+msgid "Published"
+msgstr "Veröffentlicht"
+
+msgid "Question"
+msgstr "Frage"
+
+msgid "Question not answered"
+msgstr "Frage nicht beantwortet."
+
+msgid "Question not answered."
+msgstr "Frage nicht beantwortet."
+
+msgid "Question number"
+msgstr "Fragennummer"
+
+msgid "Question text"
+msgstr "Fragentext"
+
+msgid "Question text is empty, please enter your question."
+msgstr "Question text is empty, please enter your question."
+
+msgid "Questions"
+msgstr "Fragen"
+
+msgid "Radio buttons"
+msgstr "Optionsfelder"
+
+msgid "Read more on the "
+msgstr ""
+
+msgid "Read only"
+msgstr "Nur Lesen"
+
+msgid "Releases"
+msgstr ""
+
+msgid "Remember me"
+msgstr "angemeldet bleiben"
+
+msgid "Remove"
+msgstr "Entfernen"
+
+msgid "Remove user access"
+msgstr "Mitarbeitende(n) entfernen"
+
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+msgid "Right"
+msgstr "Rechts"
+
+msgid "Save"
+msgstr "Speichern"
+
+#, fuzzy
+msgid "Save Unsuccessful."
+msgstr "Speichern"
+
+msgid "Saving..."
+msgstr "Speichere..."
+
+msgid "Screencast on how to use %{application_name}"
+msgstr ""
+
+msgid "Section"
+msgstr "Abschnitt"
+
+msgid "Sections"
+msgstr "Abschnitte"
+
+#, fuzzy
+msgid "Select a template"
+msgstr "templates"
+
+msgid "Select an action"
+msgstr "Wählen Sie eine Aktion"
+
+#, fuzzy
+msgid "Select the funding organisation"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "Select the primary research organisation responsible"
+msgstr "Organisation"
+
+msgid "Select which group this guidance relates to."
+msgstr "Wählen Sie die Gruppe aus, für die diese Hilfestellung relevant ist."
+
+msgid "Select which theme(s) this guidance relates to."
+msgstr "Wählen Sie die Themen aus, für die diese Hilfestellung relevant ist."
+
+msgid "Selected option(s)"
+msgstr ""
+
+msgid "Share"
+msgstr "Teilen"
+
+msgid "Share note"
+msgstr "Füge Kommentar hinzu"
+
+msgid "Share note with collaborators"
+msgstr "Bitte füge einen Kommentar hinzu"
+
+msgid "Sharing details successfully updated."
+msgstr ""
+
+msgid "Should this guidance apply:"
+msgstr "Soll diese Hilfestellung angewendet werden auf:"
+
+msgid "Sign in"
+msgstr "Anmelden"
+
+msgid "Sign out"
+msgstr "Abmelden"
+
+msgid "Signed in as "
+msgstr "Angemeldet als "
+
+msgid "Size"
+msgstr "Größe"
+
+#, fuzzy
+msgid "Someone has requested a link to change your "
+msgstr "Someone has requested a link to change your"
+
+msgid "Status"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Successfully unlinked your account from %{is}."
+msgstr ""
+
+msgid "Suggested answer"
+msgstr "Antwortvorschlag"
+
+msgid "Suggested answer/ Example"
+msgstr "Antwortvorschlag / Beispiel"
+
+msgid "Super admin area"
+msgstr "Superadmin"
+
+msgid "Template"
+msgstr "Template"
+
+msgid "Template History"
+msgstr ""
+
+msgid "Template details"
+msgstr "Details der Vorlage"
+
+msgid "Templates"
+msgstr "Vorlagen"
+
+msgid "Terms of use"
+msgstr "Nutzungsbedingungen"
+
+msgid "Test/Practice"
+msgstr "Test/Übung"
+
+msgid "Test/Practice (your plan is not visible to other users) See our Terms of Use."
+msgstr "Test / Praxis (Ihr Plan ist für andere Benutzer nicht sichtbar) Siehe unsere Nutzungsbedingungen."
+
+msgid "Text"
+msgstr "Text"
+
+msgid "Text area"
+msgstr "Text area"
+
+msgid "Text field"
+msgstr "Textfeld"
+
+#, fuzzy
+msgid "Thank you for registering. Please confirm your email address"
+msgstr "Thank you for registering at %{application_name}. Please confirm your email address:"
+
+msgid "That email address is already registered."
+msgstr ""
+
+#, fuzzy
+msgid "That template is not currently published."
+msgstr "templates"
+
+msgid "The"
+msgstr ""
+
+msgid "The "
+msgstr ""
+
+msgid "The email address of an administrator at your organisation. Your users will use this address if they have questions."
+msgstr "Die E-Mail -Adresse des Administrators in Ihrer Org. Ihre Benutzer werden diese Adresse verwenden, wenn sie Fragen haben."
+
+msgid "The following answer cannot be saved"
+msgstr ""
+
+msgid "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."
+msgstr "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."
+
+msgid "Themes"
+msgstr "Themen"
+
+msgid "There are no public DMPs."
+msgstr "Es wurden noch keine DMPs veröffentlicht."
+
+msgid "There seems to be a problem with your logo. Please upload it again."
+msgstr "Es scheint ein Problem mit unserem Logo zu sein. Bitte laden Sie es erneut."
+
+msgid "These are the basic details for your organisation."
+msgstr "Grundlegende Informationen über ihre Org."
+
+msgid "This allows you to order questions within a section."
+msgstr "Hier können sie die Reihenfolge der Fragen innerhalb eines Abschnittes bestimmen."
+
+msgid "This allows you to order sections."
+msgstr "Hier können Sie die Reihenfolge der Abschnitte bestimmen."
+
+msgid "This allows you to order the phases of your template."
+msgstr "Hier können sie die Abfolge der Phasen in Ihrer Vorlage bestimmen."
+
+msgid "This document was generated by %{application_name}"
+msgstr "%{application_name}"
+
+msgid "This must match what you entered in the previous field."
+msgstr "Die Eingabe in diesem Feld muss mit der im vorherigen Feld übereinstimmen."
+
+msgid "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."
+msgstr "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."
+
+#, fuzzy
+msgid "This plan is based on the default template."
+msgstr "templates"
+
+msgid "This plan is based on:"
+msgstr "Dieser Plan basiert auf:"
+
+msgid "This section is locked for editing by "
+msgstr "Dieser Abschnitt ist gespert wegen Bearbeitung durch "
+
+msgid "Title"
+msgstr "Titel"
+
+msgid "Top"
+msgstr "Oben"
+
+msgid "Top banner text"
+msgstr ""
+
+msgid "Transfer customisation"
+msgstr ""
+
+#, fuzzy
+msgid "Un-published"
+msgstr "Veröffentlicht"
+
+msgid "Unable to link your account to %{scheme}."
+msgstr ""
+
+msgid "Unable to unlink your account from %{is}."
+msgstr ""
+
+msgid "Unknown column name."
+msgstr "Unbekannter Spaltenname."
+
+msgid "Unknown formatting setting"
+msgstr "Unbekannte Formatierungseinstellung"
+
+msgid "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"
+msgstr "Unbekannter Rand. Kann nur 'oben', 'unten', 'links' oder 'rechts' sein"
+
+msgid "Unlink account"
+msgstr "Trenne Zugang"
+
+msgid "Unlink institutional credentials alert"
+msgstr "Unlink institutional credentials alert"
+
+msgid "Unlock my account"
+msgstr "Unlock my account"
+
+msgid "Unpublish"
+msgstr ""
+
+#, fuzzy
+msgid "Unpublished"
+msgstr "Veröffentlicht"
+
+msgid "Unpublished changes"
+msgstr ""
+
+msgid "Unsaved answers"
+msgstr "Ungesicherte Antworten"
+
+msgid "Unsaved changes"
+msgstr "Ungesicherte Änderungen"
+
+msgid "Upload a new logo file"
+msgstr "Laden Sie ein neues Logo-Datei"
+
+msgid "Users"
+msgstr "Nutzer"
+
+msgid "Using the generic Data Management Plan"
+msgstr ""
+
+msgid "Version"
+msgstr "Version"
+
+msgid "View"
+msgstr "Ansicht"
+
+msgid "View all guidance"
+msgstr "Alle Hilfestellungen ansehen"
+
+msgid "View all templates"
+msgstr "Alle Vorlagen ansehen"
+
+msgid "View phase"
+msgstr "Phase ansehen"
+
+msgid "View plans"
+msgstr "Pläne anzeigen"
+
+msgid "Visibility"
+msgstr "Sichtweite"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the funder."
+msgstr "templates"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the research organisation."
+msgstr "Organisation"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to your funder."
+msgstr "templates"
+
+msgid "Website"
+msgstr "Web-Seite"
+
+#, fuzzy
+msgid "Welcome to "
+msgstr "Willkommen."
+
+msgid "Welcome to %{application_name}"
+msgstr "Welcome to %{application_name}"
+
+msgid "Welcome."
+msgstr "Willkommen."
+
+#, fuzzy
+msgid "What research project are you planning?"
+msgstr "plans"
+
+msgid "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."
+msgstr "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."
+
+#, fuzzy
+msgid "Which DMP template would you like to use?"
+msgstr "templates"
+
+msgid "Would you like to save them now?"
+msgstr "Wollen Sie sie jetzt sichern?"
+
+msgid "Yes"
+msgstr ""
+
+msgid "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?"
+msgstr "Sie sind dabei '%{guidance_group_name}' zu löschen. Das wird Auswirkungen auf die Hilfestellungen haben. Sind Sie sicher?"
+
+msgid "You are about to delete '%{guidance_summary}'. Are you sure?"
+msgstr ""
+
+msgid "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?"
+msgstr "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?"
+
+msgid "You are about to delete '%{question_text}'. Are you sure?"
+msgstr "Sie sind dabei '%{question_text}' zu löschen. Sind Sie sicher?"
+
+msgid "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?"
+msgstr "Sie sind dabei '%{section_title}' zu entfernen. Das wird Auswirkungen auf die Fragen haben, die mit diesem Abschnitt verbunden sind. Sind Sie sicher?"
+
+#, fuzzy
+msgid "You are about to delete a guidance for '%{question_text}'. Are you sure?"
+msgstr "Sie sind dabei den Antwortvorschlag / das Beispiel für '%{question_text}' zu löschen. Sind Sie sicher?"
+
+msgid "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+msgstr "Sie sind dabei den Antwortvorschlag / das Beispiel für '%{question_text}' zu löschen. Sind Sie sicher?"
+
+#, fuzzy
+msgid "You are about to delete an example answer for '%{question_text}'. Are you sure?"
+msgstr "Sie sind dabei den Antwortvorschlag / das Beispiel für '%{question_text}' zu löschen. Sind Sie sicher?"
+
+msgid "You are not authorized to perform this action."
+msgstr ""
+
+#, fuzzy
+msgid "You are viewing a historical version of this template. You will not be able to make changes."
+msgstr "templates"
+
+#, fuzzy
+msgid "You can add an example answer to help users respond. These will be presented above the answer box and can be copied/ pasted."
+msgstr "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."
+
+msgid "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."
+msgstr "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."
+
+msgid "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;
"
+msgstr "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
"
+
+msgid "You can edit any of the details below."
+msgstr "Alle folgenden Angaben können bearbeitet werden."
+
+msgid "You can not continue until you have filled in all of the required information."
+msgstr ""
+
+#, fuzzy
+msgid "You can not edit a historical version of this template."
+msgstr "templates"
+
+#, fuzzy
+msgid "You can not publish a historical version of this template."
+msgstr "templates"
+
+#, fuzzy
+msgid "You cannot delete historical versions of this template."
+msgstr "templates"
+
+msgid "You have altered answers but have not saved them:"
+msgstr "Geänderte Antworten wurden nicht gesichert:"
+
+msgid "You have been given "
+msgstr ""
+
+#, fuzzy
+msgid "You have been granted permission by your organisation to use our API. Your API token and instructions for using the API endpoints can be found "
+msgstr "Organisation"
+
+msgid "You have un-published changes"
+msgstr ""
+
+#, fuzzy
+msgid "You have unsaved answers in the following sections:"
+msgstr ""
+"You have unsaved answers in the following sections:\n"
+
+msgid "You must accept the terms and conditions to register."
+msgstr ""
+
+msgid "You must enter a valid email address."
+msgstr "Bitte geben Sie eine gültige E-Mail-Adresse an."
+
+msgid "You need to sign in or sign up before continuing."
+msgstr "Bitte loggen Sie sich ein oder melden Sie sich fortsetzen."
+
+msgid "You now have "
+msgstr ""
+
+#, fuzzy
+msgid "Your"
+msgstr "Your "
+
+msgid "Your ORCID"
+msgstr "Ihre ORCID"
+
+#, fuzzy
+msgid "Your access to "
+msgstr "Your "
+
+#, fuzzy
+msgid "Your account has been successfully linked to %{scheme}."
+msgstr "Your "
+
+#, fuzzy
+msgid "Your account won't be created until you access the link above and set your password."
+msgstr "Your "
+
+msgid "Your browser does not support the video tag."
+msgstr ""
+
+msgid "Your password must contain at least 8 characters."
+msgstr "Ihr Passwort muss mindestens acht Zeichen enthalten."
+
+#, fuzzy
+msgid "Your permissions relating to "
+msgstr "Your "
+
+#, fuzzy
+msgid "Your template has been published and is now available to users."
+msgstr "templates"
+
+#, fuzzy
+msgid "Your template is no longer published. Users will not be able to create new DMPs for this template until you re-publish it"
+msgstr "templates"
+
+msgid "a day"
+msgstr ""
+
+msgid "about %d hours"
+msgstr ""
+
+msgid "about a minute"
+msgstr ""
+
+msgid "about a month"
+msgstr ""
+
+msgid "about a year"
+msgstr ""
+
+msgid "about an hour"
+msgstr ""
+
+#, fuzzy
+msgid "account has been locked due to an excessive number of unsuccessful sign in attempts."
+msgstr " account has been locked due to an excessive number of unsuccessful sign in attempts."
+
+msgid "activerecord.errors.messages.record_invalid"
+msgstr ""
+
+#, fuzzy
+msgid "activerecord.errors.models.user.attributes.current_password.invalid"
+msgstr "user"
+
+#, fuzzy
+msgid "activerecord.errors.models.user.attributes.email.blank"
+msgstr "user"
+
+#, fuzzy
+msgid "activerecord.errors.models.user.attributes.password.blank"
+msgstr "user"
+
+#, fuzzy
+msgid "activerecord.errors.models.user.attributes.password_confirmation.confirmation"
+msgstr "user"
+
+msgid "add guidance text"
+msgstr "add guidance text"
+
+# Timeago - found in lib/assets/javascripts/jquery.timeago.js
+# ---------------------
+# suffix ago
+msgid "ago"
+msgstr ""
+
+#, fuzzy
+msgid "approx. %{space_used}%% of available space used (max %{num_pages} pages)"
+msgstr "annährend %{space_used}% des verfügbaren Platzes wird verwendet (max. %{num_pages} Seiten)"
+
+#, fuzzy
+msgid "by "
+msgstr " von "
+
+msgid "can't be blank"
+msgstr ""
+
+msgid "can't be larger than 500KB"
+msgstr ""
+
+msgid "can't be less than zero"
+msgstr ""
+
+msgid "e.g. School/ Department"
+msgstr "z.B. Fakultät / Einrichtung"
+
+#, fuzzy
+msgid "example answer"
+msgstr "Beispielantwort"
+
+msgid "from now"
+msgstr ""
+
+#, fuzzy
+msgid "generic template"
+msgstr "templates"
+
+msgid "guidance"
+msgstr ""
+
+#, fuzzy
+msgid "guidance group"
+msgstr "Hilfestellungsgruppe"
+
+msgid "guidance on"
+msgstr ""
+
+msgid "height must be less than 100px"
+msgstr ""
+
+msgid "helpers.is_test"
+msgstr ""
+
+msgid "helpers.links.cancel"
+msgstr ""
+
+msgid "helpers.project.is_test_help_text"
+msgstr ""
+
+#, fuzzy
+msgid "into your browser"
+msgstr "into your browser)."
+
+msgid "less than a minute"
+msgstr ""
+
+#, fuzzy
+msgid "must be logged in"
+msgstr "Zuletzt angemeldet"
+
+msgid "must be one of the following formats: jpeg, jpg, png, gif, bmp"
+msgstr ""
+
+msgid "must be unique"
+msgstr ""
+
+#, fuzzy
+msgid "must have access to guidances api"
+msgstr "guidances"
+
+#, fuzzy
+msgid "must have access to plans api"
+msgstr "guidances"
+
+#, fuzzy
+msgid "no research organisation is associated with this plan"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "note"
+msgstr "Kommentar"
+
+#, fuzzy
+msgid "or copy"
+msgstr "(or copy"
+
+#, fuzzy
+msgid "organisation"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "phase"
+msgstr "Phase"
+
+#, fuzzy
+msgid "plan"
+msgstr "plans"
+
+msgid "profile"
+msgstr ""
+
+#, fuzzy
+msgid "question"
+msgstr "Frage"
+
+msgid "questions answered"
+msgstr "Fragen beantwortet"
+
+#, fuzzy
+msgid "role"
+msgstr "Rolle"
+
+#, fuzzy
+msgid "section"
+msgstr "Abschnitt"
+
+msgid "select a guidance group"
+msgstr "select a guidance group"
+
+msgid "select at least one theme"
+msgstr "select at least one theme"
+
+msgid "since %{name} saved the answer below while you were editing. Please, combine your changes and then save the answer again."
+msgstr ""
+
+#, fuzzy
+msgid "template"
+msgstr "templates"
+
+msgid "user"
+msgstr "user"
+
+#, fuzzy
+msgid "user must be in your organisation"
+msgstr "Organisation"
diff --git a/config/locale/en_GB/app.po b/config/locale/en_GB/app.po
new file mode 100644
index 0000000..0d6a6e3
--- /dev/null
+++ b/config/locale/en_GB/app.po
@@ -0,0 +1,1779 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the app package.
+# FIRST AUTHOR , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: app 1.0.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2017-05-02 14:54+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+msgid " (UK users only)"
+msgstr " (UK users only)"
+
+msgid " - "
+msgstr " - "
+
+#, fuzzy
+msgid " I accept the terms and conditions *"
+msgstr " I accept the terms and conditions *"
+
+#, fuzzy
+msgid " Plan"
+msgstr "plan"
+
+msgid " access to"
+msgstr " access to"
+
+#, fuzzy
+msgid " access. "
+msgstr " access to"
+
+#, fuzzy
+msgid " and "
+msgstr " on "
+
+msgid " by"
+msgstr " by"
+
+msgid " by "
+msgstr " by "
+
+msgid " has been removed by "
+msgstr " has been removed by "
+
+#, fuzzy
+msgid " have been changed by"
+msgstr " by"
+
+msgid " into your browser)"
+msgstr " into your browser)."
+
+msgid " on "
+msgstr " on "
+
+#, fuzzy
+msgid " or "
+msgstr " on "
+
+msgid " password. You can do this through the link below."
+msgstr " password. You can do this through the link below."
+
+#, fuzzy
+msgid " provided by "
+msgstr " by "
+
+msgid " team"
+msgstr " team"
+
+#, fuzzy
+msgid " that has been customised by "
+msgstr " by "
+
+msgid " to accept the invitation, (or copy "
+msgstr " to accept the invitation, (or copy "
+
+msgid " will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on "
+msgstr " will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on "
+
+#, fuzzy
+msgid "\"Are you sure you want to unlink #{scheme.description} ID?\""
+msgstr "\"Are you sure you want to unlink your #{scheme.description} ID?\""
+
+msgid "\"Unlink your account from #{scheme.description}. You can link again at any time.\""
+msgstr "\"Unlink your account from #{scheme.description}. You can link again at any time.\""
+
+msgid "\"Your account has been linked to #{scheme.description}.\""
+msgstr "\"Your account has been linked to #{scheme.description}.\""
+
+msgid "%d days"
+msgstr "%d days"
+
+msgid "%d minutes"
+msgstr "%d minutes"
+
+msgid "%d months"
+msgstr "%d months"
+
+msgid "%d years"
+msgstr "%d years"
+
+msgid "%{application_name}"
+msgstr "%{application_name}"
+
+msgid "%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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."
+msgstr "%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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."
+
+#, fuzzy
+msgid "%{application_name} is provided by the %{organisation_name}. You can find out more about us on our website. If you would like to contact us about %{application_name}, please fill out the form below."
+msgstr "%{application_name}"
+
+msgid "%{format} is not a valid exporting format. Available formats to export are %{available_formats}."
+msgstr "%{format} is not a valid exporting format. Available formats to export are %{available_formats}."
+
+msgid "%{value} is not a valid format"
+msgstr "%{value} is not a valid format"
+
+msgid "(Using custom PDF formatting values)"
+msgstr "(Using custom PDF formatting values)"
+
+msgid "(Using template PDF formatting values)"
+msgstr "(Using template PDF formatting values)"
+
+msgid "-"
+msgstr ""
+
+msgid "... (continued)"
+msgstr "... (continued)"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
"
+msgstr "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
"
+
+msgid "
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
"
+msgstr "
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in %{application_name}, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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 Digital Curation Centre 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.
DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in %{application_name}, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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 Digital Curation Centre 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.
"
+
+msgid "
%{application_name} has been jointly developed by the %{organisation_name} to help you write data management plans.
"
+msgstr "
%{application_name} has been jointly developed by the %{organisation_name} to help you write data management plans.
"
+
+msgid "
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
"
+msgstr "
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
"
+
+msgid "
%{application_name} stories from the %{organisation_abbreviation} website
"
+msgstr "
%{application_name} stories from the %{organisation_abbreviation} website
"
+
+msgid "
Welcome. You are now ready to create your first DMP.Click the 'Create plan' button below to begin.
"
+msgstr "
Welcome. You are now ready to create your first DMP.Click the 'Create plan' button below to begin.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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'.
"
+msgstr "
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'.
"
+
+msgid "
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. %{application_name} has been produced by the %{organisation_name} to help research teams respond to this requirement, and any expectations that their institution or others may apply.
The %{organisation_abbreviation} 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 %{application_name} account, click on 'Create account' on the homepage.
We are constantly improving the user interface and functionality of %{application_name}. 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
"
+msgstr "
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. %{application_name} has been produced by the %{organisation_name} to help research teams respond to this requirement, and any expectations that their institution or others may apply.
The %{organisation_abbreviation} 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 %{application_name} account, click on 'Create account' on the homepage.
We are constantly improving the user interface and functionality of %{application_name}. 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
"
+
+msgid "
Here you can view previously published versions of your template. These can no longer be modified.
"
+msgstr "
Here you can view previously published versions of your template. These can no longer be modified.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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 %{organisation_abbreviation} or any Schools/Departments that you provide guidance for.
You can select multiple themes by using the CTRL button.
"
+msgstr "
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 %{organisation_abbreviation} or any Schools/Departments that you provide guidance for.
You can select multiple themes by using the CTRL button.
"
+
+msgid "
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
When you login to %{application_name} 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 %{application_name} 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.
"
+msgstr "
When you login to %{application_name} 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 %{application_name} 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.
"
+
+msgid "
You are about to unlink %{application_name} of your institutional credentials, would you like to continue?
"
+msgstr "
You are about to unlink %{application_name} of your institutional credentials, would you like to continue?
"
+
+msgid "
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 %{application_name} if they don't already have an account. A notification is also issued when a user's permission level is changed.
"
+msgstr "
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 %{application_name} if they don't already have an account. A notification is also issued when a user's permission level is changed.
"
+
+msgid "
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
"
+msgstr "
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
"
+msgstr "%{application_name}"
+
+#, fuzzy
+msgid "A Data Management Plan in %{application_name} has been shared with you"
+msgstr "%{application_name}"
+
+msgid "A colleague has invited you to contribute to their Data Management Plan at "
+msgstr "A colleague has invited you to contribute to their Data Management Plan at "
+
+msgid "A pertinent ID as determined by the funder and/or institution."
+msgstr "A pertinent ID as determined by the funder and/or institution."
+
+msgid "A required setting has not been provided"
+msgstr "A required setting has not been provided"
+
+msgid "A version of "
+msgstr ""
+
+msgid "API Information"
+msgstr "API Information"
+
+msgid "API rights"
+msgstr ""
+
+msgid "API token"
+msgstr "API token"
+
+msgid "Abbreviation"
+msgstr "Abbreviation"
+
+msgid "About"
+msgstr "About"
+
+msgid "About %{application_name}"
+msgstr "About %{application_name}"
+
+msgid "Access removed"
+msgstr "Access removed"
+
+msgid "Actions"
+msgstr "Actions"
+
+msgid "Add Annotations"
+msgstr ""
+
+#, fuzzy
+msgid "Add an appropriate name for your guidance group. This name will be used to tell the end user where the guidance has come from. It will be appended to text identifying the theme e.g. \"[guidance group name]: guidance on data sharing\" so we suggest you just use the institution or department name."
+msgstr "guidance group"
+
+msgid "Add collaborator"
+msgstr "Add collaborator"
+
+msgid "Add guidance"
+msgstr "Add guidance"
+
+msgid "Add guidance group"
+msgstr "Add guidance group"
+
+msgid "Add new phase +"
+msgstr "Add new phase +"
+
+msgid "Add note"
+msgstr "Add note"
+
+msgid "Add option"
+msgstr "Add option"
+
+msgid "Add question"
+msgstr "Add question"
+
+msgid "Add section"
+msgstr "Add section"
+
+msgid "Additional comment area will be displayed."
+msgstr "Additional comment area will be displayed."
+
+msgid "Admin Details"
+msgstr "Admin Details"
+
+msgid "Admin area"
+msgstr "Admin area"
+
+msgid "All the best,"
+msgstr ""
+
+#, fuzzy
+msgid "Allows the user to amend the organisation details (name, URL etc) and add basic branding such as the logo"
+msgstr "organisation"
+
+#, fuzzy
+msgid "Allows the user to assign permissions to other users within the same organisation. Users can only assign permissions they own themselves"
+msgstr "organisation"
+
+#, fuzzy
+msgid "Allows the user to create and edit guidance"
+msgstr "guidance"
+
+#, fuzzy
+msgid "Allows the user to create new institutional templates, edit existing ones and customise funder templates"
+msgstr "template"
+
+msgid "An error has occurred while saving/resetting your export settings."
+msgstr ""
+
+msgid "Annotations"
+msgstr ""
+
+msgid "Answer"
+msgstr "Answer"
+
+msgid "Answer format"
+msgstr "Answer format"
+
+msgid "Answer questions"
+msgstr "Answer questions"
+
+msgid "Answered"
+msgstr "Answered"
+
+msgid "Answered at"
+msgstr "Answered at"
+
+msgid "Answered by"
+msgstr "Answered by"
+
+msgid "Answers"
+msgstr "Answers"
+
+msgid "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."
+msgstr "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."
+
+msgid "Are you sure you want to remove this note?"
+msgstr "Are you sure you want to remove this note?"
+
+msgid "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"
+msgstr "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"
+
+msgid "Are you sure?"
+msgstr "Are you sure?"
+
+msgid "Back"
+msgstr "Back"
+
+msgid "Back to edit view"
+msgstr "Back to edit view"
+
+msgid "Background"
+msgstr "Background"
+
+msgid "Bad Credentials"
+msgstr ""
+
+msgid "Bad Parameters"
+msgstr ""
+
+msgid "Before submitting, please consider:"
+msgstr "Before submitting, please consider:"
+
+#, fuzzy
+msgid "Before you get started, we need to ask a few questions to set you up with the best DMP template for your needs."
+msgstr "questions"
+
+msgid "Begin typing to see a filtered list"
+msgstr ""
+
+msgid "Below is a list of users registered for your organisation. You can sort the data by each field."
+msgstr "Below is a list of users registered for your organisation. You can sort the data by each field."
+
+msgid "Bottom"
+msgstr "Bottom"
+
+msgid "By "
+msgstr "By "
+
+msgid "Cancel"
+msgstr "Cancel"
+
+#, fuzzy
+msgid "Cannot share plan with %{email} since that email matches with the owner of the plan."
+msgstr "plan"
+
+msgid "Change language"
+msgstr "Change language"
+
+msgid "Change my password"
+msgstr "Change my password"
+
+#, fuzzy
+msgid "Change organisation details"
+msgstr "organisation"
+
+msgid "Check box"
+msgstr "Check box"
+
+msgid "Check this box when you are ready for this guidance to appear on user's plans."
+msgstr "Check this box when you are ready for this guidance to appear on user's plans."
+
+msgid "Click here"
+msgstr ""
+
+msgid "Click here to accept the invitation"
+msgstr "Click here to accept the invitation"
+
+msgid "Click here to confirm your account"
+msgstr "Click here to confirm your account"
+
+msgid "Click the link below to unlock your account"
+msgstr "Click the link below to unlock your account"
+
+msgid "Co-owner"
+msgstr "Co-owner"
+
+msgid "Collaborators"
+msgstr "Collaborators"
+
+msgid "Comment"
+msgstr "Comment"
+
+msgid "Comment removed."
+msgstr "Comment removed."
+
+msgid "Comment was successfully created."
+msgstr "Comment was successfully created."
+
+msgid "Comment was successfully saved."
+msgstr "Comment was successfully saved."
+
+msgid "Contact Email"
+msgstr "Contact Email"
+
+#, fuzzy
+msgid "Contact Us"
+msgstr "Contact us"
+
+msgid "Contact us"
+msgstr "Contact us"
+
+msgid "Create a new plan"
+msgstr "Create a new plan"
+
+msgid "Create a template"
+msgstr "Create a template"
+
+msgid "Create account"
+msgstr "Create account"
+
+msgid "Create plan"
+msgstr "Create plan"
+
+msgid "Created"
+msgstr "Created"
+
+msgid "Created at"
+msgstr "Created at"
+
+msgid "Current password"
+msgstr "Current password"
+
+msgid "Customise"
+msgstr "Customise"
+
+msgid "Default"
+msgstr "Default"
+
+msgid "Default answer"
+msgstr "Default answer"
+
+msgid "Default value"
+msgstr "Default value"
+
+msgid "Delete"
+msgstr "Delete"
+
+#, fuzzy
+msgid "Delete Example Answer"
+msgstr "Example of answer"
+
+msgid "Delete question"
+msgstr "Delete question"
+
+msgid "Description"
+msgstr "Description"
+
+msgid "Details"
+msgstr "Details"
+
+msgid "Details successfully updated."
+msgstr "Details successfully updated."
+
+msgid "Didn't receive confirmation instructions?"
+msgstr "Didn't receive confirmation instructions?"
+
+msgid "Didn't receive unlock instructions?"
+msgstr "Didn't receive unlock instructions?"
+
+msgid "Discard"
+msgstr "Discard"
+
+msgid "Display additional comment area."
+msgstr "Display additional comment area."
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dropdown"
+msgstr "Dropdown"
+
+msgid "E.g ORCID http://orcid.org/."
+msgstr "E.g ORCID http://orcid.org/."
+
+msgid "Edit"
+msgstr "Edit"
+
+#, fuzzy
+msgid "Edit Annotations"
+msgstr "Edit"
+
+msgid "Edit User Privileges"
+msgstr "Edit User Privileges"
+
+msgid "Edit customisation"
+msgstr "Edit customisation"
+
+msgid "Edit phase"
+msgstr "Edit phase"
+
+msgid "Edit phase details"
+msgstr "Edit phase details"
+
+msgid "Edit plan details"
+msgstr "Edit plan details"
+
+msgid "Edit profile"
+msgstr "Edit profile"
+
+msgid "Edit question"
+msgstr "Edit question"
+
+msgid "Edit template details"
+msgstr "Edit template details"
+
+msgid "Editor"
+msgstr "Editor"
+
+msgid "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access."
+msgstr "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access."
+
+msgid "Email"
+msgstr "Email"
+
+msgid "Email address"
+msgstr "Email address"
+
+msgid "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."
+msgstr "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."
+
+msgid "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences"
+msgstr "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences"
+
+msgid "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"
+msgstr "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"
+
+msgid "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box."
+msgstr "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box."
+
+msgid "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."
+msgstr "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."
+
+msgid "Enter your guidance here. You can include links where needed."
+msgstr "Enter your guidance here. You can include links where needed."
+
+msgid "Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long."
+msgstr "Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long."
+
+msgid "Error!"
+msgstr "Error!"
+
+#, fuzzy
+msgid "Example Answer"
+msgstr "Example of answer"
+
+#, fuzzy
+msgid "Example of answer"
+msgstr "Example of answer"
+
+msgid "Export"
+msgstr "Export"
+
+msgid "Export settings updated successfully."
+msgstr "Export settings updated successfully."
+
+msgid "Exporting public plan is under development. Apologies for any inconvience."
+msgstr "Exporting public plan is under development. Apologies for any inconvience."
+
+msgid "Face"
+msgstr "Face"
+
+msgid "File Name"
+msgstr "File Name"
+
+msgid "Fill in the required fields"
+msgstr ""
+
+msgid "Filter plans"
+msgstr "Filter plans"
+
+msgid "First name"
+msgstr "First name"
+
+msgid "Font"
+msgstr "Font"
+
+msgid "Forgot your password?"
+msgstr "Forgot your password?"
+
+#, fuzzy
+msgid "Format"
+msgstr "format"
+
+msgid "Funder"
+msgstr "Funder"
+
+msgid "Funders templates"
+msgstr "Funders templates"
+
+#, fuzzy
+msgid "Funding organisation"
+msgstr "organisation"
+
+msgid "Future plans"
+msgstr "Future plans"
+
+msgid "Get involved"
+msgstr "Get involved"
+
+msgid "Grant number"
+msgstr "Grant number"
+
+msgid "Grant permissions"
+msgstr ""
+
+msgid "Grant reference number if applicable [POST-AWARD DMPs ONLY]"
+msgstr "Grant reference number if applicable [POST-AWARD DMPs ONLY]"
+
+msgid "Guidance"
+msgstr "Guidance"
+
+#, fuzzy
+msgid "Guidance choices saved."
+msgstr "Guidance"
+
+msgid "Guidance group"
+msgstr "Guidance group"
+
+msgid "Guidance group list"
+msgstr "Guidance group list"
+
+msgid "Guidance group was successfully created."
+msgstr "Guidance group was successfully created."
+
+msgid "Guidance group was successfully deleted."
+msgstr "Guidance group was successfully deleted."
+
+msgid "Guidance group was successfully updated."
+msgstr "Guidance group was successfully updated."
+
+msgid "Guidance list"
+msgstr "Guidance list"
+
+msgid "Guidance was successfully created."
+msgstr "Guidance was successfully created."
+
+msgid "Guidance was successfully deleted."
+msgstr "Guidance was successfully deleted."
+
+msgid "Guidance was successfully updated."
+msgstr "Guidance was successfully updated."
+
+msgid "Hello"
+msgstr "Hello"
+
+msgid "Hello "
+msgstr "Hello "
+
+msgid "Help"
+msgstr "Help"
+
+msgid "History"
+msgstr "History"
+
+msgid "Home"
+msgstr "Home"
+
+msgid "How many plans?"
+msgstr "How many plans?"
+
+msgid "How to use the API"
+msgstr "How to use the API"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "If applying for funding, state the name exactly as in the grant proposal."
+msgstr "If applying for funding, state the name exactly as in the grant proposal."
+
+#, fuzzy
+msgid "If applying for funding, state the title exactly as in the proposal."
+msgstr "If applying for funding, state the name exactly as in the grant proposal."
+
+msgid "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."
+msgstr "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."
+
+msgid "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+msgstr "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+
+msgid "If you decide to use the default DMPRoadmap logo, please check this box to remove your current logo."
+msgstr "If you decide to use the default DMPRoadmap logo, please check this box to remove your current logo."
+
+msgid "If you didn't request this, please ignore this email."
+msgstr ""
+
+msgid "If you don't want to accept the invitation, please ignore this email."
+msgstr ""
+
+msgid "If you would like to change your password please complete the following fields."
+msgstr "If you would like to change your password please complete the following fields."
+
+msgid "Included Elements"
+msgstr "Included Elements"
+
+msgid "Information was successfully created."
+msgstr "Information was successfully created."
+
+msgid "Information was successfully deleted."
+msgstr "Information was successfully deleted."
+
+msgid "Information was successfully updated."
+msgstr "Information was successfully updated."
+
+msgid "Institution"
+msgstr "Institution"
+
+msgid "Invalid font face"
+msgstr "Invalid font face"
+
+msgid "Invalid font size"
+msgstr "Invalid font size"
+
+msgid "Invalid maximum pages"
+msgstr "Invalid maximum pages"
+
+#, fuzzy
+msgid "Invitation to %{email} issued successfully."
+msgstr "Invitation issued successfully."
+
+msgid "Language"
+msgstr "Language"
+
+msgid "Last logged in"
+msgstr "Last logged in"
+
+msgid "Last name"
+msgstr "Last name"
+
+msgid "Last updated"
+msgstr "Last updated"
+
+msgid "Latest news"
+msgstr "Latest news"
+
+msgid "Left"
+msgstr "Left"
+
+msgid "List of users"
+msgstr "List of users"
+
+msgid "Logo"
+msgstr "Logo"
+
+msgid "Main organisation"
+msgstr "Main organisation"
+
+msgid "Many thanks,"
+msgstr ""
+
+msgid "Margin"
+msgstr "Margin"
+
+msgid "Margin cannot be negative"
+msgstr "Margin cannot be negative"
+
+msgid "Margin value is invalid"
+msgstr "Margin value is invalid"
+
+msgid "Me"
+msgstr "Me"
+
+#, fuzzy
+msgid "Message"
+msgstr "Me"
+
+#, fuzzy
+msgid "Modify guidance"
+msgstr "guidance"
+
+#, fuzzy
+msgid "Modify templates"
+msgstr "template"
+
+msgid "Multi select box"
+msgstr "Multi select box"
+
+#, fuzzy
+msgid "My Plan"
+msgstr "My plan"
+
+msgid "My organisation isn't listed."
+msgstr "My organisation isn't listed."
+
+msgid "My plans"
+msgstr "My plans"
+
+#, fuzzy
+msgid "My research organisation is not on the list"
+msgstr "organisation"
+
+msgid "Name"
+msgstr "Name"
+
+msgid "Name (if different to above), telephone and email contact details"
+msgstr "Name (if different to above), telephone and email contact details"
+
+msgid "Name of Principal Investigator(s) or main researcher(s) on the project."
+msgstr "Name of Principal Investigator(s) or main researcher(s) on the project."
+
+msgid "New guidance"
+msgstr "New guidance"
+
+msgid "New password"
+msgstr "New password"
+
+msgid "New section title"
+msgstr "New section title"
+
+msgid "New template"
+msgstr "New template"
+
+msgid "New to %{application_name}? Create an account today."
+msgstr "New to %{application_name}? Create an account today."
+
+msgid "No"
+msgstr "No"
+
+msgid "No additional comment area will be displayed."
+msgstr "No additional comment area will be displayed."
+
+#, fuzzy
+msgid "No funder associated with this plan"
+msgstr "plan"
+
+#, fuzzy
+msgid "No items available."
+msgstr "No"
+
+msgid "No matches"
+msgstr "No matches"
+
+msgid "None"
+msgstr "None"
+
+msgid "Not answered yet"
+msgstr "Not answered yet"
+
+msgid "Note"
+msgstr "Note"
+
+msgid "Note removed by"
+msgstr "Note removed by"
+
+msgid "Note removed by you"
+msgstr "Note removed by you"
+
+msgid "Noted by:"
+msgstr "Noted by:"
+
+msgid "Ok"
+msgstr "Ok"
+
+msgid "On %{application_name}"
+msgstr "On %{application_name}"
+
+msgid "On data management planning"
+msgstr "On data management planning"
+
+msgid "Optional subset"
+msgstr "Optional subset"
+
+msgid "Or, sign in with your institutional credentials"
+msgstr "Or, sign in with your institutional credentials"
+
+msgid "Order"
+msgstr "Order"
+
+msgid "Order of display"
+msgstr "Order of display"
+
+msgid "Organisation"
+msgstr "Organisation"
+
+msgid "Organisation details"
+msgstr "Organisation details"
+
+msgid "Organisation name"
+msgstr "Organisation name"
+
+msgid "Organisation type"
+msgstr "Organisation type"
+
+msgid "Organisation was successfully updated."
+msgstr "Organisation was successfully updated."
+
+msgid "Organisational"
+msgstr "Organisational"
+
+msgid "Organisational (visibile to others within your organisation)"
+msgstr "Organisational (visibile to others within your organisation)"
+
+msgid "Organization"
+msgstr "Organisation"
+
+msgid "Original funder template has changed!"
+msgstr "Original funder template has changed!"
+
+msgid "Other institutions"
+msgstr ""
+
+msgid "Own templates"
+msgstr "Own templates"
+
+msgid "Owner"
+msgstr "Owner"
+
+msgid "PDF Formatting"
+msgstr "PDF Formatting"
+
+msgid "Password"
+msgstr "Password"
+
+msgid "Password and comfirmation must match"
+msgstr "Password and confirmation must match"
+
+msgid "Password confirmation"
+msgstr "Password confirmation"
+
+msgid "Permissions"
+msgstr "Permissions"
+
+msgid "Phase details"
+msgstr "Phase details"
+
+msgid "Plan Data Contact"
+msgstr "Plan Data Contact"
+
+msgid "Plan Description"
+msgstr "Plan Description"
+
+msgid "Plan ID"
+msgstr "Plan ID"
+
+msgid "Plan Name"
+msgstr "Plan Name"
+
+msgid "Plan data contact"
+msgstr "Plan data contact"
+
+msgid "Plan details"
+msgstr "Plan details"
+
+msgid "Plan is already shared with %{email}."
+msgstr ""
+
+msgid "Plan name"
+msgstr "Plan name"
+
+msgid "Plan shared with %{email}."
+msgstr ""
+
+msgid "Plan was successfully deleted."
+msgstr "Plan was successfully deleted."
+
+msgid "Plan was successfully updated."
+msgstr "Plan was successfully updated."
+
+msgid "Please add an abbreviation to your org for display with annotations!"
+msgstr ""
+
+#, fuzzy
+msgid "Please enter a First name."
+msgstr "Please enter your first name."
+
+#, fuzzy
+msgid "Please enter a Last name."
+msgstr "Please enter your first name."
+
+msgid "Please enter a password confirmation"
+msgstr ""
+
+msgid "Please enter a title for your template."
+msgstr "Please enter a title for your template."
+
+msgid "Please enter a valid web address."
+msgstr "Please enter a valid web address."
+
+msgid "Please enter an email address"
+msgstr "Please enter an email address"
+
+#, fuzzy
+msgid "Please enter an email address."
+msgstr "Please enter an email address"
+
+msgid "Please enter the name of your organisation."
+msgstr "Please enter the name of your organisation."
+
+msgid "Please enter your current password"
+msgstr ""
+
+msgid "Please enter your current password below when changing your email address."
+msgstr ""
+
+msgid "Please enter your email"
+msgstr ""
+
+msgid "Please enter your first name."
+msgstr "Please enter your first name."
+
+msgid "Please enter your organisation's name."
+msgstr "Please enter your organisation's name."
+
+msgid "Please enter your password to change email address."
+msgstr ""
+
+msgid "Please enter your surname or family name."
+msgstr "Please enter your surname or family name."
+
+msgid "Please fill in the basic project details below"
+msgstr ""
+
+msgid "Please fill in the basic project details below and click 'Update' to save"
+msgstr "Please fill in the basic project details below and click 'Update' to save"
+
+#, fuzzy
+msgid "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."
+msgstr "
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.
"
+
+msgid "Please only enter up to 165 characters, you have used"
+msgstr "Please only enter up to 165 characters, you have used"
+
+#, fuzzy
+msgid "Please select an organisation, or select Other."
+msgstr "organisation"
+
+msgid "Please select one"
+msgstr ""
+
+msgid "Preview"
+msgstr "Preview"
+
+#, fuzzy
+msgid "Primary research organisation"
+msgstr "organisation"
+
+msgid "Principal Investigator / Researcher"
+msgstr "Principal Investigator / Researcher"
+
+msgid "Principal Investigator/Researcher"
+msgstr "Principal Investigator/Researcher"
+
+msgid "Principal Investigator/Researcher ID"
+msgstr "Principal Investigator/Researcher ID"
+
+msgid "Private"
+msgstr "Private"
+
+msgid "Private (owners, co-owners, and administrators only) See our Terms of Use."
+msgstr "Private (owners, co-owners, and administrators only) See our Terms of Use."
+
+msgid "Privileges"
+msgstr "Privileges"
+
+msgid "Project title"
+msgstr ""
+
+#, fuzzy
+msgid "Provides the user with an API token and grants rights to harvest information from the tool"
+msgstr "API token"
+
+msgid "Public"
+msgstr "Public"
+
+msgid "Public (Your DMP will appear on the Public DMPs page of this site)"
+msgstr "Public (Your DMP will appear on the Public DMPs page of this site)"
+
+msgid "Public DMPs"
+msgstr "Public DMPs"
+
+msgid "Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines."
+msgstr "Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines."
+
+msgid "Publish"
+msgstr "Publish"
+
+msgid "Publish changes"
+msgstr "Publish changes"
+
+msgid "Published"
+msgstr "Published"
+
+msgid "Question"
+msgstr "Question"
+
+msgid "Question not answered"
+msgstr "Question not answered."
+
+msgid "Question not answered."
+msgstr "Question not answered."
+
+msgid "Question number"
+msgstr "Question number"
+
+msgid "Question text"
+msgstr "Question text"
+
+msgid "Question text is empty, please enter your question."
+msgstr "Question text is empty, please enter your question."
+
+msgid "Questions"
+msgstr "Questions"
+
+msgid "Radio buttons"
+msgstr "Radio buttons"
+
+msgid "Read more on the "
+msgstr "Read more on the "
+
+msgid "Read only"
+msgstr "Read only"
+
+msgid "Releases"
+msgstr "Releases"
+
+msgid "Remember me"
+msgstr "Remember me"
+
+msgid "Remove"
+msgstr "Remove"
+
+msgid "Remove user access"
+msgstr "Remove user access"
+
+msgid "Reset"
+msgstr "Reset"
+
+msgid "Right"
+msgstr "Right"
+
+msgid "Save"
+msgstr "Save"
+
+#, fuzzy
+msgid "Save Unsuccessful."
+msgstr "Save"
+
+msgid "Saving..."
+msgstr "Saving..."
+
+msgid "Screencast on how to use %{application_name}"
+msgstr "Screencast on how to use %{application_name}"
+
+msgid "Section"
+msgstr "Section"
+
+msgid "Sections"
+msgstr "Sections"
+
+#, fuzzy
+msgid "Select a template"
+msgstr "template"
+
+msgid "Select an action"
+msgstr "Select an action"
+
+#, fuzzy
+msgid "Select the funding organisation"
+msgstr "organisation"
+
+#, fuzzy
+msgid "Select the primary research organisation responsible"
+msgstr "organisation"
+
+msgid "Select which group this guidance relates to."
+msgstr "Select which group this guidance relates to."
+
+msgid "Select which theme(s) this guidance relates to."
+msgstr "Select which theme(s) this guidance relates to."
+
+msgid "Selected option(s)"
+msgstr ""
+
+msgid "Share"
+msgstr "Share"
+
+msgid "Share note"
+msgstr "Share note"
+
+msgid "Share note with collaborators"
+msgstr "Share note with collaborators"
+
+msgid "Sharing details successfully updated."
+msgstr "Sharing details successfully updated."
+
+msgid "Should this guidance apply:"
+msgstr "Should this guidance apply:"
+
+msgid "Sign in"
+msgstr "Sign in"
+
+msgid "Sign out"
+msgstr "Sign out"
+
+msgid "Signed in as "
+msgstr "Signed in as "
+
+msgid "Size"
+msgstr "Size"
+
+msgid "Someone has requested a link to change your "
+msgstr "Someone has requested a link to change your "
+
+msgid "Status"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Successfully unlinked your account from %{is}."
+msgstr ""
+
+msgid "Suggested answer"
+msgstr "Suggested answer"
+
+msgid "Suggested answer/ Example"
+msgstr "Suggested answer/ Example"
+
+msgid "Super admin area"
+msgstr "Super admin area"
+
+msgid "Template"
+msgstr "Template"
+
+msgid "Template History"
+msgstr "Template History"
+
+msgid "Template details"
+msgstr "Template details"
+
+msgid "Templates"
+msgstr "Templates"
+
+msgid "Terms of use"
+msgstr "Terms of use"
+
+msgid "Test/Practice"
+msgstr "Test/Practice"
+
+msgid "Test/Practice (your plan is not visible to other users) See our Terms of Use."
+msgstr "Test/Practice (your plan is not visible to other users) See our Terms of Use."
+
+msgid "Text"
+msgstr "Text"
+
+msgid "Text area"
+msgstr "Text area"
+
+msgid "Text field"
+msgstr "Text field"
+
+msgid "Thank you for registering. Please confirm your email address"
+msgstr "Thank you for registering. Please confirm your email address"
+
+msgid "That email address is already registered."
+msgstr "That email address is already registered."
+
+msgid "That template is not currently published."
+msgstr "That template is not currently published."
+
+#, fuzzy
+msgid "The"
+msgstr "The "
+
+msgid "The "
+msgstr "The "
+
+msgid "The email address of an administrator at your organisation. Your users will use this address if they have questions."
+msgstr "The email address of an administrator at your organisation. Your users will use this address if they have questions."
+
+#, fuzzy
+msgid "The following answer cannot be saved"
+msgstr "The "
+
+msgid "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."
+msgstr "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."
+
+msgid "Themes"
+msgstr "Themes"
+
+msgid "There are no public DMPs."
+msgstr "There are no public DMPs."
+
+msgid "There seems to be a problem with your logo. Please upload it again."
+msgstr "There seems to be a problem with your logo. Please upload it again."
+
+msgid "These are the basic details for your organisation."
+msgstr "These are the basic details for your organisation."
+
+msgid "This allows you to order questions within a section."
+msgstr "This allows you to order questions within a section."
+
+msgid "This allows you to order sections."
+msgstr "This allows you to order sections."
+
+msgid "This allows you to order the phases of your template."
+msgstr "This allows you to order the phases of your template."
+
+msgid "This document was generated by %{application_name}"
+msgstr "This document was generated by %{application_name}"
+
+msgid "This must match what you entered in the previous field."
+msgstr "This must match what you entered in the previous field."
+
+msgid "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."
+msgstr "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."
+
+#, fuzzy
+msgid "This plan is based on the default template."
+msgstr "template"
+
+msgid "This plan is based on:"
+msgstr "This plan is based on:"
+
+msgid "This section is locked for editing by "
+msgstr "This section is locked for editing by "
+
+msgid "Title"
+msgstr "Title"
+
+msgid "Top"
+msgstr "Top"
+
+msgid "Top banner text"
+msgstr "Top banner text"
+
+msgid "Transfer customisation"
+msgstr ""
+
+msgid "Un-published"
+msgstr "Un-published"
+
+msgid "Unable to link your account to %{scheme}."
+msgstr ""
+
+msgid "Unable to unlink your account from %{is}."
+msgstr ""
+
+msgid "Unknown column name."
+msgstr "Unknown column name."
+
+msgid "Unknown formatting setting"
+msgstr "Unknown formatting setting"
+
+msgid "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"
+msgstr "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"
+
+msgid "Unlink account"
+msgstr "Unlink account"
+
+msgid "Unlink institutional credentials alert"
+msgstr "Unlink institutional credentials alert"
+
+msgid "Unlock my account"
+msgstr "Unlock my account"
+
+msgid "Unpublish"
+msgstr "Unpublish"
+
+msgid "Unpublished"
+msgstr "Unpublished"
+
+msgid "Unpublished changes"
+msgstr "Unpublished changes"
+
+msgid "Unsaved answers"
+msgstr "Unsaved answers"
+
+msgid "Unsaved changes"
+msgstr "Unsaved changes"
+
+msgid "Upload a new logo file"
+msgstr "Upload a new logo file"
+
+msgid "Users"
+msgstr "Users"
+
+msgid "Using the generic Data Management Plan"
+msgstr ""
+
+msgid "Version"
+msgstr "Version"
+
+msgid "View"
+msgstr "View"
+
+msgid "View all guidance"
+msgstr "View all guidance"
+
+msgid "View all templates"
+msgstr "View all templates"
+
+msgid "View phase"
+msgstr "View phase"
+
+msgid "View plans"
+msgstr "View plans"
+
+msgid "Visibility"
+msgstr "Visibility"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the funder."
+msgstr "template"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the research organisation."
+msgstr "organisation"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to your funder."
+msgstr "template"
+
+msgid "Website"
+msgstr "Website"
+
+msgid "Welcome to "
+msgstr "Welcome to "
+
+msgid "Welcome to %{application_name}"
+msgstr "Welcome to %{application_name}"
+
+msgid "Welcome."
+msgstr "Welcome."
+
+#, fuzzy
+msgid "What research project are you planning?"
+msgstr "plan"
+
+msgid "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."
+msgstr "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."
+
+#, fuzzy
+msgid "Which DMP template would you like to use?"
+msgstr "template"
+
+msgid "Would you like to save them now?"
+msgstr "Would you like to save them now?"
+
+msgid "Yes"
+msgstr "Yes"
+
+msgid "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?"
+msgstr "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?"
+
+msgid "You are about to delete '%{guidance_summary}'. Are you sure?"
+msgstr "You are about to delete '%{guidance_summary}'. Are you sure?"
+
+msgid "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?"
+msgstr "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?"
+
+msgid "You are about to delete '%{question_text}'. Are you sure?"
+msgstr "You are about to delete '%{question_text}'. Are you sure?"
+
+msgid "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?"
+msgstr "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?"
+
+#, fuzzy
+msgid "You are about to delete a guidance for '%{question_text}'. Are you sure?"
+msgstr "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+
+msgid "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+msgstr "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+
+#, fuzzy
+msgid "You are about to delete an example answer for '%{question_text}'. Are you sure?"
+msgstr "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+
+msgid "You are not authorized to perform this action."
+msgstr ""
+
+msgid "You are viewing a historical version of this template. You will not be able to make changes."
+msgstr "You are viewing a historical version of this template. You will not be able to make changes."
+
+#, fuzzy
+msgid "You can add an example answer to help users respond. These will be presented above the answer box and can be copied/ pasted."
+msgstr "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."
+
+msgid "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."
+msgstr "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."
+
+msgid "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;
"
+msgstr "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;
"
+
+msgid "You can edit any of the details below."
+msgstr "You can edit any of the details below."
+
+#, fuzzy
+msgid "You can not continue until you have filled in all of the required information."
+msgstr "format"
+
+msgid "You can not edit a historical version of this template."
+msgstr ""
+
+msgid "You can not publish a historical version of this template."
+msgstr ""
+
+msgid "You cannot delete historical versions of this template."
+msgstr ""
+
+msgid "You have altered answers but have not saved them:"
+msgstr "You have altered answers but have not saved them:"
+
+msgid "You have been given "
+msgstr "You have been given "
+
+msgid "You have been granted permission by your organisation to use our API. Your API token and instructions for using the API endpoints can be found "
+msgstr ""
+
+msgid "You have un-published changes"
+msgstr ""
+
+msgid "You have unsaved answers in the following sections:"
+msgstr ""
+
+msgid "You must accept the terms and conditions to register."
+msgstr "You must accept the terms and conditions to register."
+
+msgid "You must enter a valid email address."
+msgstr "You must enter a valid email address."
+
+msgid "You need to sign in or sign up before continuing."
+msgstr "You need to sign in or sign up before continuing."
+
+msgid "You now have "
+msgstr ""
+
+msgid "Your"
+msgstr "Your"
+
+msgid "Your ORCID"
+msgstr "Your ORCID"
+
+msgid "Your access to "
+msgstr "Your access to "
+
+msgid "Your account has been successfully linked to %{scheme}."
+msgstr "Your account has been successfully linked to %{scheme}."
+
+msgid "Your account won't be created until you access the link above and set your password."
+msgstr "Your account won't be created until you access the link above and set your password."
+
+msgid "Your browser does not support the video tag."
+msgstr "Your browser does not support the video tag."
+
+msgid "Your password must contain at least 8 characters."
+msgstr "Your password must contain at least 8 characters."
+
+msgid "Your permissions relating to "
+msgstr "Your permissions relating to "
+
+msgid "Your template has been published and is now available to users."
+msgstr "Your template has been published and is now available to users."
+
+msgid "Your template is no longer published. Users will not be able to create new DMPs for this template until you re-publish it"
+msgstr "Your template is no longer published. Users will not be able to create new DMPs for this template until you re-publish it"
+
+msgid "a day"
+msgstr "a day"
+
+msgid "about %d hours"
+msgstr "about %d hours"
+
+msgid "about a minute"
+msgstr "about a minute"
+
+msgid "about a month"
+msgstr "about a month"
+
+msgid "about a year"
+msgstr "about a year"
+
+msgid "about an hour"
+msgstr "about an hour"
+
+msgid "account has been locked due to an excessive number of unsuccessful sign in attempts."
+msgstr "account has been locked due to an excessive number of unsuccessful sign in attempts."
+
+msgid "activerecord.errors.messages.record_invalid"
+msgstr "unable to save your changes"
+
+msgid "activerecord.errors.models.user.attributes.current_password.invalid"
+msgstr "invalid email and/or password"
+
+msgid "activerecord.errors.models.user.attributes.email.blank"
+msgstr "can't be blank"
+
+msgid "activerecord.errors.models.user.attributes.password.blank"
+msgstr "can't be blank"
+
+msgid "activerecord.errors.models.user.attributes.password_confirmation.confirmation"
+msgstr "passwords must match"
+
+msgid "add guidance text"
+msgstr "add guidance text"
+
+# Timeago - found in lib/assets/javascripts/jquery.timeago.js
+# ---------------------
+# suffix ago
+msgid "ago"
+msgstr "ago"
+
+msgid "approx. %{space_used}%% of available space used (max %{num_pages} pages)"
+msgstr "approx. %{space_used}%% of available space used (max %{num_pages} pages)"
+
+#, fuzzy
+msgid "by "
+msgstr " by "
+
+msgid "can't be blank"
+msgstr ""
+
+msgid "can't be larger than 500KB"
+msgstr ""
+
+msgid "can't be less than zero"
+msgstr ""
+
+msgid "e.g. School/ Department"
+msgstr "e.g. School/ Department"
+
+#, fuzzy
+msgid "example answer"
+msgstr "Example of answer"
+
+msgid "from now"
+msgstr "from now"
+
+#, fuzzy
+msgid "generic template"
+msgstr "template"
+
+msgid "guidance"
+msgstr "guidance"
+
+msgid "guidance group"
+msgstr "guidance group"
+
+msgid "guidance on"
+msgstr "guidance on"
+
+msgid "height must be less than 100px"
+msgstr ""
+
+msgid "helpers.is_test"
+msgstr ""
+
+msgid "helpers.links.cancel"
+msgstr ""
+
+msgid "helpers.project.is_test_help_text"
+msgstr ""
+
+msgid "into your browser"
+msgstr "into your browser"
+
+msgid "less than a minute"
+msgstr "less than a minute"
+
+msgid "must be logged in"
+msgstr "must be logged in"
+
+msgid "must be one of the following formats: jpeg, jpg, png, gif, bmp"
+msgstr "must be one of the following formats: jpeg, jpg, png, gif, bmp"
+
+msgid "must be unique"
+msgstr ""
+
+msgid "must have access to guidances api"
+msgstr "must have access to guidances api"
+
+#, fuzzy
+msgid "must have access to plans api"
+msgstr "must have access to guidances api"
+
+#, fuzzy
+msgid "no research organisation is associated with this plan"
+msgstr "organisation"
+
+msgid "note"
+msgstr "note"
+
+msgid "or copy"
+msgstr "or copy"
+
+msgid "organisation"
+msgstr "organisation"
+
+msgid "phase"
+msgstr "phase"
+
+msgid "plan"
+msgstr "plan"
+
+msgid "profile"
+msgstr ""
+
+msgid "question"
+msgstr "question"
+
+msgid "questions answered"
+msgstr "questions answered"
+
+msgid "role"
+msgstr "role"
+
+msgid "section"
+msgstr "section"
+
+msgid "select a guidance group"
+msgstr "select a guidance group"
+
+msgid "select at least one theme"
+msgstr "select at least one theme"
+
+#, fuzzy
+msgid "since %{name} saved the answer below while you were editing. Please, combine your changes and then save the answer again."
+msgstr " on "
+
+msgid "template"
+msgstr "template"
+
+msgid "user"
+msgstr "user"
+
+#, fuzzy
+msgid "user must be in your organisation"
+msgstr "organisation"
diff --git a/config/locale/en_US/app.po b/config/locale/en_US/app.po
new file mode 100644
index 0000000..d1e5e4e
--- /dev/null
+++ b/config/locale/en_US/app.po
@@ -0,0 +1,1779 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the app package.
+# FIRST AUTHOR , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: app 1.0.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2017-05-02 14:54+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+msgid " (UK users only)"
+msgstr " (UK users only)"
+
+msgid " - "
+msgstr " - "
+
+#, fuzzy
+msgid " I accept the terms and conditions *"
+msgstr " I accept the terms and conditions *"
+
+#, fuzzy
+msgid " Plan"
+msgstr "plan"
+
+msgid " access to"
+msgstr " access to"
+
+#, fuzzy
+msgid " access. "
+msgstr " access to"
+
+#, fuzzy
+msgid " and "
+msgstr " on "
+
+msgid " by"
+msgstr " by"
+
+msgid " by "
+msgstr " by "
+
+msgid " has been removed by "
+msgstr " has been removed by "
+
+#, fuzzy
+msgid " have been changed by"
+msgstr " by"
+
+msgid " into your browser)"
+msgstr " into your browser)."
+
+msgid " on "
+msgstr " on "
+
+#, fuzzy
+msgid " or "
+msgstr " on "
+
+msgid " password. You can do this through the link below."
+msgstr " password. You can do this through the link below."
+
+#, fuzzy
+msgid " provided by "
+msgstr " by "
+
+msgid " team"
+msgstr " team"
+
+#, fuzzy
+msgid " that has been customised by "
+msgstr " by "
+
+msgid " to accept the invitation, (or copy "
+msgstr " to accept the invitation, (or copy "
+
+msgid " will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on "
+msgstr " will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on "
+
+#, fuzzy
+msgid "\"Are you sure you want to unlink #{scheme.description} ID?\""
+msgstr "\"Are you sure you want to unlink your #{scheme.description} ID?\""
+
+msgid "\"Unlink your account from #{scheme.description}. You can link again at any time.\""
+msgstr "\"Unlink your account from #{scheme.description}. You can link again at any time.\""
+
+msgid "\"Your account has been linked to #{scheme.description}.\""
+msgstr "\"Your account has been linked to #{scheme.description}.\""
+
+msgid "%d days"
+msgstr "%d days"
+
+msgid "%d minutes"
+msgstr "%d minutes"
+
+msgid "%d months"
+msgstr "%d months"
+
+msgid "%d years"
+msgstr "%d years"
+
+msgid "%{application_name}"
+msgstr "%{application_name}"
+
+msgid "%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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."
+msgstr "%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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."
+
+#, fuzzy
+msgid "%{application_name} is provided by the %{organisation_name}. You can find out more about us on our website. If you would like to contact us about %{application_name}, please fill out the form below."
+msgstr "%{application_name}"
+
+msgid "%{format} is not a valid exporting format. Available formats to export are %{available_formats}."
+msgstr "%{format} is not a valid exporting format. Available formats to export are %{available_formats}."
+
+msgid "%{value} is not a valid format"
+msgstr "%{value} is not a valid format"
+
+msgid "(Using custom PDF formatting values)"
+msgstr "(Using custom PDF formatting values)"
+
+msgid "(Using template PDF formatting values)"
+msgstr "(Using template PDF formatting values)"
+
+msgid "-"
+msgstr ""
+
+msgid "... (continued)"
+msgstr "... (continued)"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
"
+msgstr "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
"
+
+msgid "
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
"
+msgstr "
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in %{application_name}, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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 Digital Curation Centre 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.
DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in %{application_name}, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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 Digital Curation Centre 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.
"
+
+msgid "
%{application_name} has been jointly developed by the %{organisation_name} to help you write data management plans.
"
+msgstr "
%{application_name} has been jointly developed by the %{organisation_name} to help you write data management plans.
"
+
+msgid "
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
"
+msgstr "
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} can be customised by institutions and disciplines. You can add templates for users in your organization 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
"
+
+msgid "
%{application_name} stories from the %{organisation_abbreviation} website
"
+msgstr "
%{application_name} stories from the %{organisation_abbreviation} website
"
+
+msgid "
Welcome. You are now ready to create your first DMP.Click the 'Create plan' button below to begin.
"
+msgstr "
Welcome. You are now ready to create your first DMP.Click the 'Create plan' button below to begin.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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'.
"
+msgstr "
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'.
"
+
+msgid "
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. %{application_name} has been produced by the %{organisation_name} to help research teams respond to this requirement, and any expectations that their institution or others may apply.
The %{organisation_abbreviation} 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 %{application_name} account, click on 'Create account' on the homepage.
We are constantly improving the user interface and functionality of %{application_name}. 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
"
+msgstr "
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. %{application_name} has been produced by the %{organisation_name} to help research teams respond to this requirement, and any expectations that their institution or others may apply.
The %{organisation_abbreviation} 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 %{application_name} account, click on 'Create account' on the homepage.
We are constantly improving the user interface and functionality of %{application_name}. 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
"
+
+msgid "
Here you can view previously published versions of your template. These can no longer be modified.
"
+msgstr "
Here you can view previously published versions of your template. These can no longer be modified.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
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 %{organisation_abbreviation} or any Schools/Departments that you provide guidance for.
You can select multiple themes by using the CTRL button.
"
+msgstr "
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 %{organisation_abbreviation} or any Schools/Departments that you provide guidance for.
You can select multiple themes by using the CTRL button.
"
+
+msgid "
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
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.
"
+msgstr "
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.
"
+
+msgid "
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.
"
+msgstr "
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.
"
+
+msgid "
When you login to %{application_name} 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 %{application_name} 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.
"
+msgstr "
When you login to %{application_name} 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 %{application_name} 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.
"
+
+msgid "
You are about to unlink %{application_name} of your institutional credentials, would you like to continue?
"
+msgstr "
You are about to unlink %{application_name} of your institutional credentials, would you like to continue?
"
+
+msgid "
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 %{application_name} if they don't already have an account. A notification is also issued when a user's permission level is changed.
"
+msgstr "
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 %{application_name} if they don't already have an account. A notification is also issued when a user's permission level is changed.
"
+
+msgid "
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
"
+msgstr "
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
"
+msgstr "%{application_name}"
+
+#, fuzzy
+msgid "A Data Management Plan in %{application_name} has been shared with you"
+msgstr "%{application_name}"
+
+msgid "A colleague has invited you to contribute to their Data Management Plan at "
+msgstr "A colleague has invited you to contribute to their Data Management Plan at "
+
+msgid "A pertinent ID as determined by the funder and/or institution."
+msgstr "A pertinent ID as determined by the funder and/or institution."
+
+msgid "A required setting has not been provided"
+msgstr "A required setting has not been provided"
+
+msgid "A version of "
+msgstr ""
+
+msgid "API Information"
+msgstr "API Information"
+
+msgid "API rights"
+msgstr ""
+
+msgid "API token"
+msgstr "API token"
+
+msgid "Abbreviation"
+msgstr "Abbreviation"
+
+msgid "About"
+msgstr "About"
+
+msgid "About %{application_name}"
+msgstr "About %{application_name}"
+
+msgid "Access removed"
+msgstr "Access removed"
+
+msgid "Actions"
+msgstr "Actions"
+
+msgid "Add Annotations"
+msgstr ""
+
+#, fuzzy
+msgid "Add an appropriate name for your guidance group. This name will be used to tell the end user where the guidance has come from. It will be appended to text identifying the theme e.g. \"[guidance group name]: guidance on data sharing\" so we suggest you just use the institution or department name."
+msgstr "guidance group"
+
+msgid "Add collaborator"
+msgstr "Add collaborator"
+
+msgid "Add guidance"
+msgstr "Add guidance"
+
+msgid "Add guidance group"
+msgstr "Add guidance group"
+
+msgid "Add new phase +"
+msgstr "Add new phase +"
+
+msgid "Add note"
+msgstr "Add note"
+
+msgid "Add option"
+msgstr "Add option"
+
+msgid "Add question"
+msgstr "Add question"
+
+msgid "Add section"
+msgstr "Add section"
+
+msgid "Additional comment area will be displayed."
+msgstr "Additional comment area will be displayed."
+
+msgid "Admin Details"
+msgstr "Admin Details"
+
+msgid "Admin area"
+msgstr "Admin area"
+
+msgid "All the best,"
+msgstr ""
+
+#, fuzzy
+msgid "Allows the user to amend the organisation details (name, URL etc) and add basic branding such as the logo"
+msgstr "organization"
+
+#, fuzzy
+msgid "Allows the user to assign permissions to other users within the same organisation. Users can only assign permissions they own themselves"
+msgstr "organization"
+
+#, fuzzy
+msgid "Allows the user to create and edit guidance"
+msgstr "guidance"
+
+#, fuzzy
+msgid "Allows the user to create new institutional templates, edit existing ones and customise funder templates"
+msgstr "template"
+
+msgid "An error has occurred while saving/resetting your export settings."
+msgstr ""
+
+msgid "Annotations"
+msgstr ""
+
+msgid "Answer"
+msgstr "Answer"
+
+msgid "Answer format"
+msgstr "Answer format"
+
+msgid "Answer questions"
+msgstr "Answer questions"
+
+msgid "Answered"
+msgstr "Answered"
+
+msgid "Answered at"
+msgstr "Answered at"
+
+msgid "Answered by"
+msgstr "Answered by"
+
+msgid "Answers"
+msgstr "Answers"
+
+msgid "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."
+msgstr "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."
+
+msgid "Are you sure you want to remove this note?"
+msgstr "Are you sure you want to remove this note?"
+
+msgid "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"
+msgstr "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"
+
+msgid "Are you sure?"
+msgstr "Are you sure?"
+
+msgid "Back"
+msgstr "Back"
+
+msgid "Back to edit view"
+msgstr "Back to edit view"
+
+msgid "Background"
+msgstr "Background"
+
+msgid "Bad Credentials"
+msgstr ""
+
+msgid "Bad Parameters"
+msgstr ""
+
+msgid "Before submitting, please consider:"
+msgstr "Before submitting, please consider:"
+
+#, fuzzy
+msgid "Before you get started, we need to ask a few questions to set you up with the best DMP template for your needs."
+msgstr "questions"
+
+msgid "Begin typing to see a filtered list"
+msgstr ""
+
+msgid "Below is a list of users registered for your organisation. You can sort the data by each field."
+msgstr "Below is a list of users registered for your organization. You can sort the data by each field."
+
+msgid "Bottom"
+msgstr "Bottom"
+
+msgid "By "
+msgstr "By "
+
+msgid "Cancel"
+msgstr "Cancel"
+
+#, fuzzy
+msgid "Cannot share plan with %{email} since that email matches with the owner of the plan."
+msgstr "plan"
+
+msgid "Change language"
+msgstr "Change language"
+
+msgid "Change my password"
+msgstr "Change my password"
+
+#, fuzzy
+msgid "Change organisation details"
+msgstr "organization"
+
+msgid "Check box"
+msgstr "Check box"
+
+msgid "Check this box when you are ready for this guidance to appear on user's plans."
+msgstr "Check this box when you are ready for this guidance to appear on user's plans."
+
+msgid "Click here"
+msgstr ""
+
+msgid "Click here to accept the invitation"
+msgstr "Click here to accept the invitation"
+
+msgid "Click here to confirm your account"
+msgstr "Click here to confirm your account"
+
+msgid "Click the link below to unlock your account"
+msgstr "Click the link below to unlock your account"
+
+msgid "Co-owner"
+msgstr "Co-owner"
+
+msgid "Collaborators"
+msgstr "Collaborators"
+
+msgid "Comment"
+msgstr "Comment"
+
+msgid "Comment removed."
+msgstr "Comment removed."
+
+msgid "Comment was successfully created."
+msgstr "Comment was successfully created."
+
+msgid "Comment was successfully saved."
+msgstr "Comment was successfully saved."
+
+msgid "Contact Email"
+msgstr "Contact Email"
+
+#, fuzzy
+msgid "Contact Us"
+msgstr "Contact us"
+
+msgid "Contact us"
+msgstr "Contact us"
+
+msgid "Create a new plan"
+msgstr "Create a new plan"
+
+msgid "Create a template"
+msgstr "Create a template"
+
+msgid "Create account"
+msgstr "Create account"
+
+msgid "Create plan"
+msgstr "Create plan"
+
+msgid "Created"
+msgstr "Created"
+
+msgid "Created at"
+msgstr "Created at"
+
+msgid "Current password"
+msgstr "Current password"
+
+msgid "Customise"
+msgstr "Customise"
+
+msgid "Default"
+msgstr "Default"
+
+msgid "Default answer"
+msgstr "Default answer"
+
+msgid "Default value"
+msgstr "Default value"
+
+msgid "Delete"
+msgstr "Delete"
+
+#, fuzzy
+msgid "Delete Example Answer"
+msgstr "Example of answer"
+
+msgid "Delete question"
+msgstr "Delete question"
+
+msgid "Description"
+msgstr "Description"
+
+msgid "Details"
+msgstr "Details"
+
+msgid "Details successfully updated."
+msgstr "Details successfully updated."
+
+msgid "Didn't receive confirmation instructions?"
+msgstr "Didn't receive confirmation instructions?"
+
+msgid "Didn't receive unlock instructions?"
+msgstr "Didn't receive unlock instructions?"
+
+msgid "Discard"
+msgstr "Discard"
+
+msgid "Display additional comment area."
+msgstr "Display additional comment area."
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dropdown"
+msgstr "Dropdown"
+
+msgid "E.g ORCID http://orcid.org/."
+msgstr "E.g ORCID http://orcid.org/."
+
+msgid "Edit"
+msgstr "Edit"
+
+#, fuzzy
+msgid "Edit Annotations"
+msgstr "Edit"
+
+msgid "Edit User Privileges"
+msgstr "Edit User Permissions"
+
+msgid "Edit customisation"
+msgstr "Edit customisation"
+
+msgid "Edit phase"
+msgstr "Edit phase"
+
+msgid "Edit phase details"
+msgstr "Edit phase details"
+
+msgid "Edit plan details"
+msgstr "Edit plan details"
+
+msgid "Edit profile"
+msgstr "Edit profile"
+
+msgid "Edit question"
+msgstr "Edit question"
+
+msgid "Edit template details"
+msgstr "Edit template details"
+
+msgid "Editor"
+msgstr "Editor"
+
+msgid "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access."
+msgstr "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access."
+
+msgid "Email"
+msgstr "Email"
+
+msgid "Email address"
+msgstr "Email address"
+
+msgid "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."
+msgstr "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."
+
+msgid "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences"
+msgstr "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences"
+
+msgid "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"
+msgstr "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"
+
+msgid "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box."
+msgstr "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box."
+
+msgid "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."
+msgstr "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."
+
+msgid "Enter your guidance here. You can include links where needed."
+msgstr "Enter your guidance here. You can include links where needed."
+
+msgid "Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long."
+msgstr "Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long."
+
+msgid "Error!"
+msgstr "Error!"
+
+#, fuzzy
+msgid "Example Answer"
+msgstr "Example of answer"
+
+#, fuzzy
+msgid "Example of answer"
+msgstr "Example of answer"
+
+msgid "Export"
+msgstr "Export"
+
+msgid "Export settings updated successfully."
+msgstr "Export settings updated successfully."
+
+msgid "Exporting public plan is under development. Apologies for any inconvience."
+msgstr "Exporting public plan is under development. Apologies for any inconvience."
+
+msgid "Face"
+msgstr "Face"
+
+msgid "File Name"
+msgstr "File Name"
+
+msgid "Fill in the required fields"
+msgstr ""
+
+msgid "Filter plans"
+msgstr "Filter plans"
+
+msgid "First name"
+msgstr "First name"
+
+msgid "Font"
+msgstr "Font"
+
+msgid "Forgot your password?"
+msgstr "Forgot your password?"
+
+#, fuzzy
+msgid "Format"
+msgstr "format"
+
+msgid "Funder"
+msgstr "Funder"
+
+msgid "Funders templates"
+msgstr "Funders templates"
+
+#, fuzzy
+msgid "Funding organisation"
+msgstr "organization"
+
+msgid "Future plans"
+msgstr "Future plans"
+
+msgid "Get involved"
+msgstr "Get involved"
+
+msgid "Grant number"
+msgstr "Grant Number"
+
+msgid "Grant permissions"
+msgstr ""
+
+msgid "Grant reference number if applicable [POST-AWARD DMPs ONLY]"
+msgstr "Grant reference number if applicable [POST-AWARD DMPs ONLY]"
+
+msgid "Guidance"
+msgstr "Guidance"
+
+#, fuzzy
+msgid "Guidance choices saved."
+msgstr "Guidance"
+
+msgid "Guidance group"
+msgstr "Guidance group"
+
+msgid "Guidance group list"
+msgstr "Guidance group list"
+
+msgid "Guidance group was successfully created."
+msgstr "Guidance group was successfully created."
+
+msgid "Guidance group was successfully deleted."
+msgstr "Guidance group was successfully deleted."
+
+msgid "Guidance group was successfully updated."
+msgstr "Guidance group was successfully updated."
+
+msgid "Guidance list"
+msgstr "Guidance list"
+
+msgid "Guidance was successfully created."
+msgstr "Guidance was successfully created."
+
+msgid "Guidance was successfully deleted."
+msgstr "Guidance was successfully deleted."
+
+msgid "Guidance was successfully updated."
+msgstr "Guidance was successfully updated."
+
+msgid "Hello"
+msgstr "Hello"
+
+msgid "Hello "
+msgstr "Hello "
+
+msgid "Help"
+msgstr "Help"
+
+msgid "History"
+msgstr "History"
+
+msgid "Home"
+msgstr "Home"
+
+msgid "How many plans?"
+msgstr "How many plans?"
+
+msgid "How to use the API"
+msgstr "How to use the API"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "If applying for funding, state the name exactly as in the grant proposal."
+msgstr "If applying for funding, state the name exactly as in the grant proposal."
+
+#, fuzzy
+msgid "If applying for funding, state the title exactly as in the proposal."
+msgstr "If applying for funding, state the name exactly as in the grant proposal."
+
+msgid "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."
+msgstr "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."
+
+msgid "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+msgstr "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+
+msgid "If you decide to use the default DMPRoadmap logo, please check this box to remove your current logo."
+msgstr "If you decide to use the default DMPRoadmap logo, please check this box to remove your current logo."
+
+msgid "If you didn't request this, please ignore this email."
+msgstr ""
+
+msgid "If you don't want to accept the invitation, please ignore this email."
+msgstr ""
+
+msgid "If you would like to change your password please complete the following fields."
+msgstr "If you would like to change your password please complete the following fields."
+
+msgid "Included Elements"
+msgstr "Included Elements"
+
+msgid "Information was successfully created."
+msgstr "Information was successfully created."
+
+msgid "Information was successfully deleted."
+msgstr "Information was successfully deleted."
+
+msgid "Information was successfully updated."
+msgstr "Information was successfully updated."
+
+msgid "Institution"
+msgstr "Institution"
+
+msgid "Invalid font face"
+msgstr "Invalid font face"
+
+msgid "Invalid font size"
+msgstr "Invalid font size"
+
+msgid "Invalid maximum pages"
+msgstr "Invalid maximum pages"
+
+#, fuzzy
+msgid "Invitation to %{email} issued successfully."
+msgstr "Invitation issued successfully."
+
+msgid "Language"
+msgstr "Language"
+
+msgid "Last logged in"
+msgstr "Last logged in"
+
+msgid "Last name"
+msgstr "Last name"
+
+msgid "Last updated"
+msgstr "Last updated"
+
+msgid "Latest news"
+msgstr "Latest news"
+
+msgid "Left"
+msgstr "Left"
+
+msgid "List of users"
+msgstr "List of users"
+
+msgid "Logo"
+msgstr "Logo"
+
+msgid "Main organisation"
+msgstr "Main organization"
+
+msgid "Many thanks,"
+msgstr ""
+
+msgid "Margin"
+msgstr "Margin"
+
+msgid "Margin cannot be negative"
+msgstr "Margin cannot be negative"
+
+msgid "Margin value is invalid"
+msgstr "Margin value is invalid"
+
+msgid "Me"
+msgstr "Me"
+
+#, fuzzy
+msgid "Message"
+msgstr "Me"
+
+#, fuzzy
+msgid "Modify guidance"
+msgstr "guidance"
+
+#, fuzzy
+msgid "Modify templates"
+msgstr "template"
+
+msgid "Multi select box"
+msgstr "Multi select box"
+
+#, fuzzy
+msgid "My Plan"
+msgstr "My plan"
+
+msgid "My organisation isn't listed."
+msgstr "My organization isn't listed."
+
+msgid "My plans"
+msgstr "My plans"
+
+#, fuzzy
+msgid "My research organisation is not on the list"
+msgstr "organization"
+
+msgid "Name"
+msgstr "Name"
+
+msgid "Name (if different to above), telephone and email contact details"
+msgstr "Name (if different to above), telephone and email contact details"
+
+msgid "Name of Principal Investigator(s) or main researcher(s) on the project."
+msgstr "Name of Principal Investigator(s) or main researcher(s) on the project."
+
+msgid "New guidance"
+msgstr "New guidance"
+
+msgid "New password"
+msgstr "New password"
+
+msgid "New section title"
+msgstr "New section title"
+
+msgid "New template"
+msgstr "New template"
+
+msgid "New to %{application_name}? Create an account today."
+msgstr "New to %{application_name}? Create an account today."
+
+msgid "No"
+msgstr "No"
+
+msgid "No additional comment area will be displayed."
+msgstr "No additional comment area will be displayed."
+
+#, fuzzy
+msgid "No funder associated with this plan"
+msgstr "plan"
+
+#, fuzzy
+msgid "No items available."
+msgstr "No"
+
+msgid "No matches"
+msgstr "No matches"
+
+msgid "None"
+msgstr "None"
+
+msgid "Not answered yet"
+msgstr "Not answered yet"
+
+msgid "Note"
+msgstr "Note"
+
+msgid "Note removed by"
+msgstr "Note removed by"
+
+msgid "Note removed by you"
+msgstr "Note removed by you"
+
+msgid "Noted by:"
+msgstr "Noted by:"
+
+msgid "Ok"
+msgstr "Ok"
+
+msgid "On %{application_name}"
+msgstr "On %{application_name}"
+
+msgid "On data management planning"
+msgstr "On data management planning"
+
+msgid "Optional subset"
+msgstr "Optional subset"
+
+msgid "Or, sign in with your institutional credentials"
+msgstr "Or, sign in with your institutional credentials"
+
+msgid "Order"
+msgstr "Order"
+
+msgid "Order of display"
+msgstr "Order of display"
+
+msgid "Organisation"
+msgstr "Organization"
+
+msgid "Organisation details"
+msgstr "Organization details"
+
+msgid "Organisation name"
+msgstr "Organization name"
+
+msgid "Organisation type"
+msgstr "Organization type"
+
+msgid "Organisation was successfully updated."
+msgstr "Organization was successfully updated."
+
+msgid "Organisational"
+msgstr "Organizational"
+
+msgid "Organisational (visibile to others within your organisation)"
+msgstr "Organizational (visibile to others within your organization)"
+
+msgid "Organization"
+msgstr "Organization"
+
+msgid "Original funder template has changed!"
+msgstr "Original funder template has changed!"
+
+msgid "Other institutions"
+msgstr ""
+
+msgid "Own templates"
+msgstr "Own templates"
+
+msgid "Owner"
+msgstr "Owner"
+
+msgid "PDF Formatting"
+msgstr "PDF Formatting"
+
+msgid "Password"
+msgstr "Password"
+
+msgid "Password and comfirmation must match"
+msgstr "Password and confirmation must match"
+
+msgid "Password confirmation"
+msgstr "Password confirmation"
+
+msgid "Permissions"
+msgstr "Permissions"
+
+msgid "Phase details"
+msgstr "Phase details"
+
+msgid "Plan Data Contact"
+msgstr "Plan Data Contact"
+
+msgid "Plan Description"
+msgstr "Plan Description"
+
+msgid "Plan ID"
+msgstr "Plan ID"
+
+msgid "Plan Name"
+msgstr "Plan Name"
+
+msgid "Plan data contact"
+msgstr "Plan data contact"
+
+msgid "Plan details"
+msgstr "Plan details"
+
+msgid "Plan is already shared with %{email}."
+msgstr ""
+
+msgid "Plan name"
+msgstr "Plan name"
+
+msgid "Plan shared with %{email}."
+msgstr ""
+
+msgid "Plan was successfully deleted."
+msgstr "Plan was successfully deleted."
+
+msgid "Plan was successfully updated."
+msgstr "Plan was successfully updated."
+
+msgid "Please add an abbreviation to your org for display with annotations!"
+msgstr ""
+
+#, fuzzy
+msgid "Please enter a First name."
+msgstr "Please enter your first name."
+
+#, fuzzy
+msgid "Please enter a Last name."
+msgstr "Please enter your first name."
+
+msgid "Please enter a password confirmation"
+msgstr ""
+
+msgid "Please enter a title for your template."
+msgstr "Please enter a title for your template."
+
+msgid "Please enter a valid web address."
+msgstr "Please enter a valid web address."
+
+msgid "Please enter an email address"
+msgstr "Please enter an email address"
+
+#, fuzzy
+msgid "Please enter an email address."
+msgstr "Please enter an email address"
+
+msgid "Please enter the name of your organisation."
+msgstr "Please enter the name of your organization."
+
+msgid "Please enter your current password"
+msgstr ""
+
+msgid "Please enter your current password below when changing your email address."
+msgstr ""
+
+msgid "Please enter your email"
+msgstr ""
+
+msgid "Please enter your first name."
+msgstr "Please enter your first name."
+
+msgid "Please enter your organisation's name."
+msgstr "Please enter your organization's name."
+
+msgid "Please enter your password to change email address."
+msgstr ""
+
+msgid "Please enter your surname or family name."
+msgstr "Please enter your surname or family name."
+
+msgid "Please fill in the basic project details below"
+msgstr ""
+
+msgid "Please fill in the basic project details below and click 'Update' to save"
+msgstr "Please fill in the basic project details below and click 'Update' to save"
+
+#, fuzzy
+msgid "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."
+msgstr "
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.
"
+
+msgid "Please only enter up to 165 characters, you have used"
+msgstr "Please only enter up to 165 characters, you have used"
+
+#, fuzzy
+msgid "Please select an organisation, or select Other."
+msgstr "organization"
+
+msgid "Please select one"
+msgstr ""
+
+msgid "Preview"
+msgstr "Preview"
+
+#, fuzzy
+msgid "Primary research organisation"
+msgstr "organization"
+
+msgid "Principal Investigator / Researcher"
+msgstr "Principal Investigator / Researcher"
+
+msgid "Principal Investigator/Researcher"
+msgstr "Principal Investigator/Researcher"
+
+msgid "Principal Investigator/Researcher ID"
+msgstr "Principal Investigator/Researcher ID"
+
+msgid "Private"
+msgstr "Private"
+
+msgid "Private (owners, co-owners, and administrators only) See our Terms of Use."
+msgstr "Private (owners, co-owners, and administrators only) See our Terms of Use."
+
+msgid "Privileges"
+msgstr "Permissions"
+
+msgid "Project title"
+msgstr ""
+
+#, fuzzy
+msgid "Provides the user with an API token and grants rights to harvest information from the tool"
+msgstr "API token"
+
+msgid "Public"
+msgstr "Public"
+
+msgid "Public (Your DMP will appear on the Public DMPs page of this site)"
+msgstr "Public (Your DMP will appear on the Public DMPs page of this site)"
+
+msgid "Public DMPs"
+msgstr "Public DMPs"
+
+msgid "Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines."
+msgstr "Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines."
+
+msgid "Publish"
+msgstr "Publish"
+
+msgid "Publish changes"
+msgstr "Publish changes"
+
+msgid "Published"
+msgstr "Published"
+
+msgid "Question"
+msgstr "Question"
+
+msgid "Question not answered"
+msgstr "Question not answered."
+
+msgid "Question not answered."
+msgstr "Question not answered."
+
+msgid "Question number"
+msgstr "Question number"
+
+msgid "Question text"
+msgstr "Question text"
+
+msgid "Question text is empty, please enter your question."
+msgstr "Question text is empty, please enter your question."
+
+msgid "Questions"
+msgstr "Questions"
+
+msgid "Radio buttons"
+msgstr "Radio buttons"
+
+msgid "Read more on the "
+msgstr "Read more on the "
+
+msgid "Read only"
+msgstr "Read only"
+
+msgid "Releases"
+msgstr "Releases"
+
+msgid "Remember me"
+msgstr "Remember me"
+
+msgid "Remove"
+msgstr "Remove"
+
+msgid "Remove user access"
+msgstr "Remove user access"
+
+msgid "Reset"
+msgstr "Reset"
+
+msgid "Right"
+msgstr "Right"
+
+msgid "Save"
+msgstr "Save"
+
+#, fuzzy
+msgid "Save Unsuccessful."
+msgstr "Save"
+
+msgid "Saving..."
+msgstr "Saving..."
+
+msgid "Screencast on how to use %{application_name}"
+msgstr "Screencast on how to use %{application_name}"
+
+msgid "Section"
+msgstr "Section"
+
+msgid "Sections"
+msgstr "Sections"
+
+#, fuzzy
+msgid "Select a template"
+msgstr "template"
+
+msgid "Select an action"
+msgstr "Select an action"
+
+#, fuzzy
+msgid "Select the funding organisation"
+msgstr "organization"
+
+#, fuzzy
+msgid "Select the primary research organisation responsible"
+msgstr "organization"
+
+msgid "Select which group this guidance relates to."
+msgstr "Select which group this guidance relates to."
+
+msgid "Select which theme(s) this guidance relates to."
+msgstr "Select which theme(s) this guidance relates to."
+
+msgid "Selected option(s)"
+msgstr ""
+
+msgid "Share"
+msgstr "Share"
+
+msgid "Share note"
+msgstr "Share note"
+
+msgid "Share note with collaborators"
+msgstr "Share note with collaborators"
+
+msgid "Sharing details successfully updated."
+msgstr "Sharing details successfully updated."
+
+msgid "Should this guidance apply:"
+msgstr "Should this guidance apply:"
+
+msgid "Sign in"
+msgstr "Sign in"
+
+msgid "Sign out"
+msgstr "Sign out"
+
+msgid "Signed in as "
+msgstr "Signed in as "
+
+msgid "Size"
+msgstr "Size"
+
+msgid "Someone has requested a link to change your "
+msgstr "Someone has requested a link to change your "
+
+msgid "Status"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Successfully unlinked your account from %{is}."
+msgstr ""
+
+msgid "Suggested answer"
+msgstr "Suggested answer"
+
+msgid "Suggested answer/ Example"
+msgstr "Suggested answer/ Example"
+
+msgid "Super admin area"
+msgstr "Super admin area"
+
+msgid "Template"
+msgstr "Template"
+
+msgid "Template History"
+msgstr "Template History"
+
+msgid "Template details"
+msgstr "Template details"
+
+msgid "Templates"
+msgstr "Templates"
+
+msgid "Terms of use"
+msgstr "Terms of use"
+
+msgid "Test/Practice"
+msgstr "Test/Practice"
+
+msgid "Test/Practice (your plan is not visible to other users) See our Terms of Use."
+msgstr "Test/Practice (your plan is not visible to other users) See our Terms of Use."
+
+msgid "Text"
+msgstr "Text"
+
+msgid "Text area"
+msgstr "Text area"
+
+msgid "Text field"
+msgstr "Text field"
+
+msgid "Thank you for registering. Please confirm your email address"
+msgstr "Thank you for registering. Please confirm your email address"
+
+msgid "That email address is already registered."
+msgstr "That email address is already registered."
+
+msgid "That template is not currently published."
+msgstr "That template is not currently published."
+
+#, fuzzy
+msgid "The"
+msgstr "The "
+
+msgid "The "
+msgstr "The "
+
+msgid "The email address of an administrator at your organisation. Your users will use this address if they have questions."
+msgstr "The email address of an administrator at your organization. Your users will use this address if they have questions."
+
+#, fuzzy
+msgid "The following answer cannot be saved"
+msgstr "The "
+
+msgid "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."
+msgstr "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."
+
+msgid "Themes"
+msgstr "Themes"
+
+msgid "There are no public DMPs."
+msgstr "There are no public DMPs."
+
+msgid "There seems to be a problem with your logo. Please upload it again."
+msgstr "There seems to be a problem with your logo. Please upload it again."
+
+msgid "These are the basic details for your organisation."
+msgstr "These are the basic details for your organization."
+
+msgid "This allows you to order questions within a section."
+msgstr "This allows you to order questions within a section."
+
+msgid "This allows you to order sections."
+msgstr "This allows you to order sections."
+
+msgid "This allows you to order the phases of your template."
+msgstr "This allows you to order the phases of your template."
+
+msgid "This document was generated by %{application_name}"
+msgstr "This document was generated by %{application_name}"
+
+msgid "This must match what you entered in the previous field."
+msgstr "This must match what you entered in the previous field."
+
+msgid "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."
+msgstr "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."
+
+#, fuzzy
+msgid "This plan is based on the default template."
+msgstr "template"
+
+msgid "This plan is based on:"
+msgstr "This plan is based on:"
+
+msgid "This section is locked for editing by "
+msgstr "This section is locked for editing by "
+
+msgid "Title"
+msgstr "Title"
+
+msgid "Top"
+msgstr "Top"
+
+msgid "Top banner text"
+msgstr "Top banner text"
+
+msgid "Transfer customisation"
+msgstr ""
+
+msgid "Un-published"
+msgstr "Un-published"
+
+msgid "Unable to link your account to %{scheme}."
+msgstr ""
+
+msgid "Unable to unlink your account from %{is}."
+msgstr ""
+
+msgid "Unknown column name."
+msgstr "Unknown column name."
+
+msgid "Unknown formatting setting"
+msgstr "Unknown formatting setting"
+
+msgid "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"
+msgstr "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"
+
+msgid "Unlink account"
+msgstr "Unlink account"
+
+msgid "Unlink institutional credentials alert"
+msgstr "Unlink institutional credentials alert"
+
+msgid "Unlock my account"
+msgstr "Unlock my account"
+
+msgid "Unpublish"
+msgstr "Unpublish"
+
+msgid "Unpublished"
+msgstr "Unpublished"
+
+msgid "Unpublished changes"
+msgstr "Unpublished changes"
+
+msgid "Unsaved answers"
+msgstr "Unsaved answers"
+
+msgid "Unsaved changes"
+msgstr "Unsaved changes"
+
+msgid "Upload a new logo file"
+msgstr "Upload a new logo file"
+
+msgid "Users"
+msgstr "Users"
+
+msgid "Using the generic Data Management Plan"
+msgstr ""
+
+msgid "Version"
+msgstr "Version"
+
+msgid "View"
+msgstr "View"
+
+msgid "View all guidance"
+msgstr "View all guidance"
+
+msgid "View all templates"
+msgstr "View all templates"
+
+msgid "View phase"
+msgstr "View phase"
+
+msgid "View plans"
+msgstr "View plans"
+
+msgid "Visibility"
+msgstr "Visibility"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the funder."
+msgstr "template"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the research organisation."
+msgstr "organization"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to your funder."
+msgstr "template"
+
+msgid "Website"
+msgstr "Website"
+
+msgid "Welcome to "
+msgstr "Welcome to "
+
+msgid "Welcome to %{application_name}"
+msgstr "Welcome to %{application_name}"
+
+msgid "Welcome."
+msgstr "Welcome."
+
+#, fuzzy
+msgid "What research project are you planning?"
+msgstr "plan"
+
+msgid "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."
+msgstr "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."
+
+#, fuzzy
+msgid "Which DMP template would you like to use?"
+msgstr "template"
+
+msgid "Would you like to save them now?"
+msgstr "Would you like to save them now?"
+
+msgid "Yes"
+msgstr "Yes"
+
+msgid "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?"
+msgstr "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?"
+
+msgid "You are about to delete '%{guidance_summary}'. Are you sure?"
+msgstr "You are about to delete '%{guidance_summary}'. Are you sure?"
+
+msgid "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?"
+msgstr "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?"
+
+msgid "You are about to delete '%{question_text}'. Are you sure?"
+msgstr "You are about to delete '%{question_text}'. Are you sure?"
+
+msgid "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?"
+msgstr "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?"
+
+#, fuzzy
+msgid "You are about to delete a guidance for '%{question_text}'. Are you sure?"
+msgstr "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+
+msgid "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+msgstr "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+
+#, fuzzy
+msgid "You are about to delete an example answer for '%{question_text}'. Are you sure?"
+msgstr "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+
+msgid "You are not authorized to perform this action."
+msgstr ""
+
+msgid "You are viewing a historical version of this template. You will not be able to make changes."
+msgstr "You are viewing a historical version of this template. You will not be able to make changes."
+
+#, fuzzy
+msgid "You can add an example answer to help users respond. These will be presented above the answer box and can be copied/ pasted."
+msgstr "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."
+
+msgid "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."
+msgstr "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."
+
+msgid "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;
"
+msgstr "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;
"
+
+msgid "You can edit any of the details below."
+msgstr "You can edit any of the details below."
+
+#, fuzzy
+msgid "You can not continue until you have filled in all of the required information."
+msgstr "format"
+
+msgid "You can not edit a historical version of this template."
+msgstr ""
+
+msgid "You can not publish a historical version of this template."
+msgstr ""
+
+msgid "You cannot delete historical versions of this template."
+msgstr ""
+
+msgid "You have altered answers but have not saved them:"
+msgstr "You have altered answers but have not saved them:"
+
+msgid "You have been given "
+msgstr "You have been given "
+
+msgid "You have been granted permission by your organisation to use our API. Your API token and instructions for using the API endpoints can be found "
+msgstr "You have been granted permission by your organization to use our API. Your API token and instructions for using the API endpoints can be found "
+
+msgid "You have un-published changes"
+msgstr ""
+
+msgid "You have unsaved answers in the following sections:"
+msgstr ""
+
+msgid "You must accept the terms and conditions to register."
+msgstr "You must accept the terms and conditions to register."
+
+msgid "You must enter a valid email address."
+msgstr "You must enter a valid email address."
+
+msgid "You need to sign in or sign up before continuing."
+msgstr "You need to sign in or sign up before continuing."
+
+msgid "You now have "
+msgstr ""
+
+msgid "Your"
+msgstr "Your"
+
+msgid "Your ORCID"
+msgstr "Your ORCID"
+
+msgid "Your access to "
+msgstr "Your access to "
+
+msgid "Your account has been successfully linked to %{scheme}."
+msgstr "Your account has been successfully linked to %{scheme}."
+
+msgid "Your account won't be created until you access the link above and set your password."
+msgstr "Your account won't be created until you access the link above and set your password."
+
+msgid "Your browser does not support the video tag."
+msgstr "Your browser does not support the video tag."
+
+msgid "Your password must contain at least 8 characters."
+msgstr "Your password must contain at least 8 characters."
+
+msgid "Your permissions relating to "
+msgstr "Your permissions relating to "
+
+msgid "Your template has been published and is now available to users."
+msgstr "Your template has been published and is now available to users."
+
+msgid "Your template is no longer published. Users will not be able to create new DMPs for this template until you re-publish it"
+msgstr "Your template is no longer published. Users will not be able to create new DMPs for this template until you re-publish it"
+
+msgid "a day"
+msgstr "a day"
+
+msgid "about %d hours"
+msgstr "about %d hours"
+
+msgid "about a minute"
+msgstr "about a minute"
+
+msgid "about a month"
+msgstr "about a month"
+
+msgid "about a year"
+msgstr "about a year"
+
+msgid "about an hour"
+msgstr "about an hour"
+
+msgid "account has been locked due to an excessive number of unsuccessful sign in attempts."
+msgstr "account has been locked due to an excessive number of unsuccessful sign in attempts."
+
+msgid "activerecord.errors.messages.record_invalid"
+msgstr "unable to save your changes"
+
+msgid "activerecord.errors.models.user.attributes.current_password.invalid"
+msgstr "invalid email and/or password"
+
+msgid "activerecord.errors.models.user.attributes.email.blank"
+msgstr "can't be blank"
+
+msgid "activerecord.errors.models.user.attributes.password.blank"
+msgstr "can't be blank"
+
+msgid "activerecord.errors.models.user.attributes.password_confirmation.confirmation"
+msgstr "passwords must match"
+
+msgid "add guidance text"
+msgstr "add guidance text"
+
+# Timeago - found in lib/assets/javascripts/jquery.timeago.js
+# ---------------------
+# suffix ago
+msgid "ago"
+msgstr "ago"
+
+msgid "approx. %{space_used}%% of available space used (max %{num_pages} pages)"
+msgstr "approx. %{space_used}%% of available space used (max %{num_pages} pages)"
+
+#, fuzzy
+msgid "by "
+msgstr " by "
+
+msgid "can't be blank"
+msgstr ""
+
+msgid "can't be larger than 500KB"
+msgstr ""
+
+msgid "can't be less than zero"
+msgstr ""
+
+msgid "e.g. School/ Department"
+msgstr "e.g. School/ Department"
+
+#, fuzzy
+msgid "example answer"
+msgstr "Example of answer"
+
+msgid "from now"
+msgstr "from now"
+
+#, fuzzy
+msgid "generic template"
+msgstr "template"
+
+msgid "guidance"
+msgstr "guidance"
+
+msgid "guidance group"
+msgstr "guidance group"
+
+msgid "guidance on"
+msgstr "guidance on"
+
+msgid "height must be less than 100px"
+msgstr ""
+
+msgid "helpers.is_test"
+msgstr ""
+
+msgid "helpers.links.cancel"
+msgstr ""
+
+msgid "helpers.project.is_test_help_text"
+msgstr ""
+
+msgid "into your browser"
+msgstr "into your browser"
+
+msgid "less than a minute"
+msgstr "less than a minute"
+
+msgid "must be logged in"
+msgstr "must be logged in"
+
+msgid "must be one of the following formats: jpeg, jpg, png, gif, bmp"
+msgstr "must be one of the following formats: jpeg, jpg, png, gif, bmp"
+
+msgid "must be unique"
+msgstr ""
+
+msgid "must have access to guidances api"
+msgstr "must have access to guidances api"
+
+#, fuzzy
+msgid "must have access to plans api"
+msgstr "must have access to guidances api"
+
+#, fuzzy
+msgid "no research organisation is associated with this plan"
+msgstr "organization"
+
+msgid "note"
+msgstr "note"
+
+msgid "or copy"
+msgstr "or copy"
+
+msgid "organisation"
+msgstr "organization"
+
+msgid "phase"
+msgstr "phase"
+
+msgid "plan"
+msgstr "plan"
+
+msgid "profile"
+msgstr ""
+
+msgid "question"
+msgstr "question"
+
+msgid "questions answered"
+msgstr "questions answered"
+
+msgid "role"
+msgstr "role"
+
+msgid "section"
+msgstr "section"
+
+msgid "select a guidance group"
+msgstr "select a guidance group"
+
+msgid "select at least one theme"
+msgstr "select at least one theme"
+
+#, fuzzy
+msgid "since %{name} saved the answer below while you were editing. Please, combine your changes and then save the answer again."
+msgstr " on "
+
+msgid "template"
+msgstr "template"
+
+msgid "user"
+msgstr "user"
+
+#, fuzzy
+msgid "user must be in your organisation"
+msgstr "organization"
diff --git a/config/locale/es/app.po b/config/locale/es/app.po
new file mode 100644
index 0000000..c921f5c
--- /dev/null
+++ b/config/locale/es/app.po
@@ -0,0 +1,1818 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the app package.
+# FIRST AUTHOR , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: app 1.0.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2017-05-02 14:54+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+msgid " (UK users only)"
+msgstr " (sólo usuarios del Reino Unido)"
+
+msgid " - "
+msgstr ""
+
+#, fuzzy
+msgid " I accept the terms and conditions *"
+msgstr " Acepto los términos y condiciones *"
+
+#, fuzzy
+msgid " Plan"
+msgstr "plans"
+
+msgid " access to"
+msgstr ""
+
+msgid " access. "
+msgstr ""
+
+msgid " and "
+msgstr ""
+
+#, fuzzy
+msgid " by"
+msgstr " por "
+
+msgid " by "
+msgstr " por "
+
+#, fuzzy
+msgid " has been removed by "
+msgstr " por "
+
+#, fuzzy
+msgid " have been changed by"
+msgstr " por "
+
+msgid " into your browser)"
+msgstr ""
+
+msgid " on "
+msgstr ""
+
+msgid " or "
+msgstr ""
+
+msgid " password. You can do this through the link below."
+msgstr ""
+
+#, fuzzy
+msgid " provided by "
+msgstr " por "
+
+#, fuzzy
+msgid " team"
+msgstr "am"
+
+#, fuzzy
+msgid " that has been customised by "
+msgstr " por "
+
+msgid " to accept the invitation, (or copy "
+msgstr ""
+
+msgid " will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on "
+msgstr ""
+
+#, fuzzy
+msgid "\"Are you sure you want to unlink #{scheme.description} ID?\""
+msgstr "ID"
+
+msgid "\"Unlink your account from #{scheme.description}. You can link again at any time.\""
+msgstr ""
+
+msgid "\"Your account has been linked to #{scheme.description}.\""
+msgstr ""
+
+msgid "%d days"
+msgstr ""
+
+msgid "%d minutes"
+msgstr ""
+
+msgid "%d months"
+msgstr ""
+
+msgid "%d years"
+msgstr ""
+
+msgid "%{application_name}"
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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."
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "%{application_name} is provided by the %{organisation_name}. You can find out more about us on our website. If you would like to contact us about %{application_name}, please fill out the form below."
+msgstr "DMPonline"
+
+msgid "%{format} is not a valid exporting format. Available formats to export are %{available_formats}."
+msgstr ""
+
+msgid "%{value} is not a valid format"
+msgstr ""
+
+msgid "(Using custom PDF formatting values)"
+msgstr "(Usando valores personalizados para el formato del PDF)"
+
+msgid "(Using template PDF formatting values)"
+msgstr "(Usando valores de la plantilla para el formato del template PDF)"
+
+msgid "-"
+msgstr ""
+
+msgid "... (continued)"
+msgstr ""
+
+msgid "
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.
"
+msgstr "
Preguntas a considerar:
- ¿Cual es la naturaleza de su proyecto de investigación?
- ¿Qué temas de investigación está tratando?
- ¿Para qué propósito se están recogiendo o creando los datos?
Orientación:
Resuma brevemente el tipo de estudio (o estudios) para ayudar a otros a comprender los propósitos para los cuales se están recogiendo o crendo los datos.
"
+
+msgid "
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.
"
+msgstr "
Teclee una descripción básica. Puede ser un resumen sobre que cubre esta sección o instrucciones sobre como responder las preguntas. Este texto se mostrará en un banner cada vez que se edite esta sección.
"
+
+msgid "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
"
+msgstr "
Introduzca una descripción que ayude a distinguir las plantillas. Ej: Si van dirigidas a audiencias distintas.
"
+
+msgid "
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in %{application_name}, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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 Digital Curation Centre 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.
"
+msgstr ""
+
+msgid "
%{application_name} has been jointly developed by the %{organisation_name} to help you write data management plans.
"
+msgstr "
DMPonline ha sido desarrollado por el Digital Curation Centre como una herramienta para elaborar planes de gestión de datos.
"
+
+msgid "
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
"
+msgstr ""
+
+#, fuzzy
+msgid "
%{application_name} stories from the %{organisation_abbreviation} website
"
+msgstr ""
+
+msgid "
Welcome. You are now ready to create your first DMP.Click the 'Create plan' button below to begin.
"
+msgstr "
Bienvenido. Ya está listo para crear su primer PGD.Haga clic en el botón 'Crear un plan' para comenzar.
"
+
+msgid "
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.
"
+msgstr "
Primero cree un grupo de guías. Este podrá abarcar toda la institución o un subconjunto de la misma (ej: una escuela, colegio o departamento en particular). Cuando cree una guía, necesitará asignarla a un grupo de guías.
"
+
+msgid "
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'.
"
+msgstr "
Desde aquí puede descargar su plan en varios formatos. Esto puede ser útil si necesita enviar su plan para solicitar una subvención. Seleccione qué formato quiere usar y haga clic en 'Exportar'.
"
+
+msgid "
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. %{application_name} has been produced by the %{organisation_name} to help research teams respond to this requirement, and any expectations that their institution or others may apply.
The %{organisation_abbreviation} 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 %{application_name} account, click on 'Create account' on the homepage.
We are constantly improving the user interface and functionality of %{application_name}. 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
"
+msgstr ""
+
+msgid "
Here you can view previously published versions of your template. These can no longer be modified.
"
+msgstr ""
+
+msgid "
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.
"
+msgstr "
Aquí indicará el título mostrado a los usuarios. Si piensa tener varias fases en su PGD, esto debería quedar claro en el título y la descripción.
"
+
+msgid "
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.
"
+msgstr "
Si desea añadir una plantilla institucional para un Plan de Gestión de Datos, use el botón 'crear plantilla'. Podrá crear más de una plantilla si lo cree conveniente. Ej: para investigadores y otro para estudiantes de postgrado.
Su plantilla se presentará a los usuarios de su institución cuando no sean aplicables plantillas de agencias de financiación. Si quiere aññadir preguntas a las plantillas de las agencias de financiación, use las siguientes opciones de 'personalizar plantilla'
"
+
+msgid "
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 %{organisation_abbreviation} or any Schools/Departments that you provide guidance for.
You can select multiple themes by using the CTRL button.
"
+msgstr "
Seleccione los temas relevantes para esta pregunta.
Le permite crear guías genéricas a nivel de institución o de otras fuentes. Ej. para el DCC o cualquier escuela o departamento a la que se dirija la guía.
Puede seleccionar varios temas usando el botón CTRL.
"
+
+msgid "
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
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.
"
+msgstr "
La siguiente tabla lista los planes que usted ha creado, así como los que otros investigadores hayan compartido con usted.Se pueden editar, compartir, exportar o borrar en cualquier momento.
"
+
+msgid "
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.
"
+msgstr "
Para crear una plantilla nueva, en primer lugar introduzca un título y una descripción. Tras grabar se le dará la opción de añadir una o más fases.
"
+
+msgid "
When you login to %{application_name} 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 %{application_name} 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.
"
+msgstr ""
+
+msgid "
You are about to unlink %{application_name} of your institutional credentials, would you like to continue?
"
+msgstr "
Va a desvincular DMPonline de las credenciales de su institución, ¿Quiere continuar?
"
+
+#, fuzzy
+msgid "
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 %{application_name} if they don't already have an account. A notification is also issued when a user's permission level is changed.
"
+msgstr "
Aquí puede dar a otras personas acceso a su plan. Hay tres niveles de permiso.
Los usuarios con acceso de \"sólo lectura\" sólo pueden leer el plan.
Los Editores pueden contribuir al plan.
Los Co-propietarios pueden también contribuir, editar los detalles y controlar el acceso al plan.
Añada cada colaborador individualmente introduciendo su dirección de correo electrónico, seleccionando un nivel de permiso y haciendo clic en \"Añadir colaborador\".
Aquellos a quienes invite recibirán un aviso por correo electrónico indicando que tienen acceso al plan e invitándoles a registrarse en DMPonline si no tienen ya una cuenta. También se envia un aviso si se cambia el nivel de permiso de un usuario.
"
+
+#, fuzzy
+msgid "
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
"
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "A Data Management Plan in %{application_name} has been shared with you"
+msgstr "DMPonline"
+
+msgid "A colleague has invited you to contribute to their Data Management Plan at "
+msgstr ""
+
+msgid "A pertinent ID as determined by the funder and/or institution."
+msgstr "El ID tal como lo determinó la institución u organismo financiador."
+
+msgid "A required setting has not been provided"
+msgstr "No se ha indicado un valor obligatorio"
+
+msgid "A version of "
+msgstr ""
+
+msgid "API Information"
+msgstr ""
+
+msgid "API rights"
+msgstr ""
+
+msgid "API token"
+msgstr ""
+
+msgid "Abbreviation"
+msgstr "Abreviatura"
+
+msgid "About"
+msgstr "Acerca de"
+
+msgid "About %{application_name}"
+msgstr ""
+
+msgid "Access removed"
+msgstr ""
+
+msgid "Actions"
+msgstr "Acciones"
+
+msgid "Add Annotations"
+msgstr ""
+
+#, fuzzy
+msgid "Add an appropriate name for your guidance group. This name will be used to tell the end user where the guidance has come from. It will be appended to text identifying the theme e.g. \"[guidance group name]: guidance on data sharing\" so we suggest you just use the institution or department name."
+msgstr "Grupo de orientación"
+
+msgid "Add collaborator"
+msgstr "Añadir colaborador"
+
+msgid "Add guidance"
+msgstr "Añadir orientación"
+
+msgid "Add guidance group"
+msgstr "Añadir grupo de orientación"
+
+msgid "Add new phase +"
+msgstr "Añadir fase nueva +"
+
+msgid "Add note"
+msgstr "Añadir nota"
+
+msgid "Add option"
+msgstr "Añadir opción"
+
+msgid "Add question"
+msgstr "Añadir pregunta"
+
+msgid "Add section"
+msgstr "Añadir sección"
+
+msgid "Additional comment area will be displayed."
+msgstr "Se mostrará un área adicional para comentarios."
+
+msgid "Admin Details"
+msgstr ""
+
+msgid "Admin area"
+msgstr "Área de administración"
+
+msgid "All the best,"
+msgstr ""
+
+#, fuzzy
+msgid "Allows the user to amend the organisation details (name, URL etc) and add basic branding such as the logo"
+msgstr "Organización"
+
+#, fuzzy
+msgid "Allows the user to assign permissions to other users within the same organisation. Users can only assign permissions they own themselves"
+msgstr "Organización"
+
+#, fuzzy
+msgid "Allows the user to create and edit guidance"
+msgstr "user"
+
+#, fuzzy
+msgid "Allows the user to create new institutional templates, edit existing ones and customise funder templates"
+msgstr "templates"
+
+msgid "An error has occurred while saving/resetting your export settings."
+msgstr ""
+
+msgid "Annotations"
+msgstr ""
+
+#, fuzzy
+msgid "Answer"
+msgstr "Respuestas"
+
+msgid "Answer format"
+msgstr "Formato de la respuesta"
+
+msgid "Answer questions"
+msgstr "Responder"
+
+#, fuzzy
+msgid "Answered"
+msgstr "Contestado "
+
+#, fuzzy
+msgid "Answered at"
+msgstr "Contestado "
+
+#, fuzzy
+msgid "Answered by"
+msgstr "Contestado "
+
+msgid "Answers"
+msgstr "Respuestas"
+
+msgid "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."
+msgstr "Cualquier texto que introduzca aquí se mostrará en la caja de respuesta. Si quiere una respuesta en un formato concreto (ej: tablas), puede crear ese estilo aquí."
+
+#, fuzzy
+msgid "Are you sure you want to remove this note?"
+msgstr "¿Seguro que quiere eliminar esta nota?"
+
+msgid "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"
+msgstr "¿Está seguro de que quiere borrar este plan?"
+
+msgid "Are you sure?"
+msgstr "¿Está seguro?"
+
+msgid "Back"
+msgstr "Volver"
+
+msgid "Back to edit view"
+msgstr "Volver a editar la vista"
+
+msgid "Background"
+msgstr "Volver"
+
+msgid "Bad Credentials"
+msgstr ""
+
+msgid "Bad Parameters"
+msgstr ""
+
+msgid "Before submitting, please consider:"
+msgstr ""
+
+#, fuzzy
+msgid "Before you get started, we need to ask a few questions to set you up with the best DMP template for your needs."
+msgstr "Preguntas"
+
+msgid "Begin typing to see a filtered list"
+msgstr ""
+
+msgid "Below is a list of users registered for your organisation. You can sort the data by each field."
+msgstr "Debajo tiene la lista de usuarios registrados en su entidad. Puede ordenar los datos por campo."
+
+msgid "Bottom"
+msgstr "Inferior"
+
+msgid "By "
+msgstr ""
+
+msgid "Cancel"
+msgstr "Cancelar"
+
+#, fuzzy
+msgid "Cannot share plan with %{email} since that email matches with the owner of the plan."
+msgstr "plans"
+
+msgid "Change language"
+msgstr ""
+
+#, fuzzy
+msgid "Change my password"
+msgstr "Cambiar su clave"
+
+#, fuzzy
+msgid "Change organisation details"
+msgstr "Organización"
+
+msgid "Check box"
+msgstr "Check box"
+
+msgid "Check this box when you are ready for this guidance to appear on user's plans."
+msgstr ""
+
+msgid "Click here"
+msgstr ""
+
+msgid "Click here to accept the invitation"
+msgstr ""
+
+msgid "Click here to confirm your account"
+msgstr ""
+
+msgid "Click the link below to unlock your account"
+msgstr ""
+
+msgid "Co-owner"
+msgstr "Co-propietario"
+
+msgid "Collaborators"
+msgstr "Colaboradores"
+
+msgid "Comment"
+msgstr "Comentario"
+
+#, fuzzy
+msgid "Comment removed."
+msgstr "Comentario"
+
+msgid "Comment was successfully created."
+msgstr ""
+
+#, fuzzy
+msgid "Comment was successfully saved."
+msgstr "Plan creado con éxito"
+
+msgid "Contact Email"
+msgstr ""
+
+#, fuzzy
+msgid "Contact Us"
+msgstr "Contacto"
+
+msgid "Contact us"
+msgstr "Contacto"
+
+msgid "Create a new plan"
+msgstr "Crear un nuevo plan"
+
+msgid "Create a template"
+msgstr "Crear una plantilla"
+
+msgid "Create account"
+msgstr "Registrarse"
+
+msgid "Create plan"
+msgstr "Crear un plan"
+
+msgid "Created"
+msgstr "Creación"
+
+msgid "Created at"
+msgstr "Creado el"
+
+msgid "Current password"
+msgstr "Clave actual"
+
+msgid "Customise"
+msgstr "Personalizar"
+
+msgid "Default"
+msgstr "Por defecto"
+
+msgid "Default answer"
+msgstr "Respuesta por defecto"
+
+msgid "Default value"
+msgstr "Valor por defecto"
+
+msgid "Delete"
+msgstr "Borrar"
+
+#, fuzzy
+msgid "Delete Example Answer"
+msgstr "Respuesta de ejemplo"
+
+msgid "Delete question"
+msgstr "Borrar la pregunta"
+
+msgid "Description"
+msgstr ""
+
+msgid "Details"
+msgstr "Detalles"
+
+msgid "Details successfully updated."
+msgstr ""
+
+msgid "Didn't receive confirmation instructions?"
+msgstr "¿No recibió instrucciones de confirmación?"
+
+msgid "Didn't receive unlock instructions?"
+msgstr "¿No recibió instrucciones para el desbloqueo?"
+
+msgid "Discard"
+msgstr "Descartar"
+
+msgid "Display additional comment area."
+msgstr "Mostrar un área de comentarios adicional."
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dropdown"
+msgstr "Dropdown"
+
+msgid "E.g ORCID http://orcid.org/."
+msgstr "P.e. ORCID http://orcid.org/."
+
+msgid "Edit"
+msgstr "Editar"
+
+#, fuzzy
+msgid "Edit Annotations"
+msgstr "Editar"
+
+msgid "Edit User Privileges"
+msgstr ""
+
+msgid "Edit customisation"
+msgstr "Editar la personalización"
+
+msgid "Edit phase"
+msgstr "Editar fase"
+
+msgid "Edit phase details"
+msgstr "Editar los detalles de las fase"
+
+msgid "Edit plan details"
+msgstr "Editar los detalles del plan"
+
+msgid "Edit profile"
+msgstr "Editar perfil"
+
+msgid "Edit question"
+msgstr "Editar la pregunta"
+
+msgid "Edit template details"
+msgstr "Editar plantilla"
+
+#, fuzzy
+msgid "Editor"
+msgstr "Editar"
+
+msgid "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access."
+msgstr "Los editores pueden contribuir a los planes. Los co-propietarios tienen derechos adicionales para editar los detalles del plan y controlar el acceso al mismo."
+
+msgid "Email"
+msgstr "Correo electrónico"
+
+msgid "Email address"
+msgstr "Dirección de correo electrónico"
+
+msgid "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."
+msgstr "Teclee una descripción básica. Se les presentará a los usuarios bajo el resumen de secciones y preguntas solicitadas."
+
+msgid "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences"
+msgstr "Introduzca una descripción que le ayude a diferenciar las plantillas. Ej: Si tiene varias para diferentes audiencias"
+
+msgid "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"
+msgstr "Por favor, introduzca un título para la fase"
+
+msgid "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box."
+msgstr "Introduzca las opciones que quiere mostrar. Si quiere que una opción esté seleccionada por defecto, marque la casilla correspondiente."
+
+msgid "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."
+msgstr "Introduzca la guía concreta para esta pregunta. Si también tiene guías temáticas, se eligirán en función de su slección, por lo que es preferible no duplicar mucho texto."
+
+msgid "Enter your guidance here. You can include links where needed."
+msgstr "Introduzca sus orientaciones aquí. Puede incluir enlaces si lo cree necesario."
+
+msgid "Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long."
+msgstr ""
+
+msgid "Error!"
+msgstr "¡Error!"
+
+#, fuzzy
+msgid "Example Answer"
+msgstr "Respuesta de ejemplo"
+
+#, fuzzy
+msgid "Example of answer"
+msgstr "Respuesta de ejemplo"
+
+msgid "Export"
+msgstr "Exportar"
+
+#, fuzzy
+msgid "Export settings updated successfully."
+msgstr "Exportar"
+
+#, fuzzy
+msgid "Exporting public plan is under development. Apologies for any inconvience."
+msgstr "Exportar"
+
+msgid "Face"
+msgstr "Estilo"
+
+msgid "File Name"
+msgstr "Título del plan"
+
+msgid "Fill in the required fields"
+msgstr ""
+
+msgid "Filter plans"
+msgstr "Filtro de planes"
+
+msgid "First name"
+msgstr "Nombre"
+
+msgid "Font"
+msgstr ""
+
+msgid "Forgot your password?"
+msgstr "¿Olvidó su clave?"
+
+msgid "Format"
+msgstr ""
+
+msgid "Funder"
+msgstr "Financiador"
+
+msgid "Funders templates"
+msgstr "Plantillas de financiador"
+
+#, fuzzy
+msgid "Funding organisation"
+msgstr "Organización"
+
+msgid "Future plans"
+msgstr "Hoja de ruta"
+
+msgid "Get involved"
+msgstr ""
+
+msgid "Grant number"
+msgstr "Título de subvención"
+
+msgid "Grant permissions"
+msgstr ""
+
+msgid "Grant reference number if applicable [POST-AWARD DMPs ONLY]"
+msgstr "Número de referencia de la subvención si es aplicable [SÓLO PGDs YA ADJUDICADOS]"
+
+msgid "Guidance"
+msgstr "Guía"
+
+#, fuzzy
+msgid "Guidance choices saved."
+msgstr "Guía"
+
+msgid "Guidance group"
+msgstr "Grupo de orientación"
+
+msgid "Guidance group list"
+msgstr "Listado de grupos de orientación"
+
+msgid "Guidance group was successfully created."
+msgstr "El grupo de orientación se creó correctamente."
+
+msgid "Guidance group was successfully deleted."
+msgstr "El grupo de orientación se borró correctamente."
+
+msgid "Guidance group was successfully updated."
+msgstr "El grupo de orientación se actualizó correctamente."
+
+msgid "Guidance list"
+msgstr "Listado de orientaciones"
+
+msgid "Guidance was successfully created."
+msgstr "La orientación se creó correctamente."
+
+#, fuzzy
+msgid "Guidance was successfully deleted."
+msgstr "La orientación se creó correctamente."
+
+msgid "Guidance was successfully updated."
+msgstr "La orientación se actualizó correctamente."
+
+msgid "Hello"
+msgstr ""
+
+msgid "Hello "
+msgstr ""
+
+msgid "Help"
+msgstr "Ayuda"
+
+msgid "History"
+msgstr ""
+
+msgid "Home"
+msgstr "Inicio"
+
+msgid "How many plans?"
+msgstr "¿Cuántos planes?"
+
+msgid "How to use the API"
+msgstr ""
+
+msgid "ID"
+msgstr "ID"
+
+msgid "If applying for funding, state the name exactly as in the grant proposal."
+msgstr "Si se solicita financiación, indique el nombre exactamente como en la propuesta de subvención."
+
+#, fuzzy
+msgid "If applying for funding, state the title exactly as in the proposal."
+msgstr "Si se solicita financiación, indique el nombre exactamente como en la propuesta de subvención."
+
+msgid "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."
+msgstr "Si la guía está dirigida a un subconjunto de los usuarios (ej: los pertenecientes a un colegio o instituto), seleccione esta opción. Los usuarios serán capaces de seleccionar esta guía cuando respondan sus preguntas durante la creación del plan."
+
+msgid "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+msgstr ""
+
+msgid "If you decide to use the default DMPRoadmap logo, please check this box to remove your current logo."
+msgstr ""
+
+msgid "If you didn't request this, please ignore this email."
+msgstr ""
+
+msgid "If you don't want to accept the invitation, please ignore this email."
+msgstr ""
+
+msgid "If you would like to change your password please complete the following fields."
+msgstr "Si quiere cambiar su clave, por favor, rellene los siguientes campos."
+
+msgid "Included Elements"
+msgstr "Elementos incluídos"
+
+msgid "Information was successfully created."
+msgstr "La información se creó correctamente."
+
+msgid "Information was successfully deleted."
+msgstr "Information se destruyó correctamente"
+
+msgid "Information was successfully updated."
+msgstr "La información se actualizó correctamente."
+
+msgid "Institution"
+msgstr "Institución"
+
+msgid "Invalid font face"
+msgstr "Estilo de fuente inválido"
+
+msgid "Invalid font size"
+msgstr "Tamaño de fuente inválido"
+
+msgid "Invalid maximum pages"
+msgstr "Número de páginas inválido"
+
+msgid "Invitation to %{email} issued successfully."
+msgstr ""
+
+msgid "Language"
+msgstr ""
+
+msgid "Last logged in"
+msgstr "Último acceso"
+
+msgid "Last name"
+msgstr "Apellidos"
+
+msgid "Last updated"
+msgstr "Última actualización"
+
+msgid "Latest news"
+msgstr ""
+
+msgid "Left"
+msgstr "Izquierdo"
+
+msgid "List of users"
+msgstr "Listado de usuarios"
+
+msgid "Logo"
+msgstr ""
+
+msgid "Main organisation"
+msgstr "Entidad principal"
+
+msgid "Many thanks,"
+msgstr ""
+
+msgid "Margin"
+msgstr "Margen"
+
+msgid "Margin cannot be negative"
+msgstr "El margen no puede ser negativo"
+
+msgid "Margin value is invalid"
+msgstr "El valor del margen no es válido"
+
+msgid "Me"
+msgstr "Yo"
+
+#, fuzzy
+msgid "Message"
+msgstr "Yo"
+
+#, fuzzy
+msgid "Modify guidance"
+msgstr "Añadir orientación"
+
+#, fuzzy
+msgid "Modify templates"
+msgstr "templates"
+
+msgid "Multi select box"
+msgstr "Multi select box"
+
+#, fuzzy
+msgid "My Plan"
+msgstr "Mi proyecto"
+
+msgid "My organisation isn't listed."
+msgstr "No se muestra mi organización."
+
+msgid "My plans"
+msgstr "Mis planes"
+
+#, fuzzy
+msgid "My research organisation is not on the list"
+msgstr "Organización"
+
+msgid "Name"
+msgstr "Nombre"
+
+msgid "Name (if different to above), telephone and email contact details"
+msgstr "Nombre (si es diferente del de más arriba), teléfono y dirección de correo electrónico"
+
+msgid "Name of Principal Investigator(s) or main researcher(s) on the project."
+msgstr "Nombre del/de los Investigador/es Principal/es o investigador/es principal/es del proyecto."
+
+msgid "New guidance"
+msgstr "Nueva orientación"
+
+msgid "New password"
+msgstr "Nueva clave"
+
+msgid "New section title"
+msgstr "Título de la nueva sección"
+
+msgid "New template"
+msgstr "Nueva plantilla"
+
+msgid "New to %{application_name}? Create an account today."
+msgstr "¿Nuevo en DMPonline? Regístrese ya."
+
+msgid "No"
+msgstr ""
+
+msgid "No additional comment area will be displayed."
+msgstr "No se mostrará un área adicional para comentarios."
+
+#, fuzzy
+msgid "No funder associated with this plan"
+msgstr "plans"
+
+msgid "No items available."
+msgstr ""
+
+msgid "No matches"
+msgstr "Ningún plan coincide con '%{filter}'"
+
+msgid "None"
+msgstr "Ninguno/a"
+
+msgid "Not answered yet"
+msgstr "Aún no respondido/a"
+
+msgid "Note"
+msgstr "Nota"
+
+msgid "Note removed by"
+msgstr "Nota borrada por"
+
+msgid "Note removed by you"
+msgstr "Nota borrada por usted"
+
+msgid "Noted by:"
+msgstr "Anotado por:"
+
+msgid "Ok"
+msgstr ""
+
+msgid "On %{application_name}"
+msgstr ""
+
+msgid "On data management planning"
+msgstr ""
+
+msgid "Optional subset"
+msgstr "Subconjunto opcional"
+
+msgid "Or, sign in with your institutional credentials"
+msgstr "O conectar con sus credenciales institucionales"
+
+msgid "Order"
+msgstr "Orden"
+
+msgid "Order of display"
+msgstr "Orden de presentación"
+
+msgid "Organisation"
+msgstr "Organización"
+
+msgid "Organisation details"
+msgstr "Detalles de la entidad"
+
+msgid "Organisation name"
+msgstr "Nombre de la entidad"
+
+msgid "Organisation type"
+msgstr "Tipo de entidad"
+
+msgid "Organisation was successfully updated."
+msgstr "Se ha actualizado correctamente la actualización."
+
+msgid "Organisational"
+msgstr "Organizativo"
+
+msgid "Organisational (visibile to others within your organisation)"
+msgstr "Con otros miembros de su organización"
+
+msgid "Organization"
+msgstr "Organización"
+
+#, fuzzy
+msgid "Original funder template has changed!"
+msgstr "templates"
+
+msgid "Other institutions"
+msgstr ""
+
+msgid "Own templates"
+msgstr "Sus plantillas"
+
+msgid "Owner"
+msgstr "Propietario"
+
+msgid "PDF Formatting"
+msgstr "Dando formato al PDF"
+
+msgid "Password"
+msgstr "Clave"
+
+#, fuzzy
+msgid "Password and comfirmation must match"
+msgstr "Clave"
+
+msgid "Password confirmation"
+msgstr "Confirmación de clave"
+
+msgid "Permissions"
+msgstr "Permisos"
+
+msgid "Phase details"
+msgstr "Detalles de la fase"
+
+msgid "Plan Data Contact"
+msgstr "Datos de contacto del proyecto"
+
+msgid "Plan Description"
+msgstr "Descripción"
+
+msgid "Plan ID"
+msgstr "Identificador del Proyecto"
+
+msgid "Plan Name"
+msgstr "Nombre del Proyecto"
+
+msgid "Plan data contact"
+msgstr "Datos de contacto del plan"
+
+msgid "Plan details"
+msgstr "Detalles"
+
+msgid "Plan is already shared with %{email}."
+msgstr ""
+
+msgid "Plan name"
+msgstr "Nombre de proyecto"
+
+msgid "Plan shared with %{email}."
+msgstr ""
+
+#, fuzzy
+msgid "Plan was successfully deleted."
+msgstr "Plan creado con éxito"
+
+msgid "Plan was successfully updated."
+msgstr ""
+
+msgid "Please add an abbreviation to your org for display with annotations!"
+msgstr ""
+
+#, fuzzy
+msgid "Please enter a First name."
+msgstr "Por favor, introduzca su nombre."
+
+#, fuzzy
+msgid "Please enter a Last name."
+msgstr "Por favor, introduzca su nombre."
+
+msgid "Please enter a password confirmation"
+msgstr ""
+
+msgid "Please enter a title for your template."
+msgstr "Por favor, introduzca un título para la plantilla."
+
+msgid "Please enter a valid web address."
+msgstr "Por favor, introduzca una dirección web válida."
+
+msgid "Please enter an email address"
+msgstr ""
+
+#, fuzzy
+msgid "Please enter an email address."
+msgstr "Por favor, introduzca una dirección web válida."
+
+msgid "Please enter the name of your organisation."
+msgstr "Por favor, introduzca el nombre de su entidad."
+
+msgid "Please enter your current password"
+msgstr ""
+
+msgid "Please enter your current password below when changing your email address."
+msgstr ""
+
+msgid "Please enter your email"
+msgstr ""
+
+msgid "Please enter your first name."
+msgstr "Por favor, introduzca su nombre."
+
+msgid "Please enter your organisation's name."
+msgstr "Por favor, introduzca el nombre de su entidad."
+
+msgid "Please enter your password to change email address."
+msgstr ""
+
+msgid "Please enter your surname or family name."
+msgstr "Por favor, introduzca sus apellidos."
+
+msgid "Please fill in the basic project details below"
+msgstr ""
+
+msgid "Please fill in the basic project details below and click 'Update' to save"
+msgstr "Por favor, rellene los detalles básicos del proyecto y haga clic en 'Actualizar' para guardarlos"
+
+#, fuzzy
+msgid "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."
+msgstr "
Por favor, tenga en cuenta que su dirección de correo electrónico se usa como su nombre de usuario. Si cambia esto, recuerde usar su nueva dirección de correo electrónico al conectar.
"
+
+msgid "Please only enter up to 165 characters, you have used"
+msgstr ""
+
+#, fuzzy
+msgid "Please select an organisation, or select Other."
+msgstr "Organización"
+
+msgid "Please select one"
+msgstr ""
+
+msgid "Preview"
+msgstr "Previsualización"
+
+#, fuzzy
+msgid "Primary research organisation"
+msgstr "Organización"
+
+msgid "Principal Investigator / Researcher"
+msgstr "Principal Investigador / Científico"
+
+msgid "Principal Investigator/Researcher"
+msgstr "Investigador principal"
+
+msgid "Principal Investigator/Researcher ID"
+msgstr "ID del Investigador Principal"
+
+msgid "Private"
+msgstr "Privado"
+
+msgid "Private (owners, co-owners, and administrators only) See our Terms of Use."
+msgstr "Privado (propietarios, copropietarios y administradores solamente) Consulte nuestras Condiciones de uso."
+
+msgid "Privileges"
+msgstr ""
+
+msgid "Project title"
+msgstr ""
+
+#, fuzzy
+msgid "Provides the user with an API token and grants rights to harvest information from the tool"
+msgstr "user"
+
+msgid "Public"
+msgstr "Público"
+
+msgid "Public (Your DMP will appear on the Public DMPs page of this site)"
+msgstr "Publicamente en la web. Su DMP aparecerá en la página Public DMPs de este sitio."
+
+msgid "Public DMPs"
+msgstr "DMP Públicos"
+
+msgid "Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines."
+msgstr "DMP Públicos"
+
+msgid "Publish"
+msgstr ""
+
+msgid "Publish changes"
+msgstr ""
+
+msgid "Published"
+msgstr "Publicado"
+
+msgid "Question"
+msgstr "Pregunta"
+
+msgid "Question not answered"
+msgstr "Pregunta no respondida."
+
+msgid "Question not answered."
+msgstr "Pregunta no respondida."
+
+msgid "Question number"
+msgstr "Número de la pregunta"
+
+msgid "Question text"
+msgstr "Texto de la pregunta"
+
+msgid "Question text is empty, please enter your question."
+msgstr ""
+
+msgid "Questions"
+msgstr "Preguntas"
+
+msgid "Radio buttons"
+msgstr "Radio buttons"
+
+msgid "Read more on the "
+msgstr ""
+
+msgid "Read only"
+msgstr "Sólo lectura"
+
+msgid "Releases"
+msgstr ""
+
+msgid "Remember me"
+msgstr "Recordarme"
+
+msgid "Remove"
+msgstr "Borrar"
+
+msgid "Remove user access"
+msgstr "Eliminar acceso de usuario"
+
+msgid "Reset"
+msgstr "Reiniciar"
+
+msgid "Right"
+msgstr "Derecho"
+
+msgid "Save"
+msgstr "Guardar"
+
+#, fuzzy
+msgid "Save Unsuccessful."
+msgstr "Guardar"
+
+msgid "Saving..."
+msgstr "Guardando..."
+
+msgid "Screencast on how to use %{application_name}"
+msgstr "Video sobre cómo usar DMPonline"
+
+msgid "Section"
+msgstr "Sección"
+
+msgid "Sections"
+msgstr "Secciones"
+
+#, fuzzy
+msgid "Select a template"
+msgstr "templates"
+
+msgid "Select an action"
+msgstr "Seleccionar una acción"
+
+#, fuzzy
+msgid "Select the funding organisation"
+msgstr "Organización"
+
+#, fuzzy
+msgid "Select the primary research organisation responsible"
+msgstr "Organización"
+
+msgid "Select which group this guidance relates to."
+msgstr "Seleccione a que grupo pertenece esta guía."
+
+msgid "Select which theme(s) this guidance relates to."
+msgstr "Seleccione a el/los tema(s) relacionados con esta orientación."
+
+msgid "Selected option(s)"
+msgstr ""
+
+msgid "Share"
+msgstr "Compartir"
+
+msgid "Share note"
+msgstr "Compartir nota"
+
+msgid "Share note with collaborators"
+msgstr "Compartir nota con colaboradores"
+
+msgid "Sharing details successfully updated."
+msgstr ""
+
+msgid "Should this guidance apply:"
+msgstr "Esta guía se refiere a:"
+
+msgid "Sign in"
+msgstr "Conectar"
+
+msgid "Sign out"
+msgstr "Desconectar"
+
+msgid "Signed in as "
+msgstr "Registrado como "
+
+msgid "Size"
+msgstr "Tamaño"
+
+msgid "Someone has requested a link to change your "
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Successfully unlinked your account from %{is}."
+msgstr ""
+
+msgid "Suggested answer"
+msgstr "Respuesta sugerida"
+
+msgid "Suggested answer/ Example"
+msgstr "Respuesta sugerida / ejemplo"
+
+msgid "Super admin area"
+msgstr "Área de super administrador"
+
+msgid "Template"
+msgstr "Modelo"
+
+msgid "Template History"
+msgstr ""
+
+msgid "Template details"
+msgstr "Detalles de la plantilla"
+
+msgid "Templates"
+msgstr "Plantillas"
+
+msgid "Terms of use"
+msgstr ""
+
+msgid "Test/Practice"
+msgstr "Prueba/Práctica"
+
+msgid "Test/Practice (your plan is not visible to other users) See our Terms of Use."
+msgstr "Prueba / Práctica (su plan no es visible para otros usuarios) Vea nuestras Condiciones de uso."
+
+msgid "Text"
+msgstr "Texto"
+
+msgid "Text area"
+msgstr "Text area"
+
+msgid "Text field"
+msgstr "Text field"
+
+msgid "Thank you for registering. Please confirm your email address"
+msgstr ""
+
+msgid "That email address is already registered."
+msgstr ""
+
+#, fuzzy
+msgid "That template is not currently published."
+msgstr "templates"
+
+msgid "The"
+msgstr ""
+
+msgid "The "
+msgstr ""
+
+msgid "The email address of an administrator at your organisation. Your users will use this address if they have questions."
+msgstr ""
+
+msgid "The following answer cannot be saved"
+msgstr ""
+
+msgid "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."
+msgstr "Los items que seleccione se mostarán en la siguiente tabla. Puede ordenar los datos según sus encabezados o filtrar tecleando textos en la caja de búsqueda."
+
+msgid "Themes"
+msgstr "Temas"
+
+msgid "There are no public DMPs."
+msgstr ""
+
+msgid "There seems to be a problem with your logo. Please upload it again."
+msgstr ""
+
+msgid "These are the basic details for your organisation."
+msgstr "Estos son los detalles básicos de su entidad."
+
+msgid "This allows you to order questions within a section."
+msgstr "Le permite ordenar las preguntas de una sección."
+
+msgid "This allows you to order sections."
+msgstr "Le permite ordenar las secciones."
+
+msgid "This allows you to order the phases of your template."
+msgstr "Esto le permite ordenar las fases de su plantilla."
+
+msgid "This document was generated by %{application_name}"
+msgstr "DMPonline"
+
+msgid "This must match what you entered in the previous field."
+msgstr "Ha de coincidir con lo que introdujo en el campo anterior."
+
+msgid "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."
+msgstr "Esta página le proporciona una visión general de su plan. Le dice en qué está basado su plan y le da una visión general de las preguntas que se le harán."
+
+#, fuzzy
+msgid "This plan is based on the default template."
+msgstr "templates"
+
+msgid "This plan is based on:"
+msgstr "Este plan está basado en:"
+
+msgid "This section is locked for editing by "
+msgstr "Esta sección está bloqueda para su edición por "
+
+msgid "Title"
+msgstr "Título"
+
+msgid "Top"
+msgstr "Superior"
+
+msgid "Top banner text"
+msgstr "Texto del banner superior"
+
+msgid "Transfer customisation"
+msgstr ""
+
+#, fuzzy
+msgid "Un-published"
+msgstr "Publicado"
+
+msgid "Unable to link your account to %{scheme}."
+msgstr ""
+
+msgid "Unable to unlink your account from %{is}."
+msgstr ""
+
+msgid "Unknown column name."
+msgstr "Nombre de columna desconocido."
+
+msgid "Unknown formatting setting"
+msgstr "Valores de formato desconocidos"
+
+msgid "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"
+msgstr "Margen desconocido. Sólo puede ser 'superior', 'inferior', 'izquierdo' or 'derecho'"
+
+msgid "Unlink account"
+msgstr "Desvincular cuenta"
+
+msgid "Unlink institutional credentials alert"
+msgstr "Desvincule las alertas relacionadas con las credenciales de su institución"
+
+msgid "Unlock my account"
+msgstr ""
+
+msgid "Unpublish"
+msgstr ""
+
+#, fuzzy
+msgid "Unpublished"
+msgstr "Publicado"
+
+msgid "Unpublished changes"
+msgstr ""
+
+msgid "Unsaved answers"
+msgstr "Preguntas sin contestar"
+
+msgid "Unsaved changes"
+msgstr "Deshaciendo cambios"
+
+msgid "Upload a new logo file"
+msgstr ""
+
+msgid "Users"
+msgstr "Usuarios"
+
+msgid "Using the generic Data Management Plan"
+msgstr ""
+
+msgid "Version"
+msgstr "Versión"
+
+msgid "View"
+msgstr "Ver"
+
+msgid "View all guidance"
+msgstr "Ver todas las orientaciones"
+
+msgid "View all templates"
+msgstr "Ver todas las plantillas"
+
+msgid "View phase"
+msgstr "Ver fase"
+
+msgid "View plans"
+msgstr "Ver planes"
+
+msgid "Visibility"
+msgstr "Visibilidad"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the funder."
+msgstr "templates"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the research organisation."
+msgstr "Organización"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to your funder."
+msgstr "templates"
+
+msgid "Website"
+msgstr "Sitio web"
+
+#, fuzzy
+msgid "Welcome to "
+msgstr "Bienvenido/a."
+
+msgid "Welcome to %{application_name}"
+msgstr ""
+
+msgid "Welcome."
+msgstr "Bienvenido/a."
+
+#, fuzzy
+msgid "What research project are you planning?"
+msgstr "plans"
+
+msgid "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."
+msgstr "Cuando crea una fase nueva para su plantilla, se creará automáticamente una versión. Una vez complete el siguiente formulario se le darán las opciones para crear secciones y preguntas."
+
+#, fuzzy
+msgid "Which DMP template would you like to use?"
+msgstr "templates"
+
+msgid "Would you like to save them now?"
+msgstr "¿Quere grabar los cambios ahora?"
+
+msgid "Yes"
+msgstr ""
+
+msgid "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?"
+msgstr "Está a punto de borrar el grupo '%{guidance_group_name}'. Esto afectará a la orientación. ¿Está seguro?"
+
+msgid "You are about to delete '%{guidance_summary}'. Are you sure?"
+msgstr "Está a punto de borrar '%{guidance_summary}'. ¿Está seguro?"
+
+msgid "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?"
+msgstr "Va a eliminar '%{phase_title}'. Esto afectará a versiones, secciones y preguntas enlazadas con esta fase. ¿Está seguro?"
+
+msgid "You are about to delete '%{question_text}'. Are you sure?"
+msgstr "Va a eliminar '%{question_text}'. ¿Está seguro?"
+
+msgid "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?"
+msgstr "Va a borrar '%{section_title}'. Esta acción afectará las preguntas enlazadas con esta sección. ¿Está seguro?"
+
+#, fuzzy
+msgid "You are about to delete a guidance for '%{question_text}'. Are you sure?"
+msgstr "Va a eliminar una respuesta sugerida / ejemplo de '%{question_text}'. ¿Está seguro?"
+
+msgid "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+msgstr "Va a eliminar una respuesta sugerida / ejemplo de '%{question_text}'. ¿Está seguro?"
+
+#, fuzzy
+msgid "You are about to delete an example answer for '%{question_text}'. Are you sure?"
+msgstr "Va a eliminar una respuesta sugerida / ejemplo de '%{question_text}'. ¿Está seguro?"
+
+msgid "You are not authorized to perform this action."
+msgstr ""
+
+#, fuzzy
+msgid "You are viewing a historical version of this template. You will not be able to make changes."
+msgstr "templates"
+
+#, fuzzy
+msgid "You can add an example answer to help users respond. These will be presented above the answer box and can be copied/ pasted."
+msgstr "Puede añadir un ejemplo o respuesta sugerida para ayudar a responder a sus usuarios. Se presentará bajo la caja de respuestas y pueden ser copiada y pegada."
+
+msgid "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."
+msgstr "Puede añadir un ejemplo o respuesta sugerida para ayudar a responder a sus usuarios. Se presentará bajo la caja de respuestas y pueden ser copiada y pegada."
+
+msgid "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;
"
+msgstr "Puede elegir entre:
- área de texto (caja grande para párrafos);
- campo de texto (para una respuesta corta);
- checkboxes donde las opciones se presentan como una lista y pueden seleccionarse varios valores;
- botones de radio, donde se presenta una lista de opciones para elegir sólo una de ellas;
- lista despegable - sólo puede seleccionarse una opción;
- lista de selección múltiple que permite a los usuarios seleccionar varias opciones de una lista desplazable usando la tecla CTRL;
"
+
+msgid "You can edit any of the details below."
+msgstr "Puede editar cualquiera de los siguientes datos."
+
+msgid "You can not continue until you have filled in all of the required information."
+msgstr ""
+
+#, fuzzy
+msgid "You can not edit a historical version of this template."
+msgstr "templates"
+
+#, fuzzy
+msgid "You can not publish a historical version of this template."
+msgstr "templates"
+
+#, fuzzy
+msgid "You cannot delete historical versions of this template."
+msgstr "templates"
+
+msgid "You have altered answers but have not saved them:"
+msgstr "Ha modificado las respuestas, pero todavía no las ha grabado:"
+
+msgid "You have been given "
+msgstr ""
+
+#, fuzzy
+msgid "You have been granted permission by your organisation to use our API. Your API token and instructions for using the API endpoints can be found "
+msgstr "Organización"
+
+msgid "You have un-published changes"
+msgstr ""
+
+msgid "You have unsaved answers in the following sections:"
+msgstr ""
+
+msgid "You must accept the terms and conditions to register."
+msgstr ""
+
+msgid "You must enter a valid email address."
+msgstr "Debe introducir una dirección de correo electrónico válida."
+
+msgid "You need to sign in or sign up before continuing."
+msgstr ""
+
+msgid "You now have "
+msgstr ""
+
+msgid "Your"
+msgstr ""
+
+msgid "Your ORCID"
+msgstr ""
+
+msgid "Your access to "
+msgstr ""
+
+msgid "Your account has been successfully linked to %{scheme}."
+msgstr ""
+
+msgid "Your account won't be created until you access the link above and set your password."
+msgstr ""
+
+msgid "Your browser does not support the video tag."
+msgstr "El navegador no soporta la etiqueta video."
+
+msgid "Your password must contain at least 8 characters."
+msgstr "Su clave ha de tener al menos 8 caracteres."
+
+msgid "Your permissions relating to "
+msgstr ""
+
+#, fuzzy
+msgid "Your template has been published and is now available to users."
+msgstr "templates"
+
+#, fuzzy
+msgid "Your template is no longer published. Users will not be able to create new DMPs for this template until you re-publish it"
+msgstr "templates"
+
+msgid "a day"
+msgstr ""
+
+msgid "about %d hours"
+msgstr ""
+
+msgid "about a minute"
+msgstr ""
+
+msgid "about a month"
+msgstr ""
+
+msgid "about a year"
+msgstr ""
+
+msgid "about an hour"
+msgstr ""
+
+msgid "account has been locked due to an excessive number of unsuccessful sign in attempts."
+msgstr ""
+
+msgid "activerecord.errors.messages.record_invalid"
+msgstr ""
+
+#, fuzzy
+msgid "activerecord.errors.models.user.attributes.current_password.invalid"
+msgstr "user"
+
+#, fuzzy
+msgid "activerecord.errors.models.user.attributes.email.blank"
+msgstr "user"
+
+#, fuzzy
+msgid "activerecord.errors.models.user.attributes.password.blank"
+msgstr "user"
+
+#, fuzzy
+msgid "activerecord.errors.models.user.attributes.password_confirmation.confirmation"
+msgstr "user"
+
+msgid "add guidance text"
+msgstr ""
+
+# Timeago - found in lib/assets/javascripts/jquery.timeago.js
+# ---------------------
+# suffix ago
+msgid "ago"
+msgstr ""
+
+#, fuzzy
+msgid "approx. %{space_used}%% of available space used (max %{num_pages} pages)"
+msgstr "aprox. %{space_used}% de disponibilidad del espacio usado (máx. %{num_pages} páginas)"
+
+#, fuzzy
+msgid "by "
+msgstr " por "
+
+msgid "can't be blank"
+msgstr ""
+
+msgid "can't be larger than 500KB"
+msgstr ""
+
+msgid "can't be less than zero"
+msgstr ""
+
+msgid "e.g. School/ Department"
+msgstr "ej: Escuela / Departmento"
+
+#, fuzzy
+msgid "example answer"
+msgstr "Respuesta de ejemplo"
+
+msgid "from now"
+msgstr ""
+
+#, fuzzy
+msgid "generic template"
+msgstr "templates"
+
+msgid "guidance"
+msgstr ""
+
+#, fuzzy
+msgid "guidance group"
+msgstr "Grupo de orientación"
+
+msgid "guidance on"
+msgstr ""
+
+msgid "height must be less than 100px"
+msgstr ""
+
+msgid "helpers.is_test"
+msgstr ""
+
+msgid "helpers.links.cancel"
+msgstr ""
+
+msgid "helpers.project.is_test_help_text"
+msgstr ""
+
+msgid "into your browser"
+msgstr ""
+
+msgid "less than a minute"
+msgstr ""
+
+#, fuzzy
+msgid "must be logged in"
+msgstr "Último acceso"
+
+msgid "must be one of the following formats: jpeg, jpg, png, gif, bmp"
+msgstr ""
+
+msgid "must be unique"
+msgstr ""
+
+#, fuzzy
+msgid "must have access to guidances api"
+msgstr "guidances"
+
+#, fuzzy
+msgid "must have access to plans api"
+msgstr "guidances"
+
+#, fuzzy
+msgid "no research organisation is associated with this plan"
+msgstr "Organización"
+
+#, fuzzy
+msgid "note"
+msgstr "Nota"
+
+msgid "or copy"
+msgstr ""
+
+#, fuzzy
+msgid "organisation"
+msgstr "Organización"
+
+#, fuzzy
+msgid "phase"
+msgstr "Fase"
+
+#, fuzzy
+msgid "plan"
+msgstr "plans"
+
+msgid "profile"
+msgstr ""
+
+#, fuzzy
+msgid "question"
+msgstr "Pregunta"
+
+msgid "questions answered"
+msgstr "preguntas respondidas"
+
+#, fuzzy
+msgid "role"
+msgstr "Función"
+
+#, fuzzy
+msgid "section"
+msgstr "Sección"
+
+msgid "select a guidance group"
+msgstr ""
+
+msgid "select at least one theme"
+msgstr ""
+
+msgid "since %{name} saved the answer below while you were editing. Please, combine your changes and then save the answer again."
+msgstr ""
+
+#, fuzzy
+msgid "template"
+msgstr "templates"
+
+msgid "user"
+msgstr "user"
+
+#, fuzzy
+msgid "user must be in your organisation"
+msgstr "Organización"
diff --git a/config/locale/fr/app.po b/config/locale/fr/app.po
new file mode 100644
index 0000000..26cbc38
--- /dev/null
+++ b/config/locale/fr/app.po
@@ -0,0 +1,1815 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the app package.
+# FIRST AUTHOR , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: app 1.0.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2017-05-02 14:54+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+msgid " (UK users only)"
+msgstr " (réservé aux utilisateurs britanniques)"
+
+msgid " - "
+msgstr ""
+
+#, fuzzy
+msgid " I accept the terms and conditions *"
+msgstr " Jaccepte les Conditions générales dutilisation. *"
+
+#, fuzzy
+msgid " Plan"
+msgstr "plans"
+
+msgid " access to"
+msgstr ""
+
+msgid " access. "
+msgstr ""
+
+msgid " and "
+msgstr ""
+
+#, fuzzy
+msgid " by"
+msgstr " par "
+
+msgid " by "
+msgstr " par "
+
+#, fuzzy
+msgid " has been removed by "
+msgstr " par "
+
+#, fuzzy
+msgid " have been changed by"
+msgstr " par "
+
+msgid " into your browser)"
+msgstr ""
+
+msgid " on "
+msgstr ""
+
+msgid " or "
+msgstr ""
+
+msgid " password. You can do this through the link below."
+msgstr ""
+
+#, fuzzy
+msgid " provided by "
+msgstr " par "
+
+#, fuzzy
+msgid " team"
+msgstr "am"
+
+#, fuzzy
+msgid " that has been customised by "
+msgstr " par "
+
+msgid " to accept the invitation, (or copy "
+msgstr ""
+
+msgid " will help you to develop your Data Management Plan. If you have any queries or feedback as you use the tool, please contact us on "
+msgstr ""
+
+#, fuzzy
+msgid "\"Are you sure you want to unlink #{scheme.description} ID?\""
+msgstr "Identifiant"
+
+msgid "\"Unlink your account from #{scheme.description}. You can link again at any time.\""
+msgstr ""
+
+msgid "\"Your account has been linked to #{scheme.description}.\""
+msgstr ""
+
+msgid "%d days"
+msgstr ""
+
+msgid "%d minutes"
+msgstr ""
+
+msgid "%d months"
+msgstr ""
+
+msgid "%d years"
+msgstr ""
+
+msgid "%{application_name}"
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "%{application_name} 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 %{application_name}, please complete the form below. * If you have an account with %{application_name}, 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."
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "%{application_name} is provided by the %{organisation_name}. You can find out more about us on our website. If you would like to contact us about %{application_name}, please fill out the form below."
+msgstr "DMPonline"
+
+msgid "%{format} is not a valid exporting format. Available formats to export are %{available_formats}."
+msgstr ""
+
+msgid "%{value} is not a valid format"
+msgstr ""
+
+msgid "(Using custom PDF formatting values)"
+msgstr "(Utilisation de valeurs de mise en forme PDF personnalisées)"
+
+msgid "(Using template PDF formatting values)"
+msgstr "(Utilisation des valeurs de mise en forme PDF du modèle)"
+
+msgid "-"
+msgstr ""
+
+msgid "... (continued)"
+msgstr ""
+
+msgid "
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.
"
+msgstr "
Questions auxquelles réfléchir :
- Quelle est la nature de votre projet de recherche ?
- Quelles ont les problématiques de recherche que vous traitez ?
- Dans quel but est effectuée la collecte ou la création des données ?
Conseils :
Résumez brièvement le type détude(s) pour permettre à dautres de comprendre dans quel but les données sont collectées ou créées.
"
+
+msgid "
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.
"
+msgstr "
Saisissez une courte description. Celle-ci peut résumer lobjet de la section ou donner des indications sur comment y répondre. Ce texte saffichera dans la bannière de couleur quand une section sera ouverte pour modification.
"
+
+msgid "
Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences.
"
+msgstr "
Entrez une description qui permet de distinguer différents modèles, par ex. : pour des publics différents.
"
+
+msgid "
The %{organisation_name} ('%{organisation_abbreviation}') are consortia supported by %{legal_entity}. Our primary constituency is the research community, particularly the higher and further education sector.
%{application_name}
%{application_name} ('the tool', 'the system') is a tool developed by the %{organisation_abbreviation} as a shared resource for the research community. It is hosted by %{legal_entity}.
Your personal details
In order to help identify and administer your account with %{application_name}, 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 %{organisation_abbreviation} partner institutions but only for legitimate %{organisation_abbreviation} 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 %{legal_entity}. 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
%{legal_entity} 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 %{application_name} 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.
DCC Checklist for a Data Management Plan [PDF, 3 pages] A list of 13 questions and associated guidance, that represent the main issues to come up in Data Management and Sharing Plans. The Checklist is used as a generic template in %{application_name}, and is presented when no funder or organsiational requirements are applicable for the user.
How to develop a Data Management and Sharing Plan [PDF, 8 pages] A guide by the Digital Curation Centre that outlines typical funder requirements for DMPs and the types of considerations to make when responding.
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
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
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 Digital Curation Centre 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.
"
+msgstr "Si vous avez besoin de plus de directives, communiquez avec nous par courriel à portage@carl-abrc.ca."
+
+msgid "
%{application_name} has been jointly developed by the %{organisation_name} to help you write data management plans.
"
+msgstr "
DMPonline est un développement du Digital Curation Centre (Centre de curation numérique britannique - DCC) pour vous aider dans la rédaction de plans de gestion de données, ou DMP.
"
+
+msgid "
%{application_name} is developed and maintained by the UK %{organisation_name}. 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 %{application_name} 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 %{application_name}
%{application_name} 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.
%{application_name} is a Ruby on Rails application. The source code is made available under an MIT 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 %{application_name} and offer your contributions back to the community.
If you install an instance of %{application_name} we require that you credit the %{organisation_abbreviation} as originators of the tool. We recommend that the acknowledgement takes the form of the %{application_name} logo with a link back to the %{organisation_abbreviation}-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.
We are impressed by the uptake of %{application_name} 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 %{application_name}. Plans will be released for consultation soon but we also welcome your suggestions on how best to support our work.
"
+msgstr ""
+
+msgid "
%{application_name} stories from the %{organisation_abbreviation} website
"
+msgstr ""
+
+msgid "
Welcome. You are now ready to create your first DMP.Click the 'Create plan' button below to begin.
"
+msgstr "
Bienvenue. Vous voilà prêt à créer votre premier DMP.Cliquez sur le bouton 'Créer un plan' ci-dessous pour commencer.
"
+
+msgid "
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.
"
+msgstr "
Commencez par créer un groupe de conseils. Celui-ci peut désigner un établissement dans son ensemble, ou un sous-ensemble : une faculté, un institut, un département. Quand vous créerez des conseils, on vous demandera de les affecter à un groupe de conseils.
"
+
+msgid "
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'.
"
+msgstr "
À ce niveau, vous pouvez décharger votre plan sous différents formats. Cela peut vous être utile pour soumettre votre plan dans une demande de subvention. Sélectionnez votre format et cliquez sur Exporter.
"
+
+msgid "
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. %{application_name} has been produced by the %{organisation_name} to help research teams respond to this requirement, and any expectations that their institution or others may apply.
The %{organisation_abbreviation} 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 %{application_name} account, click on 'Create account' on the homepage.
We are constantly improving the user interface and functionality of %{application_name}. 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
"
+msgstr ""
+
+msgid "
Here you can view previously published versions of your template. These can no longer be modified.
"
+msgstr ""
+
+msgid "
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.
"
+msgstr "
Vous définissez ici le titre que verrons les utilisateurs. Si vous souhaitez que votre DMP comporte plusieurs phases, cela doit apparaître clairement dans le titre et la description.
"
+
+msgid "
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.
"
+msgstr "
Si vous souhaitez ajouter un modèle institutionnel propre à un plan de gestion de données, utilisez le bouton créer un modèle. Vous pouvez au besoin créer plusieurs modèles, par ex. : un pour des chercheurs et un pour des thésards.
Votre modèle apparaîtra aux utilisateurs de votre établissement quand aucun modèle propre à un bailleur de subvention ne sapplique. Si vous souhaitez ajouter des questions dans un modèle de bailleur de subventions, utilisez les options de personalisation de modèle ci-après.
"
+
+msgid "
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 %{organisation_abbreviation} or any Schools/Departments that you provide guidance for.
You can select multiple themes by using the CTRL button.
"
+msgstr "
Sélectionnez les thèmes relatifs à cette question.
Cette fonction permet dintégrer une documentation générale dassistance de votre établissement, comme encore issue dautres sources comme le DCC et des facultés ou départements auxquels vous fournissez des conseils.
Vous pouvez sélectionner plusieurs thèmes avec la touche CTRL.
"
+
+msgid "
The %{organisation_abbreviation} are now collaborating 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 %{application_name}
- 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
%{application_name} 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 %{application_name} is %{application_version}.
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.
"
+msgstr "
Dans le tableau ci-dessous figurent les plans que vous avez créés, ainsi que ceux que vous partagez avec d'autres.Vous pouvez à tout moment les modifier, les partager, les exporter, les effacer...
"
+
+msgid "
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.
"
+msgstr "
Pour créer un nouveau modèle, commencez par saisir un titre et une description. Un fois ces éléments enregistrés, le programme vous propose dajouter une phase ou plus.
"
+
+msgid "
When you login to %{application_name} 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 %{application_name} 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.
"
+msgstr "
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.
"
+
+msgid "
You are about to unlink %{application_name} of your institutional credentials, would you like to continue?
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 %{application_name} if they don't already have an account. A notification is also issued when a user's permission level is changed.
"
+msgstr "
À ce niveau, vous pouvez donner accès à votre plan à dautres personnes. Trois niveaux dautorisation sont possibles.
Les utilisateurs avec un droit en \"lecture seule\" ne pourront que consulter le plan.
Les utilisateurs avec un droit de mofification pourront y contribuer.
Les copropriétaires le peuvent aussi, mais peuvent aussi en modifier les détails et en contrôler laccès.
Ajoutez chacun des collaborateurs en saisissant leurs courriels lun après lautre, en choisissant un niveau dautorisation et en cliquant sur \"Ajouter le collaborateur\".
Ceux qui sont invités recevront un avis par courriel leur indiquant quils ont accès à ce plan, invitant ceux qui nont pas de compte dans DMPonline à senregistrer. Lutilisateur reçoit aussi un avis quand ces droits sont changés.
"
+
+#, fuzzy
+msgid "
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). 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.
If you do have a need to provide guidance for specific funders that would not be useful to a wider audience (e.g. if you have specific instructions for applicants to BBSRC for example), you can do so by adding guidance to a specific question when you edit your template.
"
+msgstr "DMPonline"
+
+#, fuzzy
+msgid "A Data Management Plan in %{application_name} has been shared with you"
+msgstr "DMPonline"
+
+msgid "A colleague has invited you to contribute to their Data Management Plan at "
+msgstr ""
+
+msgid "A pertinent ID as determined by the funder and/or institution."
+msgstr "Un identifiant approprié conforme aux prescriptions de lorganisme financeur ou de létablissement."
+
+msgid "A required setting has not been provided"
+msgstr "Vous navez pas précisé un réglage obligatoire"
+
+msgid "A version of "
+msgstr ""
+
+msgid "API Information"
+msgstr ""
+
+msgid "API rights"
+msgstr ""
+
+msgid "API token"
+msgstr ""
+
+msgid "Abbreviation"
+msgstr "Abréviation"
+
+msgid "About"
+msgstr "À propos..."
+
+msgid "About %{application_name}"
+msgstr "À propos de l'Assistant PGD"
+
+msgid "Access removed"
+msgstr ""
+
+msgid "Actions"
+msgstr "Actions"
+
+msgid "Add Annotations"
+msgstr ""
+
+#, fuzzy
+msgid "Add an appropriate name for your guidance group. This name will be used to tell the end user where the guidance has come from. It will be appended to text identifying the theme e.g. \"[guidance group name]: guidance on data sharing\" so we suggest you just use the institution or department name."
+msgstr "Groupe de conseils"
+
+msgid "Add collaborator"
+msgstr "Ajouter le collaborateur"
+
+msgid "Add guidance"
+msgstr "Ajoutez des conseils"
+
+msgid "Add guidance group"
+msgstr "Ajoutez un groupe de conseils"
+
+msgid "Add new phase +"
+msgstr "Ajouter une nouvelle phase +"
+
+msgid "Add note"
+msgstr "Ajouter une note"
+
+msgid "Add option"
+msgstr "Ajoutez une option"
+
+msgid "Add question"
+msgstr "Ajouter une question"
+
+msgid "Add section"
+msgstr "Ajouter une section"
+
+msgid "Additional comment area will be displayed."
+msgstr ""
+
+msgid "Admin Details"
+msgstr ""
+
+msgid "Admin area"
+msgstr "Administration"
+
+msgid "All the best,"
+msgstr ""
+
+#, fuzzy
+msgid "Allows the user to amend the organisation details (name, URL etc) and add basic branding such as the logo"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "Allows the user to assign permissions to other users within the same organisation. Users can only assign permissions they own themselves"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "Allows the user to create and edit guidance"
+msgstr "user"
+
+#, fuzzy
+msgid "Allows the user to create new institutional templates, edit existing ones and customise funder templates"
+msgstr "templates"
+
+msgid "An error has occurred while saving/resetting your export settings."
+msgstr ""
+
+msgid "Annotations"
+msgstr ""
+
+#, fuzzy
+msgid "Answer"
+msgstr "Réponses"
+
+msgid "Answer format"
+msgstr "Format de réponse"
+
+msgid "Answer questions"
+msgstr "Répondez aux questions"
+
+#, fuzzy
+msgid "Answered"
+msgstr "Réponse "
+
+#, fuzzy
+msgid "Answered at"
+msgstr "Réponse "
+
+#, fuzzy
+msgid "Answered by"
+msgstr "Réponse "
+
+msgid "Answers"
+msgstr "Réponses"
+
+msgid "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."
+msgstr "Tout ce que vous écrivez saffiche dans la boîte de réponse. Si vous souhaitez une réponse ayant une certaine forme (par ex. : des tableaux), cest ici que vous pouvez entrer ce style."
+
+#, fuzzy
+msgid "Are you sure you want to remove this note?"
+msgstr "Êtes-vous sûr de vouloir retirer cette note?"
+
+msgid "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"
+msgstr "Voulez-vous vraiment effacer ce plan ? S'il est partagé avec d'autres utilisateurs, le fait de l'effacer de votre liste, l'effacera aussi de leur liste de plans."
+
+msgid "Are you sure?"
+msgstr "Êtes-vous sûr ?"
+
+msgid "Back"
+msgstr "Retour"
+
+msgid "Back to edit view"
+msgstr "Retour à la vue à modifier"
+
+msgid "Background"
+msgstr "Assistant PGD"
+
+msgid "Bad Credentials"
+msgstr ""
+
+msgid "Bad Parameters"
+msgstr ""
+
+msgid "Before submitting, please consider:"
+msgstr ""
+
+#, fuzzy
+msgid "Before you get started, we need to ask a few questions to set you up with the best DMP template for your needs."
+msgstr "Questions"
+
+msgid "Begin typing to see a filtered list"
+msgstr ""
+
+msgid "Below is a list of users registered for your organisation. You can sort the data by each field."
+msgstr "La liste ci-dessous indique les utilisateurs de votre organisme. Ces informations peuvent être triées par champ."
+
+msgid "Bottom"
+msgstr "Bas"
+
+msgid "By "
+msgstr ""
+
+msgid "Cancel"
+msgstr "Annuler"
+
+#, fuzzy
+msgid "Cannot share plan with %{email} since that email matches with the owner of the plan."
+msgstr "plans"
+
+msgid "Change language"
+msgstr ""
+
+msgid "Change my password"
+msgstr ""
+
+#, fuzzy
+msgid "Change organisation details"
+msgstr "Organisation"
+
+msgid "Check box"
+msgstr "Case à cocher"
+
+msgid "Check this box when you are ready for this guidance to appear on user's plans."
+msgstr ""
+
+msgid "Click here"
+msgstr ""
+
+msgid "Click here to accept the invitation"
+msgstr ""
+
+msgid "Click here to confirm your account"
+msgstr ""
+
+msgid "Click the link below to unlock your account"
+msgstr ""
+
+msgid "Co-owner"
+msgstr "Copropriétaire"
+
+msgid "Collaborators"
+msgstr "Collaborateurs"
+
+msgid "Comment"
+msgstr "Commentaire"
+
+#, fuzzy
+msgid "Comment removed."
+msgstr "Commentaire"
+
+msgid "Comment was successfully created."
+msgstr ""
+
+#, fuzzy
+msgid "Comment was successfully saved."
+msgstr "Création du plan effectuée."
+
+msgid "Contact Email"
+msgstr ""
+
+#, fuzzy
+msgid "Contact Us"
+msgstr "Communiquez avec nous"
+
+msgid "Contact us"
+msgstr "Communiquez avec nous"
+
+msgid "Create a new plan"
+msgstr "Créer un nouveau plan"
+
+msgid "Create a template"
+msgstr "Créer un modèle"
+
+msgid "Create account"
+msgstr "Sinscrire"
+
+msgid "Create plan"
+msgstr "Create plan"
+
+msgid "Created"
+msgstr "Créé"
+
+msgid "Created at"
+msgstr "Créée à"
+
+msgid "Current password"
+msgstr ""
+
+msgid "Customise"
+msgstr "Personnaliser"
+
+msgid "Default"
+msgstr "Par défaut"
+
+msgid "Default answer"
+msgstr "Réponse par défaut"
+
+msgid "Default value"
+msgstr "Valeur par défaut"
+
+msgid "Delete"
+msgstr "Effacer"
+
+#, fuzzy
+msgid "Delete Example Answer"
+msgstr "Exemple de réponse"
+
+msgid "Delete question"
+msgstr "Supprimer la question"
+
+msgid "Description"
+msgstr ""
+
+msgid "Details"
+msgstr "Détails"
+
+msgid "Details successfully updated."
+msgstr ""
+
+msgid "Didn't receive confirmation instructions?"
+msgstr "Instructions de confirmation non reçues ?"
+
+msgid "Didn't receive unlock instructions?"
+msgstr "Instructions de déverrouillage non reçues ?"
+
+msgid "Discard"
+msgstr "Rejeter"
+
+msgid "Display additional comment area."
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dropdown"
+msgstr "Liste déroulante"
+
+msgid "E.g ORCID http://orcid.org/."
+msgstr "par ex. : ORCID http://orcid.org/."
+
+msgid "Edit"
+msgstr "Modifier"
+
+#, fuzzy
+msgid "Edit Annotations"
+msgstr "Modifier"
+
+msgid "Edit User Privileges"
+msgstr ""
+
+msgid "Edit customisation"
+msgstr "Modifier la personnalisation"
+
+msgid "Edit phase"
+msgstr "Modifier la phase"
+
+msgid "Edit phase details"
+msgstr "Modifiez les détails de la phase"
+
+msgid "Edit plan details"
+msgstr "Modifier des détails du plan"
+
+msgid "Edit profile"
+msgstr "Modifier le profil"
+
+msgid "Edit question"
+msgstr "Modifier la question"
+
+msgid "Edit template details"
+msgstr "Modifier les détails du modèle"
+
+#, fuzzy
+msgid "Editor"
+msgstr "Modifier"
+
+msgid "Editors can contribute to plans. Co-owners have additional rights to edit plan details and control access."
+msgstr "Les collaborateurs avec des droits de modification peuvent contribuer aux plans. Les copropriétaires ont en plus le droit de modifier les détails du plan et en contrôler laccès. "
+
+msgid "Email"
+msgstr "Courriel"
+
+msgid "Email address"
+msgstr "Adresse courriel"
+
+msgid "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."
+msgstr "Entrez une courte description. Les utilisateurs la verront au-dessus du récapitulaif des parties et des questions auxquels ils devront répondre."
+
+msgid "Enter a description that helps you to differentiate between templates e.g. if you have ones for different audiences"
+msgstr "Saisissez une description qui vous permet de distinguer un modèle de lautre, par ex. : si vous visez différents"
+
+msgid "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"
+msgstr "Saisissez une titre pour cette phase, par ex. : DMP initial, DMP complet... Ce sont ces mentions que verrons les utilisateurs dans les onglets pendant la rédaction dun plan. Si le vôtre ne comporte quune phase, donnez-lui un nom général, par ex. : DMP de Glasgow"
+
+msgid "Enter any options that you wish to display. If you want to pre-set one option as selected, check the default box."
+msgstr "Saisissez toutes les options que vous voulez afficher. Si vous voulez paramétrer la sélection par défaut dun élément, cochez la case correspondante."
+
+msgid "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."
+msgstr "Saisissez des instructions spécifiques pour accompagner cette question. Si vous avez des conseils par thèmes aussi : ceux-ci vont être aiguillés ici selon ce que sélectionnez ci-dessous, aussi mieux vaut éviter de dupliquer trop dextraits."
+
+msgid "Enter your guidance here. You can include links where needed."
+msgstr "Entrez ici vos conseils. Vous pouvez ajouter des liens là où il faut."
+
+msgid "Error processing registration. Please check that you have entered a valid email address and that your chosen password is at least 8 characters long."
+msgstr ""
+
+msgid "Error!"
+msgstr "Erreur!"
+
+#, fuzzy
+msgid "Example Answer"
+msgstr "Exemple de réponse"
+
+#, fuzzy
+msgid "Example of answer"
+msgstr "Exemple de réponse"
+
+msgid "Export"
+msgstr "Exporter"
+
+#, fuzzy
+msgid "Export settings updated successfully."
+msgstr "Exporter"
+
+#, fuzzy
+msgid "Exporting public plan is under development. Apologies for any inconvience."
+msgstr "Exporter"
+
+msgid "Face"
+msgstr "Police"
+
+msgid "File Name"
+msgstr "Titre du plan"
+
+msgid "Fill in the required fields"
+msgstr ""
+
+msgid "Filter plans"
+msgstr "Filtrer les plans"
+
+msgid "First name"
+msgstr "Prénom"
+
+msgid "Font"
+msgstr ""
+
+msgid "Forgot your password?"
+msgstr ""
+
+msgid "Format"
+msgstr ""
+
+msgid "Funder"
+msgstr "Funder"
+
+msgid "Funders templates"
+msgstr "Modèles des bailleurs de subventions"
+
+#, fuzzy
+msgid "Funding organisation"
+msgstr "Organisation"
+
+msgid "Future plans"
+msgstr ""
+
+msgid "Get involved"
+msgstr ""
+
+msgid "Grant number"
+msgstr "Titre de la subvention"
+
+msgid "Grant permissions"
+msgstr ""
+
+msgid "Grant reference number if applicable [POST-AWARD DMPs ONLY]"
+msgstr "N° de réféence de la subvention, le cas échéant (UNIQUEMENT POUR LES DMP CRÉÉS APRÈS OCTROI DUNE SUBVENTION)"
+
+msgid "Guidance"
+msgstr "Conseils"
+
+#, fuzzy
+msgid "Guidance choices saved."
+msgstr "Conseils"
+
+msgid "Guidance group"
+msgstr "Groupe de conseils"
+
+msgid "Guidance group list"
+msgstr "Liste des groupes de conseils"
+
+msgid "Guidance group was successfully created."
+msgstr "Création du groupe de conseils effectuée."
+
+msgid "Guidance group was successfully deleted."
+msgstr "Suppression du groupe de conseils effectuée."
+
+msgid "Guidance group was successfully updated."
+msgstr "Mise à jour du groupe de conseils effectuée."
+
+msgid "Guidance list"
+msgstr "Liste de conseils"
+
+msgid "Guidance was successfully created."
+msgstr "Création de conseils effectuée."
+
+#, fuzzy
+msgid "Guidance was successfully deleted."
+msgstr "Création de conseils effectuée."
+
+msgid "Guidance was successfully updated."
+msgstr "Mise à jour de conseils effectuée."
+
+msgid "Hello"
+msgstr ""
+
+msgid "Hello "
+msgstr ""
+
+msgid "Help"
+msgstr "Aide"
+
+msgid "History"
+msgstr ""
+
+msgid "Home"
+msgstr "Accueil"
+
+msgid "How many plans?"
+msgstr "Nombre de plans?"
+
+msgid "How to use the API"
+msgstr ""
+
+msgid "ID"
+msgstr "Identifiant"
+
+msgid "If applying for funding, state the name exactly as in the grant proposal."
+msgstr "En cas de demande de financement, indiquer le nom exactement comme dans la demande de subvention."
+
+#, fuzzy
+msgid "If applying for funding, state the title exactly as in the proposal."
+msgstr "En cas de demande de financement, indiquer le nom exactement comme dans la demande de subvention."
+
+msgid "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."
+msgstr "Si les conseils ne sont destinés quà un sous-ensemble dutilisateurs (par ex. : faisant partie dune faculté ou dun institut), cochez cette case. Les utilisateurs pourront sélectionner ce sous-groupe de conseils lorquils répondront aux questions dans lassistant de création de plan."
+
+msgid "If you are entering an URL try to use something like http://tinyurl.com/ to make it smaller."
+msgstr ""
+
+msgid "If you decide to use the default DMPRoadmap logo, please check this box to remove your current logo."
+msgstr ""
+
+msgid "If you didn't request this, please ignore this email."
+msgstr ""
+
+msgid "If you don't want to accept the invitation, please ignore this email."
+msgstr ""
+
+msgid "If you would like to change your password please complete the following fields."
+msgstr ""
+
+msgid "Included Elements"
+msgstr "Éléments inclus"
+
+msgid "Information was successfully created."
+msgstr "Création des informations effectuée."
+
+msgid "Information was successfully deleted."
+msgstr "Suppression des informations effectuée."
+
+msgid "Information was successfully updated."
+msgstr "Mise à jour des informations effectuée."
+
+msgid "Institution"
+msgstr "Institution"
+
+msgid "Invalid font face"
+msgstr "Police non valide"
+
+msgid "Invalid font size"
+msgstr "Taille de police non valide"
+
+msgid "Invalid maximum pages"
+msgstr "Nombre de pages maxi non valide"
+
+msgid "Invitation to %{email} issued successfully."
+msgstr ""
+
+msgid "Language"
+msgstr ""
+
+msgid "Last logged in"
+msgstr "Dernière connexion"
+
+msgid "Last name"
+msgstr "Nom"
+
+msgid "Last updated"
+msgstr "Dernière m.à j."
+
+msgid "Latest news"
+msgstr "Modèle de plan de gestion des données Portage"
+
+msgid "Left"
+msgstr "Gauche"
+
+msgid "List of users"
+msgstr "Liste des utilisateurs"
+
+msgid "Logo"
+msgstr ""
+
+msgid "Main organisation"
+msgstr "Organisme principal"
+
+msgid "Many thanks,"
+msgstr ""
+
+msgid "Margin"
+msgstr "Marge"
+
+msgid "Margin cannot be negative"
+msgstr "Une marge ne peut être négative"
+
+msgid "Margin value is invalid"
+msgstr "Valeur de marge non valide"
+
+msgid "Me"
+msgstr "Moi"
+
+#, fuzzy
+msgid "Message"
+msgstr "Moi"
+
+#, fuzzy
+msgid "Modify guidance"
+msgstr "Ajoutez des conseils"
+
+#, fuzzy
+msgid "Modify templates"
+msgstr "templates"
+
+msgid "Multi select box"
+msgstr "Boîte de sélections multiples"
+
+#, fuzzy
+msgid "My Plan"
+msgstr "Mon plan"
+
+msgid "My organisation isn't listed."
+msgstr "Mon établissement nest pas listé."
+
+msgid "My plans"
+msgstr "Mes plans"
+
+#, fuzzy
+msgid "My research organisation is not on the list"
+msgstr "Organisation"
+
+msgid "Name"
+msgstr "Prénom"
+
+msgid "Name (if different to above), telephone and email contact details"
+msgstr "Nom (sil diffère du précédent), coordonnées courriel et téléphone"
+
+msgid "Name of Principal Investigator(s) or main researcher(s) on the project."
+msgstr "Nom du ou des directeurs de recherche ou du ou des principaux chercheurs du projet."
+
+msgid "New guidance"
+msgstr "Nouveaux conseils"
+
+msgid "New password"
+msgstr ""
+
+msgid "New section title"
+msgstr "Le nouveau titre de section"
+
+msgid "New template"
+msgstr "Nouveau modèle"
+
+msgid "New to %{application_name}? Create an account today."
+msgstr "Nouveau sur DMPonline ? Inscrivez-vous..."
+
+msgid "No"
+msgstr ""
+
+msgid "No additional comment area will be displayed."
+msgstr ""
+
+#, fuzzy
+msgid "No funder associated with this plan"
+msgstr "plans"
+
+msgid "No items available."
+msgstr ""
+
+msgid "No matches"
+msgstr "Pas de plans pour %{filter}"
+
+msgid "None"
+msgstr "Aucun"
+
+msgid "Not answered yet"
+msgstr "Pas encore de réponse"
+
+msgid "Note"
+msgstr "Note"
+
+msgid "Note removed by"
+msgstr "Note retirée par"
+
+msgid "Note removed by you"
+msgstr "Note retirée par vous"
+
+msgid "Noted by:"
+msgstr "Note par :"
+
+msgid "Ok"
+msgstr ""
+
+msgid "On %{application_name}"
+msgstr "Concernant l'Assistant PGD"
+
+msgid "On data management planning"
+msgstr "Concernant la planification de la gestion des données"
+
+msgid "Optional subset"
+msgstr "Sous-ensemble facultatif"
+
+msgid "Or, sign in with your institutional credentials"
+msgstr "ou, connectez-vous avec votre authentifiant détablissement"
+
+msgid "Order"
+msgstr "Ordre"
+
+msgid "Order of display"
+msgstr "Ordre daffichage"
+
+msgid "Organisation"
+msgstr "Organisation"
+
+msgid "Organisation details"
+msgstr "Détails sur lorganisme"
+
+msgid "Organisation name"
+msgstr "Nom de lorganisme"
+
+msgid "Organisation type"
+msgstr "Type dorganisme"
+
+msgid "Organisation was successfully updated."
+msgstr "Mise à jour de lorganisme effectuée."
+
+msgid "Organisational"
+msgstr "Organisationnel"
+
+msgid "Organisational (visibile to others within your organisation)"
+msgstr "Avec d'autres membres de votre organisation"
+
+msgid "Organization"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "Original funder template has changed!"
+msgstr "templates"
+
+msgid "Other institutions"
+msgstr ""
+
+msgid "Own templates"
+msgstr "Modèles propres"
+
+msgid "Owner"
+msgstr "Propriétaire"
+
+msgid "PDF Formatting"
+msgstr "Mise en forme PDF"
+
+msgid "Password"
+msgstr ""
+
+msgid "Password and comfirmation must match"
+msgstr ""
+
+msgid "Password confirmation"
+msgstr ""
+
+msgid "Permissions"
+msgstr "Permissions"
+
+msgid "Phase details"
+msgstr "Détails de la phase"
+
+msgid "Plan Data Contact"
+msgstr "Interlocuteur pour les données du plan"
+
+msgid "Plan Description"
+msgstr "Description"
+
+msgid "Plan ID"
+msgstr "Identifiant du projet"
+
+msgid "Plan Name"
+msgstr "Nom du projet"
+
+msgid "Plan data contact"
+msgstr "Interlocuteur pour les données du plan"
+
+msgid "Plan details"
+msgstr "Détails du plan"
+
+msgid "Plan is already shared with %{email}."
+msgstr ""
+
+msgid "Plan name"
+msgstr "Nom du plan"
+
+msgid "Plan shared with %{email}."
+msgstr ""
+
+#, fuzzy
+msgid "Plan was successfully deleted."
+msgstr "Création du plan effectuée."
+
+msgid "Plan was successfully updated."
+msgstr ""
+
+msgid "Please add an abbreviation to your org for display with annotations!"
+msgstr ""
+
+#, fuzzy
+msgid "Please enter a First name."
+msgstr "Entrez votre prénom, svp."
+
+#, fuzzy
+msgid "Please enter a Last name."
+msgstr "Entrez votre prénom, svp."
+
+msgid "Please enter a password confirmation"
+msgstr ""
+
+msgid "Please enter a title for your template."
+msgstr "Merci de saisir un titre pour votre modèle."
+
+msgid "Please enter a valid web address."
+msgstr "Formation à la rédaction de documents scientifiques en anglais une adresse web valide."
+
+msgid "Please enter an email address"
+msgstr ""
+
+#, fuzzy
+msgid "Please enter an email address."
+msgstr "Formation à la rédaction de documents scientifiques en anglais une adresse web valide."
+
+msgid "Please enter the name of your organisation."
+msgstr "Veuillez saisir le nom de votre organisme.."
+
+msgid "Please enter your current password"
+msgstr ""
+
+msgid "Please enter your current password below when changing your email address."
+msgstr ""
+
+msgid "Please enter your email"
+msgstr ""
+
+msgid "Please enter your first name."
+msgstr "Entrez votre prénom, svp."
+
+msgid "Please enter your organisation's name."
+msgstr "Entrez le nom de votre organisme."
+
+msgid "Please enter your password to change email address."
+msgstr ""
+
+msgid "Please enter your surname or family name."
+msgstr "Entrez votre nom dusage ou de famille, svp."
+
+msgid "Please fill in the basic project details below"
+msgstr ""
+
+msgid "Please fill in the basic project details below and click 'Update' to save"
+msgstr "Veuillez renseigner les premiers détails ci-après et cliquez sur 'Mettre à jour' pour enregistrer"
+
+#, fuzzy
+msgid "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."
+msgstr "
À noter que votre courriel est à utiliser comme nom dutilisateur. Si vous modifiez ces informations, rappelez-vous dutiliser votre courriel en vous connectant.
"
+
+msgid "Please only enter up to 165 characters, you have used"
+msgstr ""
+
+#, fuzzy
+msgid "Please select an organisation, or select Other."
+msgstr "Organisation"
+
+msgid "Please select one"
+msgstr ""
+
+msgid "Preview"
+msgstr "Aperçu"
+
+#, fuzzy
+msgid "Primary research organisation"
+msgstr "Organisation"
+
+msgid "Principal Investigator / Researcher"
+msgstr "Directeur de recherche / chercheur"
+
+msgid "Principal Investigator/Researcher"
+msgstr "Directeur de recherche/Chercheur"
+
+msgid "Principal Investigator/Researcher ID"
+msgstr "Identifiant du directeur de recherche/chercheur"
+
+msgid "Private"
+msgstr "Privé"
+
+msgid "Private (owners, co-owners, and administrators only) See our Terms of Use."
+msgstr "Privé (propriétaires, copropriétaires et administrateurs uniquement) Consultez nos Conditions d'utilisation."
+
+msgid "Privileges"
+msgstr ""
+
+msgid "Project title"
+msgstr ""
+
+#, fuzzy
+msgid "Provides the user with an API token and grants rights to harvest information from the tool"
+msgstr "user"
+
+msgid "Public"
+msgstr "Public"
+
+msgid "Public (Your DMP will appear on the Public DMPs page of this site)"
+msgstr "Publiquement sur le web. Votre DMP apparaîtra sur la page Public DMPs de ce site."
+
+msgid "Public DMPs"
+msgstr "DMP publics"
+
+msgid "Public DMPs are plans created using the DMPTool and shared publicly by their owners. They are not vetted for quality, completeness, or adherence to funder guidelines."
+msgstr "Les DMP publics sont des plans créés à l'aide de DMPTool et partagés publiquement par leurs propriétaires. Ils ne sont pas vérifiés pour la qualité, l'exhaustivité ou l'adhésion aux lignes directrices des bailleurs de fonds."
+
+msgid "Publish"
+msgstr ""
+
+msgid "Publish changes"
+msgstr ""
+
+msgid "Published"
+msgstr "Publiée"
+
+msgid "Question"
+msgstr "Question"
+
+msgid "Question not answered"
+msgstr "Question sans réponse."
+
+msgid "Question not answered."
+msgstr "Question sans réponse."
+
+msgid "Question number"
+msgstr "Numéro de la question"
+
+msgid "Question text"
+msgstr "Texte de la question"
+
+msgid "Question text is empty, please enter your question."
+msgstr ""
+
+msgid "Questions"
+msgstr "Questions"
+
+msgid "Radio buttons"
+msgstr "Boutons radio"
+
+msgid "Read more on the "
+msgstr ""
+
+msgid "Read only"
+msgstr "Lecture seule"
+
+msgid "Releases"
+msgstr ""
+
+msgid "Remember me"
+msgstr "Se souvenir de moi"
+
+msgid "Remove"
+msgstr "Retirer"
+
+msgid "Remove user access"
+msgstr "Retirer laccès utilisateur"
+
+msgid "Reset"
+msgstr "Réinitialiser"
+
+msgid "Right"
+msgstr "Droite"
+
+msgid "Save"
+msgstr "Enregistrer"
+
+#, fuzzy
+msgid "Save Unsuccessful."
+msgstr "Enregistrer"
+
+msgid "Saving..."
+msgstr "Enregistrement en cours..."
+
+msgid "Screencast on how to use %{application_name}"
+msgstr "Vidéo en ligne sur lutilisation de DMPonline"
+
+msgid "Section"
+msgstr "Section"
+
+msgid "Sections"
+msgstr "Sections"
+
+#, fuzzy
+msgid "Select a template"
+msgstr "templates"
+
+msgid "Select an action"
+msgstr "Sélectionnez une action"
+
+#, fuzzy
+msgid "Select the funding organisation"
+msgstr "Organisation"
+
+#, fuzzy
+msgid "Select the primary research organisation responsible"
+msgstr "Organisation"
+
+msgid "Select which group this guidance relates to."
+msgstr "Sélectionnez le groupe auxquel ces conseils sont liés."
+
+msgid "Select which theme(s) this guidance relates to."
+msgstr "Sélectionnez le ou les thèmes liés à ces conseils."
+
+msgid "Selected option(s)"
+msgstr ""
+
+msgid "Share"
+msgstr "Partager"
+
+msgid "Share note"
+msgstr "Partager la note"
+
+msgid "Share note with collaborators"
+msgstr "Partager la note avec des collaborateurs"
+
+msgid "Sharing details successfully updated."
+msgstr ""
+
+msgid "Should this guidance apply:"
+msgstr "Si ces conseils sappliquent :"
+
+msgid "Sign in"
+msgstr "Connexion"
+
+msgid "Sign out"
+msgstr "Déconnexion"
+
+msgid "Signed in as "
+msgstr "Connecté en tant que "
+
+msgid "Size"
+msgstr "Taille"
+
+msgid "Someone has requested a link to change your "
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Successfully unlinked your account from %{is}."
+msgstr ""
+
+msgid "Suggested answer"
+msgstr "Suggestion de réponse"
+
+msgid "Suggested answer/ Example"
+msgstr "Suggestion/exemple de réponse"
+
+msgid "Super admin area"
+msgstr "Espace Super admin"
+
+msgid "Template"
+msgstr "Template"
+
+msgid "Template History"
+msgstr ""
+
+msgid "Template details"
+msgstr "Détails du modèle"
+
+msgid "Templates"
+msgstr "Modèles"
+
+msgid "Terms of use"
+msgstr "Exploitation sous licence et conditions d'utilisation"
+
+msgid "Test/Practice"
+msgstr "Test/Pratique"
+
+msgid "Test/Practice (your plan is not visible to other users) See our Terms of Use."
+msgstr "Test / Practice (votre plan n'est pas visible aux autres utilisateurs) Voir nos Conditions d'utilisation."
+
+msgid "Text"
+msgstr "Texte"
+
+msgid "Text area"
+msgstr "Zone de texte"
+
+msgid "Text field"
+msgstr "Champ textuel"
+
+msgid "Thank you for registering. Please confirm your email address"
+msgstr ""
+
+msgid "That email address is already registered."
+msgstr ""
+
+#, fuzzy
+msgid "That template is not currently published."
+msgstr "templates"
+
+msgid "The"
+msgstr ""
+
+msgid "The "
+msgstr ""
+
+msgid "The email address of an administrator at your organisation. Your users will use this address if they have questions."
+msgstr ""
+
+msgid "The following answer cannot be saved"
+msgstr ""
+
+msgid "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."
+msgstr "Les éléments que vous sélectionnez ici s'afficherontt dans le tableaiu ci-après. Vous pouvez trier les données à partir de chacune de ces en-tête ou les filtrer en tapant une chaîne de caractères dans la zone de recherche."
+
+msgid "Themes"
+msgstr "Thèmes"
+
+msgid "There are no public DMPs."
+msgstr "Aucun DMP n'a été rendu public."
+
+msgid "There seems to be a problem with your logo. Please upload it again."
+msgstr ""
+
+msgid "These are the basic details for your organisation."
+msgstr "Voici/il sagit des informations de base sur votre organisme."
+
+msgid "This allows you to order questions within a section."
+msgstr "Cette fonction vous permet de classer les questions dans une section."
+
+msgid "This allows you to order sections."
+msgstr "Cette fonction vous permet de classer des sections."
+
+msgid "This allows you to order the phases of your template."
+msgstr "Cette fonction vous permet de classer les phases de votre modèle."
+
+msgid "This document was generated by %{application_name}"
+msgstr "%{application_name}"
+
+msgid "This must match what you entered in the previous field."
+msgstr ""
+
+msgid "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."
+msgstr "Cette page vous donne un aperçu de votre plan. Elle indique de quoi il s'inspire et donne une idée générale des questions auxquelles vous devrez répondre."
+
+#, fuzzy
+msgid "This plan is based on the default template."
+msgstr "templates"
+
+msgid "This plan is based on:"
+msgstr "Ce plan sinspire de :"
+
+msgid "This section is locked for editing by "
+msgstr "La modification de cette section a été verrouillée par "
+
+msgid "Title"
+msgstr "Titre"
+
+msgid "Top"
+msgstr "Haut"
+
+msgid "Top banner text"
+msgstr "Texte de la bannière en haut décran"
+
+msgid "Transfer customisation"
+msgstr ""
+
+#, fuzzy
+msgid "Un-published"
+msgstr "Publiée"
+
+msgid "Unable to link your account to %{scheme}."
+msgstr ""
+
+msgid "Unable to unlink your account from %{is}."
+msgstr ""
+
+msgid "Unknown column name."
+msgstr "Nom de colonne inconnu."
+
+msgid "Unknown formatting setting"
+msgstr "Réglage de mise en forme"
+
+msgid "Unknown margin. Can only be 'top', 'bottom', 'left' or 'right'"
+msgstr "Marge inconnue. Seules marges possibles : Haut, Bas, Gauche et Droite"
+
+msgid "Unlink account"
+msgstr "Délier le compte"
+
+msgid "Unlink institutional credentials alert"
+msgstr "Alerte de détachement dauthentifiant détablissement"
+
+msgid "Unlock my account"
+msgstr ""
+
+msgid "Unpublish"
+msgstr ""
+
+#, fuzzy
+msgid "Unpublished"
+msgstr "Publiée"
+
+msgid "Unpublished changes"
+msgstr ""
+
+msgid "Unsaved answers"
+msgstr "réponses non sauvegardées"
+
+msgid "Unsaved changes"
+msgstr "Modification non enregistrée"
+
+msgid "Upload a new logo file"
+msgstr ""
+
+msgid "Users"
+msgstr "Utilisateurs"
+
+msgid "Using the generic Data Management Plan"
+msgstr ""
+
+msgid "Version"
+msgstr "Version"
+
+msgid "View"
+msgstr "Visualiser"
+
+msgid "View all guidance"
+msgstr "Voir tous les conseils"
+
+msgid "View all templates"
+msgstr "Voir tous les modèles"
+
+msgid "View phase"
+msgstr "Voir la phase"
+
+msgid "View plans"
+msgstr "Voir les plans"
+
+msgid "Visibility"
+msgstr "Visibilité"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the funder."
+msgstr "templates"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to the research organisation."
+msgstr "Organisation"
+
+#, fuzzy
+msgid "We found multiple DMP templates corresponding to your funder."
+msgstr "templates"
+
+msgid "Website"
+msgstr "Site web"
+
+#, fuzzy
+msgid "Welcome to "
+msgstr "Bienvenue !"
+
+msgid "Welcome to %{application_name}"
+msgstr ""
+
+msgid "Welcome."
+msgstr "Bienvenue !"
+
+#, fuzzy
+msgid "What research project are you planning?"
+msgstr "plans"
+
+msgid "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."
+msgstr "Quand vous créez une nouvelle phase dans votre modèle, une version sera créée automatiquement. Quand vous remplirez la grille ci-dessous, le système affichera des options pour créer des sections et des questions."
+
+#, fuzzy
+msgid "Which DMP template would you like to use?"
+msgstr "templates"
+
+msgid "Would you like to save them now?"
+msgstr "Voulez-vous faire la sauvegarde maintenant?"
+
+msgid "Yes"
+msgstr ""
+
+msgid "You are about to delete '%{guidance_group_name}'. This will affect guidance. Are you sure?"
+msgstr "You are about to delete %{guidance_group_name}. This will affect guidance. Are you sure?"
+
+msgid "You are about to delete '%{guidance_summary}'. Are you sure?"
+msgstr "Vous allez effacer %{guidance_summary}. En êtes-vous sûr?"
+
+msgid "You are about to delete '%{phase_title}'. This will affect versions, sections and questions linked to this phase. Are you sure?"
+msgstr "Vous allez supprimer %{phase_title}. Cette opération affectera les versions, sections et questions liées à cette phase. En êtes-vous sûr?"
+
+msgid "You are about to delete '%{question_text}'. Are you sure?"
+msgstr "Vous allez supprimer la question : %{question_text}. En êtes-vous sûr?"
+
+msgid "You are about to delete '%{section_title}'. This will affect questions linked to this section. Are you sure?"
+msgstr "Vous allez supprimer %{section_title}. Cette opération affectera les questions liées à cette phase. En êtes-vous sûr?"
+
+#, fuzzy
+msgid "You are about to delete a guidance for '%{question_text}'. Are you sure?"
+msgstr "Vous allez supprimer la suggestion/lexemple de réponse à la questioo : %{question_text}. En êtes-vous sûr ?"
+
+msgid "You are about to delete a suggested answer/ example for '%{question_text}'. Are you sure?"
+msgstr "Vous allez supprimer la suggestion/lexemple de réponse à la questioo : %{question_text}. En êtes-vous sûr ?"
+
+#, fuzzy
+msgid "You are about to delete an example answer for '%{question_text}'. Are you sure?"
+msgstr "Vous allez supprimer la suggestion/lexemple de réponse à la questioo : %{question_text}. En êtes-vous sûr ?"
+
+msgid "You are not authorized to perform this action."
+msgstr ""
+
+#, fuzzy
+msgid "You are viewing a historical version of this template. You will not be able to make changes."
+msgstr "templates"
+
+#, fuzzy
+msgid "You can add an example answer to help users respond. These will be presented above the answer box and can be copied/ pasted."
+msgstr "Vous pouvez ajouter un exemple ou une suggestion de réponse pour aider les utilisateurs. Ils safficheront au-dessus de la grille de réponse et on peut les copier/coller."
+
+msgid "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."
+msgstr "Vous pouvez ajouter un exemple ou une suggestion de réponse pour aider les utilisateurs. Ils safficheront au-dessus de la grille de réponse et on peut les copier/coller."
+
+msgid "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;
"
+msgstr "Vos choix possibles :
- une zone de texte (un grand cadre pour les paragraphes);
- un champ de texte (pour une réponse courte);
- les cases à cocher se présentent en une liste où plusieurs choix peuvent être sélectionnés;
- les boutons radio buttons se présentent en une liste où un seul choix est possible;
- la liste déroulante comme cet encadré, où une seule sélection est possible;
- un cadre à choix multiples permet à lutilisateur de faire plusieurs sélections dans une liste, avec la touche CTRL;
"
+
+msgid "You can edit any of the details below."
+msgstr "Vous pouvez modifiez les informations ci-dessous."
+
+msgid "You can not continue until you have filled in all of the required information."
+msgstr ""
+
+#, fuzzy
+msgid "You can not edit a historical version of this template."
+msgstr "templates"
+
+#, fuzzy
+msgid "You can not publish a historical version of this template."
+msgstr "templates"
+
+#, fuzzy
+msgid "You cannot delete historical versions of this template."
+msgstr "templates"
+
+msgid "You have altered answers but have not saved them:"
+msgstr "Vous avez changé des réponses sans les sauvegarder:"
+
+msgid "You have been given "
+msgstr ""
+
+#, fuzzy
+msgid "You have been granted permission by your organisation to use our API. Your API token and instructions for using the API endpoints can be found "
+msgstr "Organisation"
+
+msgid "You have un-published changes"
+msgstr ""
+
+msgid "You have unsaved answers in the following sections:"
+msgstr ""
+
+msgid "You must accept the terms and conditions to register."
+msgstr ""
+
+msgid "You must enter a valid email address."
+msgstr "Vous devez entrer un courriel valide."
+
+msgid "You need to sign in or sign up before continuing."
+msgstr ""
+
+msgid "You now have "
+msgstr ""
+
+msgid "Your"
+msgstr ""
+
+msgid "Your ORCID"
+msgstr "Votre ORCID"
+
+msgid "Your access to "
+msgstr ""
+
+msgid "Your account has been successfully linked to %{scheme}."
+msgstr ""
+
+msgid "Your account won't be created until you access the link above and set your password."
+msgstr ""
+
+msgid "Your browser does not support the video tag."
+msgstr "La balise