diff --git a/.gitignore b/.gitignore index e7eba2b..f5f202d 100644 --- a/.gitignore +++ b/.gitignore @@ -20,9 +20,9 @@ public/videos/* # Ignore branded content -app/views/branded/* +#app/views/branded/* app/assets -config/locales/static_pages/*.yml +#config/locales/static_pages/*.yml # Ignore gemfile.lock #Gemfile.lock diff --git a/Gemfile b/Gemfile index 0f656ba..9a2e7b1 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,7 @@ # ------------------------------------------------ # DATABASE/SERVER gem 'mysql2', '~> 0.4.10' -gem 'pg', '~> 0.19.0' +#gem 'pg', '~> 0.19.0' gem 'flag_shih_tzu' # Allows for bitfields in activereccord # ------------------------------------------------ diff --git a/app/controllers/org_admin/plans_controller.rb b/app/controllers/org_admin/plans_controller.rb index b8bd89d..c0b5d57 100644 --- a/app/controllers/org_admin/plans_controller.rb +++ b/app/controllers/org_admin/plans_controller.rb @@ -7,7 +7,7 @@ vals = Role.access_values_for(:reviewer) @feedback_plans = Plan.joins(:roles).where('roles.user_id = ? and roles.access IN (?)', current_user.id, vals) - @plans = current_user.org.plans + @plans = current_user.org.plans.where.not(:visibility => Plan.visibilities[:privately_private_visible]) end # GET org_admin/plans/:id/feedback_complete diff --git a/app/controllers/paginable/plans_controller.rb b/app/controllers/paginable/plans_controller.rb index d691dda..31f920c 100644 --- a/app/controllers/paginable/plans_controller.rb +++ b/app/controllers/paginable/plans_controller.rb @@ -5,6 +5,11 @@ raise Pundit::NotAuthorizedError unless Paginable::PlanPolicy.new(current_user).privately_visible? paginable_renderise(partial: 'privately_visible', scope: Plan.active(current_user)) end + # /paginable/plans/privately_private_visible/:page + def privately_private_visible + raise Pundit::NotAuthorizedError unless Paginable::PlanPolicy.new(current_user).privately_private_visible? + paginable_renderise(partial: 'privately_private_visible', scope: Plan.active(current_user)) + end # GET /paginable/plans/organisationally_or_publicly_visible/:page def organisationally_or_publicly_visible raise Pundit::NotAuthorizedError unless Paginable::PlanPolicy.new(current_user).organisationally_or_publicly_visible? @@ -20,6 +25,6 @@ def org_admin raise Pundit::NotAuthorizedError unless current_user.present? && current_user.can_org_admin? paginable_renderise(partial: 'org_admin', - scope: current_user.org.plans) + scope: current_user.org.plans.where.not(:visibility => 4)) end end \ No newline at end of file diff --git a/app/controllers/paginable/templates_controller.rb b/app/controllers/paginable/templates_controller.rb index 19d9409..47d5f80 100644 --- a/app/controllers/paginable/templates_controller.rb +++ b/app/controllers/paginable/templates_controller.rb @@ -55,7 +55,7 @@ # GET /paginable/templates/publicly_visible/:page (AJAX) # ----------------------------------------------------- def publicly_visible - templates = Template.live(Template.families(Org.funder.pluck(:id)).pluck(:family_id)).publicly_visible.pluck(:id) << + templates = Template.live(Template.families(Org.all.pluck(:id)).pluck(:family_id)).pluck(:id) << Template.where(is_default: true).unarchived.published.pluck(:id) paginable_renderise( partial: 'publicly_visible', diff --git a/app/controllers/plans_controller.rb b/app/controllers/plans_controller.rb index 9ab3e10..83c119f 100644 --- a/app/controllers/plans_controller.rb +++ b/app/controllers/plans_controller.rb @@ -291,7 +291,8 @@ center: _('Created using the %{application_name}. Last modified %{date}') % {application_name: Rails.configuration.branding[:application][:name], date: l(@plan.updated_at.to_date, formats: :short)}, font_size: 8, spacing: (Integer(@formatting[:margin][:bottom]) / 2) - 4, - right: '[page] of [topage]' + right: '[page] of [topage]', + encoding: 'utf8' } end end diff --git a/app/controllers/public_pages_controller.rb b/app/controllers/public_pages_controller.rb index 1258c2d..393c3c2 100644 --- a/app/controllers/public_pages_controller.rb +++ b/app/controllers/public_pages_controller.rb @@ -4,9 +4,9 @@ # GET template_index # ----------------------------------------------------- def template_index - templates = Template.live(Template.families(Org.funder.pluck(:id)).pluck(:family_id)).publicly_visible.pluck(:id) << + templates = Template.live(Template.families(Org.all.pluck(:id)).pluck(:family_id)).pluck(:id) << Template.where(is_default: true).unarchived.published.pluck(:id) - @templates = Template.includes(:org).where(id: templates.uniq.flatten).unarchived.published.order(title: :asc).page(1) + @templates = Template.includes(:org).where(id: templates.uniq.flatten).unarchived.published.order("orgs.name asc").page(1) end # GET template_export/:id diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb index 3b65891..eb7baf2 100644 --- a/app/controllers/roles_controller.rb +++ b/app/controllers/roles_controller.rb @@ -21,7 +21,7 @@ else if user.nil? registered = false - User.invite!(email: params[:user]) + User.invite!({ email: params[:user] }, current_user) message = _('Invitation to %{email} issued successfully. \n') % {email: params[:user]} user = User.find_by(email: params[:user]) end @@ -30,7 +30,7 @@ if @role.save if registered deliver_if(recipients: user, key: 'users.added_as_coowner') do |r| - UserMailer.sharing_notification(@role, r).deliver_now + UserMailer.sharing_notification(@role, r, current_user).deliver_now end end flash[:notice] = message diff --git a/app/controllers/static_pages_controller.rb b/app/controllers/static_pages_controller.rb index 82238e7..46509f0 100644 --- a/app/controllers/static_pages_controller.rb +++ b/app/controllers/static_pages_controller.rb @@ -1,12 +1,12 @@ class StaticPagesController < ApplicationController def about_us - dcc_news_feed_url = "http://www.dcc.ac.uk/news/dmponline-0/feed" - @dcc_news_feed = Feedjira::Feed.fetch_and_parse dcc_news_feed_url + dcc_news_feed_url = "https://opidor.fr/category/dmp-news/feed/" + @dcc_news_feed = Feedjira::Feed.fetch_and_parse(dcc_news_feed_url) respond_to do |format| format.rss { redirect_to dcc_news_feed_url } format.html - end +end end def contact_us @@ -20,3 +20,7 @@ end end + def tutorials + + end +end diff --git a/app/helpers/plans_helper.rb b/app/helpers/plans_helper.rb index 1b9cb6d..f7e2725 100644 --- a/app/helpers/plans_helper.rb +++ b/app/helpers/plans_helper.rb @@ -43,6 +43,8 @@ when 'publicly_visible' return "#{_('Public')}" when 'privately_visible' + return "#{d_('dmpopidor', 'Administrator')}" + when 'privately_private_visible' return "#{_('Private')}" else return "#{_('Private')}" # Test Plans diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 6fa76b0..6a16a99 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -11,12 +11,16 @@ end end - def sharing_notification(role, user) + def sharing_notification(role, user, current_user) @role = role @user = user + @current_user = current_user FastGettext.with_locale FastGettext.default_locale do mail(to: @role.user.email, - subject: _('A Data Management Plan in %{tool_name} has been shared with you') %{ :tool_name => Rails.configuration.branding[:application][:name] }) + subject: d_('dmpopidor', '%{user_name} has shared a Data Management Plan with you in %{tool_name}') %{ + :user_name => current_user.name(false), + :tool_name => Rails.configuration.branding[:application][:name] + }) end end @@ -107,7 +111,7 @@ def new_comment(commenter, plan) if commenter.is_a?(User) && plan.is_a?(Plan) owner = plan.owner - if owner.present? && owner.active? + if owner.present? && owner.active? && owner.email != commenter.email @commenter = commenter @plan = plan FastGettext.with_locale FastGettext.default_locale do @@ -127,4 +131,22 @@ end end end + + def anonymization_warning(user) + @user = user + @end_date = (@user.last_sign_in_at + 5.years).to_date + FastGettext.with_locale FastGettext.default_locale do + mail(to: @user.email, subject: + d_('dmpopidor', 'Account expiration in %{tool_name}') %{ :tool_name => Rails.configuration.branding[:application][:name] }) + end + end + + def anonymization_notice(user) + @user = user + FastGettext.with_locale FastGettext.default_locale do + mail(to: @user.email, subject: + d_('dmpopidor', 'Account expired in %{tool_name}') %{ :tool_name => Rails.configuration.branding[:application][:name] }) + end + end + end diff --git a/app/models/exported_plan.rb b/app/models/exported_plan.rb index bb79837..fc29f16 100644 --- a/app/models/exported_plan.rb +++ b/app/models/exported_plan.rb @@ -9,7 +9,7 @@ belongs_to :plan belongs_to :user - VALID_FORMATS = ['csv', 'html', 'pdf', 'text', 'docx'] + VALID_FORMATS = ['html', 'pdf', 'docx'] validates :format, inclusion: { in: VALID_FORMATS, diff --git a/app/models/plan.rb b/app/models/plan.rb index ce600bb..41a2adb 100644 --- a/app/models/plan.rb +++ b/app/models/plan.rb @@ -37,7 +37,7 @@ accepts_nested_attributes_for :roles # public is a Ruby keyword so using publicly - enum visibility: [:organisationally_visible, :publicly_visible, :is_test, :privately_visible] + enum visibility: [:organisationally_visible, :publicly_visible, :is_test, :privately_visible, :privately_private_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 @@ -743,7 +743,8 @@ :organisationally_visible => _('organisational'), :publicly_visible => _('public'), :is_test => _('test'), - :privately_visible => _('private') + :privately_visible => _('Administrator'), + :privately_private_visible => _('private') } message[type] end diff --git a/app/models/user.rb b/app/models/user.rb index 619c714..338b19d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -282,7 +282,10 @@ # 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]})) + super(options.merge(subject: d_('dmpopidor', '%{user_name} has shared a Data Management Plan with you in %{tool_name}') % { + user_name: self.invited_by.name(false), + tool_name: Rails.configuration.branding[:application][:name] + })) end ## # Case insensitive search over User model diff --git a/app/views/branded/answers/_new_edit.html.erb b/app/views/branded/answers/_new_edit.html.erb new file mode 100644 index 0000000..80b40cf --- /dev/null +++ b/app/views/branded/answers/_new_edit.html.erb @@ -0,0 +1,83 @@ +<%# locals: { template, question, answer, readonly, locking } %> + + +<% q_format = question.question_format %> +<% if q_format.rda_metadata? %> +

+ <%= raw question.text %> +

+ <% answer_hash = answer.answer_hash %> +
+
<%=_("Your Selected Standards:")%>
+ +
<%=_("Please select a subject")%>
+ +
+
<%=_("Please select a sub-subject")%>
+ +
+
+
+ + <%=_("Browse Standards") %> + + +
+

+ <%=_("Please wait, Standards are loading")%> +

+
+
+ Standard not listed? Add your own. + +
+
+
+<% end %> + +<%= form_for answer, url: create_or_update_answers_path(question_id: question.id), html: {method: :post, 'data-autosave': question.id, class: 'form-answer' } do |f| %> + <% if !readonly %> + <%= f.hidden_field :plan_id %> + <%= f.hidden_field :question_id %> + <%= f.hidden_field :lock_version %> + <% if q_format.rda_metadata? %> + <%= hidden_field_tag :standards, answer_hash['standards'].to_json %> + <% end %> + <% end %> +
> + <% if question.option_based? || question.question_format.rda_metadata? %> + <%= render(partial: 'questions/new_edit_question_option_based', locals: { f: f, question: question, answer: answer }) %> + <% elsif question.question_format.textfield?%> + <%= render(partial: 'questions/new_edit_question_textfield', locals: { f: f, question: question, answer: answer }) %> + <% elsif question.question_format.date? %> + <%= render(partial: 'questions/new_edit_question_datefield', locals: { f: f, question: question, answer: answer }) %> + <% elsif question.question_format.textarea? %> + <%= render(partial: 'questions/new_edit_question_textarea', locals: { f: f, question: question, answer: answer, locking: locking }) %> + <% end %> + <%= f.button(_('Save'), class: "btn btn-default", type: "submit") %> +
+ + <% if template.present? && template.org.present? %> + <% question.get_example_answers([base_template_org.id, template.org.id]).each do |annotation| %> + <% if annotation.present? && annotation.org.present? && annotation.text.present? %> +
+ + <%="#{annotation.org.abbreviation} "%> <%=_('example answer')%> + +
+ <%= raw annotation.text %> +
+
+ <% end %> + <% end %> + <% end %> +<% end %> diff --git a/app/views/branded/contact_us/contacts/new.html.erb b/app/views/branded/contact_us/contacts/new.html.erb new file mode 100644 index 0000000..a3b35f5 --- /dev/null +++ b/app/views/branded/contact_us/contacts/new.html.erb @@ -0,0 +1,20 @@ +
+
+

<%= _("Contact Us") %>

+

+ <%= 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]} %> +

+
+
+
+
+ <%= render :partial => "contact_us/contacts/new_left" %> +
+
+
+ <%= render :partial => "contact_us/contacts/new_right" %> +
+
+
\ No newline at end of file diff --git a/app/views/branded/guidance_groups/admin_edit.html.erb b/app/views/branded/guidance_groups/admin_edit.html.erb new file mode 100644 index 0000000..26d90c9 --- /dev/null +++ b/app/views/branded/guidance_groups/admin_edit.html.erb @@ -0,0 +1,37 @@ +
+
+

<%= _('Guidance group') %>

+ <%= link_to _('View all guidance'), admin_index_guidance_path(current_user.org_id), class: 'btn btn-default pull-right' %> +
+
+ +
+
+ <%= form_for(@guidance_group, url: admin_update_guidance_group_path(@guidance_group), html: {method: :put, id: "admin_update_guidance_group_form" }) do |f| %> + +
+ <%= f.label _('Name'), for: :name, class: "control-label" %> + <%= f.text_field :name, as: :string, class: "form-control", 'data-toggle': 'tooltip', title: _('Add an appropriate name for your guidance group. This name will tell the end user where the guidance has come from. We suggest you use the organisation or department name e.g. "OU" or "Maths & Stats"') %> +
+ +
+ <%= f.check_box :published, 'data-toggle': 'tooltip', title: _("Check this box when you are ready for guidance associated with this group to appear on user's plans.") %> + <%= f.label _('Published'), for: :published, class: "control-label" %> +
+ +
+ <%= f.check_box :optional_subset, 'data-toggle': 'tooltip', title: _("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.") %> + <%= f.label _('Optional Subset'), for: :optional_subset, class: "control-label" %><%= _(' (e.g. School/ Department) ') %> +
+ +
+ <%= f.submit _('Save'), class: "btn btn-primary" %> + <% if @guidance_group.published == false then %> + <%= f.submit _('Publish'), name: "save_publish", class: "btn btn-primary" %> + <% end %> + <%= link_to _('Cancel'), admin_index_guidance_path, class: "btn btn-primary", role: 'button' %> +
+ <% end %> +
+
+ diff --git a/app/views/branded/guidance_groups/admin_new.html.erb b/app/views/branded/guidance_groups/admin_new.html.erb new file mode 100644 index 0000000..cd2610c --- /dev/null +++ b/app/views/branded/guidance_groups/admin_new.html.erb @@ -0,0 +1,33 @@ +
+
+

<%= _('Guidance group') %>

+ <%= link_to _('View all guidance'), admin_index_guidance_path(current_user.org_id), class: 'btn btn-default pull-right' %> +
+
+ +
+
+ <%= form_for :guidance_group, url: {action: "admin_create"}, id: 'admin_create_guidance_group_form' do |f| %> +
+ <%= f.label _('Name'), for: :name, class: "control-label" %> + <%= f.text_field :name, as: :string, class: "form-control", 'data-toggle': 'tooltip', title: _('Add an appropriate name for your guidance group. This name will tell the end user where the guidance has come from. We suggest you use the organisation or department name e.g. "OU" or "Maths & Stats"') %> +
+ +
+ <%= f.check_box :published, 'data-toggle': 'tooltip', title: _("Check this box when you are ready for guidance associated with this group to appear on user's plans.") %> + <%= f.label _('Published'), for: :published, class: "control-label" %> +
+ +
+ <%= f.check_box :optional_subset, 'data-toggle': 'tooltip', title: _("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.") %> + <%= f.label _('Optional Subset'), for: :optional_subset, class: "control-label" %><%= _(' (e.g. School/ Department) ') %> +
+ + +
+ <%= f.submit _('Save'), name: "draft", class: "btn btn-primary" %> + <%= link_to _('Cancel'), admin_index_guidance_path, class: "btn btn-primary", role: 'button' %> +
+ <% end %> +
+
\ No newline at end of file diff --git a/app/views/branded/guidances/admin_index.html.erb b/app/views/branded/guidances/admin_index.html.erb new file mode 100644 index 0000000..8bce990 --- /dev/null +++ b/app/views/branded/guidances/admin_index.html.erb @@ -0,0 +1,48 @@ +
+
+

<%= _('Guidance') %>

+ +

+ <%= _("First create a guidance group. This could be organisation 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.") %> +

+
+
+ +
+
+

<%= _('Guidance group list') %>

+ + + <%= paginable_renderise( + partial: '/paginable/guidance_groups/index', + controller: 'paginable/guidance_groups', + action: 'index', + scope: @guidance_groups, + query_params: { sort_field: 'guidance_groups.name', sort_direction: :asc }) %> +
+ <%= _('Create a guidance group') %> +
+ +

<%= _('Guidance list') %>

+ +

+ <%= _('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.') %> +

+ + + <%= paginable_renderise( + partial: '/paginable/guidances/index', + controller: 'paginable/guidances', + action: 'index', + scope: @guidances, + query_params: { sort_field: 'guidances.text', sort_direction: :asc }) %> + +
+ <%= _('Create guidance') %> +
+
+
+ diff --git a/app/views/branded/guidances/new_edit.html.erb b/app/views/branded/guidances/new_edit.html.erb new file mode 100644 index 0000000..62a21d2 --- /dev/null +++ b/app/views/branded/guidances/new_edit.html.erb @@ -0,0 +1,32 @@ +<%# locals: { guidance, themes, guidance_groups, options } %> +
+
+

<%= _('Guidance') %>

+ <%= link_to _('View all guidance'), admin_index_guidance_path(current_user.org_id), class: 'btn btn-default pull-right' %> +
+
+
+
+ <%= form_for(guidance, url: options[:url], html: { method: options[:method] , id: 'new_edit_guidance'}) do |f| %> +
+ <%= f.label :text, class: 'control-label' %> + <%= text_area_tag("guidance-text", guidance.text, class: "tinymce form-control", 'aria-required': true, rows: 10) %> +
+ <%= render partial: 'org_admin/shared/theme_selector', + locals: { f: f, all_themes: themes, + popover_message: _('Select one or more themes that are relevant to this guidance. This will display your generic organisation-level guidance, as well as that from other sources e.g. the %{org_name} guidance or any Schools/Departments that you provide guidance for.') % { org_name: (current_user.org.abbreviation.present? ? current_user.org.abbreviation : current_user.org.name ) } } %> +
+ <%= f.label _('Guidance group'), for: :guidance_group_id, class: 'control-label' %> + <%= f.collection_select(:guidance_group_id, guidance_groups, + :id, :name, {prompt: false}, {multiple: false, 'data-toggle': 'tooltip', title: _('Select which group this guidance relates to.'), class: 'form-control', 'aria-required': true})%> +
+
+ <%= f.label :published, raw("#{f.check_box :published, as: :check_boxes, 'data-toggle': 'tooltip', title: _("Check this box when you are ready for this guidance to appear on user's plans.")} #{_('Published?')}") %> +
+
+ <%= f.submit _('Save'), name: "edit_guidance_submit", class: "btn btn-primary" %> + <%= link_to _('Cancel'), admin_index_guidance_path, class: "btn btn-primary", role: 'button' %> +
+ <%end%> +
+
\ No newline at end of file diff --git a/app/views/branded/home/_welcome.html.erb b/app/views/branded/home/_welcome.html.erb new file mode 100644 index 0000000..cdb6e83 --- /dev/null +++ b/app/views/branded/home/_welcome.html.erb @@ -0,0 +1,6 @@ +
+

<%= _('Welcome.')%>

+

+ <%= raw _('

%{application_name} has been developed by the %{organisation_name} to help you write data management plans.

') % {:application_name => Rails.configuration.branding[:application][:name], :organisation_name => Rails.configuration.branding[:organisation][:name]} %> +

+
diff --git a/app/views/branded/layouts/_branding.html.erb b/app/views/branded/layouts/_branding.html.erb new file mode 100644 index 0000000..ea9994e --- /dev/null +++ b/app/views/branded/layouts/_branding.html.erb @@ -0,0 +1,116 @@ + diff --git a/app/views/branded/layouts/_footer.html.erb b/app/views/branded/layouts/_footer.html.erb new file mode 100644 index 0000000..a2dfbc4 --- /dev/null +++ b/app/views/branded/layouts/_footer.html.erb @@ -0,0 +1,35 @@ +<% + # Override the default Rails route helper for the contact_us page IF an alternate contact_us url was defined + # in the branding config file + contact_us = Rails.application.config.branding[:organisation][:contact_us_url] || contact_us_path +%> + + + diff --git a/app/views/branded/layouts/_navigation.html.erb b/app/views/branded/layouts/_navigation.html.erb new file mode 100644 index 0000000..107ff88 --- /dev/null +++ b/app/views/branded/layouts/_navigation.html.erb @@ -0,0 +1,65 @@ + + + diff --git a/app/views/branded/layouts/_piwik.html.erb b/app/views/branded/layouts/_piwik.html.erb new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/app/views/branded/layouts/_piwik.html.erb diff --git a/app/views/branded/layouts/_signin_signout.html.erb b/app/views/branded/layouts/_signin_signout.html.erb new file mode 100644 index 0000000..08731fa --- /dev/null +++ b/app/views/branded/layouts/_signin_signout.html.erb @@ -0,0 +1,45 @@ + +<% if MANY_LANGUAGES %> + +<% end %> + + +<% if user_signed_in? %> + +<% else %> + <% if !isActivePage(root_path, true) %> +
  • + + + <%= _('Sign in') %> + +
  • + <% end %> +<% end %> diff --git a/app/views/branded/layouts/application.html.erb b/app/views/branded/layouts/application.html.erb new file mode 100644 index 0000000..ed08fa9 --- /dev/null +++ b/app/views/branded/layouts/application.html.erb @@ -0,0 +1,115 @@ + + + + + <%= _('%{application_name}') % { :application_name => Rails.configuration.branding[:application][:name] } %> + + <%= favicon_link_tag "favicon.ico" %> + + + + + + + <%= stylesheet_link_tag fingerprinted_asset('application') %> + <%= javascript_include_tag fingerprinted_asset('vendor') %> + <%= javascript_include_tag fingerprinted_asset('application') %> + <%= csrf_meta_tags %> + + + + + + + +
    + <%= render partial: "layouts/header" %> +
    + + <% + has_alert = (alert || flash[:alert] || flash[:error]) + has_notice = (notice || flash[:notice]) + %> + + +
    +
    + + <%= has_alert ? _('Error:') : _('Notice:') %> + <%= raw (has_alert ? alert : notice) %> +
    + <%= render "layouts/notifications", notifications: Notification.active_per_user(current_user) %> + <%= yield %> +
    + + + + + <% + constants_json = { + PASSWORD_MIN_LENGTH: 8, + PASSWORD_MAX_LENGTH: 128, + MAX_NUMBER_ORG_URLS: 3, + MAX_NUMBER_GUIDANCE_SELECTIONS: 6, + + VALIDATION_MESSAGE_DEFAULT: _('Please enter a valid value.'), + VALIDATION_MESSAGE_EMAIL: _('You must enter a valid email address.'), + VALIDATION_MESSAGE_URL: _('You must enter a valid URL (e.g. https://organisation.org).'), + VALIDATION_MESSAGE_NUMBER: _('Please enter a valid number.'), + VALIDATION_MESSAGE_PASSWORD: _('The password must be between 8 and 128 characters.'), + VALIDATION_MESSAGE_PASSWORDS_MATCH: _('The passwords must match.'), + VALIDATION_MESSAGE_RADIO: _('Please choose one of the options.'), + VALIDATION_MESSAGE_CHECKBOX: _('Please check the box to continue.'), + VALIDATION_MESSAGE_SELECT: _('Please select a value from the list.'), + VALIDATION_MESSAGE_TEXT: _('This field is required.'), + + SHOW_PASSWORD_MESSAGE: _('Show password'), + SHOW_SELECT_ORG_MESSAGE: _('Select an organisation from the list.'), + SHOW_OTHER_ORG_MESSAGE: _('My organisation isn\'t listed'), + + PLAN_VISIBILITY_WHEN_TEST: _('N/A'), + PLAN_VISIBILITY_WHEN_NOT_TEST: _('Private'), + PLAN_VISIBILITY_WHEN_NOT_TEST_TOOLTIP: _('Private: restricted to me and people I invite.'), + + SHIBBOLETH_DISCOVERY_SERVICE_HIDE_LIST: _('Hide list.'), + SHIBBOLETH_DISCOVERY_SERVICE_SHOW_LIST: _('See the full list of partner institutions.'), + + NO_TEMPLATE_FOUND_ERROR: _('Unable to find a suitable template for the research organisation and funder you selected.'), + NEW_PLAN_DISABLED_TOOLTIP: _('Please select a research organisation and funder to continue.'), + + AJAX_LOADING: _('Loading ...'), + AJAX_UNABLE_TO_LOAD_TEMPLATE_SECTION: _('Unable to load the section\'s content at this time.'), + AJAX_UNABLE_TO_LOAD_TEMPLATE_SECTION_QUESTION: _('Unable to load the question\'s content at this time.') + }.to_json + %> + + + + diff --git a/app/views/branded/org_admin/phases/container.html.erb b/app/views/branded/org_admin/phases/container.html.erb new file mode 100644 index 0000000..298e790 --- /dev/null +++ b/app/views/branded/org_admin/phases/container.html.erb @@ -0,0 +1,50 @@ +<% modifiable = template.latest? && !template.customization_of.present? && template.id.present? && (template.org_id = current_user.org.id) %> +
    +
    +

    <%= template.title %>

    + <% referrer = template.customization_of.present? ? customisable_org_admin_templates_path : organisational_org_admin_templates_path %> + <%= link_to _('View all templates'), referrer, class: 'btn btn-default pull-right' %> +
    +
    +
    +
    + + <%= render partial: "/org_admin/templates/navigation", locals: local_assigns.merge({ modifiable: modifiable }) %> +
    +
    +
    +
    + <% # locals: { phase, template, edit, current_section } %> +
    +

    <%= _('Phase details')%>

    +
    +
    + <%= link_to(_('Preview'), preview_org_admin_template_phase_path(template, phase), { class: 'btn btn-default phase_preview_link', role: 'button' }) %> +
    +
    +
    +
    + <%= render partial: partial_path, locals: local_assigns.merge({ modifiable: modifiable }) %> +
    +
    +
    +
    +

    <%= _('Sections') %>

    + <% if phase.sections.length > 1 %> + + <% end %> +
    +
    + <%= render partial: 'org_admin/sections/index', locals: local_assigns.merge({ modifiable: modifiable }) %> +
    +
    +
    +
    +
    +
    diff --git a/app/views/branded/org_admin/plans/index.html.erb b/app/views/branded/org_admin/plans/index.html.erb new file mode 100644 index 0000000..45f6ff6 --- /dev/null +++ b/app/views/branded/org_admin/plans/index.html.erb @@ -0,0 +1,46 @@ +
    +
    +

    <%= _('%{org_name} Plans') % { org_name: current_user.org.name } %>

    +
    +
    + +
    +
    + <% if @feedback_plans.length > 0 %> +

    <%= _('Notifications') %>

    +
    +
    + + + + + + + + + <% @feedback_plans.each do |notice| %> + + + + + + + + + <% end %> + +
    <%= _('Plan') %><%= _('Requestor') %><%= _('Type') %><%= _('Actions') %>
    <%= link_to notice.name, plan_path(notice) %><%= notice.owner.name(false) %><%= _('Feedback requested') %><%= link_to _('Complete'), feedback_complete_org_admin_plan_path(notice), 'data-toggle': 'tooltip', title: _('Notify the plan owner that I have finished providing feedback') %>
    +
    +
    + <% end %> + <% if @plans.length > 0 %> + <%= link_to _('Download plans'), org_admin_download_plans_path(format: :csv), target: '_blank', class: 'btn btn-default pull-right' %> + <%= paginable_renderise( + partial: '/paginable/plans/org_admin', + controller: 'paginable/plans', + action: 'org_admin', + scope: @plans, + query_params: { sort_field: 'plans.updated_at', sort_direction: 'desc' }) %> + <% end %> +
    +
    diff --git a/app/views/branded/org_admin/templates/_edit.html.erb b/app/views/branded/org_admin/templates/_edit.html.erb new file mode 100644 index 0000000..0bb0d04 --- /dev/null +++ b/app/views/branded/org_admin/templates/_edit.html.erb @@ -0,0 +1,12 @@ +
    +
    +
    + <%= form_for(template, url: org_admin_template_path(template.id), html: { 'data-method': :put, remote: true }) do |f| %> + <%= render partial: 'form', locals: { template: template, referrer: referrer, f: f }%> + <% end %> +
    +
    +
    + +<%# passing phases separately here because we're only pulling down the necessary attributes %> +<%= render partial: 'org_admin/phases/overview', locals: { template: template, phases: phases, modifiable: modifiable } %> diff --git a/app/views/branded/org_admin/templates/_new.html.erb b/app/views/branded/org_admin/templates/_new.html.erb new file mode 100644 index 0000000..2e594ab --- /dev/null +++ b/app/views/branded/org_admin/templates/_new.html.erb @@ -0,0 +1,9 @@ +
    +
    +
    + <%= form_for(template, url: org_admin_templates_path) do |f| %> + <%= render partial: 'form', locals: { template: template, referrer: referrer, f: f }%> + <% end %> +
    +
    +
    diff --git a/app/views/branded/org_admin/templates/container.html.erb b/app/views/branded/org_admin/templates/container.html.erb new file mode 100644 index 0000000..28c29e7 --- /dev/null +++ b/app/views/branded/org_admin/templates/container.html.erb @@ -0,0 +1,22 @@ +<% modifiable = template.latest? && !template.customization_of.present? && template.id.present? && (template.org_id = current_user.org.id) %> +
    +
    +

    <%= template.id.present? ? template.title : _('New Template') %>

    + <%= link_to _('View all templates'), referrer, class: 'btn btn-default pull-right' %> +
    +
    +
    +
    + + <%= render partial: "org_admin/templates/navigation", locals: local_assigns.merge({ modifiable: modifiable }) %> +
    +
    +
    +
    + <%= render partial: partial_path, locals: local_assigns.merge({ referrer: referrer, modifiable: modifiable }) %> +
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/app/views/branded/org_admin/templates/index.html.erb b/app/views/branded/org_admin/templates/index.html.erb new file mode 100644 index 0000000..d9d44ef --- /dev/null +++ b/app/views/branded/org_admin/templates/index.html.erb @@ -0,0 +1,82 @@ +
    +
    +

    <%= _('Templates') %>

    +
    + <% if current_user.can_super_admin? %> +
    +

    <%= _('If you would like to modify one of the templates below, you must first change your organisation affiliation.') %>

    +
    +
    + <%= form_for current_user, url: org_swap_user_path(current_user), namespace: 'superadmin', html: {method: :put, id: 'super-admin-switch-org'} do |f| %> + <%= render partial: "shared/my_org", locals: {f: f, default_org: current_user.org, orgs: orgs, allow_other_orgs: false} %> + <%= f.submit _('Change affiliation'), class: 'btn btn-default' %> + <% end %> +
    + <% end %> +
    +

    + <%= _('If you wish to add an organisational 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 organisation when no funder templates apply. If you want to add questions to funder templates use the \'customise template\' options below.') %> +

    +
    +
    +
    +
    + + +
    +
    +
    +
    +

    <%= title %>

    +
    + <% filter_path = "/paginable/templates/#{action}/#{1}" %> + <% qry = query_params.collect{ |k,v| "#{k}=#{v}" }.join('&') %> + +
    + <%= paginable_renderise( + partial: "paginable/templates/#{action}", + controller: 'paginable/templates', + action: action, + scope: templates, + query_params: { sort_field: 'templates.title', sort_direction: :asc }, + locals: local_assigns) %> +
    +
    +
    +
    + + + <%= _('Create a template') %> + +
    +
    \ No newline at end of file diff --git a/app/views/branded/orgs/admin_edit.html.erb b/app/views/branded/orgs/admin_edit.html.erb new file mode 100644 index 0000000..886e827 --- /dev/null +++ b/app/views/branded/orgs/admin_edit.html.erb @@ -0,0 +1,36 @@ +
    +
    +

    <%= org.id.present? ? _('Organisation details') : _('New organisation') %>

    + <% if current_user.can_super_admin? %> + <%= link_to _('View all organisations'), super_admin_orgs_path, class: 'btn btn-default pull-right' %> + <% end %> +
    +
    + +
    +
    + + +
    +
    + <%= render partial: 'orgs/profile_form', locals: local_assigns %> +
    + + <% if org.id.present? %> +
    + <%= render partial: 'orgs/feedback_form', locals: local_assigns %> +
    + <% end %> +
    +
    +
    + diff --git a/app/views/branded/plans/_edit_details.html.erb b/app/views/branded/plans/_edit_details.html.erb new file mode 100644 index 0000000..5673d7b --- /dev/null +++ b/app/views/branded/plans/_edit_details.html.erb @@ -0,0 +1,191 @@ +
    +
    + <%= form_for plan, html: {method: :put, class: 'form-horizontal edit_plan' } do |f| %> +
    +
    + <%= f.label(:title, _('Project title'), class: 'control-label') %> +
    +
    + <%= f.text_field(:title, class: "form-control", "aria-required": true, 'data-toggle': 'tooltip', + title: _('If applying for funding, state the name exactly as in the grant proposal.')) %> +
    + <%= f.hidden_field :visibility %> + <%= f.label(:is_test, raw("#{check_box_tag(:is_test,1, @plan.is_test?)} #{_('mock project for testing, practice, or educational purposes')}"), class: 'control-label') %> +
    +
    +
    +
    +
    + <%= f.label(:funder_name, _('Funder'), class: 'control-label') %> +
    +
    + <%= f.text_field( + :funder_name, + class: "form-control", + "aria-required": false) %> +
    +
    +
    +
    + <%= f.label(:grant_number, _('Grant number'), class: 'control-label') %> +
    +
    + <%= f.text_field(:grant_number, class: "form-control", "aria-required": false, 'data-toggle': 'tooltip', + title: _('Grant reference number if applicable [POST-AWARD DMPs ONLY]')) %> +
    +
    +
    +
    + <%= f.label(:description, _('Project abstract'), class: 'control-label') %> +
    +
    "> + <%= f.text_area( + :description, rows: 6, + class: 'form-control tinymce', + "aria-required": false) %> +
    +
    +
    +
    + <%= f.label(:identifier, _('ID'), class: 'control-label') %> +
    +
    + <%= f.text_field(:identifier, class: "form-control", "aria-required": false, 'data-toggle': "tooltip", + title: _('A pertinent ID as determined by the funder and/or organisation.')) %> +
    +
    + +

    <%= _('Principal investigator') %>

    +
    +
    + <%= f.label(:principal_investigator, _('Name'), class: 'control-label') %> +
    +
    + <%= f.text_field( + :principal_investigator, + class: "form-control", + "aria-required": false) %> +
    +
    +
    +
    + <%= f.label(:principal_investigator_identifier, _('ORCID iD'), class: 'control-label') %> +
    +
    + <%= f.text_field( + :principal_investigator_identifier, + class: "form-control", + "aria-required": false) %> +
    +
    +
    +
    + <%= f.label(:principal_investigator_email, _('Email'), class: 'control-label') %> +
    +
    + <%= f.email_field( + :principal_investigator_email, + class: "form-control", + "aria-required": false, + "data-validation": "email") %> +
    +
    +
    +
    + <%= f.label(:principal_investigator_phone, _('Phone'), class: 'control-label') %> +
    +
    + <%= f.phone_field( + :principal_investigator_phone, + class: "form-control", + "aria-required": false) %> +
    +
    + +

    <%= _('Data contact person') %>

    +
    + <% checked = ((@plan.data_contact.present? || @plan.data_contact_phone.present? || @plan.data_contact_email.present?) ? 1 : 0) %> + <%= label_tag(:show_data_contact, raw("#{check_box_tag(:show_data_contact, checked, checked == 0)} #{_('Same as Principal Investigator')}"), class: 'control-label') %> +
    +
    +
    + <%= f.label(:data_contact, _('Name'), class: 'control-label') %> +
    +
    + <%= f.text_field( + :data_contact, + class: "form-control", + "aria-required": false) %> +
    +
    +
    +
    + <%= f.label(:data_contact_email, _('Email'), class: 'control-label') %> +
    +
    + <%= f.email_field( + :data_contact_email, + class: "form-control", + "aria-required": false, + "data-validation": "email") %> +
    +
    +
    +
    + <%= f.label(:data_contact_phone, _('Phone'), class: 'control-label') %> +
    +
    + <%= f.phone_field( + :data_contact_phone, + class: "form-control", + "aria-required": false) %> +
    +
    + <%= f.button(_('Submit'), class: "btn btn-default", type: "submit") %> +
    +
    +

    <%= _('Plan Guidance Configuration') %>

    +

    <%= _('To help you write your plan, %{application_name} can show you guidance from a variety of organisations.') % + {application_name: Rails.configuration.branding[:application][:name]} %> +

    +

    <%= _('Select up to 6 organisations to see their guidance.') %>

    + + +

    <%= _('Find guidance from additional organisations below') %>

    + <%= link_to 'See the full list', '#', 'data-toggle' => 'modal', 'data-target' => '#modal-full-guidances', class: 'modal-guidances-window' %> + +
    + <%= f.button(_('Submit'), class: "btn btn-default", type: "submit") %> +
    + + + + <% end %> +
    diff --git a/app/views/branded/questions/_new_edit_question_datefield.html.erb b/app/views/branded/questions/_new_edit_question_datefield.html.erb new file mode 100644 index 0000000..631f38e --- /dev/null +++ b/app/views/branded/questions/_new_edit_question_datefield.html.erb @@ -0,0 +1,5 @@ +<%# locals: { f, question, answer } %> +
    + <%= f.label(:text, raw(question.text), class: 'control-label') %> + <%= date_field_tag('answer[text]', strip_tags(answer.text || question.default_value), class: 'form-control') %> +
    \ No newline at end of file diff --git a/app/views/branded/questions/_new_edit_question_option_based.html.erb b/app/views/branded/questions/_new_edit_question_option_based.html.erb new file mode 100644 index 0000000..2684da7 --- /dev/null +++ b/app/views/branded/questions/_new_edit_question_option_based.html.erb @@ -0,0 +1,45 @@ +<%# locals: { f, question, answer } %> +<% options = question.question_options.by_number %> +<% if question.question_format.checkbox? %> + <%= f.label(:question_option_ids, raw(question.text), class: 'control-label') %> + <% options.each do |op| %> +
    + +
    + <% end %> +<% elsif question.question_format.radiobuttons? %> + <%= f.label(:question_option_ids, raw(question.text), class: 'control-label') %> + <% options.each do |op| %> +
    + +
    + <% end %> +<% elsif question.question_format.dropdown? || question.question_format.multiselectbox? %> + <% + options_html = "" + options.each do |op| + options_html += answer.has_question_option(op.id) || (answer.question_options.empty? && op.is_default?) ? + "" : + "" + end + %> + <%= f.label(:question_option_ids, raw(question.text), class: 'control-label') %> + <%= select_tag('answer[question_option_ids]', + raw(options_html), + { multiple: question.question_format.multiselectbox?, + prompt: d_('dmpopidor', 'Select an answer'), + class: 'form-control' }) %> +<% end %> +
    +<% if question.option_comment_display %> + <% text = question.question_format.rda_metadata? ? answer.answer_hash['text'] : answer.text %> + <%= label_tag('answer[text]', _('Additional Information'), class: 'control-label') %> + <%= text_area_tag('answer[text]', text, id: "answer-text-#{question.id}", class: "form-control tinymce_answer") %> +<% end %> +
    diff --git a/app/views/branded/shared/_accessible_combobox.html.erb b/app/views/branded/shared/_accessible_combobox.html.erb new file mode 100644 index 0000000..5625068 --- /dev/null +++ b/app/views/branded/shared/_accessible_combobox.html.erb @@ -0,0 +1,40 @@ +<% if !models.nil? %> + <% required = required ||= false %> + <% classes = classes ||= '' %> + <% title = tooltip ||= '' %> + <% error = error ||= _('Please select an item from the list.') %> + + <% json = {} %> + <% models.map{|m| json["#{m[attribute]}"] = m.id} %> + + + + <% models.each do |model| %> + + <% end %> + + + + + + + + + " name="<%= name.gsub("_#{attribute}]", "_id]") %>" + value="<%= default_selection.id unless default_selection.nil? %>" aria-required="<%= required %>" + data-validation="js-combobox" data-validation-error="<%= error %>" /> + +<% else %> + <%= _('No items available.') %> +<% end %> \ No newline at end of file diff --git a/app/views/branded/shared/_create_account_form.html.erb b/app/views/branded/shared/_create_account_form.html.erb new file mode 100644 index 0000000..83520db --- /dev/null +++ b/app/views/branded/shared/_create_account_form.html.erb @@ -0,0 +1,41 @@ +<%= form_for resource, as: 'user', url: registration_path("user"), html: {autocomplete: "off", id: "create_account_form"} do |f| %> + +
    + <%= f.label(:firstname, _('First Name'), class: "control-label") %> + <%= f.text_field(:firstname, class: "form-control", "aria-required": true) %> +
    +
    + <%= f.label(:surname, _('Last Name'), class: "control-label") %> + <%= f.text_field(:surname, class: "form-control", "aria-required": true) %> +
    +
    + <%= f.label(:email, _('Email'), class: "control-label") %> + <%= f.email_field(:email, class: "form-control", "aria-required": true) %> +
    +
    + <%= render partial: "shared/my_org", + locals: {f: f, default_org: @default_org, + orgs: Org.where("parent_id IS NULL").order("sort_name ASC, name ASC"), allow_other_orgs: true} %> +
    + +
    + <%= f.label(:password, _('Password'), class: "control-label") %> + <%= f.password_field(:password, class: "form-control", "aria-required": true) %> +
    +
    + +
    +
    + <%= f.label(:accept_terms, + raw("#{ f.check_box(:accept_terms, "aria-required": true, "data-validation-error": _('You must agree to the term and conditions.')) } #{_('I accept the')} #{_('terms and conditions')}")) %> +
    + +
    +

    <%= raw d_('dmpopidor', "The information collected that concerns you will be processed and is destined for the Inist-CNRS (UPS76) and the correspondent for Computing and Liberties (CIL). For the following goal: management of user accounts. The recipients of this data are the administrators of the Inist-CNRS. The duration of conservation of the data is 5 years following the last login.") %>

    +

    <%= raw d_('dmpopidor', "You have the right of access, of correction, of portability, or of removal of this data, or of a limitation of their processing. You can oppose the processing of the data that concerns you and you have the right to withdraw your agreement at any time, by contacting: %{contact_url}. You can also direct a complaint at a controlling body.") % {contact_url: Rails.configuration.branding[:organisation][:email]} %>

    +
    + + <%= f.button(_('Create account'), class: "btn btn-default", type: "submit") %> +<% end %> diff --git a/app/views/branded/shared/_sign_in_form.html.erb b/app/views/branded/shared/_sign_in_form.html.erb new file mode 100644 index 0000000..6f7d248 --- /dev/null +++ b/app/views/branded/shared/_sign_in_form.html.erb @@ -0,0 +1,36 @@ +<%= form_for resource, as: 'user', url: user_session_path, html: {id: "sign_in_form"} do |f| %> + <% if Rails.application.config.shibboleth_enabled %> +

    <%= d_('dmpopidor', 'Institutional Access')%>

    + <% if session['devise.shibboleth_data'].nil? %> +
    + + <% target = (Rails.application.config.shibboleth_use_filtered_discovery_service ? shibboleth_ds_path : user_shibboleth_omniauth_authorize_path) %> + + +
    + <% else %> + <%= f.hidden_field :shibboleth_id, :value => session['devise.shibboleth_data']['uid'] %> + <% end %> +
    + <% end %> + +

    <%= d_('dmpopidor', 'Individual Access')%>

    +
    + <%= f.label(:email, _('Email'), class: 'control-label') %> + <%= f.email_field(:email, class: 'form-control', "aria-required": true, id: nil) %> +
    +
    + <%= f.label(:password, _('Password'), class: 'control-label') %> + <%= f.password_field(:password, class: 'form-control', "aria-required": true, id: nil) %> +
    +
    + <%= link_to _('Forgot password?'), new_password_path('user') %> +
    +
    + <%= label_tag 'remember_email', raw("#{check_box_tag 'remember_email'}#{_('Remember me')}") %> +
    + <%= f.button(_('Sign in'), class: "btn btn-default", type: "submit") %> + + + +<% end %> diff --git a/app/views/branded/static_pages/about_us.html.erb b/app/views/branded/static_pages/about_us.html.erb new file mode 100644 index 0000000..ab0674a --- /dev/null +++ b/app/views/branded/static_pages/about_us.html.erb @@ -0,0 +1,47 @@ + +

    +<%= t("about_page.title")%> +

    + + + +
    +
    +
    + + <%= raw t("about_page.body_text_html")%> +
    +
    + <% news_left = @dcc_news_feed.entries.count %> + <% @dcc_news_feed.entries.each do |entry| %> +

    <%= entry.title.sanitize %>

    + <% summary = entry.summary.sanitize %> + <% summary = summary.gsub(/\A])+>/, "") %> + <% summary = summary.gsub(/\A])+>/, "") %> + <% name = summary[/\A[\s\w]*([^,])/].strip %> + <% summary = summary.gsub(/\A.*div>/, "") %> + <% summary = summary.gsub(/

    .*\z/, "") %> +

    <%= raw summary.strip %>

    +

    Par <%= entry.author %> on <%= entry.published.strftime("%d/%m/%Y") %>

    +

    Voir plus sur le <%= link_to "site OPIDoR", entry.url %>

    +
    + + <%if news_left.to_i > 1 then %> +
    + <%else%> +
    + <%end%> + <% news_left = news_left - 1 %> + <% end %> +
    +
    +
    \ No newline at end of file diff --git a/app/views/branded/static_pages/help.html.erb b/app/views/branded/static_pages/help.html.erb new file mode 100644 index 0000000..ca2a212 --- /dev/null +++ b/app/views/branded/static_pages/help.html.erb @@ -0,0 +1,35 @@ + + +

    + <%= t('help_page.title')%> +

    + + +
    +
    +
    + <%= raw t('help_page.body_text_tab_1_html')%> +
    +
    + <%= raw t('help_page.body_text_tab_2_html')%> +
    +
    +
    diff --git a/app/views/branded/static_pages/termsuse.html.erb b/app/views/branded/static_pages/termsuse.html.erb new file mode 100644 index 0000000..2ac164b --- /dev/null +++ b/app/views/branded/static_pages/termsuse.html.erb @@ -0,0 +1,6 @@ +

    + <%= t('terms_page.title')%> +

    +
    + <%= raw t('terms_page.body_text_html')%> +
    diff --git a/app/views/branded/static_pages/tutorials.html.erb b/app/views/branded/static_pages/tutorials.html.erb new file mode 100644 index 0000000..ef3a91b --- /dev/null +++ b/app/views/branded/static_pages/tutorials.html.erb @@ -0,0 +1,7 @@ +
    +
    + + <%= link_to "DoRANum", "http://doranum.fr/outil-redaction-dmp-plan-gestion-donnees-dmp/", :target => "_blank" %> / CC BY-NC-SA 2.0 FR +
    \ No newline at end of file diff --git a/app/views/branded/super_admin/notifications/edit.html.erb b/app/views/branded/super_admin/notifications/edit.html.erb new file mode 100644 index 0000000..47f8970 --- /dev/null +++ b/app/views/branded/super_admin/notifications/edit.html.erb @@ -0,0 +1,11 @@ +
    +
    +

    <%= _('Editing Notification') %>

    +
    +
    +
    +
    + <%= render 'form' %> +
    +
    + diff --git a/app/views/branded/super_admin/notifications/index.html.erb b/app/views/branded/super_admin/notifications/index.html.erb new file mode 100644 index 0000000..9915b6b --- /dev/null +++ b/app/views/branded/super_admin/notifications/index.html.erb @@ -0,0 +1,21 @@ +
    +
    +

    <%= _('Notifications') %>

    +
    +
    +
    +
    +
    + <%= link_to _('+ Add New Notification'), new_super_admin_notification_path, class: 'btn btn-default', role: 'button' %> +
    +
    + <%= paginable_renderise( + partial: '/paginable/notifications/index', + controller: 'paginable/notifications', + action: 'index', + scope: notifications, + query_params: { sort_field: 'notifications.starts_at', sort_direction: 'desc' }) + %> +
    +
    +
    diff --git a/app/views/branded/super_admin/notifications/new.html.erb b/app/views/branded/super_admin/notifications/new.html.erb new file mode 100644 index 0000000..e0a5431 --- /dev/null +++ b/app/views/branded/super_admin/notifications/new.html.erb @@ -0,0 +1,11 @@ +
    +
    +

    <%= _('New notification') %>

    +
    +
    +
    +
    + <%= render 'form' %> +
    +
    + diff --git a/app/views/branded/super_admin/orgs/index.html.erb b/app/views/branded/super_admin/orgs/index.html.erb new file mode 100644 index 0000000..efe7867 --- /dev/null +++ b/app/views/branded/super_admin/orgs/index.html.erb @@ -0,0 +1,22 @@ +<%# Available locals: orgs %> +
    +
    +

    + <%= _('Organisations') %> + <%= _('Create Organisation') %> +

    +
    +
    +
    +
    + + <%= paginable_renderise( + partial: '/paginable/orgs/index', + controller: 'paginable/orgs', + action: 'index', + scope: orgs, + query_params: { sort_field: 'orgs.name', sort_direction: :asc }) %> +
    +
    +
    \ No newline at end of file diff --git a/app/views/branded/super_admin/themes/index.html.erb b/app/views/branded/super_admin/themes/index.html.erb new file mode 100644 index 0000000..bc59506 --- /dev/null +++ b/app/views/branded/super_admin/themes/index.html.erb @@ -0,0 +1,21 @@ +
    +
    +

    <%= _('Themes') %>

    +
    +
    +
    +
    +
    + <%= link_to(_('+ Add New Theme'), new_super_admin_theme_path, class: 'btn btn-default', role: 'button') %> +
    +
    + <%= paginable_renderise( + partial: '/paginable/themes/index', + controller: 'paginable/themes', + action: 'index', + scope: themes, + query_params: { sort_field: 'themes.title', sort_direction: :asc }) + %> +
    +
    +
    diff --git a/app/views/branded/super_admin/themes/new_edit.html.erb b/app/views/branded/super_admin/themes/new_edit.html.erb new file mode 100644 index 0000000..efe462f --- /dev/null +++ b/app/views/branded/super_admin/themes/new_edit.html.erb @@ -0,0 +1,38 @@ +<%# locals: { theme, options } %> +
    +
    +

    <%= options[:title] %>

    +
    +
    + +
    +
    + <%= form_for theme, url: options[:url], method: options[:method], html: { class: 'theme' } do |f| %> +
    + <%= f.label(:title, _('Title'), class: 'control-label') %> + <%= f.text_field(:title, + class: "form-control", + value: theme.title, + "aria-required": true) %> +
    +
    + <%= f.label(:description, _('Guidance')) %> + <%= f.text_area(:description, + class: "form-control", + rows: 10) %> +
    +
    + <%= f.button(_('Save'), class: "btn btn-default", type: "submit") %> + <%= link_to( + _('Delete'), + super_admin_theme_path(theme), + class: 'btn btn-default', + rel: 'nofollow', + 'data-method': 'delete', + 'data-confirm': _("Are you sure you want to delete the theme \"%{title}\"?") %{ :title => theme.title }) if options[:method] == :PUT %> + <%= link_to(_('Cancel'), super_admin_themes_path, class: 'btn btn-default', role: 'button') %> +
    + <% end %> +
    + +
    \ No newline at end of file diff --git a/app/views/branded/usage/index.html.erb b/app/views/branded/usage/index.html.erb new file mode 100644 index 0000000..5672350 --- /dev/null +++ b/app/views/branded/usage/index.html.erb @@ -0,0 +1,112 @@ +
    +
    +

    Usage statistics

    +

    <%= _('Use the filters to generate organisational usage statistics for a custom date range. The graphs display new users and plans for your organisation over the past year. You can download a CSV report for each graph.') %>

    +
    +
    +
    +
    +

    <%= _('Run your own filter') %>

    + <% if current_user.api_token.present? %> +
    + <%= hidden_field_tag('api_token', current_user.api_token) %> +
    +
    +
    + <%= label_tag('topic', _('Topic')) %> + <%= select_tag('topic', options_for_select( + [ + [_('Users'), 'users', { 'data-url': users_joined_api_v0_statistics_path }], + [_('Plans'), 'plans', { 'data-url': created_plans_api_v0_statistics_path }] + ]), class: 'form-control') %> +
    +
    +
    +
    + <%= label_tag('start_date', _('Start date')) %> + <%= date_field_tag('start_date', nil, class: 'form-control') %> +
    +
    +
    +
    + <%= label_tag('end_date', _('End date')) %> + <%= date_field_tag('end_date', nil, class: 'form-control') %> +
    +
    + <% if current_user.can_super_admin? %> +
    +
    + <%= label_tag(:org_id, _('Organisation')) %> + <%= select_tag(:org_id, options_from_collection_for_select(orgs, :id, :name, current_user.org_id), class: 'form-control') %> +
    +
    + <% else %> + <%= hidden_field_tag(:org_id, current_user.org_id) %> + <% end %> +
    + <%= submit_tag(_('Go'), class: 'btn btn-default') %> +
    +
    +
    + <% else %> +

    + <%= _('You don\'t have access to use the API. An api token is needed to generate usage statistics.') %> +

    + <% end %> +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    <%= _('New users') %>

    +

    <%= _('New plans') %>

    + +
    +
    +
    +
    +
    +
    +

    <%= _('Total users') %>

    +

    <%= _('Total plans') %>

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    <%= _('No. users joined during last year') %>

    +
    +
    + +
    +
    + + +
    +
    +
    +

    <%= _('No. plans during last year') %>

    +
    +
    + +
    +
    + + +
    +
    \ No newline at end of file diff --git a/app/views/branded/user_mailer/anonymization_notice.html.erb b/app/views/branded/user_mailer/anonymization_notice.html.erb new file mode 100644 index 0000000..b8580e4 --- /dev/null +++ b/app/views/branded/user_mailer/anonymization_notice.html.erb @@ -0,0 +1,14 @@ +<% FastGettext.with_locale FastGettext.default_locale do %> +

    <%= _('Hello ') %><%= @user.name %>

    + +

    + <%= d_('dmpopidor', 'You have not signed in since %{last_sign_in_date} and your account has been deactivated') % { :last_sign_in_date => @user.last_sign_in_at.to_date } %>. + <%= d_('dmpopidor', 'All accounts inactive for 5 years are automaticaly deactivated') %>. +

    + +

    + <%=_('All the best,')%>
    + <%= _('The %{tool_name} team') %{:tool_name => tool_name} %> +

    + <% end %> + \ No newline at end of file diff --git a/app/views/branded/user_mailer/anonymization_warning.html.erb b/app/views/branded/user_mailer/anonymization_warning.html.erb new file mode 100644 index 0000000..48d981d --- /dev/null +++ b/app/views/branded/user_mailer/anonymization_warning.html.erb @@ -0,0 +1,14 @@ +<% FastGettext.with_locale FastGettext.default_locale do %> +

    <%= _('Hello ') %><%= @user.name %>

    + +

    + <%= d_('dmpopidor', 'You have not signed in since %{last_sign_in_date} and our system will deactivate your account at %{end_date}') % { :last_sign_in_date => @user.last_sign_in_at.to_date, :end_date => @end_date } %>. + <%= d_('dmpopidor', 'All accounts inactive for 5 years are automaticaly deactivated. If you want your account to remain active, please just sign in before %{end_date}') % { :end_date => @end_date } %>. +

    + +

    + <%=_('All the best,')%>
    + <%= _('The %{tool_name} team') %{:tool_name => tool_name} %> +

    + <% end %> + \ No newline at end of file diff --git a/app/views/branded/users/admin_index.html.erb b/app/views/branded/users/admin_index.html.erb new file mode 100644 index 0000000..d212656 --- /dev/null +++ b/app/views/branded/users/admin_index.html.erb @@ -0,0 +1,21 @@ +
    +
    +

    <%= _('User accounts') %>

    +

    + <%= _('Below is a list of users registered for your organisation. You can sort the data by each field.')%> +

    +
    +
    + +
    +
    +
    + <%= paginable_renderise( + partial: '/paginable/users/index', + controller: 'paginable/users', + action: 'index', + scope: @users, + locals: { page: 1 }) %> +
    +
    +
    \ 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 5e11588..319de78 100644 --- a/app/views/devise/mailer/invitation_instructions.html.erb +++ b/app/views/devise/mailer/invitation_instructions.html.erb @@ -1,5 +1,6 @@ <% tool_name = Rails.configuration.branding[:application][:name] + sender_name = @resource.invited_by.name(false) link = accept_invitation_url(@resource, :invitation_token => @token) helpdesk_email = Rails.configuration.branding[:organisation][:helpdesk_email] contact_us = (Rails.configuration.branding[:organisation][:contact_us_url] || contact_us_url) @@ -10,7 +11,10 @@ <%= _('Hello %{user_email}') %{ :user_email => @resource.email } %>

    - <%= _('A colleague has invited you to contribute to their Data Management Plan in %{tool_name}') %{ :tool_name => tool_name } %> + <%= d_('dmpopidor', '%{sender_name} has invited you to contribute to their Data Management Plan in %{tool_name}') %{ + :sender_name => sender_name, + :tool_name => tool_name + }%>

    <%= raw(_('%{click_here} to accept the invitation, (or copy %{link} into your browser). If you don\'t want to accept the invitation, please ignore this email.') %{ :click_here => link_to(_('Click here'), link), :link => link }) %> diff --git a/app/views/devise/registrations/_password_confirmation.html.erb b/app/views/devise/registrations/_password_confirmation.html.erb index c7d7577..fb83407 100644 --- a/app/views/devise/registrations/_password_confirmation.html.erb +++ b/app/views/devise/registrations/_password_confirmation.html.erb @@ -33,8 +33,8 @@

    diff --git a/app/views/orgs/_feedback_form.html.erb b/app/views/orgs/_feedback_form.html.erb index b9bc43a..9c2043a 100644 --- a/app/views/orgs/_feedback_form.html.erb +++ b/app/views/orgs/_feedback_form.html.erb @@ -16,7 +16,7 @@
    - <% tip = _(feedback_confirmation_default_message) % { user_name: _('%{user_name}'), plan_name: _('%{plan_name}'), organisation_email: org.contact_email } %> + <% tip = _(feedback_confirmation_default_message) %>
    <%= f.label :feedback_email_msg, _('Message'), class: "control-label" %> <%= f.text_area :feedback_email_msg, class: "form-control" %> diff --git a/app/views/paginable/plans/_privately_private_visible.html.erb b/app/views/paginable/plans/_privately_private_visible.html.erb new file mode 100644 index 0000000..547e0f2 --- /dev/null +++ b/app/views/paginable/plans/_privately_private_visible.html.erb @@ -0,0 +1,82 @@ +
    + + + + + + + + + + + + + + + <% scope.each do |plan| %> + + + + + + + + + + + <% end %> + +
    <%= _('Project Title') %> <%= paginable_sort_link('plans.title') %><%= _('Template') %> <%= paginable_sort_link('templates.title') %><%= _('Edited') %> <%= paginable_sort_link('plans.updated_at') %><%= _('Role') %><%= _('Test') %><%= _('Visibility') %><%= _('Shared') %> + <%= _('Actions') %> +
    + <%= link_to "#{plan.title.length > 60 ? "#{plan.title[0..59]} ..." : plan.title}", + plan_path(plan) %> + <%= plan.template.title %><%= l(plan.updated_at.to_date, formats: :short) %><%= display_role(plan.roles.find_by(user: current_user)) %> + <% if plan.administerable_by?(current_user.id) then %> + <%= form_for plan, url: set_test_plan_path(plan), html: { method: :post, class: 'set_test_plan', remote: true } do |f| %> + <%= check_box_tag(:is_test, "1", (plan.visibility === 'is_test')) %> + <%= f.submit(_('Update'), style: 'display:none') %> + <% end %> + <% else %> + <%= plan.visibility === 'is_test' ? _('Yes') : _('No') %> + <% end %> + + <%= plan.visibility === 'is_test' ? _('N/A') : raw(display_visibility(plan.visibility)) %> + + <% if plan.shared %> + <%= _("Yes") %> + <% else %> + <%= _('No') %> + <% end %> + + +
    +
    \ No newline at end of file diff --git a/app/views/paginable/templates/_publicly_visible.html.erb b/app/views/paginable/templates/_publicly_visible.html.erb index 6c43a0b..cf57d57 100644 --- a/app/views/paginable/templates/_publicly_visible.html.erb +++ b/app/views/paginable/templates/_publicly_visible.html.erb @@ -3,29 +3,25 @@ <%= _('Template Name') %> <%= paginable_sort_link('templates.title') %> - <%= _('Download') %> <%= _('Organisation Name') %> <%= paginable_sort_link('orgs.name') %> + <%= d_('dmpopidor', 'Organisation Type') %> <%= paginable_sort_link('orgs.org_type') %> + <%= d_('dmpopidor', 'Description') %> <%= _('Last Updated') %> <%= paginable_sort_link('templates.updated_at') %> - <%= _('Funder Links') %> - <%= _('Sample Plans') %>
    <%= _('(if available)') %> + <%= _('Download') %> <% scope.each do |template| %> <%= template.title %> + <%= template.org.name %> + <%= _(template.org.org_type_to_s) %> + <%= raw template.description %> + <%= l(template.updated_at.to_date, formats: :short) %> <%= link_to _('DOCX'), template_export_path(template.family_id, format: :docx), target: '_blank' %>
    <%= link_to _('PDF'), template_export_path(template.family_id, format: :pdf), target: '_blank' %> - <%= template.org.name %> - <%= l(template.updated_at.to_date, formats: :short) %> - - <%= raw links_to_a_elements(template.links['funder'], '
    ') %> - - - <%= raw links_to_a_elements(template.links['sample_plan'], '
    ') %> - <% end %> diff --git a/app/views/plans/_share_form.html.erb b/app/views/plans/_share_form.html.erb index ec785a6..7b0e448 100644 --- a/app/views/plans/_share_form.html.erb +++ b/app/views/plans/_share_form.html.erb @@ -4,15 +4,19 @@ <%= form_for(@plan, url: visibility_plan_path, method: :post, html: { id: 'set_visibility', remote: true }) do |f| %> >
    +
    + <%= f.label :visibility_privately_private_visible, raw("#{f.radio_button :visibility, :privately_private_visible}\ + #{d_('dmpopidor', 'Private: visible to me and specified collaborators')}") %> +
    <%= f.label :visibility_privately_visible, raw("#{f.radio_button :visibility, :privately_visible}\ - #{_('Private: visible to me, specified collaborators and administrators at my organisation')}") %> + #{d_('dmpopidor', 'Administrator: visible to me, specified collaborators and administrators at my organisation')}") %>
    <%= f.label :visibility_organisationally_visible, raw("#{f.radio_button :visibility, :organisationally_visible} #{_('Organisation: anyone at my organisation can view')}") %>
    - <%= f.label :visibility_publicly_visible, raw("#{f.radio_button :visibility, :publicly_visible} #{_('Public: anyone can view')}") %> + <%= f.label :visibility_publicly_visible, raw("#{f.radio_button :visibility, :publicly_visible} #{_('Public: anyone can view.')}") %>
    diff --git a/app/views/public_pages/template_index.html.erb b/app/views/public_pages/template_index.html.erb index 6ee943f..c2507e0 100644 --- a/app/views/public_pages/template_index.html.erb +++ b/app/views/public_pages/template_index.html.erb @@ -15,7 +15,8 @@ partial: '/paginable/templates/publicly_visible', controller: 'paginable/templates', action: 'publicly_visible', - scope: @templates) %> + scope: @templates, + query_params: { sort_field: 'orgs.name', sort_direction: 'asc' }) %> <% end %>
    \ No newline at end of file diff --git a/app/views/shared/_my_org.html.erb b/app/views/shared/_my_org.html.erb index 66b3415..f61905d 100644 --- a/app/views/shared/_my_org.html.erb +++ b/app/views/shared/_my_org.html.erb @@ -5,6 +5,7 @@ id: "#{object_name}_org_name", default_selection: default_org, models: orgs, + required: true, attribute: 'name'} %> <% if allow_other_orgs %> diff --git a/app/views/user_mailer/permissions_change_notification.html.erb b/app/views/user_mailer/permissions_change_notification.html.erb index d9553fe..6ad1d29 100644 --- a/app/views/user_mailer/permissions_change_notification.html.erb +++ b/app/views/user_mailer/permissions_change_notification.html.erb @@ -1,6 +1,6 @@ <% tool_name = Rails.configuration.branding[:application][:name] - username = @user.name + username = @role.user.name(false) plan_title = @role.plan.title access = nil access_level = @role.access_level() diff --git a/app/views/user_mailer/plan_access_removed.html.erb b/app/views/user_mailer/plan_access_removed.html.erb index dbb963c..09836be 100644 --- a/app/views/user_mailer/plan_access_removed.html.erb +++ b/app/views/user_mailer/plan_access_removed.html.erb @@ -1,5 +1,5 @@ <% FastGettext.with_locale FastGettext.default_locale do %> -

    <%= _('Hello ') %><%= @user.email %>,

    +

    <%= _('Hello ') %><%= @user.name(false) %>,

    <%= _('Your access to ') %>"<%= @plan.title %>"<%= _(' has been removed by ') %><%= "#{@current_user.name(false)}"%>.

    <%= render partial: 'email_signature' %> <% end %> diff --git a/app/views/user_mailer/plan_visibility.html.erb b/app/views/user_mailer/plan_visibility.html.erb index 7c63eb1..334e381 100644 --- a/app/views/user_mailer/plan_visibility.html.erb +++ b/app/views/user_mailer/plan_visibility.html.erb @@ -15,6 +15,7 @@ <%= _('Visibility definitions:') %> diff --git a/app/views/user_mailer/sharing_notification.html.erb b/app/views/user_mailer/sharing_notification.html.erb index 1b4a0f1..fbec00f 100644 --- a/app/views/user_mailer/sharing_notification.html.erb +++ b/app/views/user_mailer/sharing_notification.html.erb @@ -1,6 +1,7 @@ <% tool_name = Rails.configuration.branding[:application][:name] - user_email = @user.email + sender_name = @current_user.name(false) + user_email = @user.name(false) link = url_for(action: 'show', controller: 'plans', id: @role.plan.id) %> <% FastGettext.with_locale FastGettext.default_locale do %> @@ -8,7 +9,10 @@ <%= _('Hello %{user_email}') %{ :user_email => user_email } %>

    - <%= _('A colleague has invited you to contribute to their Data Management Plan in %{tool_name}') %{ :tool_name => tool_name }%> + <%= d_('dmpopidor', '%{sender_name} has invited you to contribute to their Data Management Plan in %{tool_name}') %{ + :sender_name => sender_name, + :tool_name => tool_name + }%>

    <%= raw(_('%{click_here} to accept the invitation, (or copy %{link} into your browser). If you don\'t want to accept the invitation, please ignore this email.') %{ :click_here => link_to(_('Click here'), link), :link => link }) %> diff --git a/config/application.rb b/config/application.rb index 7c2e2f1..23766da 100644 --- a/config/application.rb +++ b/config/application.rb @@ -62,7 +62,7 @@ # Enable shibboleth as an alternative authentication method # Requires server configuration and omniauth shibboleth provider configuration # See config/initializers/devise.rb - config.shibboleth_enabled = true + config.shibboleth_enabled = false # Relative path to Shibboleth SSO Logout config.shibboleth_login = '/Shibboleth.sso/Login' @@ -87,8 +87,9 @@ # organisationally_visible - Any member of the user's org can view, export and duplicate the plan # publicly_visibile - (NOT advisable because plans will show up in Public DMPs page by default) # is_test - (NOT advisable because test plans are excluded from statistics) - # privately_visible - Only the owner and people they invite can access the plan - config.default_plan_visibility = 'privately_visible' + # privately_visible - Only the owner, people they invite can access the plan and org admin + # privately_private_visible - Only the owner and people they invite can access the plan + config.default_plan_visibility = 'privately_private_visible' # The percentage of answered questions needed to enable the plan visibility section of the Share plan page config.default_plan_percentage_answered = 50 diff --git a/config/initializers/fast_gettext.rb b/config/initializers/fast_gettext.rb index 4cbca7e..e1bc85f 100644 --- a/config/initializers/fast_gettext.rb +++ b/config/initializers/fast_gettext.rb @@ -1,3 +1,5 @@ +include FastGettext::TranslationMultidomain + def get_available_locales languages = LANGUAGES # LANGUAGES is defined in config/initializers/constants.rb locales = [] @@ -13,6 +15,7 @@ end FastGettext.add_text_domain 'app', :path => 'config/locale', :type => :po, :ignore_fuzzy => true, :report_warning => false +FastGettext.add_text_domain 'dmpopidor', :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/locale/app.pot b/config/locale/app.pot index 8921c1e..6519de3 100644 --- a/config/locale/app.pot +++ b/config/locale/app.pot @@ -2405,3 +2405,27 @@ msgid "write and edit the plan in a collaborative manner." msgstr "" + + + +msgid "Account expiration in %{tool_name}" +msgstr "" + +msgid "Account expired in %{tool_name}" +msgstr "" + +msgid "You have not signed in since %{last_sign_in_date} and your account has been deactivated" +msgstr "" + +msgid "All accounts inactive for 5 years are automaticaly deactivated" +msgstr "" + +msgid "You have not signed in since %{last_sign_in_date} and our system will deactivate your account at %{end_date}" +msgstr "" + +msgid "All accounts inactive for 5 years are automaticaly deactivated. If you want your account to remain active, please just sign in before %{end_date}" +msgstr "" + + + + diff --git a/config/locale/dmpopidor.pot b/config/locale/dmpopidor.pot new file mode 100644 index 0000000..1c2c837 --- /dev/null +++ b/config/locale/dmpopidor.pot @@ -0,0 +1,74 @@ +# 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: dmpopidor 1.0.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-12 16:41+0000\n" +"PO-Revision-Date: 2018-03-12 16:41+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 "Account expiration in %{tool_name}" +msgstr "" + +msgid "Account expired in %{tool_name}" +msgstr "" + +msgid "You have not signed in since %{last_sign_in_date} and your account has been deactivated" +msgstr "" + +msgid "All accounts inactive for 5 years are automaticaly deactivated" +msgstr "" + +msgid "You have not signed in since %{last_sign_in_date} and our system will deactivate your account at %{end_date}" +msgstr "" + +msgid "All accounts inactive for 5 years are automaticaly deactivated. If you want your account to remain active, please just sign in before %{end_date}" +msgstr "" + +msgid "Mailing list" +msgstr "" + +msgid "Institutional Access" +msgstr "" + +msgid "Individual Access" +msgstr "" + +msgid "The information collected that concerns you will be processed and is destined for the Inist-CNRS (UPS76) and the correspondent for Computing and Liberties (CIL). For the following goal: management of user accounts. The recipients of this data are the administrators of the Inist-CNRS. The duration of conservation of the data is 5 years following the last login." +msgstr "" + +msgid "You have the right of access, of correction, of portability, or of removal of this data, or of a limitation of their processing. You can oppose the processing of the data that concerns you and you have the right to withdraw your agreement at any time, by contacting: %{contact_url}. You can also direct a complaint at a controlling body." +msgstr "" + +msgid "%{user_name} has shared a Data Management Plan with you in %{tool_name}" +msgstr "" + +msgid "%{sender_name} has invited you to contribute to their Data Management Plan in %{tool_name}" +msgstr "" + +msgid "Tutorials" +msgstr "" + +msgid "Select an answer" +msgstr "" + +msgid "Private: visible to me and specified collaborators" +msgstr "" + +msgid "Administrator: visible to me, specified collaborators and administrators at my organisation" +msgstr "" + +msgid "Administrator" +msgstr "" + diff --git a/config/locale/en_GB/app.po b/config/locale/en_GB/app.po index c16527b..6c8b316 100644 --- a/config/locale/en_GB/app.po +++ b/config/locale/en_GB/app.po @@ -4924,3 +4924,23 @@ msgctxt "Your account" msgid "Your" msgstr "Your" + + + +msgid "Account expiration in %{tool_name}" +msgstr "Account expiration in %{tool_name}" + +msgid "Account expired in %{tool_name}" +msgstr "Account expired in %{tool_name}" + +msgid "You have not signed in since %{last_sign_in_date} and your account has been deactivated" +msgstr "You have not signed in since %{last_sign_in_date} and your account has been deactivated" + +msgid "All accounts inactive for 5 years are automaticaly deactivated" +msgstr "All accounts inactive for 5 years are automaticaly deactivated" + +msgid "You have not signed in since %{last_sign_in_date} and our system will deactivate your account at %{end_date}" +msgstr "You have not signed in since %{last_sign_in_date} and our system will deactivate your account at %{end_date}" + +msgid "All accounts inactive for 5 years are automaticaly deactivated. If you want your account to remain active, please just sign in before %{end_date}" +msgstr "All accounts inactive for 5 years are automaticaly deactivated. If you want your account to remain active, please just sign in before %{end_date}" \ No newline at end of file diff --git a/config/locale/en_GB/dmpopidor.po b/config/locale/en_GB/dmpopidor.po new file mode 100644 index 0000000..dc2eca3 --- /dev/null +++ b/config/locale/en_GB/dmpopidor.po @@ -0,0 +1,80 @@ +# 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: dmpopidor 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 "Account expiration in %{tool_name}" +msgstr "Account expiration in %{tool_name}" + +msgid "Account expired in %{tool_name}" +msgstr "Account expired in %{tool_name}" + +msgid "You have not signed in since %{last_sign_in_date} and your account has been deactivated" +msgstr "You have not signed in since %{last_sign_in_date} and your account has been deactivated" + +msgid "All accounts inactive for 5 years are automaticaly deactivated" +msgstr "All accounts inactive for 5 years are automaticaly deactivated" + +msgid "You have not signed in since %{last_sign_in_date} and our system will deactivate your account at %{end_date}" +msgstr "You have not signed in since %{last_sign_in_date} and our system will deactivate your account at %{end_date}" + +msgid "All accounts inactive for 5 years are automaticaly deactivated. If you want your account to remain active, please just sign in before %{end_date}" +msgstr "All accounts inactive for 5 years are automaticaly deactivated. If you want your account to remain active, please just sign in before %{end_date}" + +msgid "Mailing list" +msgstr "Mailing list" + +msgid "Institutional Access" +msgstr "Institutional Access" + +msgid "Individual Access" +msgstr "Individual Access" + +msgid "The information collected that concerns you will be processed and is destined for the Inist-CNRS (UPS76) and the correspondent for Computing and Liberties (CIL). For the following goal: management of user accounts. The recipients of this data are the administrators of the Inist-CNRS. The duration of conservation of the data is 5 years following the last login." +msgstr "The information collected that concerns you will be processed and is destined for the Inist-CNRS (UPS76) and the correspondent for Computing and Liberties (CIL). For the following goal: management of user accounts. The recipients of this data are the administrators of the Inist-CNRS. The duration of conservation of the data is 5 years following the last login." + +msgid "You have the right of access, of correction, of portability, or of removal of this data, or of a limitation of their processing. You can oppose the processing of the data that concerns you and you have the right to withdraw your agreement at any time, by contacting: %{contact_url}. You can also direct a complaint at a controlling body." +msgstr "You have the right of access, of correction, of portability, or of removal of this data, or of a limitation of their processing. You can oppose the processing of the data that concerns you and you have the right to withdraw your agreement at any time, by contacting: %{contact_url}. You can also direct a complaint at a controlling body." + +msgid "%{user_name} has shared a Data Management Plan with you in %{tool_name}" +msgstr "%{user_name} has shared a Data Management Plan with you in %{tool_name}" + +msgid "%{sender_name} has invited you to contribute to their Data Management Plan in %{tool_name}" +msgstr "%{sender_name} has invited you to contribute to their Data Management Plan in %{tool_name}" + +msgid "Tutorials" +msgstr "Tutorials" + +msgid "Select an answer" +msgstr "Select an answer" + +msgid "Private: visible to me and specified collaborators" +msgstr "Private: visible to me and specified collaborators" + +msgid "Administrator: visible to me, specified collaborators and administrators at my organisation" +msgstr "Administrator: visible to me, specified collaborators and administrators at my organisation" + +msgid "Administrator" +msgstr "Administrator" + +msgid "Organisation Type" +msgstr "Organisation Type" + +msgid "Background" +msgstr "Background" + +msgid "Latest news" +msgstr "Latest news" diff --git a/config/locale/fr_FR/app.po b/config/locale/fr_FR/app.po index d62defd..1241e03 100644 --- a/config/locale/fr_FR/app.po +++ b/config/locale/fr_FR/app.po @@ -1,240 +1,263 @@ -# 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" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2017-05-02 14:54+0000\n" +"POT-Creation-Date: 2018-05-30 14:03+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" +"Language: fr_FR\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" +"X-Generator: Translate Toolkit 2.2.5\n" +"X-Pootle-Path: /fr_FR/roadmap/app.po\n" +"X-Pootle-Revision: 4349\n" msgid " (DCC-UK) and " -msgstr "" +msgstr " (DCC-UK) et " -#, fuzzy msgid " (e.g. School/ Department) " -msgstr "par ex. : Faculté/Département" +msgstr " (par ex. : Ecole/Département) " -#, fuzzy msgid " Customised By: " -msgstr "Personnaliser" +msgstr " Personnalisé par : " -#, fuzzy msgid " Plan" -msgstr "plans" +msgstr " Plan" -#, fuzzy msgid "" " The above plan creator(s) have agreed that others may use as much of the " "text of this plan as they would like in their own plans, and customise it as " "necessary. You do not need to credit the creator(s) as the source of the " "language used, but using any of the plan's text does not imply that the " "creator(s) endorse, or have any relationship to, your project or proposal" -msgstr "plans" +msgstr "" +"Le(s) créateur(s) de ce plan accepte(nt) que tout ou partie de texte de ce " +"plan soit réutilisé et personnalisé si nécessaire pour un autre plan. Vous n’" +"avez pas besoin de citer le(s) créateur(s) en tant que source. L’utilisation " +"de toute partie de texte de ce plan n’implique pas que le(s) créateur(s) " +"soutien(nen)t ou aient une quelconque relation avec votre projet ou votre " +"soumission." -#, fuzzy msgid " by %{user_name}" -msgstr "user" +msgstr " par %{user_name}" -#, fuzzy msgid " current user privileges are: " -msgstr "user" +msgstr "a les droits utilisateur suivants :" -#, fuzzy msgid " has been removed by " -msgstr " par " +msgstr " a été retiré par " msgid " in the project. You can also report bugs and request new features via " msgstr "" +" dans le projet. Vous pouvez également signaler les bugs et demander de " +"nouvelles fonctionnalités via " msgid "\"#{text}\"" -msgstr "" +msgstr "\"#{text}\"" -#, fuzzy msgid "\"Are you sure you want to unlink #{scheme.description} ID?\"" -msgstr "Identifiant" +msgstr "" +"\"Etes-vous sûr de vouloir dissocier votre compte institutionnel " +"#{scheme.description} ?\"" -#, fuzzy msgid "\"Error parsing links for a #{@template.template_type}\"" -msgstr "templates" +msgstr "" +"\"Erreur lors de l'analyse des liens pour un #{@template.template_type}\"" -#, fuzzy msgid "\"That #{template.template_type} is not currently published.\"" -msgstr "templates" +msgstr "\"Ce #{template.template_type} n'est pas encore publié.\"" -#, fuzzy msgid "" "\"The current #{scheme.description} iD has been already linked to a user " "with email #{identifier.user.email}\"" -msgstr "user" +msgstr "" +"\"L'identifiant #{scheme.description} actuel a déjà été lié à l'utilisateur " +"avec le courriel #{identifier.user.email}\"" -#, fuzzy msgid "" "\"Unable to create a new version of this #{@template.template_type}. You are " "currently working with a published copy.\"" -msgstr "templates" +msgstr "" +"\"Impossible de créer une nouvelle version pour ce #{@template.template_type}" +". Vous travaillez actuellement sur la copie publiée.\"" msgid "" "\"Unlink your account from #{scheme.description}. You can link again at any " "time.\"" msgstr "" +"Dissocier votre compte #{scheme.description}. Vous pouvez le lier de nouveau " +"à tout moment." -#, fuzzy msgid "" "\"You are viewing a historical version of this #{@template.template_type}. " "You will not be able to make changes.\"" -msgstr "templates" +msgstr "" +"\"Vous visualisez une ancienne version version de ce " +"#{@template.template_type}. Vous ne pourrez pas effectuer de changements.\"" -#, fuzzy msgid "" "\"You can not edit a historical version of this #{@template.template_type}.\"" -msgstr "templates" +msgstr "" +"\"Vous ne pouvez pas modifier une ancienne version de ce " +"#{@template.template_type}.\"" -#, fuzzy msgid "" "\"You can not publish a historical version of this #{template.template_type}." "\"" -msgstr "templates" +msgstr "" +"\"Vous ne pouvez pas publier une ancienne version de ce " +"#{template.template_type}.\"" -#, fuzzy msgid "" "\"You cannot delete a #{@template.template_type} that has been used to " "create plans.\"" -msgstr "templates" +msgstr "" +"\"Vous ne pouvez pas supprimer un #{@template.template_type} utilisé pour " +"créer des plans.\"" -#, fuzzy msgid "" "\"You cannot delete historical versions of this #{@template.template_type}.\"" -msgstr "templates" +msgstr "" +"\"Vous ne pouvez pas supprimer les anciennes versions de ce " +"#{@template.template_type}.\"" -#, fuzzy msgid "" "\"Your #{template.template_type} has been published and is now available to " "users.\"" -msgstr "templates" +msgstr "" +"\"Votre #{template.template_type} a été publié et il est à présent " +"disponible pour les utilisateurs.\"" -#, fuzzy msgid "" "\"Your #{template.template_type} is no longer published. Users will not be " "able to create new DMPs for this #{template.template_type} until you re-" "publish it\"" -msgstr "templates" +msgstr "" +"\"Votre #{template.template_type} n'est plus publié. Les utilisateurs ne " +"pourront pas créer de nouveaux plans à partir de ce #{template.template_type}" +" jusqu'à ce qu'il soit à nouveau publié.\"" msgid "\"Your account has been linked to #{scheme.description}.\"" -msgstr "" +msgstr "\"Votre compte a été lié à #{scheme.description}.\"" msgid "%{add_or_edit} Annotations" -msgstr "" +msgstr "%{add_or_edit} Annotations" msgid "%{application_name}" -msgstr "DMPonline" +msgstr "%{application_name}" -#, 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" +"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} est mis à disposition par %{organisation_name}.
    " +"Vous pouvez trouver plus d'informations sur notre site internet. Si vous souhaitez " +"nous contacter à propos de %{application_name}, remplissez le formulaire ci " +"dessous." -#, fuzzy msgid "%{application_name}: %{user_name} requested feedback on a plan" -msgstr "DMPonline" +msgstr "" +"%{application_name} : %{user_name} a demandé de l'assistance conseil pour un " +"plan." -#, fuzzy msgid "" "%{application_name}: Expert feedback has been provided for %{plan_title}" -msgstr "DMPonline" +msgstr "" +"%{application_name} : Une assistance conseil a été fournie pour %{plan_title}" -#, fuzzy msgid "%{application_name}: Your plan has been submitted for feedback" -msgstr "DMPonline" +msgstr "" +"%{application_name} : Une assistance conseil a a été demandée pour votre plan" msgid "" "%{click_here} to accept the invitation, (or copy %{link} into your browser). " "If you don't want to accept the invitation, please ignore this email." msgstr "" +"%{click_here} pour accepter l'invitation, (ou copier %{link} dans votre " +"navigateur). Si vous ne souhaitez pas accepter cette invitation, ignorez ce " +"courriel." -#, fuzzy msgid "" "%{commenter_name} has commented on the plan %{plan_title}. To view the " "comments, please visit the My Dashboard page in %{tool_name} and open your " "plan." -msgstr "Commentaire" +msgstr "" +"%{commenter_name} a laissé un commentaire sur le plan %{plan_title}. Pour " +"voir les commentaires, allez sur le Tableau de Bord sur %{tool_name} et " +"ouvrez votre plan." -#, fuzzy msgid "" "%{commenter} has finished providing feedback on the plan \"%{plan_title}\". " "To view the comments, please visit the My Dashboard page in %{tool_name} and " "open your plan." -msgstr "Commentaire" +msgstr "" +"%{commenter} a fourni une assistance conseil sur le plan \"%{plan_title}\". " +"Pour voir les commentaires, consultez le Tableau de Bord sur %{tool_name} et " +"ouvrez votre plan." -#, fuzzy msgid "%{org_name} Plans" -msgstr "plans" +msgstr "%{org_name} Plans" -#, fuzzy msgid "%{org_name} Templates" -msgstr "Modèles" +msgstr "%{org_name} Modèles" -#, fuzzy msgid "%{org_title} Plans" -msgstr "plans" +msgstr "%{org_title} Plans" -#, fuzzy msgid "" "%{phase_title} (%{sections_size} %{sections}, %{questions_size} %{questions})" -msgstr "Question" +msgstr "" +"%{phase_title} (%{sections_size} %{sections}, %{questions_size} %{questions})" -#, fuzzy msgid "%{plan_name}" -msgstr "plans" +msgstr "%{plan_name}" -#, fuzzy msgid "" "%{plan_owner} has been notified that you have finished providing feedback" -msgstr "plans" +msgstr "%{plan_owner} a été informé que vous avez finalisé l'assistance conseil" -#, fuzzy msgid "" "%{requestor} has requested feedback on a plan \"%{plan_name}.\" To add " "comments, please visit the 'Plans' page under the Admin menu in " "%{application_name} and open the plan." -msgstr "DMPonline" +msgstr "" +"%{requestor} a demandé de l'assistance conseil pour le plan \"%{plan_name}.\"" +" Pour ajouter des commentaires, consultez la page 'Plans' dans le menu " +"Administration de %{application_name} et ouvrez le plan." -#, fuzzy msgid "" "%{tool_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 at " "%{helpdesk_email} or visit %{contact_us}" -msgstr "plans" +msgstr "" +"%{tool_name} vous aidera à élaborer votre DMP. Si vous avez des questions ou " +"suggestions, contactez nous à %{helpdesk_email} ou par %{contact_us}" -#, fuzzy msgid "%{tool_name}: A new comment was added to %{plan_title}" -msgstr "Commentaire" +msgstr "%{tool_name}: Un nouveau commentaire a été ajouté à %{plan_title}" -#, fuzzy msgid "%{user_name}" -msgstr "user" +msgstr "%{user_name}" msgid "%{value} is not a valid format" -msgstr "" +msgstr "%{value} n'est pas un format valide" -#, fuzzy +# Term of Use msgid "" "(CDL) are consortia supported by the University of Edinburgh and the " "University of California, respectively. Our primary constituency is the " "research community. We provide services to the UK, US and international " "higher education sector. " -msgstr " par " +msgstr "" +"(CDL) sont des consortia soutenus par l'Univerté d'Edimbourg et par " +"l'Université de Californie. Nos principaux électeurs viennent de la " +"communauté de recherche. Nous fournissons des services au Royaume Uni, aux " +"Etats Unis et au secteur international de l'éducation supérieure." msgid "" "(CDL-US) are now established in our national contexts as the resource for " @@ -245,26 +268,34 @@ "can extend our reach, keep costs down, and move best practices forward, " "allowing us to participate in a truly global open science ecosystem." msgstr "" +"(CDL-US) sont maintenant reconnus dans nos contextes nationaux comme les " +"ressources pour les chercheurs cherchant des recommandations pendant la " +"création de leurs plans. Nous avons travaillé ensemble dès le départ pour " +"partager nos expériences, mais avec l’explosion de l’intérêt pour nos deux " +"outils à travers le monde nous avons formalisé notre partenariat pour co-" +"développer et garantir une unique plateforme open-source pour les DMPs. En " +"travaillant ensemble nous pouvons étendre nos activités, diminuer les coûts, " +"faire avancer les bonnes pratiques, nous permettant ainsi de participer à un " +"réel écosystème de science ouverte mondial." msgid "(if available)" -msgstr "" +msgstr "(si disponible)" msgid "+ Add New Theme" -msgstr "" +msgstr "+ Ajouter un nouveau thème" msgid "+ Add an additional URL" -msgstr "" +msgstr "+ Ajouter un lien supplémentaire" msgid "-" -msgstr "" +msgstr "-" msgid "..." -msgstr "" +msgstr "..." msgid "... (continued)" -msgstr "" +msgstr "... (à suivre)" -#, fuzzy msgid "" "

    Your personal details and consent notice

    \n" "\n" @@ -280,8 +311,8 @@ "\n" " By using this system, you consent to the collection, retention, and " "use of your personal information in accordance with the above. You have the " -"right to ask us not to process your personal details for marketing purposes." -"

    \n" +"right to ask us not to process your personal details for marketing " +"purposes.

    \n" "\n" "

    Privacy policy

    \n" "\n" @@ -310,8 +341,8 @@ "\n" "

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

    \n" +"href='http://www.dcc.ac.uk/about-us/about-site/website-terms-use/cookies'>" +"main DCC website.

    \n" "\n" "

    Third party APIs

    \n" "\n" @@ -325,25 +356,89 @@ "

    This statement was last revised on October 5, 2017 and may be " "revised at any time. Use of the tool indicates that you understand and agree " "to these terms and conditions.

    " -msgstr "Organisation" - -#, fuzzy -msgid "" -"

    %{application_name} has been 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.

    " +"

    Vos informations personnelles et avis de consentement

    \n" +"\n" +"

    Afin de nous aider à identifier et administrer votre compte avec " +"DMPRoadmap, nous avons besoin de stocker votre nom et courriel. Nous pouvons " +"utiliser ces informations pour vous contacter afind d'obtenir des retours " +"sur votre utilisation de l'outil, ou vous informer des derniers " +"développements ou déploiements. L'information peut être transférée entre le " +"DCC et le CDL seulement pour les buts légitimes suivants : marketing, " +"amélioration de nos services et informations à propos des contenus et " +"évènements pertinents.Nous ne vendrons, ne louerons, ou n'échangerons aucune " +"information personnelle que vous nous aurez fournies. \n" +"\n" +"\n" +" En utilisant ce système, vous acceptez la collecte, conservation et " +"utilisation de vos informations personnelles en accord avec ce qui est " +"mentionné ci-dessus. Vous avez le droit de nous demander de ne pas traiter " +"vos informations personnelles à des fins commerciales.

    \n" +"\n" +"

    Politique de confidentialité

    \n" +"\n" +"

    L'information que vous fournissez à ce système peut être vue par " +"vous, les personnes à qui vous en partagez l'accès et - dans le seul but de " +"gérer ce service - les administrateurs systèmes du DCC et du CDL. Nous " +"compilons, anonymisons de manière automatiques, des informations agrégées " +"des plans, mais nous n'accèderons pas directement, n'utiliserons, ni ne " +"partagerons vos contenus sans votre permission. Des mandataires autorisés de " +"votre organisation pourront accéder à vos plans dans des buts spécifiques, " +"pour par exemple suivre la conformité avec les préreques des organisations " +"ou financeurs, afin de calculer des besoins de stockage, ou mesurer les " +"demander en matière de services de gestion de données au travers des " +"disciplines.

    \n" +"\n" +"

    Liberté de l'information

    \n" +"\n" +"

    Le DCC et le CDL stockent vos plans, ceux ci demeurent votre " +"propriété et responsabilité.Tout candidat à la liberté de l'information en " +"sera référé à votre organisation.

    \n" +"\n" +"

    Mots de passe

    \n" +"

    Votre mot de passe est stocké de manière encryptée et ne peut être " +"retrouvé. En cas d'oubli, il doit être changé.

    \n" +"\n" +"

    Cookies

    \n" +"\n" +"

    Notez que DMPRoadmap utilise des cookies. De plus amples " +"informations à propos des cookies et comment nous les utilisons peuvent être " +"trouvés sur le site principal du DCC.

    \n" +"\n" +"

    APIs tierces

    \n" +"\n" +"

    Certaines fonctionnalités de ce site utilisent des services et APIs " +"tiers tels que InCommon/Shibboleth ou un hébergement tiers des libriaries " +"JavaScript communes ou des polices d'écritures. Les informations utilisées " +"par un service externe sont gouvernées parce la politique de confidentialité " +"de ce service.

    \n" +"\n" +"

    Révisions

    \n" +"\n" +"

    Cette déclaration a été mise à jour le 5 Octobre 2017 et peut etre " +"modifiée à tout moment. L'utilisation de cet outil indique que vous " +"comprenez et accepter ces conditions générales d'utilisation.

    " -#, fuzzy +msgid "" +"

    %{application_name} has been developed by the " +"%{organisation_name} to help you write data management " +"plans.

    " +msgstr "" +"

    %{application_name} a été développé par " +"%{organisation_name} afin de vous aider à rédiger des plans " +"de gestion de données.

    " + msgid "" "

    Hello %{user_name}.

    Your plan \"%{plan_name}\" has been submitted " "for feedback from an administrator at your organisation. If you have " "questions pertaining to this action, please contact us at " "%{organisation_email}.

    " -msgstr "Organisation" +msgstr "" +"

    Bonjour %{user_name}.

    Votre plan \"%{plan_name}\" a fait l'objet " +"d'une demande d'assistance conseil auprès d'un administrateur de votre " +"organisme. Si vous avez des questions concernant cette action, contactez " +"nous à %{organisation_email}.

    " msgid "" "

    To create a new template, first enter a title and description. Once you " @@ -354,12 +449,11 @@ "description. Un fois ces éléments enregistrés, le programme vous propose " "dajouter une phase ou plus.

    " -#, fuzzy msgid "" "

    When you log in to DMPRoadmap you will be directed to the 'My Dashboard' " "page. From here you can edit, share, download, copy or remove any of your " -"plans. You will also see plans that have been shared with you by others. \n" +"plans. You will also see plans that have been shared with you by others.

    " +"\n" "\n" "

    Create a plan

    \n" "\n" @@ -373,15 +467,15 @@ "

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

    \n" "