1.4.6 devel -> 1.4.6 stable (master)

This commit is contained in:
Karel Picman 2013-10-18 13:26:10 +02:00
commit 9f08673d18
120 changed files with 5237 additions and 3034 deletions

19
.travis.yml Normal file
View File

@ -0,0 +1,19 @@
language: ruby
rvm:
- 1.9.3
- 2.0.0
install: "echo skip bundle install"
script:
- export WORKSPACE=`pwd`/workspace
- export PATH_TO_DMSF=`pwd`
- export PATH_TO_REDMINE=$WORKSPACE/redmine
- mkdir $WORKSPACE
- cp config/database.yml.travis $WORKSPACE/database.yml
- bash -x ./test/ci/redmine_install.sh -r
- bash -x ./test/ci/redmine_install.sh -i
- bash -x ./test/ci/redmine_install.sh -t
- bash -x ./test/ci/redmine_install.sh -u

View File

@ -1,8 +1,25 @@
Changelog for Redmine DMSF
==========================
1.4.5: *2012-07-20*
1.4.6: *2013-10-18*
-----------------------
* New: Document approval workflow
* New: Slovene language translation
* Update: German language translation
* Revisit: Issue #34 - fix does not function as expected on Rails < 3.2.6, Redmine 2.0.3 dependency added.
* Fix: Issue #75 - Wrong filename encoding in emailed zip file
* Fix: Issue #87 - RoutingError (No route matches [GET] "/javascripts/jstoolbar/lang/jstoolbar-en-IS.js"):
* Fix: Issue #103 - Multiple DMSF tabs in Administration->Custom fields & localization
* Fix: Issue #110 - 'zip' gem conflicts with 'rubyzip' on Redmine XLS Export Plugin.
* Fix: Issue #112 - Uninstall command
* Fix: Issue #116 - Translation missing for DMSF custom field tabs
* Fix: Issue #146 - Problem with Russian file names in zip
* Fix: Issue #143 - Error on missing template - has to have to_s if adding to string
* Fix: Issue #148 - I don't have a notification sent out when I upload a file
* Fix: Issue #157 - Copying files/folders from one project to another project
1.4.5: *2012-07-20*
-----------------
* New: Settings introduced to enable read-only or read-write stance to be taken with webdav
* Fix: Issue #27 - incorrect call to display column information from database (redmine 1.x fragment).
* Fix: Issue #28 - incompatible SQL in db migration script for postgresql

10
Gemfile
View File

@ -1,11 +1,11 @@
source :rubygems
gem "rubyzip"
gem "simple_enum"
gem "nokogiri", ">= 1.4.2"
gem "uuidtools", "~> 2.1.1"
gem 'rubyzip', '>= 1.0.0'
gem 'zip-zip' # Just to avoid 'cannot load such file -- zip/zip' error
gem 'simple_enum'
gem 'uuidtools', '~> 2.1.1'
#Allows --without=xapian
group :xapian do
gem "xapian-full", :require => false
gem 'xapian-full', :require => false
end

View File

@ -1,7 +1,7 @@
Redmine DMSF Plugin
===================
The current version of Redmine DMSF is **1.4.5p1**
The current version of Redmine DMSF is **1.4.6**
Redmine DMSF is Document Management System Features plugin for Redmine issue tracking system; It is aimed to replace current Redmine's Documents module.
@ -50,8 +50,7 @@ As of version 1.4.4 of this plugin:
* Bundler 1.1 or greater (Gem)
* Redmine 2.0.x
* Rails 3.2.x (Inline with Redmine installation requirement)
* rubyzip (Gem)
* Nokogiri 1.4.2 or greater (Gem)
* rubyzip 1.0.0 (Gem)
* UUIDTools 2.1.1 or greater (less than 2.2.0) (Gem)
* simple_enum (Gem)
@ -159,13 +158,13 @@ If you want to use fulltext search features, you must setup file content indexin
It is necessary to index DMSF files with omega before searching attemts to recieve some output:
omindex -s english -l 1 -U / --db {path to index database from configuration} {path to storage from configuration}
omindex -s english --url / --db {path to index database from configuration} {path to storage from configuration}
This command must be run on regular basis (e.g. from cron)
Example of cron job (once per hour at 8th minute):
8 * * * * root /usr/bin/omindex -s english -l 1 -U / --db /opt/redmine/files/dmsf_index /opt/redmine/files/dmsf
8 * * * * root /usr/bin/omindex -s english --url / --db /vat/tmp/dmsf_index /opt/redmine/files/dmsf
Use omindex -h for help.

View File

@ -205,25 +205,45 @@ class DmsfController < ApplicationController
end
def notify_activate
if @folder.notification
if((@folder && @folder.notification) || (@folder.nil? && @project.dmsf_notification))
flash[:warning] = l(:warning_folder_notifications_already_activated)
else
@folder.notify_activate
if @folder
@folder.notify_activate
else
@project.dmsf_notification = true
@project.save
end
flash[:notice] = l(:notice_folder_notifications_activated)
end
redirect_to params[:current] ? params[:current] :
{:controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder.folder}
if params[:current]
redirect_to params[:current]
elsif @folder
redirect_to({:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder.folder})
else
redirect_to({:controller => 'dmsf', :action => 'show', :id => @project})
end
end
def notify_deactivate
if !@folder.notification
if((@folder && !@folder.notification) || (@folder.nil? && !@project.dmsf_notification))
flash[:warning] = l(:warning_folder_notifications_already_deactivated)
else
@folder.notify_deactivate
if @folder
@folder.notify_deactivate
else
@project.dmsf_notification = false
@project.save
end
flash[:notice] = l(:notice_folder_notifications_deactivated)
end
redirect_to params[:current] ? params[:current] :
{:controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder.folder}
if params[:current]
redirect_to params[:current]
elsif @folder
redirect_to({:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder.folder})
else
redirect_to({:controller => 'dmsf', :action => 'show', :id => @project})
end
end
@ -257,7 +277,21 @@ class DmsfController < ApplicationController
{:controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder.folder}
end
# def assign
# end
#
# def assignment
# revision = DmsfFileRevision.find_by_id params[:dmsf_file_revision_id]
# if revision
# revision.set_workflow(params[:dmsf_workflow_id], params[:action])
# revision.assign_workflow(params[:dmsf_workflow_id])
# if request.post? && revision.save
# flash[:notice] = l(:notice_successful_create)
# end
# end
# redirect_to params[:current] ? params[:current] :
# {:controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder.folder}
# end
private

View File

@ -26,6 +26,7 @@ class DmsfFilesController < ApplicationController
before_filter :authorize
helper :all
helper :dmsf_workflows
def show
# download is put here to provide more clear and usable links
@ -48,7 +49,11 @@ class DmsfFilesController < ApplicationController
end
end
check_project(@revision.file)
send_revision
begin
send_revision
rescue ActionController::MissingFile => e
render_404
end
return
end
@ -82,7 +87,7 @@ class DmsfFilesController < ApplicationController
@revision.major_version = last_revision.major_version
@revision.minor_version = last_revision.minor_version
@revision.workflow = last_revision.workflow
#@revision.workflow = last_revision.workflow
version = params[:version].to_i
file_upload = params[:file_upload]
if file_upload.nil?
@ -96,13 +101,14 @@ class DmsfFilesController < ApplicationController
@revision.disk_filename = @revision.new_storage_filename
@revision.mime_type = Redmine::MimeType.of(file_upload.original_filename)
end
@revision.set_workflow(params[:workflow])
#@revision.set_workflow(params[:dmsf_workflow_id], params[:commit])
@file.name = @revision.name
@file.folder = @revision.folder
if @revision.valid? && @file.valid?
@revision.save!
@revision.assign_workflow(params[:dmsf_workflow_id])
unless file_upload.nil?
@revision.copy_file_content(file_upload)
end
@ -123,7 +129,7 @@ class DmsfFilesController < ApplicationController
begin
DmsfMailer.files_updated(User.current, [@file]).deliver
rescue ActionView::MissingTemplate => e
Rails.logger.error "Could not send email notifications: " + e
Rails.logger.error "Could not send email notifications: #{e.message}"
end
redirect_to :action => "show", :id => @file
else

View File

@ -72,7 +72,7 @@ class DmsfFilesCopyController < ApplicationController
begin
DmsfMailer.files_updated(User.current, [new_file]).deliver
rescue ActionView::MissingTemplate => e
Rails.logger.error "Could not send email notifications: " + e
Rails.logger.error "Could not send email notifications: #{e.message}"
end
redirect_to :controller => "dmsf_files", :action => "show", :id => new_file
@ -110,7 +110,7 @@ class DmsfFilesCopyController < ApplicationController
# TODO: implement proper mail notification
DmsfMailer.files_updated(User.current, [@file]).deliver
rescue ActionView::MissingTemplate => e
Rails.logger.error "Could not send email notifications: " + e
Rails.logger.error "Could not send email notifications: #{e.message}"
end
redirect_to :controller => "dmsf_files", :action => "show", :id => @file

View File

@ -26,6 +26,7 @@ class DmsfUploadController < ApplicationController
before_filter :find_folder, :except => [:upload_file]
helper :all
helper :dmsf_workflows
def upload_files
uploaded_files = params[:uploaded_files]
@ -107,7 +108,7 @@ class DmsfUploadController < ApplicationController
new_revision.source_revision = last_revision
new_revision.major_version = last_revision.major_version
new_revision.minor_version = last_revision.minor_version
new_revision.workflow = last_revision.workflow
#new_revision.workflow = last_revision.workflow
end
commited_disk_filepath = "#{DmsfHelper.temp_dir}/#{commited_file["disk_filename"].gsub(/[\/\\]/,'')}"
@ -121,7 +122,6 @@ class DmsfUploadController < ApplicationController
new_revision.description = commited_file["description"]
new_revision.comment = commited_file["comment"]
new_revision.increase_version(commited_file["version"].to_i, true)
new_revision.set_workflow(commited_file["workflow"])
new_revision.mime_type = Redmine::MimeType.of(new_revision.name)
new_revision.size = File.size(commited_disk_filepath)
@ -133,8 +133,13 @@ class DmsfUploadController < ApplicationController
end
if file.locked?
file.unlock!
flash[:notice] = l(:notice_file_unlocked)
begin
file.unlock!
flash[:notice] = l(:notice_file_unlocked)
rescue DmsfLockError => e
flash[:error] = e.message
next
end
end
# Need to save file first to generate id for it in case of creation.
@ -147,6 +152,7 @@ class DmsfUploadController < ApplicationController
end
if new_revision.save
new_revision.assign_workflow(commited_file[:dmsf_workflow_id])
file.reload
new_revision.copy_file_content(file_upload)

View File

@ -0,0 +1,302 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DmsfWorkflowsController < ApplicationController
unloadable
layout :workflows_layout
before_filter :find_workflow, :except => [:create, :new, :index, :assign, :assignment]
before_filter :find_project, :except => [:start]
before_filter :authorize_global
before_filter :authorize_custom, :except => [:assignment, :start, :new_action]
def index
if @project
@workflow_pages, @workflows = paginate DmsfWorkflow.where(:project_id => @project.id), :per_page => 25
else
@workflow_pages, @workflows = paginate DmsfWorkflow.where(:project_id => nil), :per_page => 25
end
end
def action
end
def new_action
if params[:commit] == l(:button_submit)
action = DmsfWorkflowStepAction.new(
:dmsf_workflow_step_assignment_id => params[:dmsf_workflow_step_assignment_id],
:action => (params[:step_action].to_i >= 10) ? DmsfWorkflowStepAction::ACTION_DELEGATE : params[:step_action],
:note => params[:note])
if request.post?
if action.save
revision = DmsfFileRevision.find_by_id params[:dmsf_file_revision_id]
if revision
if @workflow.try_finish revision, action, (params[:step_action].to_i / 10)
file = DmsfFile.joins(:revisions).where(:dmsf_file_revisions => {:id => revision.id}).first
if file
begin
file.unlock!
rescue DmsfLockError => e
logger.error e.message
end
end
if revision.workflow == DmsfWorkflow::STATE_APPROVED
# Just approved
DmsfMailer.workflow_notification(
revision.file.project.members.collect{ |member| member.user.mail},
@workflow,
revision,
"Approval workflow #{@workflow.name} approved",
'been finished and the document has been approved',
'To see the approval history click on the workflow status of the document in').deliver
else
# Just rejected
owner = User.find_by_id revision.dmsf_workflow_assigned_by
DmsfMailer.workflow_notification(
@workflow.participiants.collect{ |user| user.mail} << owner.mail,
@workflow,
revision,
"Approval workflow #{@workflow.name} rejected",
"been finished and the document has been rejected because of '#{action.note}'",
'To see the approval history click on the workflow status of the document in').deliver
end
else
if action.action == DmsfWorkflowStepAction::ACTION_DELEGATE
# Delegation
delegate = User.find_by_id params[:step_action].to_i / 10
DmsfMailer.workflow_notification(
delegate.mail,
@workflow,
revision,
"Approval workflow #{@workflow.name} step delegated",
"been delegated because of '#{action.note}' and you are expected to do an approval in the current approval step",
'To proceed click on the check box icon next to the document in').deliver
else
# Next step
assignments = @workflow.next_assignments revision.id
unless assignments.empty?
if assignments.first.dmsf_workflow_step.step != action.dmsf_workflow_step_assignment.dmsf_workflow_step.step
# Next step
DmsfMailer.workflow_notification(
assignments.collect{ |assignment| assignment.user.mail},
@workflow,
revision,
"Approval workflow #{@workflow.name} requires your approval",
'finished one of the approval steps and you are expected to do an approval in the next approval step',
'To proceed click on the check box icon next to the document in the').deliver
owner = User.find_by_id revision.dmsf_workflow_assigned_by
DmsfMailer.workflow_notification(
owner.mail,
@workflow,
revision,
"Approval workflow #{@workflow.name} updated",
'finished one of the approval steps',
'To see the current status of the approval workflow click on the workflow status the document in').deliver
end
end
end
end
end
flash[:notice] = l(:notice_successful_update)
elsif action.action != DmsfWorkflowStepAction::ACTION_APPROVE && action.note.blank?
flash[:error] = l(:error_empty_note)
end
end
end
redirect_to :back
end
def assign
end
def assignment
if params[:commit] == l(:button_submit)
revision = DmsfFileRevision.find_by_id params[:dmsf_file_revision_id]
if revision
revision.set_workflow(params[:dmsf_workflow_id], params[:action])
if params[:dmsf_workflow_id].present?
revision.assign_workflow(params[:dmsf_workflow_id])
if request.post?
if revision.save
file = DmsfFile.find_by_id revision.dmsf_file_id
file.lock! if file
flash[:notice] = l(:notice_successful_update)
else
flash[:error] = l(:error_workflow_assign)
end
end
end
end
end
redirect_to :back
end
def log
end
def new
@workflow = DmsfWorkflow.new
end
def create
@workflow = DmsfWorkflow.new(:name => params[:name], :project_id => params[:project_id])
if request.post? && @workflow.save
flash[:notice] = l(:notice_successful_create)
if @project
redirect_to settings_project_path(@project, :tab => 'dmsf_workflow')
else
redirect_to dmsf_workflows_path
end
else
render :action => 'new'
end
end
def edit
end
def update
if request.put? && @workflow.update_attributes({:name => params[:name]})
flash[:notice] = l(:notice_successful_update)
if @project
redirect_to settings_project_path(@project, :tab => 'dmsf_workflow')
else
redirect_to dmsf_workflows_path
end
else
render :action => 'edit'
end
end
def destroy
begin
@workflow.destroy
flash[:notice] = l(:notice_successful_delete)
rescue
flash[:error] = l(:error_unable_delete_dmsf_workflow)
end
if @project
redirect_to settings_project_path(@project, :tab => 'dmsf_workflow')
else
redirect_to dmsf_workflows_path
end
end
def autocomplete_for_user
render :layout => false
end
def add_step
if request.post?
users = User.find_all_by_id(params[:user_ids])
if params[:step] == '0'
step = @workflow.dmsf_workflow_steps.collect{|s| s.step}.uniq.count + 1
else
step = params[:step].to_i
end
operator = (params[:commit] == l(:dmsf_and)) ? DmsfWorkflowStep::OPERATOR_AND : DmsfWorkflowStep::OPERATOR_OR
users.each do |user|
@workflow.dmsf_workflow_steps << DmsfWorkflowStep.new(
:dmsf_workflow_id => @workflow.id,
:step => step,
:user_id => user.id,
:operator => operator)
end
end
respond_to do |format|
format.html
end
end
def remove_step
if request.delete?
DmsfWorkflowStep.where(:dmsf_workflow_id => @workflow.id, :step => params[:step]).each do |ws|
@workflow.dmsf_workflow_steps.delete(ws)
end
@workflow.dmsf_workflow_steps.each do |ws|
n = ws.step.to_i
if n > params[:step].to_i
ws.step = n - 1
unless ws.save
flash[:error] = l(:notice_cannot_renumber_steps)
end
end
end
end
respond_to do |format|
format.html
end
end
def reorder_steps
if request.put?
unless @workflow.reorder_steps(params[:step].to_i, params[:workflow_step][:move_to])
flash[:error] = l(:notice_cannot_renumber_steps)
end
end
respond_to do |format|
format.html
end
end
def start
revision = DmsfFileRevision.find_by_id(params[:dmsf_file_revision_id])
if revision
if request.post?
revision.set_workflow(@workflow.id, params[:action])
if revision.save
assignments = @workflow.next_assignments revision.id
DmsfMailer.workflow_notification(
assignments.collect{ |assignment| assignment.user.mail},
@workflow,
revision,
"Approval workflow #{@workflow.name} started",
'been started and you are expected to do an approval in the current approval step',
'To proceed click on the check box icon next to the document in').deliver
flash[:notice] = l(:notice_workflow_started)
else
flash[:error] = l(:notice_cannot_start_workflow)
end
end
end
redirect_to :back
end
private
def find_workflow
@workflow = DmsfWorkflow.find_by_id(params[:id])
end
def find_project
if @workflow && @workflow.project
@project = @workflow.project
elsif params[:project_id].present?
@project = Project.find_by_id params[:project_id]
end
end
def workflows_layout
find_workflow
find_project
@project ? 'base' : 'admin'
end
def authorize_custom
require_admin unless @project
end
end

View File

@ -0,0 +1,65 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module DmsfWorkflowsHelper
def render_principals_for_new_dmsf_workflow_users(workflow, dmsf_workflow_step_assignment_id, dmsf_file_revision_id)
scope = workflow.delegates(params[:q], dmsf_workflow_step_assignment_id, dmsf_file_revision_id)
principal_count = scope.count
principal_pages = Redmine::Pagination::Paginator.new principal_count, 10, params['page']
principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all
if dmsf_workflow_step_assignment_id
s = content_tag('div', principals_radio_button_tags('step_action', principals), :id => 'users_for_delegate')
else
s = content_tag('div', principals_check_box_tags('user_ids[]', principals), :id => 'users')
end
links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options|
link_to text, autocomplete_for_user_dmsf_workflow_path(workflow, parameters.merge(:q => params[:q], :format => 'js')), :remote => true
}
s + content_tag('p', links, :class => 'pagination')
s.html_safe
end
def dmsf_workflow_steps_options_for_select(steps)
options = Array.new
options << [l(:dmsf_new_step), 0]
steps.each do |step|
options << [step.to_s, step]
end
options_for_select(options, 0)
end
def dmsf_workflows_for_select(project, dmsf_workflow_id)
options = Array.new
DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', project.id]).each do |wf|
options << [wf.name, wf.id]
end
options_for_select(options, :selected => dmsf_workflow_id)
end
def principals_radio_button_tags(name, principals)
s = ''
principals.each do |principal|
s << "<label>#{ radio_button_tag name, principal.id * 10, false, :id => nil } #{h principal}</label>\n"
end
s.html_safe
end
end

View File

@ -125,23 +125,23 @@ class DmsfFile < ActiveRecord::Base
end
def title
self.last_revision.title
self.last_revision ? self.last_revision.title : self.name
end
def description
self.last_revision.description
self.last_revision ? self.last_revision.description : ''
end
def version
self.last_revision.version
self.last_revision ? self.last_revision.version : '0'
end
def workflow
self.last_revision.workflow
self.last_revision ? self.last_revision.workflow : nil
end
def size
self.last_revision.size
self.last_revision ? self.last_revision.size : 0
end
def dmsf_path
@ -151,14 +151,13 @@ class DmsfFile < ActiveRecord::Base
end
def dmsf_path_str
path = self.dmsf_path
string_path = path.map { |element| element.title }
string_path.join("/")
self.dmsf_path.map { |element| element.title }.join('/')
end
def notify?
return true if self.notification
return true if folder && folder.notify?
return true if !folder && self.project.dmsf_notification
return false
end
@ -215,7 +214,7 @@ class DmsfFile < ActiveRecord::Base
new_revision = self.last_revision.clone
new_revision.folder = folder ? folder : nil
new_revision.folder = folder
new_revision.project = folder ? folder.project : project
new_revision.comment = l(:comment_moved_from, :source => "#{self.project.identifier}:#{self.dmsf_path_str}")
@ -231,24 +230,31 @@ class DmsfFile < ActiveRecord::Base
end
end
# If the target project differs from the source project we must physically move the file
if self.project != new_revision.project
if File.exist? self.last_revision.disk_file
File.move self.last_revision.disk_file, new_revision.disk_file
end
end
self.folder = new_revision.folder
self.project = new_revision.project
return self.save && new_revision.save
self.save && new_revision.save
end
def copy_to(project, folder)
file = DmsfFile.new
file.folder = folder ? folder : nil
file.folder = folder
file.project = folder ? folder.project : project
file.name = self.name
file.notification = !Setting.plugin_redmine_dmsf["dmsf_default_notifications"].blank?
file.notification = Setting.plugin_redmine_dmsf['dmsf_default_notifications'].present?
if file.save
new_revision = self.last_revision.clone
new_revision.file = file
new_revision.folder = folder ? folder : nil
new_revision.folder = folder
new_revision.project = folder ? folder.project : project
new_revision.comment = l(:comment_copied_from, :source => "#{self.project.identifier}: #{self.dmsf_path_str}")
@ -266,6 +272,13 @@ class DmsfFile < ActiveRecord::Base
unless new_revision.save
file.delete
else
# If the target project differs from the source project we must physically copy the file
if project != self.project
if File.exist? self.last_revision.disk_file
File.copy self.last_revision.disk_file, new_revision.disk_file
end
end
end
end

View File

@ -25,6 +25,7 @@ class DmsfFileRevision < ActiveRecord::Base
belongs_to :deleted_by_user, :class_name => "User", :foreign_key => "deleted_by_user_id"
belongs_to :project
has_many :access, :class_name => "DmsfFileRevisionAccess", :foreign_key => "dmsf_file_revision_id", :dependent => :destroy
has_many :dmsf_workflow_step_assignment, :dependent => :destroy
#Returns a list of revisions that are not deleted here, or deleted at parent level either
scope :visible, lambda {|*args| joins(:file).where(DmsfFile.visible_condition(args.shift || User.current, *args)).where("#{self.table_name}.deleted = :false", :false => false ).readonly(false) }
@ -155,31 +156,44 @@ class DmsfFileRevision < ActiveRecord::Base
return new_revision
end
#TODO: validate if it isn't doubled or move it to view
def workflow_str
def workflow_str(name)
str = ''
if name && dmsf_workflow_id
wf = DmsfWorkflow.find_by_id(dmsf_workflow_id)
str = "#{wf.name} - " if wf
end
case workflow
when 1 then l(:title_waiting_for_approval)
when 2 then l(:title_approved)
else nil
when DmsfWorkflow::STATE_WAITING_FOR_APPROVAL
str + l(:title_waiting_for_approval)
when DmsfWorkflow::STATE_APPROVED
str + l(:title_approved)
when DmsfWorkflow::STATE_ASSIGNED
str + l(:title_assigned)
when DmsfWorkflow::STATE_REJECTED
str + l(:title_rejected)
else
str + l(:title_none)
end
end
def set_workflow(workflow)
if User.current.allowed_to?(:file_approval, self.file.project)
self.workflow = workflow
def set_workflow(dmsf_workflow_id, commit)
self.dmsf_workflow_id = dmsf_workflow_id
if commit == 'start'
self.workflow = DmsfWorkflow::STATE_WAITING_FOR_APPROVAL
self.dmsf_workflow_started_by = User.current.id if User.current
self.dmsf_workflow_started_at = DateTime.now
else
if self.source_revision.nil?
self.workflow = workflow == 2 ? 1 : workflow
else
if workflow == 2 || self.source_revision.workflow == 1 || self.source_revision.workflow == 2
self.workflow = 1
else
self.workflow = workflow
end
end
self.workflow = DmsfWorkflow::STATE_ASSIGNED
self.dmsf_workflow_assigned_by = User.current.id if User.current
self.dmsf_workflow_assigned_at = DateTime.now
end
end
def assign_workflow(dmsf_workflow_id)
wf = DmsfWorkflow.find_by_id(dmsf_workflow_id)
wf.assign(self.id) if wf && self.id
end
def increase_version(version_to_increase, new_content)
if new_content
self.minor_version = case version_to_increase

View File

@ -115,6 +115,7 @@ class DmsfFolder < ActiveRecord::Base
def notify?
return true if self.notification
return true if folder && folder.notify?
return true if !folder && self.project.dmsf_notification
return false
end

View File

@ -1,6 +1,7 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011 Vít Jonáš <vit.jonas@gmail.com>
# Copyright (C) 2012 Daniel Munn <dan.munn@munnster.co.uk>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -17,7 +18,6 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DmsfLock < ActiveRecord::Base
# unloadable
before_create :generate_uuid
belongs_to :file, :class_name => "DmsfFile", :foreign_key => "entity_id"
belongs_to :folder, :class_name => "DmsfFolder", :foreign_key => "entity_id"

View File

@ -57,6 +57,20 @@ class DmsfMailer < Mailer
mail(:to => email_to, :cc => email_cc, :subject => email_subject, :from => user.mail)
end
def workflow_notification(to, workflow, revision, subject, text1, text2)
set_language_if_valid User.current.language
@workflow = workflow
@revision = revision
@text1 = "The approval workflow '#{@workflow.name}' assigned to '#{@revision.file.name}' document has just #{text1}."
unless @revision.folder
url = url_for(:controller => 'dmsf', :action => 'edit_root', :id => @revision.file.project, :only_path => false)
else
url = url_for(:controller => 'dmsf', :action => 'edit', :id => @revision.file.project, :folder_id => @revision.folder, :only_path => false)
end
@text2 = "#{text2} #{url}."
mail :to => to, :subject => subject
end
private
def get_notify_user_emails(user, files)

View File

@ -0,0 +1,22 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011 Vít Jonáš <vit.jonas@gmail.com>
# Copyright (C) 2012 Daniel Munn <dan.munn@munnster.co.uk>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DmsfPermission < ActiveRecord::Base
as_enum :scope, [:SCOPE_WRITE, :SCOPE_READ, :SCOPE_MODIFY, :SCOPE_LOCK, :SCOPE]
end

205
app/models/dmsf_workflow.rb Normal file
View File

@ -0,0 +1,205 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DmsfWorkflow < ActiveRecord::Base
has_many :dmsf_workflow_steps, :dependent => :destroy, :order => 'step ASC, operator DESC'
validates_uniqueness_of :name, :case_sensitive => false
validates :name, :presence => true
validates_length_of :name, :maximum => 255
STATE_NONE = nil
STATE_ASSIGNED = 3
STATE_WAITING_FOR_APPROVAL = 1
STATE_APPROVED = 2
STATE_REJECTED = 4
def participiants
users = Array.new
self.dmsf_workflow_steps.each do |step|
users << step.user
end
users
end
def self.workflows(project)
project ? where(:project_id => project) : where('project_id IS NULL')
end
def project
Project.find_by_id(project_id) if project_id
end
def to_s
name
end
def reorder_steps(step, move_to)
DmsfWorkflow.transaction do
case move_to
when 'highest'
unless step == 1
dmsf_workflow_steps.each do |ws|
if ws.step < step
return false unless ws.update_attribute('step', ws.step + 1)
elsif ws.step == step
return false unless ws.update_attribute('step', 1)
end
end
end
when 'higher'
unless step == 1
dmsf_workflow_steps.each do |ws|
if ws.step == step - 1
return false unless ws.update_attribute('step', step)
elsif ws.step == step
return false unless ws.update_attribute('step', step - 1)
end
end
end
when 'lower'
unless step == dmsf_workflow_steps.collect{|s| s.step}.uniq.count
dmsf_workflow_steps.each do |ws|
if ws.step == step + 1
return false unless ws.update_attribute('step', step)
elsif ws.step == step
return false unless ws.update_attribute('step', step + 1)
end
end
end
when 'lowest'
size = dmsf_workflow_steps.collect{|s| s.step}.uniq.count
unless step == size
dmsf_workflow_steps.each do |ws|
if ws.step > step
return false unless ws.update_attribute('step', ws.step - 1)
elsif ws.step == step
return false unless ws.update_attribute('step', size)
end
end
end
end
end
return reload
end
def delegates(q, dmsf_workflow_step_assignment_id, dmsf_file_revision_id)
if dmsf_workflow_step_assignment_id && dmsf_file_revision_id
sql = [
'id NOT IN (SELECT a.user_id FROM dmsf_workflow_step_assignments a WHERE id = ?) AND id IN (SELECT m.user_id FROM members m JOIN dmsf_files f ON f.project_id = m.project_id JOIN dmsf_file_revisions r ON r.dmsf_file_id = f.id WHERE r.id = ?)',
dmsf_workflow_step_assignment_id,
dmsf_file_revision_id]
else
sql = '1=1'
end
unless q.nil? || q.empty?
User.active.sorted.where(sql).like(q)
else
User.active.sorted.where(sql)
end
end
def next_assignments(dmsf_file_revision_id)
results = Array.new
nsteps = self.dmsf_workflow_steps.collect{|s| s.step}.uniq
nsteps.each do |i|
step_is_finished = false
steps = self.dmsf_workflow_steps.collect{|s| s.step == i ? s : nil}.compact
steps.each do |step|
step.dmsf_workflow_step_assignments.each do |assignment|
if assignment.dmsf_file_revision_id == dmsf_file_revision_id
assignment.dmsf_workflow_step_actions.each do |action|
case action.action
when DmsfWorkflowStepAction::ACTION_APPROVE
step_is_finished = true
# Try to find another unfinished AND step
exists = false
stps = self.dmsf_workflow_steps.collect{|s| (s.step == i && s.operator == DmsfWorkflowStep::OPERATOR_AND) ? s : nil}.compact
stps.each do |s|
s.dmsf_workflow_step_assignments.each do |a|
exists = a.add?(dmsf_file_revision_id)
break if exists
end
end
step_is_finished = false if exists
break
when DmsfWorkflowStepAction::ACTION_REJECT
return Array.new
end
end
end
break if step_is_finished
end
if step_is_finished
break
else
steps.each do |step|
step.dmsf_workflow_step_assignments.each do |assignment|
results << assignment if assignment.add?(dmsf_file_revision_id)
end
end
return results
end
end
end
results
end
def self.assignments_to_users_str(assignments)
str = ''
if assignments
assignments.each_with_index do |assignment, index|
if index > 0
str << ', '
end
str << assignment.user.name
end
end
str
end
def assign(dmsf_file_revision_id)
dmsf_workflow_steps.each do |ws|
ws.assign(dmsf_file_revision_id)
end
end
def try_finish(revision, action, user_id)
case action.action
when DmsfWorkflowStepAction::ACTION_APPROVE
assignments = self.next_assignments revision.id
return false unless assignments.empty?
revision.update_attribute(:workflow, DmsfWorkflow::STATE_APPROVED)
return true
when DmsfWorkflowStepAction::ACTION_REJECT
revision.update_attribute(:workflow, DmsfWorkflow::STATE_REJECTED)
return true
when DmsfWorkflowStepAction::ACTION_DELEGATE
self.dmsf_workflow_steps.each do |step|
step.dmsf_workflow_step_assignments.each do |assignment|
if assignment.id == action.dmsf_workflow_step_assignment_id
assignment.update_attribute(:user_id, user_id)
return false
end
end
end
end
return false
end
end

View File

@ -0,0 +1,61 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DmsfWorkflowStep < ActiveRecord::Base
belongs_to :workflow
has_many :dmsf_workflow_step_assignments, :dependent => :destroy
validates :dmsf_workflow_id, :presence => true
validates :step, :presence => true
validates :user_id, :presence => true
validates :operator, :presence => true
validates_uniqueness_of :user_id, :scope => [:dmsf_workflow_id, :step]
OPERATOR_OR = 0
OPERATOR_AND = 1
def soperator
operator == 1 ? l(:dmsf_and) : l(:dmsf_or)
end
def user
User.find(user_id)
end
def assign(dmsf_file_revision_id)
step_assignment = DmsfWorkflowStepAssignment.new(
:dmsf_workflow_step_id => id,
:user_id => user_id,
:dmsf_file_revision_id => dmsf_file_revision_id)
step_assignment.save
end
def is_finished?(dmsf_file_revision_id)
self.dmsf_workflow_step_assignments.each do |assignment|
if assignment.dmsf_file_revision_id == dmsf_file_revision_id
if assignment.dmsf_workflow_step_actions.empty?
return false
end
assignment.dmsf_workflow_step_actions.each do |act|
return false unless act.is_finished?
end
end
end
end
end

View File

@ -0,0 +1,98 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DmsfWorkflowStepAction < ActiveRecord::Base
belongs_to :dmsf_workflow_step_assignment
validates :dmsf_workflow_step_assignment_id, :presence => true
validates :action, :presence => true
validates :note, :presence => true, :unless => lambda { self.action == DmsfWorkflowStepAction::ACTION_APPROVE }
validates :author_id, :presence => true
validates_uniqueness_of :dmsf_workflow_step_assignment_id, :scope => [:action], :unless => lambda {self.action == DmsfWorkflowStepAction::ACTION_DELEGATE}
ACTION_APPROVE = 1
ACTION_REJECT = 2
ACTION_DELEGATE = 3
ACTION_ASSIGN = 4
ACTION_START = 5
def initialize(*args)
super
self.author_id = User.current.id if User.current
end
def self.is_finished?(action)
action == DmsfWorkflowStepAction::ACTION_APPROVE ||
action == DmsfWorkflowStepAction::ACTION_REJECT
end
def is_finished?
DmsfWorkflowStepAction.is_finished? self.action
end
def self.action_str(action)
if action
case action.to_i
when ACTION_APPROVE
l(:title_approval)
when ACTION_REJECT
l(:title_rejection)
when ACTION_DELEGATE
l(:title_delegation)
when ACTION_ASSIGN
l(:title_assignment)
when ACTION_START
l(:title_start)
end
end
end
def self.action_type_str(action)
if action
case action.to_i
when ACTION_APPROVE
'approval'
when ACTION_REJECT
'rejection'
when ACTION_DELEGATE
'delegation'
when ACTION_ASSIGN
'assignment'
when ACTION_START
'start'
end
end
end
def self.workflow_str(action)
if action
case action.to_i
when ACTION_REJECT
l(:title_rejected)
when ACTION_ASSIGN
l(:title_assigned)
when ACTION_START, ACTION_DELEGATE, ACTION_APPROVE
l(:title_waiting_for_approval)
else
l(:title_none)
end
end
end
end

View File

@ -0,0 +1,40 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class DmsfWorkflowStepAssignment < ActiveRecord::Base
belongs_to :dmsf_workflow_step
belongs_to :user
has_many :dmsf_workflow_step_actions, :dependent => :destroy
validates :dmsf_workflow_step_id, :presence => true
validates :dmsf_file_revision_id, :presence => true
validates_uniqueness_of :dmsf_workflow_step_id, :scope => [:dmsf_file_revision_id]
def add?(dmsf_file_revision_id)
if self.dmsf_file_revision_id == dmsf_file_revision_id
add = true
self.dmsf_workflow_step_actions.each do |action|
if action.is_finished?
add = false
break
end
end
return add
end
false
end
end

View File

@ -1,8 +0,0 @@
<%= link_to(l(:link_documents), {:controller => "dmsf", :action => "show", :id=> @project }) %>
<% path.each do |path_element| %>
/
<%= link_to(h(path_element.title), {:controller => "dmsf", :action => "show", :id=> @project, :folder_id => path_element}) %>
<% if path_element.notification %>
<%= image_tag("notify.png", :plugin => "redmine_dmsf", :title => l(:title_notifications_active)) %>
<% end %>
<% end %>

View File

@ -7,9 +7,15 @@
<%
create = @pathfolder == @parent
%>
<h2>
<%= render(:partial => "path", :locals => {:path => @pathfolder.nil? ? [] : @pathfolder.dmsf_path}) %>
<%= ("/ " + l(:heading_new_folder)) if create %>
<% path = @pathfolder ? @pathfolder.dmsf_path : [] %>
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
<% path.each do |path_element| %>
/
<%= link_to h(path_element.title), {:controller => 'dmsf', :action => 'show', :id=> @project, :folder_id => path_element} %>
<% end %>
<%= "/ #{l(:heading_new_folder)}" if create %>
</h2>
<%= form_for(@folder, :url => {:action => create ? "create" : "save", :id => @project, :folder_id => @folder, :parent_id => @parent},
@ -28,7 +34,8 @@
<%= label_tag("", l(:field_folder) + ":") %>
<%= f.select(:dmsf_folder_id,
options_for_select(DmsfFolder.directory_tree(@project, @folder),
:selected => @folder.nil? ? (@pathfolder.id unless @pathfolder.nil?) : (@folder.folder.id unless @folder.folder.nil?))) %>
:selected => @parent? @parent.id : (@pathfolder.id if @pathfolder)))
%>
</p>
</div>
</div>

View File

@ -3,23 +3,25 @@
<div class="contextual">
</div>
<h2><%= render(:partial => "path", :locals => {:path => []}) %></h2>
<h2>
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id => @project } %>
</h2>
<%= form_for(@project, :url => {:action => "save_root", :id => @project},
:html => {:method=>:post}) do |f| %>
<div class="box dmsf_detail">
<p class="no-ident">
<%= label_tag("project_dmsf_description", l(:label_description) + ":") %>
</p>
<div class="wiki data clear">
<%= f.text_area(:dmsf_description, :rows => 15, :class => "wiki-edit") %>
</div>
</div>
<%= submit_tag(l(:submit_save)) %>
<%= form_for(@project, :url => {:action => 'save_root', :id => @project},
:html => {:method=>:post}) do |f| %>
<div class="box dmsf_detail">
<p class="no-ident">
<%= label_tag('project_dmsf_description', "#{l(:label_description)}:") %>
</p>
<div class="wiki data clear">
<%= f.text_area(:dmsf_description, :rows => 15, :class => 'wiki-edit') %>
</div>
</div>
<%= submit_tag(l(:submit_save)) %>
<% end %>
<%= wikitoolbar_for "dmsf_folder_description" %>
<%= wikitoolbar_for 'dmsf_folder_description' %>
<% content_for :header_tags do %>
<%= stylesheet_link_tag "dmsf", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %>
<% end %>

View File

@ -3,9 +3,13 @@
<div class="contextual">
</div>
<% path = @folder.nil? ? [] : @folder.dmsf_path %>
<h2>
<%= render(:partial => 'path', :locals => {:path => path}) %>
<% path = @folder ? @folder.dmsf_path : [] %>
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
<% path.each do |path_element| %>
/
<%= link_to h(path_element.title), {:controller => 'dmsf', :action => 'show', :id=> @project, :folder_id => path_element} %>
<% end %>
</h2>
<h3><%= l(:heading_send_documents_by_email) %></h3>

View File

@ -1,40 +1,56 @@
<% html_title(l(:dmsf)) %>
<div class="contextual">
<% if User.current.allowed_to?(:folder_manipulation, @project) %>
<% if !@folder.nil? && (!@folder.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)) %>
<% if @folder.locked? %>
<% unless @folder.unlockable? %>
<%= image_tag("locked.png", :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => @folder.folder.lock.reverse[0].folder.title)) unless @folder.nil?%>
<% else %>
<%= link_to_function(image_tag("unlock.png", :plugin => "redmine_dmsf"),
"manipulation_link('#{url_for(:action => 'unlock', :id => @project, :folder_id => @folder, :current => request.url)}')",
:title => l(:title_unlock_folder)) unless @folder.nil?%>
<% end %>
<% else %>
<%= link_to_function(image_tag("lock.png", :plugin => "redmine_dmsf"),
"manipulation_link('#{url_for(:action => 'lock', :id => @project, :folder_id => @folder, :current => request.url)}')",
:title => l(:title_lock_folder)) unless @folder.nil?%>
<% end %>
<% end %>
<% if @folder.nil? %>
&nbsp;
<%= link_to("", {:action => "edit_root", :id => @project},
:title => l(:link_edit, :title => l(:link_documents)), :class => "icon icon-edit") %>
<% elsif (!@folder.nil? && !@folder.locked_for_user? ) %>
&nbsp;
<%= link_to("", {:action => "edit", :id => @project, :folder_id => @folder },
:title => l(:link_edit, :title => h(@folder.title)), :class => "icon icon-edit") %>
<% end %>
&nbsp;
<%= link_to("", {:action => "new", :id => @project, :parent_id => @folder },
:title => l(:link_create_folder), :class => "icon icon-add") unless (!@folder.nil? && @folder.locked_for_user?) %>
<% end %>
<% if User.current.allowed_to?(:folder_manipulation, @project) %>
<% if @folder.nil? %>
&nbsp;
<%= link_to('', {:action => 'edit_root', :id => @project},
:title => l(:link_edit, :title => l(:link_documents)), :class => 'icon icon-edit') %>
<% elsif (@folder && !@folder.locked_for_user? ) %>
&nbsp;
<%= link_to('', {:action => 'edit', :id => @project, :folder_id => @folder },
:title => l(:link_edit, :title => h(@folder.title)), :class => 'icon icon-edit') %>
<% end %>
<% if @folder && (!@folder.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)) %>
<% if @folder.locked? %>
<% unless @folder.unlockable? %>
<%= image_tag('locked.png', :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => @folder.folder.lock.reverse[0].folder.title)) unless @folder.nil?%>
<% else %>
<%= link_to_function(image_tag('unlock.png', :plugin => 'redmine_dmsf'),
"manipulation_link('#{url_for(:action => 'unlock', :id => @project, :folder_id => @folder, :current => request.url)}')",
:title => l(:title_unlock_folder)) if @folder %>
<% end %>
<% else %>
<%= link_to_function(image_tag('lock.png', :plugin => 'redmine_dmsf'),
"manipulation_link('#{url_for(:action => 'lock', :id => @project, :folder_id => @folder, :current => request.url)}')",
:title => l(:title_lock_folder)) if @folder %>
<% end %>
<% end %>
<% unless @folder %>
&nbsp;
<% if @project.dmsf_notification %>
<%= link_to_function(image_tag('notify.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @project)}')",
:title => l(:title_notifications_active_deactivate)) %>
<% else %>
<%= link_to_function(image_tag('notifynot.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:action => 'notify_activate', :id => @project)}')",
:title => l(:title_notifications_not_active_activate)) %>
<% end %>
<% end %>
&nbsp;
<%= link_to('', {:action => 'new', :id => @project, :parent_id => @folder },
:title => l(:link_create_folder), :class => 'icon icon-add') unless (@folder && @folder.locked_for_user?) %>
<% end %>
</div>
<% path = @folder.nil? ? [] : @folder.dmsf_path %>
<h2>
<%= render(:partial => 'path', :locals => {:path => path}) %>
<% path = @folder ? @folder.dmsf_path : [] %>
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
<% path.each do |path_element| %>
/
<%= link_to h(path_element.title), {:controller => 'dmsf', :action => 'show', :id=> @project, :folder_id => path_element} %>
<% end %>
</h2>
<div class="dmsf-header">
@ -43,212 +59,271 @@
</div>
<%= render "custom_fields", :object => @folder %>
</div>
<%= error_messages_for('dmsf_workflow') %>
<%= form_tag({:action => :entries_operation, :id => @project, :folder_id => @folder}, :method => :post,
:class => "dmfs_entries", :id => "entries_form") do %>
<%= hidden_field_tag("action") %>
<div class="controls" style="float: left">
<%= submit_tag(l(:submit_download), :title => l(:title_download_checked), :name => "download_entries") %>
<%= submit_tag(l(:submit_email), :title => l(:title_send_checked_by_email), :name => "email_entries") %>
<% if User.current.allowed_to?(:file_manipulation, @project) && (!@folder.nil? && !@folder.locked_for_user?) %>
<button type="button" id="entries_delete_button" title="<%=l(:title_delete_checked)%>"><%=l(:button_delete)%></button>
<% end %>
</div>
<table class="display entries" id="browser">
<thead>
<tr id="root">
<th class="check">
<input id="check_all_entries" title="<%= l(:title_check_uncheck_all_for_zip_download_or_email) %>" type="checkbox" />
</th>
<th><%= l(:link_title) %></th>
<th><%= l(:link_size) %></th>
<th><%= l(:link_modified) %></th>
<th><%= l(:link_ver) %></th>
<th><%= l(:link_author) %></th>
<th></th>
<th class="hidden"></th>
<th class="hidden"></th>
</tr>
</thead>
<tbody>
<% @subfolders.each do |subfolder| %>
<tr class="dir">
<td class="check"><%= check_box_tag("subfolders[]", subfolder.id, false, :title => l(:title_check_for_zip_download_or_email)) %></td>
<td class="title">
<%= link_to(h(subfolder.title),
{:action => "show", :id => @project, :folder_id => subfolder},
:class => "icon icon-folder") %>
<div class="filename" title="<%= l(:title_number_of_files_in_directory)%>">[<%= subfolder.deep_file_count %>]</div>
<%= render "custom_fields", :object => subfolder %>
</td>
<td class="size" title="<%= l(:title_total_size_of_all_files)%>"><%= number_to_human_size(subfolder.deep_size) %></td>
<td class="modified"><%= format_time(subfolder.updated_at) %>
<% if subfolder.locked_for_user? %>
<%= link_to(image_tag("locked.png", :plugin => :redmine_dmsf),
{:controller => "users", :action => "show", :id => subfolder.lock.reverse[0].user },
:title => l(:title_locked_by_user, :user => subfolder.lock.reverse[0].user.to_s)) %>
<% elsif subfolder.locked? %>
<%= image_tag("lockedbycurrent.png", :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %>
<% end %>
</td>
<td class="version"></td>
<td class="author"><%= h(subfolder.user) %></td>
<td class="actions">
<% if User.current.allowed_to?(:file_approval, @project) %>
<div class="right_icon_box">
<% if subfolder.notification %>
<%= link_to_function(image_tag("notify.png", :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @project, :folder_id => subfolder)}')",
:title => l(:title_notifications_active_deactivate)) %>
<% else %>
<%= link_to_function(image_tag("notifynot.png", :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:action => 'notify_activate', :id => @project, :folder_id => subfolder)}')",
:title => l(:title_notifications_not_active_activate)) %>
<% end %>
</div>
<% end %>
<div class="right_icon_box" style="width: 70px;">
<% if User.current.allowed_to?(:folder_manipulation, @project) %>
<div style="float: left">
<%= link_to(image_tag("edit.png", :class =>"detail_icon"),
{:action => "edit", :id => @project, :folder_id => subfolder },
:title => l(:link_edit, :title => h(subfolder.title))) unless subfolder.locked_for_user? %>
</div>
<% end %>
<div style="float: right; width: 44px;">
<% unless subfolder.locked_for_user? && !User.current.allowed_to?(:force_file_unlock, @project)%>
<% if subfolder.locked? %>
<% if subfolder.unlockable? %>
<%= link_to_function(image_tag("unlock.png", :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => "dmsf", :action => 'unlock',
:id => @project, :folder_id => subfolder)}')",
:title => l(:title_unlock_file))%>
<% else %>
<%= image_tag("locked.png", :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => subfolder.lock.reverse[0].folder.title)) %>
<% end %>
<% else %>
<%= link_to_function(image_tag("lock.png", :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => "dmsf", :action => 'lock',
:id => @project, :folder_id => subfolder)}')",
:title => l(:title_lock_file)) %>
<% end %>
&nbsp;
<% end %>
<%= link_to_function(image_tag("delete.png", :plugin => :redmine_dmsf),
"confirmation_link('#{url_for(:action => 'delete', :id => @project, :folder_id => @folder, :delete_folder_id => subfolder)}')",
:title => l(:title_delete)) unless (subfolder.locked_for_user?)%>
</div>
</div>
<br class="clear" />
</td>
<td class="hidden">0</td>
<td class="hidden"><%= subfolder.deep_size %></td>
</tr>
<% end %>
<% @files.each do |file| %>
<tr class="file">
<td class="check"><%= check_box_tag("files[]", file.id, false, :title => l(:title_check_for_zip_download_or_email)) %></td>
<td class="title">
<% file_download_url = url_for({:only_path => false, :controller => :dmsf_files, :action => "show", :id => file, :download => ""}) %>
<%= link_to(h(file.last_revision.display_title),
file_download_url,
:class => "icon icon-file #{DmsfHelper.filetype_css(file.name)}",
:title => l(:title_title_version_version_download, :title => h(file.title), :version => file.version),
"data-downloadurl" => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_download_url}") %>
<div class="filename" title="<%= l(:title_filename_for_download)%>"><%= h(file.display_name) %></div>
<%= render "custom_fields", :object => file.last_revision %>
</td>
<td class="size"><%= number_to_human_size(file.last_revision.size) %></td>
<td class="modified">
<%= format_time(file.last_revision.updated_at) %>
<% if file.locked_for_user? %>
<%= link_to(image_tag("locked.png", :plugin => :redmine_dmsf),
{:controller => "users", :action => "show", :id => file.lock.reverse[0].user },
:title => l(:title_locked_by_user, :user => file.lock.reverse[0].user.to_s)) %>
<% elsif file.locked? %>
<%= image_tag("lockedbycurrent.png", :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %>
<% end %>
</td>
<td class="version">
<%= file.last_revision.version %>
<% case file.last_revision.workflow
when 1 then %><%= image_tag("waitingforapproval.png", :title => l(:title_waiting_for_approval),
:plugin => :redmine_dmsf) %>
<% when 2 then %><%= image_tag("approved.png", :title => l(:title_approved),
:plugin => :redmine_dmsf) %>
<% end %>
</td>
<td class="author"><%= h(file.last_revision.user) %></td>
<td class="actions">
<% if User.current.allowed_to?(:file_approval, @project) %>
<div class="right_icon_box">
<% if file.notification %>
<%= link_to_function(image_tag("notify.png", :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'notify_deactivate', :id => file)}')",
:title => l(:title_notifications_active_deactivate)) %>
<% else %>
<%= link_to_function(image_tag("notifynot.png", :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'notify_activate', :id => file)}')",
:title => l(:title_notifications_not_active_activate)) %>
<% end %>
</div>
<% end %>
<div class="right_icon_box" style="width: 70px;">
<div style="float: left">
<%= link_to(image_tag("filedetails.png", :plugin => :redmine_dmsf, :class =>"detail_icon"),
{:controller => "dmsf_files", :action => :show, :id => file },
:title => l(:link_details, :title =>h(file.last_revision.title))) %>
</div>
<div style="float: right; width: 44px;">
<% unless file.locked_for_user? && !User.current.allowed_to?(:force_file_unlock, @project)%>
<% if file.locked? %>
<% if file.unlockable? %>
<%= link_to_function(image_tag("unlock.png", :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'unlock', :id => file)}')",
:title => l(:title_unlock_file))%>
<% else %>
<%= image_tag("locked.png", :plugin => :redmine_dmsf, :title => l(:title_file_parent_locked, :name => file.folder.lock.reverse[0].folder.title)) %>
<% end%>
<% else %>
<%= link_to_function(image_tag("lock.png", :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'lock', :id => file)}')",
:title => l(:title_lock_file)) %>
<% end %>
&nbsp;
<% end %>
<% if User.current.allowed_to?(:file_manipulation, @project) && !file.locked_for_user? %>
<%= link_to_function(image_tag("delete.png", :plugin => :redmine_dmsf),
"confirmation_link('#{url_for(:controller => "dmsf_files", :action => 'delete', :id => file)}')",
:title => l(:title_delete)) %>
<% end %>
</div>
</div>
<br class="clear" />
</td>
<td class="hidden">1</td>
<td class="hidden"><%=file.last_revision.size%></td>
</tr>
<% end %>
</tbody>
</table>
<br />
:class => 'dmfs_entries', :id => 'entries_form') do %>
<%= hidden_field_tag('action') %>
<div class="controls" style="float: left">
<%= submit_tag(l(:submit_download), :title => l(:title_download_checked), :name => 'download_entries') %>
<%= submit_tag(l(:submit_email), :title => l(:title_send_checked_by_email), :name => 'email_entries') %>
<% if User.current.allowed_to?(:file_manipulation, @project) && (!@folder.nil? && !@folder.locked_for_user?) %>
<button type="button" id="entries_delete_button" title="<%=l(:title_delete_checked)%>"><%=l(:button_delete)%></button>
<% end %>
</div>
<table class="display entries" id="browser">
<thead>
<tr id="root">
<th class="check">
<input id="check_all_entries" title="<%= l(:title_check_uncheck_all_for_zip_download_or_email) %>" type="checkbox" />
</th>
<th><%= l(:link_title) %></th>
<th><%= l(:link_size) %></th>
<th><%= l(:link_modified) %></th>
<th title="<%= l(:label_version) %>"><%= l(:link_ver) %></th>
<th><%= l(:link_workflow) %></th>
<th><%= l(:link_author) %></th>
<th></th>
<th class="hidden"></th>
<th class="hidden"></th>
</tr>
</thead>
<tbody>
<% @subfolders.each do |subfolder| %>
<tr class="dir">
<td class="check"><%= check_box_tag("subfolders[]", subfolder.id, false, :title => l(:title_check_for_zip_download_or_email)) %></td>
<td class="title">
<%= link_to(h(subfolder.title),
{:action => "show", :id => @project, :folder_id => subfolder},
:class => "icon icon-folder") %>
<div class="filename" title="<%= l(:title_number_of_files_in_directory)%>">[<%= subfolder.deep_file_count %>]</div>
<%= render 'custom_fields', :object => subfolder %>
</td>
<td class="size" title="<%= l(:title_total_size_of_all_files)%>"><%= number_to_human_size(subfolder.deep_size) %></td>
<td class="modified"><%= format_time(subfolder.updated_at) %>
<% if subfolder.locked_for_user? %>
<%= link_to(image_tag("locked.png", :plugin => :redmine_dmsf),
{:controller => "users", :action => "show", :id => subfolder.lock.reverse[0].user },
:title => l(:title_locked_by_user, :user => subfolder.lock.reverse[0].user.to_s)) %>
<% elsif subfolder.locked? %>
<%= image_tag("lockedbycurrent.png", :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %>
<% end %>
</td>
<td class="version"></td>
<td class="workflow"></td>
<td class="author"><%= h(subfolder.user) %></td>
<td class="actions">
<% if User.current.allowed_to?(:file_approval, @project) %>
<div class="right_icon_box" style="width:26px;">
<% if subfolder.notification %>
<%= link_to_function(image_tag('notify.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @project, :folder_id => subfolder)}')",
:title => l(:title_notifications_active_deactivate)) %>
<% else %>
<%= link_to_function(image_tag('notifynot.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:action => 'notify_activate', :id => @project, :folder_id => subfolder)}')",
:title => l(:title_notifications_not_active_activate)) %>
<% end %>
</div>
<% end %>
<div class="right_icon_box" style="width: 70px;">
<% if User.current.allowed_to?(:folder_manipulation, @project) %>
<div style="float: left">
<%= link_to(image_tag('edit.png', :class =>'detail_icon'),
{:action => 'edit', :id => @project, :folder_id => subfolder },
:title => l(:link_edit, :title => h(subfolder.title))) unless subfolder.locked_for_user? %>
</div>
<% end %>
<div style="float: right; width: 44px;">
<% unless subfolder.locked_for_user? && !User.current.allowed_to?(:force_file_unlock, @project)%>
<% if subfolder.locked? %>
<% if subfolder.unlockable? %>
<%= link_to_function(image_tag('unlock.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => 'dmsf', :action => 'unlock',
:id => @project, :folder_id => subfolder)}')",
:title => l(:title_unlock_file))%>
<% else %>
<%= image_tag('locked.png', :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => subfolder.lock.reverse[0].folder.title)) %>
<% end %>
<% else %>
<%= link_to_function(image_tag('lock.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => 'dmsf', :action => 'lock',
:id => @project, :folder_id => subfolder)}')",
:title => l(:title_lock_file)) %>
<% end %>
&nbsp;
<% end %>
<%= link_to_function(image_tag('delete.png', :plugin => :redmine_dmsf),
"confirmation_link('#{url_for(:action => 'delete', :id => @project, :folder_id => @folder, :delete_folder_id => subfolder)}')",
:title => l(:title_delete)) unless (subfolder.locked_for_user?)%>
</div>
</div>
<br class="clear" />
</td>
<td class="hidden">0</td>
<td class="hidden"><%= subfolder.deep_size %></td>
</tr>
<% end %>
<% workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', @project.id]).count > 0 %>
<% @files.each do |file| %>
<% wf = DmsfWorkflow.find_by_id(file.last_revision.dmsf_workflow_id) %>
<tr class="file">
<td class="check"><%= check_box_tag("files[]", file.id, false, :title => l(:title_check_for_zip_download_or_email)) %></td>
<td class="title">
<% file_download_url = url_for({:only_path => false, :controller => :dmsf_files, :action => "show", :id => file, :download => ""}) %>
<%= link_to(h(file.last_revision.display_title),
file_download_url,
:class => "icon icon-file #{DmsfHelper.filetype_css(file.name)}",
:title => l(:title_title_version_version_download, :title => h(file.title), :version => file.version),
"data-downloadurl" => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_download_url}") %>
<div class="filename" title="<%= l(:title_filename_for_download)%>"><%= h(file.display_name) %></div>
<%= render 'custom_fields', :object => file.last_revision %>
</td>
<td class="size"><%= number_to_human_size(file.last_revision.size) %></td>
<td class="modified">
<%= format_time(file.last_revision.updated_at) %>
<% if file.locked_for_user? %>
<%= link_to(image_tag('locked.png', :plugin => :redmine_dmsf),
{:controller => 'users', :action => 'show', :id => file.lock.reverse[0].user },
:title => l(:title_locked_by_user, :user => file.lock.reverse[0].user.to_s)) %>
<% elsif file.locked? %>
<%= image_tag('lockedbycurrent.png', :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %>
<% end %>
</td>
<td class="version"><%= file.last_revision.version %></td>
<td class="workflow">
<% if wf %>
<%= link_to(
file.last_revision.workflow_str(false),
log_dmsf_workflow_path(
:project_id => @project.id,
:id => wf.id,
:dmsf_file_revision_id => file.last_revision.id),
:title => DmsfWorkflow.assignments_to_users_str(wf.next_assignments(file.last_revision.id)),
:remote => true) %>
<% else %>
<%= file.last_revision.workflow_str(false) %>
<% end %>
</td>
<td class="author"><%= h(file.last_revision.user) %></td>
<td class="actions">
<% if User.current.allowed_to?(:file_approval, @project) %>
<div class="right_icon_box" style="width:26px;">
<% if file.notification %>
<%= link_to_function(image_tag('notify.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'notify_deactivate', :id => file)}')",
:title => l(:title_notifications_active_deactivate)) %>
<% else %>
<%= link_to_function(image_tag('notifynot.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'notify_activate', :id => file)}')",
:title => l(:title_notifications_not_active_activate)) %>
<% end %>
<% case file.last_revision.workflow %>
<% when DmsfWorkflow::STATE_WAITING_FOR_APPROVAL %>
<% if wf %>
<% assignments = wf.next_assignments(file.last_revision.id) %>
<% index = assignments.find_index{|assignment| assignment.user_id == User.current.id} if assignments %>
<% if index %>
<%= link_to(
image_tag('waiting_for_approval.png', :plugin => :redmine_dmsf),
action_dmsf_workflow_path(
:project_id => @project.id,
:id => wf.id,
:dmsf_workflow_step_assignment_id => assignments[index].id,
:dmsf_file_revision_id => file.last_revision.id),
:title => l(:title_waiting_for_approval),
:remote => true) %>
<% else %>
<%= image_tag('waiting_for_approval.png', :title => "#{l(:label_dmsf_wokflow_action_approve)} #{l(:label_dmsf_wokflow_action_reject)} #{l(:label_dmsf_wokflow_action_delegate)}", :plugin => :redmine_dmsf) %>
<% end %>
<% else %>
<%= image_tag('waiting_for_approval.png', :title => "#{l(:label_dmsf_wokflow_action_approve)} #{l(:label_dmsf_wokflow_action_reject)} #{l(:label_dmsf_wokflow_action_delegate)}", :plugin => :redmine_dmsf) %>
<% end %>
<% when DmsfWorkflow::STATE_APPROVED %>
<%= image_tag('approved.png', :title => l(:title_approved), :plugin => :redmine_dmsf) %>
<% when DmsfWorkflow::STATE_ASSIGNED %>
<% if User.current && (file.last_revision.dmsf_workflow_assigned_by == User.current.id) && wf %>
<%= link_to_function(image_tag('assigned.png', :plugin => :redmine_dmsf),
"manipulation_link('#{start_dmsf_workflow_path(
:id => file.last_revision.dmsf_workflow_id,
:dmsf_file_revision_id => file.last_revision.id)}')",
:title => l(:label_dmsf_wokflow_action_start)) %>
<% else %>
<%= image_tag('assigned.png', :title => l(:label_dmsf_wokflow_action_start), :plugin => :redmine_dmsf) %>
<% end %>
<% when DmsfWorkflow::STATE_REJECTED %>
<%= image_tag('rejected.png', :title => l(:title_rejected), :plugin => :redmine_dmsf) %>
<% else %>
<% if workflows_available %>
<%= link_to(
image_tag('none.png', :plugin => :redmine_dmsf),
assign_dmsf_workflow_path(
:project_id => @project.id,
:dmsf_file_revision_id => file.last_revision.id),
:title => l(:label_dmsf_wokflow_action_assign),
:remote => true) %>
<% end %>
<% end %>
</div>
<% end %>
<div class="right_icon_box" style="width: 70px">
<div style="float: left">
<%= link_to(image_tag('filedetails.png', :plugin => :redmine_dmsf, :class =>"detail_icon"),
{:controller => "dmsf_files", :action => :show, :id => file },
:title => l(:link_details, :title =>h(file.last_revision.title))) %>
</div>
<div style="float: right; width: 44px;">
<% unless file.locked_for_user? && !User.current.allowed_to?(:force_file_unlock, @project)%>
<% if file.locked? %>
<% if file.unlockable? %>
<%= link_to_function(image_tag('unlock.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'unlock', :id => file)}')",
:title => l(:title_unlock_file))%>
<% else %>
<%= image_tag('locked.png', :plugin => :redmine_dmsf, :title => l(:title_file_parent_locked, :name => file.folder.lock.reverse[0].folder.title)) %>
<% end%>
<% else %>
<%= link_to_function(image_tag('lock.png', :plugin => :redmine_dmsf),
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'lock', :id => file)}')",
:title => l(:title_lock_file)) %>
<% end %>
&nbsp;
<% end %>
<% if User.current.allowed_to?(:file_manipulation, @project) && !file.locked_for_user? %>
<%= link_to_function(image_tag('delete.png', :plugin => :redmine_dmsf),
"confirmation_link('#{url_for(:controller => 'dmsf_files', :action => 'delete', :id => file)}')",
:title => l(:title_delete)) %>
<% end %>
</div>
</div>
<br class="clear" />
</td>
<td class="hidden">1</td>
<td class="hidden"><%=file.last_revision.size%></td>
</tr>
<% end %>
</tbody>
</table>
<br />
<% end %>
<script type="text/javascript">
jQuery("#entries_delete_button").click(function(event) {
if(window.confirm("<%= l(:question_do_you_really_want_to_delete_entries) %>")) {
jQuery("#entries_form").attr("action", "<%= url_for(:action => :delete_entries, :id => @project, :folder_id => @folder) %>");
jQuery("#entries_form").submit();
}
})
jQuery("#entries_delete_button").click(function(event) {
if(window.confirm("<%= l(:question_do_you_really_want_to_delete_entries) %>")) {
jQuery("#entries_form").attr("action", "<%= url_for(:action => :delete_entries, :id => @project, :folder_id => @folder) %>");
jQuery("#entries_form").submit();
}
});
jQuery("#check_all_entries").click(function(event) {
var $this = jQuery(this);
if($this.prop("checked")) {
jQuery("input[type=checkbox]", jQuery("#browser > tbody")).prop("checked", true);
} else {
jQuery("input[type=checkbox]", jQuery("#browser > tbody")).prop("checked", false);
}
})
jQuery("#check_all_entries").click(function(event) {
var $this = jQuery(this);
if($this.prop("checked")) {
jQuery("input[type=checkbox]", jQuery("#browser > tbody")).prop("checked", true);
} else {
jQuery("input[type=checkbox]", jQuery("#browser > tbody")).prop("checked", false);
}
});
</script>
<%
@ -257,68 +332,68 @@ sUrl = "jquery.dataTables/#{I18n.locale.to_s.downcase}.json" if I18n.locale && !
%>
<% content_for :header_tags do %>
<%= stylesheet_link_tag "jquery-ui/jquery-ui-1.8.13.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "plupload/jquery.ui.plupload.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "jquery.dataTables/jquery-ui.dataTables.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "dmsf", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "jquery-ui/jquery-ui-1.9.2.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "plupload/jquery.ui.plupload.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "jquery.dataTables/jquery-ui.dataTables.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "dmsf", :plugin => "redmine_dmsf" %>
<%= javascript_include_tag "jquery-1.6.1.min.js", :plugin => "redmine_dmsf" %>
<%= javascript_include_tag "jquery-ui-1.8.13.min.js", :plugin => "redmine_dmsf" %>
<%= javascript_include_tag "jquery.dataTables/jquery.dataTables.min.js", :plugin => "redmine_dmsf" %>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function() {
jQuery("#browser").dataTable({
"bJQueryUI": true,
"oLanguage": {
'sUrl': '<%= plugin_asset_path(:redmine_dmsf, 'javascripts', sUrl) %>'
},
"bAutoWidth": false,
"bPaginate": false,
"aaSorting": [[1,'asc']],
"aaSortingFixed": [[7,'asc']],
"aoColumnDefs": [
{ "bSearchable": false, "aTargets": [0, 6, 7, 8] },
{ "bSortable": false, "aTargets": [0, 6, 7] },
{ "iDataSort": 8, "aTargets": [ 2 ] }
],
"fnInitComplete": function() {
jQuery("div.controls").prependTo(jQuery("#browser_wrapper div.fg-toolbar")[0]);
},
"fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
return "<%= l(:label_number_of_folders)%>: <%= @subfolders.length %>, <%= l(:label_number_of_documents)%>: <%= @files.length %>";
}
});
<%= javascript_include_tag "jquery-1.6.1.min.js", :plugin => "redmine_dmsf" %>
<%= javascript_include_tag "jquery-ui-1.8.13.min.js", :plugin => "redmine_dmsf" %>
<%= javascript_include_tag "jquery.dataTables/jquery.dataTables.min.js", :plugin => "redmine_dmsf" %>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function() {
jQuery("#browser").dataTable({
"bJQueryUI": true,
"oLanguage": {
'sUrl': '<%= plugin_asset_path(:redmine_dmsf, 'javascripts', sUrl) %>'
},
"bAutoWidth": false,
"bPaginate": false,
"aaSorting": [[1,'asc']],
"aaSortingFixed": [[8,'asc']],
"aoColumnDefs": [
{ "bSearchable": false, "aTargets": [0, 7, 8, 9] },
{ "bSortable": false, "aTargets": [0, 7, 8] },
{ "iDataSort": 9, "aTargets": [ 2 ] }
],
"fnInitComplete": function() {
jQuery("div.controls").prependTo(jQuery("#browser_wrapper div.fg-toolbar")[0]);
},
"fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
return "<%= l(:label_number_of_folders)%>: <%= @subfolders.length %>, <%= l(:label_number_of_documents)%>: <%= @files.length %>";
}
});
jQuery("[data-downloadurl]").each(function() {
var url = this.getAttribute("data-downloadurl");
if (this.addEventListener) {
this.addEventListener("dragstart", function(e) {
if (e.dataTransfer) {
e.dataTransfer.setData("DownloadURL", url);
}
},false);
}
});
jQuery("[data-downloadurl]").each(function() {
var url = this.getAttribute("data-downloadurl");
if (this.addEventListener) {
this.addEventListener("dragstart", function(e) {
if (e.dataTransfer) {
e.dataTransfer.setData("DownloadURL", url);
}
},false);
}
});
jQuery("#entries_form").submit(function () {
jQuery(this).removeAttr('data-submitted');
});
});
jQuery("#entries_form").submit(function () {
jQuery(this).removeAttr('data-submitted');
});
});
function manipulation_link(action) {
jQuery("#entries_form").attr("action", action);
jQuery("#entries_form").submit();
};
function manipulation_link(action) {
jQuery("#entries_form").attr("action", action);
jQuery("#entries_form").submit();
};
function confirmation_link(action) {
if(!window.confirm("<%= l(:question_do_you_really_want_to_delete_this_entry) %>")) return;
jQuery("#entries_form").attr("action", action);
jQuery("#entries_form").submit();
};
</script>
function confirmation_link(action) {
if(!window.confirm("<%= l(:question_do_you_really_want_to_delete_this_entry) %>")) return;
jQuery("#entries_form").attr("action", action);
jQuery("#entries_form").submit();
};
</script>
<% end %>
<%= render(:partial => "multi_upload") if (User.current.allowed_to?(:file_manipulation, @project) &&
( @folder.nil? || (!@folder.nil? &&!@folder.locked_for_user?) ) ) %>
<br />
<%= render(:partial => 'multi_upload') if (User.current.allowed_to?(:file_manipulation, @project) &&
(@folder.nil? || (!@folder.nil? &&!@folder.locked_for_user?))) %>
<br/>

View File

@ -4,21 +4,6 @@
<% if @file.locked_for_user? %>
<p class="warning"><%= l(:info_file_locked) %></p>
<% else %>
<%
disabled_workflow = []
selected_workflow = nil
if !User.current.allowed_to?(:file_approval, @project)
disabled_workflow << 2
current_workflow = @file.last_revision.workflow
if current_workflow == 1 || current_workflow == 2
disabled_workflow << nil
selected_workflow = 1
end
else
selected_workflow = @file.last_revision.workflow
end
%>
<%= form_for(@revision, :url => {:action => "create_revision", :id => @file},
:html => {:method=>:post, :multipart => true, :id => "new_revision_form"}) do |f| %>
<div class="clear">
@ -58,15 +43,6 @@ end
<%= radio_button_tag("version", 2, @revision.major_version != @file.last_revision.major_version) %>
<%= @file.last_revision.major_version + 1 %>.0 <%= l(:option_version_major) %><br />
</div>
<p>
<%= label_tag("workflow", l(:label_workflow) + ":") %>
<%= select_tag("workflow",
options_for_select([
[l(:option_workflow_none), nil],
[l(:option_workflow_waiting_for_approval), 1],
[l(:option_workflow_approved), 2]],
:selected => selected_workflow, :disabled => disabled_workflow)) %>
</p>
</div>
<div class="splitcontentright clear">
<p>
@ -96,6 +72,7 @@ end
</div>
<br />
<%= submit_tag(l(:submit_create)) %>
<% end %>
<% end %>
</div>

View File

@ -40,12 +40,16 @@
<%= link_to(image_tag("copy.png"), {:controller => :dmsf_files_copy, :action => "new", :id => @file }, :title => l(:title_copy_or_move)) %>
</div>
<% path = @file.folder.nil? ? [] : @file.folder.dmsf_path %>
<h2>
<%= render(:partial => "/dmsf/path", :locals => {:path => path}) %>
/
<%= h(@file.last_revision.title) %>
<%= image_tag("notify.png", :plugin => "redmine_dmsf", :title => l(:title_notifications_active)) if @file.notification %>
<% path = @file.folder ? @file.folder.dmsf_path : [] %>
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
<% path.each do |path_element| %>
/
<%= link_to h(path_element.title), {:controller => 'dmsf', :action => 'show', :id=> @project, :folder_id => path_element} %>
<% end %>
/
<%= h(@file.last_revision.title) %>
<%= image_tag('notify.png', :plugin => 'redmine_dmsf', :title => l(:title_notifications_active)) if @file.notification %>
</h2>
<%= error_messages_for("file") %>
@ -57,77 +61,72 @@
<h3><%= l(:heading_revisions) %></h3>
<% @file.revisions.visible[@revision_pages.current.offset,@revision_pages.items_per_page].each do |revision| %>
<div class="box dmsf_detail">
<div style="float:right">
<%= link_to(image_tag("download.png", :plugin => "redmine_dmsf"),
{:action => "show", :id => @file, :download => revision},
:title => l(:title_title_version_version_download, :title => h(revision.title), :version => revision.version)) %>
<% if User.current.allowed_to?(:file_approval, @project) %>
&nbsp;
<%= link_to_function(image_tag("delete.png", :plugin => "redmine_dmsf"),
"confirmation_link('#{url_for(:action => 'delete_revision', :id => revision)}', '#{l(:question_do_you_really_want_to_delete_this_revision)}')",
:title => l(:title_delete_revision)) %>
<% end %>
</div>
<p class="no-ident">
<%=label_tag("", (revision.source_revision.nil? ? l(:label_created) : l(:label_changed)) + ":")%>
<%= l(:info_changed_by_user, :changed => format_time(revision.updated_at), :user => h(revision.user)) %>
</p>
<div class="clear">
<div class="splitcontentleft">
<p>
<%= label_tag("", l(:label_title) + ":") %>
<%= h(revision.title) %>
</p>
</div>
<div class="splitcontentright">
<p>
<%= label_tag("", l(:label_file) + ":") %>
<%= (h(revision.folder.dmsf_path_str) + "/") unless revision.folder.nil? %><%= h(revision.name) %>
</p>
</div>
</div>
<p class="no-ident">
<%= label_tag("", l(:label_description) + ":") %>
</p>
<div class="wiki clear" style="margin-left: 110px">
<%= textilizable(revision.description) %>
</div>
<div class="splitcontentleft">
<p>
<%= label_tag("", l(:label_version) + ":") %>
<%= revision.major_version %>.<%= revision.minor_version %>
</p>
<p>
<%= label_tag("", l(:label_workflow) + ":") %>
<%= case revision.workflow
when 1 then l(:option_workflow_waiting_for_approval)
when 2 then l(:option_workflow_approved)
else l(:option_workflow_none)
end %>
</p>
</div>
<div class="splitcontentright clear">
<p>
<%= label_tag("", l(:label_mime) + ":") %>
<%= h(revision.mime_type) %>&nbsp;
</p>
<p>
<%= label_tag("", l(:label_size) + ":") %>
<%= number_to_human_size(revision.size) %>
</p>
</div>
<br style="clear: both"/>
<div class="no-ident clear">
<%= render "dmsf/custom_fields", :object => revision %>
</div>
<p class="no-ident clear">
<%= label_tag("", l(:label_comment) + ":") %>
<%= h(revision.comment) %>
</p>
<%= render(:partial => "revision_access", :locals => {:revision => revision}) if User.current.allowed_to?(:file_approval, @file.project) %>
</div>
<div class="revision_box dmsf_detail dataTables_wrapper">
<div class="fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix">
<div class="dataTables_lenght">
<div class="controls" style="float: right">
<%= link_to_function(image_tag('rev_downloads.png', :plugin => 'redmine_dmsf'), "$('#revision_access-#{revision.id}').toggle()", :title => 'Download entries')%>
<%= link_to(image_tag('rev_download.png', :plugin => 'redmine_dmsf'),
{:action => 'show', :id => @file, :download => revision},
:title => l(:title_title_version_version_download, :title => h(revision.title), :version => revision.version)) %>
<% if User.current.allowed_to?(:file_approval, @project) %>
<%= link_to_function(image_tag('rev_delete.png', :plugin => 'redmine_dmsf'),
"confirmation_link('#{url_for(:action => 'delete_revision', :id => revision)}', '#{l(:question_do_you_really_want_to_delete_this_revision)}')",
:title => l(:title_delete_revision)) %>
<% end %>
</div>
<i><%= l(:info_revision, :rev => revision.id) %></i>
<%= (revision.source_revision.nil? ? l(:label_created) : l(:label_changed)).downcase %>
<%= l(:info_changed_by_user, :changed => format_time(revision.updated_at)) %>
<%= link_to(revision.user) %>
</div>
</div>
<div style="border: 1px solid #e4e4e4;">
<div class="clear">
<div class="splitcontentleft">
<%= label_tag("", l(:label_title) + ":") %>
<%= h(revision.title) %>
</div>
<div class="splitcontentright">
<%= label_tag("", l(:label_file) + ":") %>
<%= (h(revision.folder.dmsf_path_str) + "/") unless revision.folder.nil? %><%= h(revision.name) %>
</div>
</div>
<p class="no-ident">
<%= label_tag("", l(:label_description) + ":") %>
</p>
<div class="wiki clear" style="margin-left: 110px">
<%= textilizable(revision.description) %>
</div>
<div class="splitcontentleft">
<%= label_tag("", l(:label_version) + ":") %>
<%= revision.major_version %>.<%= revision.minor_version %>
<br/>
<%= label_tag('', l(:label_workflow) + ':') %>
<%= revision.workflow_str true %>
</div>
<div class="splitcontentright clear">
<%= label_tag("", l(:label_mime) + ":") %>
<%= h(revision.mime_type) %>&nbsp;
<br/>
<%= label_tag("", l(:label_size) + ":") %>
<%= number_to_human_size(revision.size) %>
</div>
<div class="no-ident clear">
<%= render "dmsf/custom_fields", :object => revision %>
</div>
<div class="splitcontentleft clear">
<%= label_tag("", l(:label_comment) + ":") %>
<%= h(revision.comment) %>
</div>
<br/>
<div id="<%= "revision_access-#{revision.id}" %>" style="display:none">
<%= render(:partial => "revision_access", :locals => {:revision => revision}) if User.current.allowed_to?(:file_approval, @file.project) %>
</div>
</div>
</div>
<br/>
<br/>
<% end %>
<p class="pagination"><%= pagination_links_full @revision_pages, @file.revisions.visible.count %></p>
@ -176,7 +175,7 @@ sUrl = "jquery.dataTables/#{I18n.locale.to_s.downcase}.json" if I18n.locale && !
<% end %>
<% content_for :header_tags do %>
<%= stylesheet_link_tag "jquery-ui/jquery-ui-1.8.13.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "jquery-ui/jquery-ui-1.9.2.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "jquery.dataTables/jquery-ui.dataTables.css", :plugin => "redmine_dmsf" %>
<%= stylesheet_link_tag "dmsf", :plugin => "redmine_dmsf" %>
<%= javascript_include_tag "jquery-1.6.1.min.js", :plugin => "redmine_dmsf" %>

View File

@ -3,12 +3,16 @@
<div class="contextual">
</div>
<% path = @file.folder.nil? ? [] : @file.folder.dmsf_path %>
<h2>
<%= render(:partial => "/dmsf/path", :locals => {:path => path}) %>
/
<%= link_to(h(@file.title), {:controller => "dmsf_files", :action => "show", :id=> @file}) %>
<%= image_tag("notify.png", :plugin => "redmine_dmsf", :title => l(:title_notifications_active)) if @file.notification %>
<% path = @file.folder ? @file.folder.dmsf_path : [] %>
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
<% path.each do |path_element| %>
/
<%= link_to h(path_element.title), {:controller => 'dmsf', :action => 'show', :id=> @project, :folder_id => path_element} %>
<% end %>
/
<%= link_to(h(@file.title), {:controller => "dmsf_files", :action => "show", :id=> @file}) %>
<%= image_tag("notify.png", :plugin => "redmine_dmsf", :title => l(:title_notifications_active)) if @file.notification %>
</h2>
<% unless DmsfFile.allowed_target_projects_on_copy.blank? %>

View File

@ -3,7 +3,13 @@
<div class="contextual">
</div>
<h2><%= render(:partial => "/dmsf/path", :locals => {:path => @folder.dmsf_path}) %></h2>
<h2>
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
<% @folder.dmsf_path.each do |path_element| %>
/
<%= link_to h(path_element.title), {:controller => 'dmsf', :action => 'show', :id=> @project, :folder_id => path_element} %>
<% end %>
</h2>
<% unless DmsfFolder.allowed_target_projects_on_copy.blank? %>
<%= form_tag({:action => "copy_to", :id => @folder}, :id => "copyForm") do |f| %>

View File

@ -1,17 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
User <%= link_to(h(@user), {:only_path => false, :controller => "users", :action => "show", :id => @user }) %>
deleted DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<p>
<%= h(file.dmsf_path_str) %> (<%= file.name %>),
<%= number_to_human_size(file.last_revision.size) %>,
version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>
</p>
<% end %>
</body>
</html>
User <%= link_to(h(@user), {:only_path => false, :controller => 'users', :action => 'show', :id => @user }) %>
deleted DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<p>
<%= h(file.dmsf_path_str) %> (<%= file.name %>)
<% if file.last_revision %>
, <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>
<% end %>
</p>
<% end %>

View File

@ -1,5 +1,7 @@
User <%= @user %> deleted DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<%= file.dmsf_path_str %> (<%= file.name %>), <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>
<%= file.dmsf_path_str %> (<%= file.name %>)
<% if file.last_revision %>
, <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>
<% end %>
<% end %>

View File

@ -1,17 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
User <%= link_to(h(@user), {:only_path => false, :controller => "users", :action => "show", :id => @user }) %>
deleted DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<p>
<%= h(file.dmsf_path_str) %> (<%= file.name %>),
<%= number_to_human_size(file.last_revision.size) %>,
version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>
</p>
<% end %>
</body>
</html>

View File

@ -1,5 +0,0 @@
User <%= @user %> deleted DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<%= file.dmsf_path_str %> (<%= file.name %>), <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>
<% end %>

View File

@ -1,25 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
User <%= link_to(h(@user), {:only_path => false, :controller => "users", :action => "show", :id => @user }) %>
actualized DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<p>
<%= link_to(h(file.dmsf_path_str),
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file,
:download => ""}) %> (<%= file.name %>),
<%= number_to_human_size(file.last_revision.size) %>,
version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>,
<%= "#{file.last_revision.workflow_str}," unless file.last_revision.workflow_str.blank? %>
<%= link_to("Details",
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file}) %>
<% unless file.last_revision.comment.blank? %>
<br /><span style="font-size: 0.9em">&nbsp;&nbsp;&nbsp;&nbsp;<em><%= h(file.last_revision.comment) %></em></span>
<% end %>
</p>
<% end %>
</body>
</html>
User <%= link_to(h(@user), {:only_path => false, :controller => "users", :action => "show", :id => @user }) %>
actualized DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<p>
<%= link_to(h(file.dmsf_path_str),
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file,
:download => ""}) %> (<%= file.name %>),
<%= number_to_human_size(file.last_revision.size) %>,
version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>,
<%= "#{file.last_revision.workflow_str(true)}," unless file.last_revision.workflow_str(true).blank? %>
<%= link_to("Details",
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file}) %>
<% unless file.last_revision.comment.blank? %>
<br /><span style="font-size: 0.9em">&nbsp;&nbsp;&nbsp;&nbsp;<em><%= h(file.last_revision.comment) %></em></span>
<% end %>
</p>
<% end %>

View File

@ -1,6 +1,6 @@
User <%= @user %> actualized DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<%= file.dmsf_path_str %> (<%= file.name %>), <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %><%= ", #{file.last_revision.workflow_str}" unless file.last_revision.workflow_str.blank? %>
<%= file.dmsf_path_str %> (<%= file.name %>), <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %><%= ", #{file.last_revision.workflow_str(true)}" unless file.last_revision.workflow_str(true).blank? %>
<%= url_for({:only_path => false, :controller => "dmsf_files", :action => "show", :id => file}) %>
<% unless file.last_revision.comment.blank? %> comment: <%= file.last_revision.comment %><% end %>
<% end %>

View File

@ -1,25 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
User <%= link_to(h(@user), {:only_path => false, :controller => "users", :action => "show", :id => @user }) %>
actualized DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<p>
<%= link_to(h(file.dmsf_path_str),
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file,
:download => ""}) %> (<%= file.name %>),
<%= number_to_human_size(file.last_revision.size) %>,
version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>,
<%= "#{file.last_revision.workflow_str}," unless file.last_revision.workflow_str.blank? %>
<%= link_to("Details",
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file}) %>
<% unless file.last_revision.comment.blank? %>
<br /><span style="font-size: 0.9em">&nbsp;&nbsp;&nbsp;&nbsp;<em><%= h(file.last_revision.comment) %></em></span>
<% end %>
</p>
<% end %>
</body>
</html>

View File

@ -1,6 +0,0 @@
User <%= @user %> actualized DMSF files in project <%= @project.name %>:
<% @files.each do |file| %>
<%= file.dmsf_path_str %> (<%= file.name %>), <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %><%= ", #{file.last_revision.workflow_str}" unless file.last_revision.workflow_str.blank? %>
<%= url_for({:only_path => false, :controller => "dmsf_files", :action => "show", :id => file}) %>
<% unless file.last_revision.comment.blank? %> comment: <%= file.last_revision.comment %><% end %>
<% end %>

View File

@ -0,0 +1,8 @@
<p>Dear user,</p>
<p>
<%= @text1 %>
</p>
<p>
<%= @text2 %>
</p>

View File

@ -0,0 +1,4 @@
Dear user,
<%= @text1 %>
<%= @text2 %>

View File

@ -1,17 +1,4 @@
<%
disabled_workflow = []
selected_workflow = nil
unless User.current.allowed_to?(:file_approval, @project)
disabled_workflow << 2
current_workflow = upload.workflow
if current_workflow == 1 || current_workflow == 2
disabled_workflow << nil
selected_workflow = 1
end
else
selected_workflow = upload.workflow
end
%>
<div class="box dmsf_detail">
<%= hidden_field_tag("commited_files[#{i}][disk_filename]", upload.disk_filename) %>
<div class="clear">
@ -45,15 +32,6 @@ end
<%= radio_button_tag("commited_files[#{i}][version]", 2) %>
<%= upload.major_version + 1 %>.0 <%= l(:option_version_major) %><br />
</div>
<p>
<%= label_tag("commited_files[#{i}][workflow]", l(:label_workflow) + ":") %>
<%= select_tag("commited_files[#{i}][workflow]",
options_for_select([
[l(:option_workflow_none), nil],
[l(:option_workflow_waiting_for_approval), 1],
[l(:option_workflow_approved), 2]],
:selected => selected_workflow, :disabled => disabled_workflow)) %>
</p>
</div>
<div class="splitcontentright clear">
<p>

View File

@ -28,14 +28,6 @@
<%= label_tag("", l(:label_version) + ":") %>
<%= upload.major_version %>.<%= upload.minor_version %>
</p>
<p>
<%= label_tag("", l(:label_workflow) + ":") %>
<%= case upload.workflow
when 1 then l(:option_workflow_waiting_for_approval)
when 2 then l(:option_workflow_approved)
else l(:option_workflow_none)
end %>
</p>
</div>
<div class="splitcontentright clear">
<p>

View File

@ -3,9 +3,13 @@
<div class="contextual">
</div>
<% path = @folder.nil? ? [] : @folder.dmsf_path %>
<h2>
<%= render(:partial => '/dmsf/path', :locals => {:path => path}) %>
<% path = @folder ? @folder.dmsf_path : [] %>
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
<% path.each do |path_element| %>
/
<%= link_to h(path_element.title), {:controller => 'dmsf', :action => 'show', :id=> @project, :folder_id => path_element} %>
<% end %>
</h2>
<div class="wiki">

View File

@ -0,0 +1,27 @@
<h3 class="title"><%= l(:field_label_dmsf_workflow) %></h3>
<%= form_tag({:controller => 'dmsf_workflows', :action => 'new_action'},
:method => :post,
:id => 'new-action-form') do %>
<%= hidden_field_tag :dmsf_workflow_step_assignment_id, params[:dmsf_workflow_step_assignment_id] %>
<%= hidden_field_tag :dmsf_file_revision_id, params[:dmsf_file_revision_id] %>
<p><label><%= radio_button_tag 'step_action', DmsfWorkflowStepAction::ACTION_APPROVE, true %> <%= l(:label_dmsf_wokflow_action_approve) %></label><br/></p>
<p>
<label><%= radio_button_tag 'step_action', DmsfWorkflowStepAction::ACTION_REJECT %> <%= l(:label_dmsf_wokflow_action_reject) %></label><br/>
<%= text_area_tag :note, '', :placeholder => l(:message_dmsf_wokflow_note), :size => '38x2' %>
</p>
<p>
<%= label_tag 'delegate', l(:label_dmsf_wokflow_action_delegate) %><br/>
<%= text_field_tag 'user_search', nil %>
<%= javascript_tag "observeSearchfield('user_search', 'users_for_delegate', '#{ escape_javascript autocomplete_for_user_dmsf_workflow_path(@workflow, :dmsf_workflow_step_assignment_id => params[:dmsf_workflow_step_assignment_id], :dmsf_file_revision_id => params[:dmsf_file_revision_id]) }')" %>
<%= content_tag('div', principals_radio_button_tags('step_action', @workflow.delegates(nil, params[:dmsf_workflow_step_assignment_id], params[:dmsf_file_revision_id])), :id => 'users_for_delegate') %>
</p>
<p class="buttons">
<%= submit_tag l(:button_submit), :name => 'commit', :onclick => 'hideModal(this);' %>
<%= submit_tag l(:button_cancel), :name => 'commit', :onclick => 'hideModal(this);' %>
</p>
<% end %>

View File

@ -0,0 +1,16 @@
<h3 class="title"><%= l(:field_label_dmsf_workflow) %></h3>
<%= form_tag({:controller => 'dmsf_workflows', :action => 'assignment'},
:method => :post,
:id => 'assignment-form') do %>
<%= hidden_field_tag :dmsf_file_revision_id, params[:dmsf_file_revision_id] %>
<p>
<%= label_tag('workflow', l(:label_workflow) + ':') %>
<%= select_tag(
'dmsf_workflow_id',
dmsf_workflows_for_select(@project, nil))%>
</p>
<p class="buttons">
<%= submit_tag l(:button_submit), :name => 'commit', :onclick => 'hideModal(this);' %>
<%= submit_tag l(:button_cancel), :name => 'commit', :onclick => 'hideModal(this);' %>
</p>
<% end %>

View File

@ -0,0 +1,77 @@
<h3 class="title"><%= l(:title_dmsf_workflow_log) %></h3>
<p>
<% if params[:dmsf_file_revision_id].present? %>
<% revision = DmsfFileRevision.find_by_id(params[:dmsf_file_revision_id]) %>
<% if revision %>
<div class="log_header_box">
<div class="log_header_left">
<%= label_tag 'workflow_name', "#{l(:link_workflow)} #{l(:field_name).downcase}: " %>
<%= link_to @workflow.name, edit_dmsf_workflow_path(@workflow) %>
</div>
<div>
<%= label_tag 'workflow_status', "#{l(:field_status)}: " %>
<%= revision.workflow_str false %>
</div>
</div>
<div class="tab-content" id="tab-content-members">
<table class="list">
<thead><tr>
<th><%= l(:label_dmsf_workflow_step) %></th>
<th><%= l(:label_user) %> </th>
<th><%= l(:label_action) %></th>
<th><%= l(:label_workflow) %></th>
<th><%= l(:label_note) %></th>
<th><%= l(:label_date)%></th>
</tr></thead>
<tbody>
<tr id="step-0" class="even">
<td class="step"/>
<td/>
<td/>
<td><%= DmsfWorkflowStepAction.workflow_str(0) %></td>
<td class="note"></td>
<td/>
</tr>
<tr id="step-1" class="odd">
<td class="step"></td>
<td><%= link_to_user User.find_by_id(revision.dmsf_workflow_assigned_by) if revision.dmsf_workflow_assigned_by %></td>
<td><%= DmsfWorkflowStepAction.action_str(DmsfWorkflowStepAction::ACTION_ASSIGN) %></td>
<td><%= DmsfWorkflowStepAction.workflow_str(DmsfWorkflowStepAction::ACTION_ASSIGN) %></td>
<td class="note"></td>
<td><%= format_time(revision.dmsf_workflow_assigned_at) if revision.dmsf_workflow_assigned_at %></td>
</tr>
<tr id="step-2" class="even">
<td class="step"></td>
<td><%= link_to_user User.find_by_id(revision.dmsf_workflow_started_by) if revision.dmsf_workflow_started_by %></td>
<td><%= DmsfWorkflowStepAction.action_str(DmsfWorkflowStepAction::ACTION_START) %></td>
<td><%= DmsfWorkflowStepAction.workflow_str(DmsfWorkflowStepAction::ACTION_START) if revision.dmsf_workflow_started_by %></td>
<td class="note"></td>
<td><%= format_time(revision.dmsf_workflow_started_at) if revision.dmsf_workflow_started_at %></td>
</tr>
<% sql = "SELECT c.action, c.note, c.created_at, c.author_id, a.user_id, s.step FROM dmsf_workflow_step_actions c RIGHT JOIN dmsf_workflow_step_assignments a ON a.id = c.dmsf_workflow_step_assignment_id RIGHT JOIN dmsf_workflow_steps s ON s.id = a.dmsf_workflow_step_id WHERE a.dmsf_file_revision_id = #{revision.id} ORDER BY s.step, c.action DESC, c.created_at" %>
<% result = DmsfWorkflowStep.connection.execute sql %>
<% result.each_with_index do |row, i| %>
<tr id="step-<%= i + 3 %> " class="<%= cycle 'odd', 'even' %>">
<td class="step"><%= row[5] %></td>
<td><%= link_to_user User.find_by_id(row[3].present? ? row[3] : row[4]) %></td>
<td><%= DmsfWorkflowStepAction.action_str(row[0]) %></td>
<td>
<% s = @workflow.dmsf_workflow_steps.last.step %>
<% s1 = row[5] %>
<% if((row[5].to_i == @workflow.dmsf_workflow_steps.last.step) && (revision.workflow == DmsfWorkflow::STATE_APPROVED)) %>
<%= l(:title_approved) %>
<% else %>
<%= DmsfWorkflowStepAction.workflow_str(row[0]) %>
<% end %>
</td>
<td class="note"><%= row[1] %></td>
<td><%= format_time(row[2]) if row[2].present? %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
<% end %>
<% end %>
</p>

View File

@ -0,0 +1,32 @@
<% @workflows = DmsfWorkflow.where(:project_id => @project.id) if @project && @workflows.nil? %>
<div class="contextual">
<% if @project %>
<%= link_to l(:label_dmsf_workflow_new), new_dmsf_workflow_path(:project_id => @project.id), :class => 'icon icon-add' %>
<% else %>
<%= link_to l(:label_dmsf_workflow_new), new_dmsf_workflow_path, :class => 'icon icon-add' %>
<% end %>
</div>
<h2><%=l(:label_dmsf_workflow_plural)%></h2>
<table class="list">
<thead><tr>
<th><%=l(:field_name)%></th>
<th></th>
</tr></thead>
<tbody>
<% for workflow in @workflows %>
<tr id="workflow-<%= workflow.id %>" class="<%= cycle('odd', 'even') %>">
<td><%= link_to(h(workflow.name), edit_dmsf_workflow_path(workflow)) %></td>
<td class="buttons">
<%= delete_link dmsf_workflow_path(workflow) %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% if @workflow_pages %>
<p class="pagination"><%= pagination_links_full @workflow_pages %></p>
<% end %>

View File

@ -0,0 +1,77 @@
<% if @workflow.project %>
<h2><%= link_to l(:label_dmsf_workflow_plural), settings_project_path(@project, :tab => 'dmsf_workflow') %> &#187; <%=h @workflow %></h2>
<% else %>
<h2><%= link_to l(:label_dmsf_workflow_plural), dmsf_workflows_path %> &#187; <%=h @workflow %></h2>
<% end %>
<%= labelled_form_for @workflow do |f| %>
<%= error_messages_for 'workflow' %>
<div class="box tabular">
<p><%= f.label :label_dmsf_workflow_name %><%= text_field_tag :name, @workflow.name %><%= submit_tag l(:button_save) %></p>
</div>
<% end %>
<div class="tab-content" id="tab-content-members">
<div class="splitcontentleft">
<% steps = @workflow.dmsf_workflow_steps.collect{|s| s.step}.uniq %>
<% if steps.any? %>
<table class="list">
<thead><tr>
<th><%= l(:label_dmsf_workflow_step) %></th>
<th><%= l(:label_dmsf_workflow_approval_plural) %></th>
<th><%=l(:button_sort)%></th>
<th/>
</tr></thead>
<tbody>
<% steps.each do |i|%>
<tr id="step-<%= i %>" class="<%= cycle 'odd', 'even' %> step">
<td class="step"><%= i %></td>
<td class="approval">
<% @workflow.dmsf_workflow_steps.collect{|s| (s.step == i) ? s : nil}.compact.each_with_index do |step, j| %>
<% if j != 0 %>
<b><%= step.soperator %></b>&nbsp
<% end %>
<%= link_to_user step.user %>
<% end %>
</td>
<td class="reorder">
<%= reorder_links('workflow_step', {:action => 'edit', :id => @workflow, :step => i}, :put) %>
</td>
<td class="buttons">
<%= delete_link edit_dmsf_workflow_path(@workflow, :step => i) %>
</td>
</tr>
<% end; reset_cycle %>
</tbody>
</table>
<% else %>
<p class="nodata"><%= l(:label_no_data) %></p>
<% end %>
</div>
<div class="splitcontentright">
<%= form_for(@workflow, :url => edit_dmsf_workflow_path(@workflow),
:html => {:method => :post}) do |f| %>
<fieldset><legend><%=l(:label_user_new)%></legend>
<p><%= label_tag 'user_search', l(:label_user_search) %><%= text_field_tag 'user_search', nil %></p>
<%= javascript_tag "observeSearchfield('user_search', 'users', '#{ escape_javascript autocomplete_for_user_dmsf_workflow_path(@workflow, :dmsf_workflow_step_assignment_id => nil, :dmsf_file_revision_id => nil, :project_id => @project ? @project.id : nil) }')" %>
<div id="users">
<%= render_principals_for_new_dmsf_workflow_users(@workflow, nil, nil) %>
</div>
<p>
<%= l(:label_dmsf_workflow_step) %>
<%= select_tag 'step',
dmsf_workflow_steps_options_for_select(steps),
:id => 'selected_step', :style => "width:100px" %>
</p>
<p><%= l(:label_dmsf_workflow_add_approver) %></p>
<p><%= submit_tag l(:dmsf_and) %>&nbsp<%= l(:label_or) %>&nbsp<%= submit_tag l(:dmsf_or) %></p>
</fieldset>
<% end %>
</div>
</div>

View File

@ -0,0 +1,3 @@
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'action', :locals => {:workflow => @workflow}) %>');
showModal('ajax-modal', '400px');
$('#ajax-modal').addClass('new-action');

View File

@ -0,0 +1 @@
<%= render 'steps' %>

View File

@ -0,0 +1,3 @@
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'assign', :locals => {:workflow => @workflow}) %>');
showModal('ajax-modal', '400px');
$('#ajax-modal').addClass('assignment');

View File

@ -0,0 +1 @@
<%= render_principals_for_new_dmsf_workflow_users(@workflow, params[:dmsf_workflow_step_assignment_id], params[:dmsf_file_revision_id]) %>

View File

@ -0,0 +1 @@
<%= render 'steps' %>

View File

@ -0,0 +1 @@
<%= render 'main' %>

View File

@ -0,0 +1,3 @@
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'log', :locals => {:workflow => @workflow}) %>');
showModal('ajax-modal', '800px');
$('#ajax-modal').addClass('workflow-log');

View File

@ -0,0 +1,17 @@
<% project = Project.find_by_id params[:project_id] if params[:project_id] %>
<% if project %>
<h2><%= link_to l(:label_dmsf_workflow_plural), settings_project_path(project, :tab => 'dmsf_workflow') %> &#187; <%=l(:label_dmsf_workflow_new)%></h2>
<% else %>
<h2><%= link_to l(:label_dmsf_workflow_plural), dmsf_workflows_path %> &#187; <%=l(:label_dmsf_workflow_new)%></h2>
<% end %>
<%= labelled_form_for @workflow do |f| %>
<%= error_messages_for 'workflow' %>
<div class="box tabular">
<p><%= f.label :label_dmsf_workflow_name %><%= text_field_tag :name %></p>
<% if project %>
<p><%= hidden_field_tag :project_id, project.id %></p>
<% end %>
</div>
<%= submit_tag l(:button_create) %>
<% end %>

View File

@ -0,0 +1 @@
<%= render 'steps' %>

View File

@ -0,0 +1 @@
<%= render 'steps' %>

View File

@ -1,4 +1,4 @@
<% if @project.new_record? && !@source_project.nil? %>
<% if @project.new_record? && @source_project %>
<p>
<label class="block"><%= check_box_tag 'only[]', 'dmsf', true %><%= l(:label_dmsf_plural, @source_project.dmsf_count) %></label>
</p>

View File

@ -66,21 +66,6 @@
(<%=l(:label_default)%>: <%=l(:select_option_deactivated)%>)
</p>
<p>
<%=content_tag(:label, l(:label_zip_names_encoding) + ":") %>
<%=text_field_tag "settings[dmsf_zip_encoding]", @settings["dmsf_zip_encoding"], :size=>50 %><br/>
(<%=l(:label_default)%>: utf-8)
<br/>
<%= l(:note_zip_names_encoding_iconv) %>
</p>
<% unless @settings["dmsf_zip_encoding"].blank? || @settings["dmsf_zip_encoding"].downcase == "utf-8"
begin
Iconv.conv(@settings["dmsf_zip_encoding"], "utf-8", "test")
rescue %>
<p class="warning"><%= l(:error_wrong_zip_encoding) %></p>
<% end
end %>
<p>
<%=content_tag(:label, l(:label_webdav) + ":") %>
<%=select_tag("settings[dmsf_webdav]",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 641 B

BIN
assets/images/assigned.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

BIN
assets/images/none.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 B

BIN
assets/images/rejected.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

BIN
assets/images/ticket_go.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -29,7 +29,7 @@ plupload.addI18n({
'Close': 'بستن',
'%d files queued': '%d فایل در صف',
'Using runtime: ': 'استفاده میکنید از : ',
'File: %f, size: %s, max file size: %m': فایل: %f, سایز: %s, بزرگترین سایز فایل: %m',
'File: %f, size: %s, max file size: %m':' فایل: %f, سایز: %s, بزرگترین سایز فایل: %m',
'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'عنصر بارگذار فقط %d فایل رو در یک زمان می پذیرد. سایر فایل ها مجرد از این موضوع هستند.',
'Upload URL might be wrong or doesn\'t exist': 'آدرس آپلود اشتباه می باشد یا وجود ندارد',
'Error: File too large: ': 'خطا: فایل حجیم است :: ',

View File

@ -14,17 +14,17 @@ table.entries {
}
table.entries td.modified {
min-width: 140px;
width: 140px;
min-width: 104px;
width: 104px;
}
table.entries td.actions {
min-width: 108px;
width: 108px;
min-width: 116px;
width: 116px;
}
table.entries td.title {
width: 50%;
width: 40%;
}
table.entries th.check, table.entries td.check {
@ -136,6 +136,11 @@ td.version img {
vertical-align:text-top;
}
td.workflow {
font-size: 0.8em;
white-space: nowrap;
}
/* DMSF entries list icons */
div.right_icon_box {
@ -233,3 +238,57 @@ table.access-table tbody td, table.access-table tbody tr:hover td {
display: block;
float: left;
}
/* Approval workflow */
#admin-menu a.approvalworkflows { background-image: url(../images/ticket_go.png); }
#users_for_delegate {height: 200px; overflow:auto;}
#users_for_delegate label {display: block;}
.revision_box{
padding: 0px 0px 0px 0px;
margin-bottom: 10px;
background-color:#f6f6f6;
color:#505050;
line-height:1.5em;
}
div.revision_box .ui-widget-header {
font-weight: normal;
}
table.list th {
text-align: left;
}
table.list td.note {
width: 20%;
}
table.list td.reorder {
width: 15%;
}
table.list td.step {
text-align: center;
width: 16px;
}
.log_header_box{
padding:6px;
margin-bottom: 10px;
}
.log_header_left {
width: 50%;
float: left;
}
.log_header_box label{
font-weight: bold;
margin-left: 0px;
margin-right: 3px;
padding: 3px 0 3px 0;
}
.modal a, a:link, a:visited{ color: #169; text-decoration: none; }
.modal a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
.modal{ font-size: 12px}

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -1,578 +0,0 @@
/*
* jQuery UI CSS Framework 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
.ui-widget-content a { color: #222222; }
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
.ui-widget-header a { color: #222222; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
* jQuery UI Resizable 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;
/* http://bugs.jqueryui.com/ticket/7233
- Resizable: resizable handles fail to work in IE if transparent and content overlaps
*/
background-image:url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=);
}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Accordion 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
* jQuery UI Autocomplete 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.13
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
/*
* jQuery UI Button 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
* jQuery UI Dialog 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog#theming
*/
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
* jQuery UI Slider 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Tabs 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs#theming
*/
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
* jQuery UI Datepicker 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
* jQuery UI Progressbar 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar#theming
*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,7 @@
development:
adapter: sqlite3
database: db/redmine_development.sqlite3
test:
adapter: sqlite3
database: db/redmine_development.sqlite3

View File

@ -1,211 +1,246 @@
# Czech translation for DMSF by vit.jonas@gmail.com, karel.picman@kontron.com
cs:
:dmsf: "DMSF"
:label_dmsf_file_plural: "Dmsf soubory"
:warning_no_entries_selected: "Není nic vybráno"
:error_email_to_must_be_entered: "Musí být zadán adresát"
:notice_email_sent: "Email byl odeslán"
:warning_file_already_locked: "Soubor už je zamčen"
:notice_file_locked: "Soubor byl zamčen"
:warning_file_not_locked: "Soubor není zamčen"
:notice_file_unlocked: "Soubor byl odemčen"
:error_only_user_that_locked_file_can_unlock_it: "Soubor může být odemčen pouze uživatelem, který ho zamkl"
:question_do_you_really_want_to_delete_this_entry: "Chcete to skutečně smazat?"
:error_max_files_exceeded: "Limit pro %{number} najednou stažených souborů je překročen"
:question_do_you_really_want_to_delete_this_revision: "Chcete skutečně smazat tuto revizi?"
:error_entry_project_does_not_match_current_project: "Zadaný projekt neodpovídá aktuálnímu projektu"
:notice_folder_created: "Adresář byl vytvořen"
:error_folder_creation_failed: "Vytváření složky selhalo"
:error_folder_title_must_be_entered: "Musí být zadán název"
:notice_folder_deleted: "Adresář byl smazán"
:error_folder_is_not_empty: "Adresář není prázdný"
:error_folder_title_is_already_used: "Název již existuje"
:notice_folder_details_were_saved: "Detaily složky byly uloženy"
:error_file_is_locked: "Soubor je zamčen"
:notice_file_deleted: "Soubor byl smazán"
:error_at_least_one_revision_must_be_present: "Musí ezistovat alespoň jedna revize"
:notice_revision_deleted: "Revize byla smazána"
:warning_one_of_files_locked: "Jeden ze souborů je zamčen"
:notice_file_unlocked: "Soubor bykl odemčen"
:notice_file_revision_created: " vytvořena nová revize"
:notice_your_preferences_were_saved: "Vaše nastavení bylo uloženo"
:warning_folder_notifications_already_activated: "Notifikace složky již byly aktivovány"
:notice_folder_notifications_activated: "Notifikace složky byly aktivovány"
:warning_folder_notifications_already_deactivated: "Notifikace složky již byly deaktivovány"
:notice_folder_notifications_deactivated: "Notifikace složky byly deaktivovány"
:warning_file_notifications_already_activated: "Notifikace souboru již byly aktivovány"
:notice_file_notifications_activated: "Notifikace souboru byly aktivovány"
:warning_file_notifications_already_deactivated: "Notifikace souboru již byly deaktivovány"
:notice_file_notifications_deactivated: "Notifikace souboru byly deaktivovány"
:link_details: "%{title} detaily"
:link_edit: "Upravit %{title}"
:submit_create: "Vytvořit"
:link_create_folder: "Vytvořit složku"
:title_check_uncheck_all_for_zip_download_or_email: "Vybrat/Nevybrat vše pro stažení jako Zip nebo emailem"
:link_title: "Název"
:link_size: "Velikost"
:link_modified: "Změněno"
:link_ver: "Ver."
:link_author: "Autor"
:title_check_for_zip_download_or_email: "Vybrat pro stažení jako Zip nebo emailem"
:title_delete: "Smazat"
:title_notifications_active_deactivate: "Notifikace aktivní: Deaktivovat"
:title_notifications_not_active_activate: "Notifikace nejsou aktivní: Aktivovat"
:title_title_version_version_download: "%{title} verze %{version} stáhnout"
:title_locked_by_user: "Zamčeno uživatelem %{user}"
:title_locked_by_you: "Zamčeno Vámi"
:title_waiting_for_approval: "Čeká na schválení"
:title_approved: "Schváleno"
:title_unlock_file: "Odemknout a uožnit změny ostatním uživatelům"
:title_lock_file: "Zamknout a zabránit změnám ostatních uživatelů"
:submit_download: "Stáhnout"
:title_download_checked: "Stáhnout vybrané jako Zip"
:submit_email: "Email"
:title_send_checked_by_email: "Zadeslat vybrané emailem"
:link_user_preferences: "Vaše nastavení"
:heading_send_documents_by_email: "Odeslat dokumenty emailem"
:label_email_from: "Od"
:label_email_to: "Komu"
:label_email_cc: "Kopie"
:label_email_subject: "Předmět"
:label_email_documents: "Documenty"
:label_email_body: "Obsah"
:label_email_send: "Odesláno"
:title_notifications_active: "Notifikace jsou aktivní"
:label_file_size: "Velikost souboru"
:heading_file_upload: "Nahrát"
:note_uploaded_maximum_files_at_once: "Maximálně může být nahráno %{number} souborů najednou."
:note_upload_files_greater_than_two_gb: "Nahrání souborů větších než 2GB vyžaduje 64b prohlížeč."
:submit_upload_files: "Nahrání"
:heading_new_folder: "Nová složka"
:label_title: "Název"
:label_description: "Popis"
:submit_save: "Uložit"
:info_file_locked: "Soubor je zamčen!"
:label_notifications: "Notifikace"
:select_option_default: "Výchozí"
:select_option_deactivated: "Deaktivováno"
:select_option_activated: "Aktivováno"
:title_save_preferences: "Uložit nastavení"
:heading_revisions: "Revize"
:title_download: "Stáhnout"
:title_delete_revision: "Smazat revizi"
:label_created: "Vytvořeno"
:label_changed: "Změněno"
:info_changed_by_user: "%{changed} uživatelem %{user}"
:label_filename: "Jméno souboru"
:label_version: "Verze"
:label_workflow: "Workflow"
:option_workflow_waiting_for_approval: "Čeká na schválení"
:option_workflow_approved: "Schváleno"
:option_workflow_none: "Žádné"
:label_mime: "Typ"
:label_size: "Velikost"
:label_comment: "Komentář"
:heading_new_revision: "Nová revize"
:option_version_same: "Stejná"
:option_version_minor: "Podružná"
:option_version_major: "Hlavní"
:label_new_content: "Nový obsah"
:label_maximum_files_upload: "Maximální počet najednou nahraných souborů"
:note_maximum_number_of_files_uploaded: "Maximální počet najednou nahraných souborů. 0 znamená bez omezení."
:label_maximum_files_download: "Maximální počet najednou stažených souborů"
:note_maximum_number_of_files_downloaded: "Maximální počet najednou stažených souborů jako Zip nebo odeslaných emailem. 0 znamená bez omezení."
:label_file_storage_directory: "Složka pro uložení souborů"
:label_index_database: "Index databáze"
:label_stemming_language: "Jazyk pro 'Stemming'"
:note_possible_values: "Povolené hodnoty"
:note_pass_none_to_disable_stemming: "zadej 'nic' pro vypnutí 'Stemming'"
:label_stem_strategy: "'Stem' strategie"
:option_stem_none: "Stem nic (výchozí)"
:option_stem_some: "Stem něco"
:option_stem_all: "Stem vše"
:label_stemming_description: "Tímto je určeno, jak analyzátor dotazu aplikuje algoritmus Stemmingu. Výchozí hodnota je STEM_NONE. Dostupné hodnoty jsou"
:note_do_not_stem: "Žádný stemming."
:note_stem_some: "Hledej stemmed formy výrazů kromě těch, které začínají velkým písmenem nebo jsou následovány určitými znaky nebo jsou použity s operátory, které vyžadují informaci o pozici. Stemmed výrazy začínají písmenem 'Z'."
:note_stem_all: "Hledej stemmed formy všech slov (poznámka: 'Z' prefix není přidán)."
:note_stemming_applied: "Poznámka, že algoritmus stemingu je aplikován pouze na slova v pravděpodobnostních polích - výrazy pravda/nepravda nejsou stemovány."
:label_default_notifications: "Výchozí notifikace souboru"
:heading_uploaded_files: "Nahrané soubory"
:submit_commit: "Potvrdit"
:link_documents: "Dokumenty"
:permission_view_dmsf_folders: "Procházet dokumenty"
:permission_user_preferences: "Nastavení uživatele"
:permission_view_dmsf_files: "Zobrazit dokumenty"
:permission_folder_manipulation: "Manipulace se složkami"
:permission_file_manipulation: "Manipulace se soubory"
:permission_file_approval: "Schválení souboru"
:permission_force_file_unlock: "Vynucené odemknutí souboru"
:label_file: "Soubor"
:field_folder: "Složka"
:error_create_cycle_in_folder_dependency: "vytvořit smyčku v závislostech složky"
:error_contains_invalid_character: "obsahuje neplatné znaky"
:error_file_commit_require_uploaded_file: "Potvrzení vyžaduje nahraný soubor"
:warning_some_files_were_not_commited: "Některé soubory nebyly potvrzené z důvodu chyb při validaci: %{files}"
:error_user_has_not_right_delete_folder: "Uživatel nemá právo mazat složky"
:error_user_has_not_right_delete_file: "Uživatel nemá právo mazat soubor"
:notice_entries_deleted: "Poožky smazány"
:warning_some_entries_were_not_deleted: "Některé položky nebyly smazány: %{entries}"
:question_do_you_really_want_to_delete_entries: "Opravdu chcete smazat vybrané položky?"
:title_delete_checked: "Smaž vybrané"
:title_number_of_files_in_directory: "Počet souborů ve složce"
:title_filename_for_download: "Název Zip archívu ke stažení"
:label_number_of_folders: "Složky"
:label_number_of_documents: "Dokumenty"
:label_zip_names_encoding: "Kódováni názvu Zipu"
:note_zip_names_encoding_iconv: "Pro kódováni znaků z UTF8 do cílového kování je použi Iconv"
:error_file_storage_directory_does_not_exist: "Cílová složka neexistuje a nemůže být vytvořena"
:error_file_can_not_be_created: "Nelze vytvořit soubor v cílové složce"
:error_wrong_zip_encoding: "Chybné kódování Zipu"
:warning_xapian_not_available: "Xapian není k dostupný"
:menu_dmsf: "DMSF"
:label_physical_file_delete: "Fyzické smazání souboru"
:user_is_not_project_member: "Nejste členem projektu"
:heading_access_downloads_emails: "Stažené/Emaily"
:heading_access_first: "První"
:heading_access_last: "Poslední"
:label_dmsf_updated: "DMSF změněno"
:title_total_size_of_all_files: "Celková velikost všech souborů v adresáři"
:project_module_dmsf: "DMSF"
:warning_no_project_to_copy_file_to: "Neexistuje projekt, do kterého můžete kopírovat"
:comment_copied_from: "Zkopírováno z %{source}"
:notice_file_copied: "Soubor zkopírován"
:notice_file_moved: "Soubor přesunut"
:label_target_project: "Cílový projekt"
:label_target_folder: "Cílový adresář"
:title_copy_or_move: "Kopírovat/Přesunout"
:label_dmsf_folder_plural: "Dmsf složky"
:comment_moved_from: "Přesunuto z %{source}"
:error_target_folder_same: "Cílový adresář a projekt jsou stejné jako aktuální"
:error_file_cannot_be_moved: "Soubor nemůže být přesunut"
:error_file_cannot_be_copied: "Soubor nemůže být zkopírován"
:warning_no_project_to_copy_folder_to: "Neexistuje projekt, do kterého můžete kopírovat"
:title_copy: "Kopírovat"
:error_folder_cannot_be_copied: "Složka nemůže být zkopírována"
:notice_folder_copied: "Složka zkopírována"
:error_max_email_filesize_exceeded: "Přesáhli jste maximální velikost souboru, který lze poslat emailem. (%{number} MB)"
dmsf: DMSF
label_dmsf_file_plural: Dmsf soubory
warning_no_entries_selected: Není nic vybráno
error_email_to_must_be_entered: Musí být zadán adresát
warning_file_already_locked: Soubor už je zamčen
notice_file_locked: Soubor byl zamčen
warning_file_not_locked: Soubor není zamčen
notice_file_unlocked: Soubor byl odemčen
error_only_user_that_locked_file_can_unlock_it: Soubor může být odemčen pouze uživatelem, který ho zamkl
question_do_you_really_want_to_delete_this_entry: Chcete to skutečně smazat?
error_max_files_exceeded: "Limit pro %{number} najednou stažených souborů je překročen"
question_do_you_really_want_to_delete_this_revision: Chcete skutečně smazat tuto revizi?
error_entry_project_does_not_match_current_project: Zadaný projekt neodpovídá aktuálnímu projektu
notice_folder_created: Adresář byl vytvořen
error_folder_creation_failed: Vytváření složky selhalo
error_folder_title_must_be_entered: Musí být zadán název
notice_folder_deleted: Adresář byl smazán
error_folder_is_not_empty: Adresář není prázdný
error_folder_title_is_already_used: Název již existuje
notice_folder_details_were_saved: Detaily složky byly uloženy
error_file_is_locked: Soubor je zamčen
notice_file_deleted: Soubor byl smazán
error_at_least_one_revision_must_be_present: Musí existovat alespoň jedna revize
notice_revision_deleted: Revize byla smazána
warning_one_of_files_locked: Jeden ze souborů je zamčen
notice_file_unlocked: Soubor byl odemčen
notice_file_revision_created: vytvořena nová revize
notice_your_preferences_were_saved: Vaše nastavení bylo uloženo
warning_folder_notifications_already_activated: Notifikace složky již byly aktivovány
notice_folder_notifications_activated: Notifikace složky byly aktivovány
warning_folder_notifications_already_deactivated: Notifikace složky již byly deaktivovány
notice_folder_notifications_deactivated: Notifikace složky byly deaktivovány
warning_file_notifications_already_activated: Notifikace souboru již byly aktivovány
notice_file_notifications_activated: Notifikace souboru byly aktivovány
warning_file_notifications_already_deactivated: Notifikace souboru již byly deaktivovány
notice_file_notifications_deactivated: Notifikace souboru byly deaktivovány
link_details: "%{title} detaily"
link_edit: "Upravit %{title}"
submit_create: Vytvořit
link_create_folder: Vytvořit složku
title_check_uncheck_all_for_zip_download_or_email: Vybrat/Nevybrat vše pro stažení jako Zip nebo emailem
link_title: Název
link_size: Velikost
link_modified: Změněno
link_ver: Ver.
link_author: Autor
title_check_for_zip_download_or_email: Vybrat pro stažení jako Zip nebo emailem
title_delete: Smazat
title_notifications_active_deactivate: "Notifikace aktivní: Deaktivovat"
title_notifications_not_active_activate: "Notifikace nejsou aktivní: Aktivovat"
title_title_version_version_download: "%{title} verze %{version} stáhnout"
title_locked_by_user: "Zamčeno uživatelem %{user}"
title_locked_by_you: Zamčeno Vámi
title_waiting_for_approval: Čeká na schválení
title_approved: Schváleno
title_unlock_file: Odemknout a umožnit změny ostatním uživatelům
title_lock_file: Zamknout a zabránit změnám ostatních uživatelů
submit_download: Stáhnout
title_download_checked: Stáhnout vybrané jako Zip
submit_email: Email
title_send_checked_by_email: Zaslat vybrané emailem
link_user_preferences: Vaše nastavení
heading_send_documents_by_email: Odeslat dokumenty emailem
label_email_from: Od
label_email_to: Komu
label_email_cc: Kopie
label_email_subject: Předmět
label_email_documents: Documenty
label_email_body: Obsah
label_email_send: Odesláno
title_notifications_active: Notifikace jsou aktivní
label_file_size: Velikost souboru
heading_file_upload: Nahrát
note_uploaded_maximum_files_at_once: "Maximálně může být nahráno %{number} souborů najednou."
note_upload_files_greater_than_two_gb: Nahrání souborů větších než 2GB vyžaduje 64b prohlížeč.
submit_upload_files: Nahrání
heading_new_folder: Nová složka
label_title: Název
label_description: Popis
submit_save: Uložit
info_file_locked: Soubor je zamčen!
label_notifications: Notifikace
select_option_default: Výchozí
select_option_deactivated: Deaktivováno
select_option_activated: Aktivováno
title_save_preferences: Uložit nastavení
heading_revisions: Revize
title_download: Stáhnout
title_delete_revision: Smazat revizi
label_created: Vytvořeno
label_changed: Změněno
info_changed_by_user: "%{changed} uživatelem %{user}"
label_filename: Jméno souboru
label_version: Verze
label_workflow: Workflow
label_mime: Typ
label_size: Velikost
label_comment: Komentář
heading_new_revision: Nová revize
option_version_same: Stejná
option_version_minor: Podružná
option_version_major: Hlavní
label_new_content: Nový obsah
label_maximum_files_upload: Maximální počet najednou nahraných souborů
note_maximum_number_of_files_uploaded: Maximální počet najednou nahraných souborů. 0 znamená bez omezení.
label_maximum_files_download: Maximální počet najednou stažených souborů
note_maximum_number_of_files_downloaded: Maximální počet najednou stažených souborů jako Zip nebo odeslaných emailem. 0 znamená bez omezení.
label_file_storage_directory: Složka pro uložení souborů
label_index_database: Index databáze
label_stemming_language: "Jazyk pro 'Stemming'"
note_possible_values: Povolené hodnoty
note_pass_none_to_disable_stemming: "zadej 'nic' pro vypnutí 'Stemming'"
label_stem_strategy: "'Stem' strategie"
option_stem_none: Stem nic (výchozí)
option_stem_some: Stem něco
option_stem_all: Stem vše
label_stemming_description: Tímto je určeno, jak analyzátor dotazu aplikuje algoritmus Stemmingu. Výchozí hodnota je STEM_NONE. Dostupné hodnoty jsou
note_do_not_stem: Žádný stemming.
note_stem_some: "Hledej stemmed formy výrazů kromě těch, které začínají velkým písmenem nebo jsou následovány určitými znaky nebo jsou použity s operátory, které vyžadují informaci o pozici. Stemmed výrazy začínají písmenem 'Z'."
note_stem_all: "Hledej stemmed formy všech slov (poznámka: 'Z' prefix není přidán)."
note_stemming_applied: Poznámka, že algoritmus stemingu je aplikován pouze na slova v pravděpodobnostních polích - výrazy pravda/nepravda nejsou stemovány.
label_default_notifications: Výchozí notifikace souboru
heading_uploaded_files: Nahrané soubory
submit_commit: Potvrdit
link_documents: Dokumenty
permission_view_dmsf_folders: Procházet dokumenty
permission_user_preferences: Nastavení uživatele
permission_view_dmsf_files: Zobrazit dokumenty
permission_folder_manipulation: Manipulace se složkami
permission_file_manipulation: Manipulace se soubory
permission_file_approval: Schválení souboru
permission_force_file_unlock: Vynucené odemknutí souboru
label_file: Soubor
field_folder: Složka
error_create_cycle_in_folder_dependency: vytvořit smyčku v závislostech složky
error_contains_invalid_character: obsahuje neplatné znaky
error_file_commit_require_uploaded_file: Potvrzení vyžaduje nahraný soubor
warning_some_files_were_not_commited: "Některé soubory nebyly potvrzené z důvodu chyb při validaci: %{files}"
error_user_has_not_right_delete_folder: Uživatel nemá právo mazat složky
error_user_has_not_right_delete_file: Uživatel nemá právo mazat soubor
notice_entries_deleted: Položky smazány
warning_some_entries_were_not_deleted: "Některé položky nebyly smazány: %{entries}"
question_do_you_really_want_to_delete_entries: Opravdu chcete smazat vybrané položky?
title_delete_checked: Smaž vybrané
title_number_of_files_in_directory: Počet souborů ve složce
title_filename_for_download: Název Zip archívu ke stažení
label_number_of_folders: Složky
label_number_of_documents: Dokumenty
label_zip_names_encoding: Kódováni názvu Zipu
note_zip_names_encoding_iconv: Pro kódováni znaků z UTF8 do cílového kování je použi Iconv
error_file_storage_directory_does_not_exist: Cílová složka neexistuje a nemůže být vytvořena
error_file_can_not_be_created: Nelze vytvořit soubor v cílové složce
error_wrong_zip_encoding: Chybné kódování Zipu
warning_xapian_not_available: Xapian není k dostupný
menu_dmsf: DMSF
label_physical_file_delete: Fyzické smazání souboru
user_is_not_project_member: Nejste členem projektu
heading_access_downloads_emails: Stažené/Emaily
heading_access_first: První
heading_access_last: Poslední
label_dmsf_updated: DMSF změněno
title_total_size_of_all_files: Celková velikost všech souborů v adresáři
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: Neexistuje projekt, do kterého můžete kopírovat
comment_copied_from: "Zkopírováno z %{source}"
notice_file_copied: Soubor zkopírován
notice_file_moved: Soubor přesunut
label_target_project: Cílový projekt
label_target_folder: Cílový adresář
title_copy_or_move: Kopírovat/Přesunout
label_dmsf_folder_plural: Dmsf složky
comment_moved_from: "Přesunuto z %{source}"
error_target_folder_same: Cílový adresář a projekt jsou stejné jako aktuální
error_file_cannot_be_moved: Soubor nemůže být přesunut
error_file_cannot_be_copied: Soubor nemůže být zkopírován
warning_no_project_to_copy_folder_to: Neexistuje projekt, do kterého můžete kopírovat
title_copy: Kopírovat
error_folder_cannot_be_copied: Složka nemůže být zkopírována
notice_folder_copied: Složka zkopírována
error_max_email_filesize_exceeded: "Přesáhli jste maximální velikost souboru, který lze poslat emailem. (%{number} MB)"
:note_maximum_email_filesize: "Omezí se maximální velikost souboru, který může být poslán emailem. 0 znamená neomezený. Číslo je v MB."
:label_maximum_email_filesize: "Maximální velikost souboru emailu"
:header_minimum_filesize: "Chyba souboru."
:error_minimum_filesize: "Soubor %{file} má nulovou velikost a nebude přiložen."
:parent_directory: "Nadřazený adresář"
:note_webdav: "Webdav je po založení k dispozici na http://.../dmsf/webdav/"
:label_webdav: "Webdav functionalita"
:label_dmsf_plural: "Kopíruj DMSF soubory a složky (%{files} souborů v %{folders} složkách)"
note_maximum_email_filesize: Omezí se maximální velikost souboru, který může být poslán emailem. 0 znamená neomezený. Číslo je v MB.
label_maximum_email_filesize: Maximální velikost souboru emailu
header_minimum_filesize: Chyba souboru.
error_minimum_filesize: "Soubor %{file} má nulovou velikost a nebude přiložen."
parent_directory: Nadřazený adresář
note_webdav: "Webdav je po založení k dispozici na http://.../dmsf/webdav/"
label_webdav: Webdav functionalita
label_dmsf_plural: "Kopíruj DMSF soubory a složky (%{files} souborů v %{folders} složkách)"
:warning_folder_already_locked: "Tato složka je již zamčená"
:notice_folder_locked: "Složka byla úspěšně zamčena"
:warning_folder_not_locked: "Složku nelze zamknout"
:notice_folder_unlocked: "Složka byla odemčena"
:error_only_user_that_locked_folder_can_unlock_it: "Nemáte oprávnění k odemknutí této složky"
:title_folder_parent_locked: "Nadřazená složka %{name} je zamčená"
:title_file_parent_locked: "Nadřazená složka %{name} je zamčená"
:title_unlock_folder: "Odemknout"
:title_lock_folder: "Zamknout"
warning_folder_already_locked: Tato složka je již zamčená
notice_folder_locked: Složka byla úspěšně zamčena
warning_folder_not_locked: Složku nelze zamknout
notice_folder_unlocked: Složka byla odemčena
error_only_user_that_locked_folder_can_unlock_it: Nemáte oprávnění k odemknutí této složky
title_folder_parent_locked: "Nadřazená složka %{name} je zamčená"
title_file_parent_locked: "Nadřazená složka %{name} je zamčená"
title_unlock_folder: Odemknout
title_lock_folder: Zamknout
:select_option_webdav_readonly: "Pouze pro čtení"
:select_option_webdav_readwrite: "Čtení/Zápis"
:label_webdav_strategy: "Webdav strategie"
:note_webdav_strategy: "Umožní administrátorovi rozhodnout, zdali je webdav pouze pro čtení nebo i pro zápis."
select_option_webdav_readonly: Pouze pro čtení
select_option_webdav_readwrite: Čtení/Zápis
label_webdav_strategy: Webdav strategie
note_webdav_strategy: Umožní administrátorovi rozhodnout, zdali je webdav pouze pro čtení nebo i pro zápis.
error_unable_delete_dmsf_workflow: Nelze smazat schvalovací proces
error_empty_note: Musí být vyplněn komentář
error_workflow_assign: Chyba při přiřazování
error_cannot_start_workflow: Schvalovací proces nemůže být zahájen
error_cannot_renumber_steps: Schvalovací kroky nelze přečíslovat
label_dmsf_workflow_new: Nový schvalovací proces
field_label_dmsf_workflow: Schvalovací proces
field_label_dmsf_workflow_name: Approval workflow name
label_dmsf_workflow_plural: Schvalovací procesy
label_dmsf_workflow_step: Krok
label_dmsf_workflow_step_plural: Kroky
label_dmsf_workflow_approval: Schválení
label_dmsf_workflow_approval_plural: Schválení
label_dmsf: DMSF
label_dmsf_wokflow_action_approve: Schválit
label_dmsf_wokflow_action_reject: Odmítnout
label_dmsf_wokflow_action_delegate: Delegovat na
label_dmsf_wokflow_action_assign: Přiřadit schvalovací proces
label_dmsf_wokflow_action_start: Zahájit schvalovací proces
label_dmsf_workflow_add_approver: "Přidat schvalovatele s logickou funkcí:"
label_or: nebo
label_action: Akce
label_note: Komentář
title_none: Komentář
title_rejection: Zamítnutí
title_delegation: Delegace
title_assignment: Přiřazení
title_start: Zahájení
title_dmsf_workflow_log: Historie schvalovacího procesu
title_assigned: Přiřazený
title_approval: Schválený
title_rejected: Zamítnutý
dmsf_and: A
dmsf_or: NEBO
dmsf_new_step: Nový krok
message_dmsf_wokflow_note: Váš komentář...
info_revision: "r%{rev}"
link_workflow: Schvalovací proces
notice_workflow_started: Schvalovací proces byl úspěšně zahájen

View File

@ -1,211 +1,246 @@
# German translation for DMSF by Terrence Miller
de:
:dmsf: "DMS"
:label_dmsf_file_plural: "DMS"
:warning_no_entries_selected: "Keine Einträge ausgewählt"
:error_email_to_must_be_entered: "Es muss ein Email-Empfänger angegeben werden."
:notice_email_sent: "Email gesendet"
:warning_file_already_locked: "Datei schon gesperrt"
:notice_file_locked: "Datei gesperrt"
:warning_file_not_locked: "Datei nicht gesperrt"
:notice_file_unlocked: "Dateisperre gelöst"
:error_only_user_that_locked_file_can_unlock_it: "Nur der Benutzer, der die Datei gesperrt hat, kann sie auch wieder freigeben"
:question_do_you_really_want_to_delete_this_entry: "Willst du diesen Eintrag wirklich löschen?"
:error_max_files_exceeded: "Grenze für %{number} gleichzeitig heruntergeladene Dateien überschritten"
:question_do_you_really_want_to_delete_this_revision: "Möchtest du diese Dateiversion wirklich löschen?"
:error_entry_project_does_not_match_current_project: "Entry Projekt entspricht nicht aktuellen Projekt"
:notice_folder_created: "Ordner erstellt"
:error_folder_creation_failed: "Ordnererstellung fehlgeschlagen"
:error_folder_title_must_be_entered: "Es muss ein Titel angegeben werden"
:notice_folder_deleted: "Ordner gelöscht"
:error_folder_is_not_empty: "Ordner ist nicht leer"
:error_folder_title_is_already_used: "Titel wird schon benutzt. Denk dir was Neues aus."
:notice_folder_details_were_saved: "Ordnerdetails wurden gespeichert"
:error_file_is_locked: "Datei ist gesperrt"
:notice_file_deleted: "Datei gelöscht"
:error_at_least_one_revision_must_be_present: "Es muss mindestens eine Version existieren"
:notice_revision_deleted: "Version gelöscht"
:warning_one_of_files_locked: "Eine der Dateien ist gesperrt"
:notice_file_unlocked: "Dateisperre gelöst"
:notice_file_revision_created: "Dateiversion erstellt"
:notice_your_preferences_were_saved: "Deine Einstellungen wurden gespeichert"
:warning_folder_notifications_already_activated: "Ordnerbenachrichtigungen schon aktiviert"
:notice_folder_notifications_activated: "Ordnerbenachrichtigungen aktiviert"
:warning_folder_notifications_already_deactivated: "Ordnerbenachrichtigungen schon deaktiviert"
:notice_folder_notifications_deactivated: "Ordnerbenachrichtigungen deaktiviert"
:warning_file_notifications_already_activated: "Dateibenachrichtigungen schon aktiviert"
:notice_file_notifications_activated: "Dateibenachrichtigungen aktiviert"
:warning_file_notifications_already_deactivated: "Dateibenachrichtigungen schon deaktiviert"
:notice_file_notifications_deactivated: "Dateibenachrichtigungen deaktiviert"
:link_details: "%{title} Details"
:link_edit: "Bearbeite %{title}"
:submit_create: "Erstellen"
:link_create_folder: "Erzeuge Ordner"
:title_check_uncheck_all_for_zip_download_or_email: "Wähle alle/keine für ZIP-Download bzw. Email"
:link_title: "Titel"
:link_size: "Größe"
:link_modified: "Geändert"
:link_ver: "Version"
:link_author: "Autor"
:title_check_for_zip_download_or_email: "Wähle für ZIP-Download bzw. Email"
:title_delete: "Löschen"
:title_notifications_active_deactivate: "Benachrichtigungen aktiv: Ausschalten"
:title_notifications_not_active_activate: "Benachrichtigungen nicht aktiv: Einschalten"
:title_title_version_version_download: "%{title} Version %{version} Download"
:title_locked_by_user: "Gesperrt von %{user}"
:title_locked_by_you: "Gesperrt von dir"
:title_waiting_for_approval: "Warte auf Zustimmung"
:title_approved: "Zugestimmt"
:title_unlock_file: "Hebe Sperre auf um Änderungen anderer Nutzer zu ermöglichen"
:title_lock_file: "Sperre um Änderungen anderer Nutzer zu verhindern"
:submit_download: "Download"
:title_download_checked: "Download der ausgewählten Dateien in einem ZIP-Archiv"
:submit_email: "Email"
:title_send_checked_by_email: "Sende gewählte Dateien per Email"
:link_user_preferences: "Deine Einstellungen"
:heading_send_documents_by_email: "Sende Dateien per Email"
:label_email_from: "Von"
:label_email_to: "An"
:label_email_cc: "CC"
:label_email_subject: "Betreff"
:label_email_documents: "Dateien"
:label_email_body: "Text"
:label_email_send: "Senden"
:title_notifications_active: "Benachrichtigungen aktiv"
:label_file_size: "Dateigröße"
:heading_file_upload: "Upload"
:note_uploaded_maximum_files_at_once: "Es können maximal %{number} Dateien auf einmal hochgeladen werden."
:note_upload_files_greater_than_two_gb: "Um Dateien größer 2GB hochzuladen brauchst du einen 64bit-Browser."
:submit_upload_files: "Upload"
:heading_new_folder: "Neuer Ordner"
:label_title: "Titel"
:label_description: "Beschreibung"
:submit_save: "Speichern"
:info_file_locked: "Datei gesperrt!"
:label_notifications: "Benachrichtigungen"
:select_option_default: "Voreinstellung"
:select_option_deactivated: "Aus"
:select_option_activated: "Ein"
:title_save_preferences: "Speichere Einstellungen"
:heading_revisions: "Versionen"
:title_download: "Download"
:title_delete_revision: "Lösche Version"
:label_created: "Erstellt"
:label_changed: "Geändert"
:info_changed_by_user: "%{changed} von %{user}"
:label_filename: "Dateiname"
:label_version: "Version"
:label_workflow: "Workflow"
:option_workflow_waiting_for_approval: "Warte auf Zustimmung"
:option_workflow_approved: "Zugestimmt"
:option_workflow_none: "Keiner"
:label_mime: "Mime"
:label_size: "Größe"
:label_comment: "Kommentar"
:heading_new_revision: "Neue Version"
:option_version_same: "gleiche Version"
:option_version_minor: "Unterversion"
:option_version_major: "Hauptversion"
:label_new_content: "Neuer Inhalt"
:label_maximum_files_upload: "Maximal hochzuladende Dateien"
:note_maximum_number_of_files_uploaded: "Beschränkt die Anzahl der maximal auf einmal hochladbaren Dateien. 0 bedeutet unbeschränkt."
:label_maximum_files_download: "Maximal herunterzuladende Dateien"
:note_maximum_number_of_files_downloaded: "Beschränkt die Anzahl der maximal auf einmal herunterladbaren Dateien (per ZIP oder Mail). 0 bedeutet unbeschränkt."
:label_file_storage_directory: "Verzeichnis für die Dateiablage"
:label_index_database: "Index Datenbank"
:label_stemming_language: "Sprache für die Normalformreduktion"
:note_possible_values: "Mögliche Werte"
:note_pass_none_to_disable_stemming: "übergebe 'none' um die Normalformreduktion zu unterdrücken"
:label_stem_strategy: "Normalformreduktionsform"
:option_stem_none: "reduziere nichts (Voreinstellung)"
:option_stem_some: "reduziere manches"
:option_stem_all: "reduziere alles"
:label_stemming_description: "Diese Einstellung beeinflusst wie der Parser den Normalformreduktionsalgorithmus anwendet. Voreingestellt ist STEM_NONE. Die möglichen Werte sind"
:note_do_not_stem: "Mache keine Normalformreduktion."
:note_stem_some: "Search for stemmed forms of terms except for those which start with a capital letter, or are followed by certain characters, or are used with operators which need positional information. Stemmed terms are prefixed with 'Z'."
:note_stem_all: "Suche nach reduzierten Formen aller Wörter (Achtung: Kein 'Z'-Präfix wird hinzugefügt)."
:note_stemming_applied: "Beachte, dass der Normalformreduzierungsalgorithmus nur bei Wörtern in Wahrscheinlichkeitsfeldern angewendert wird - boolesche Filterausdrücke werden nie reduziert."
:label_default_notifications: "standardmäßge Dateibenachrichtigungen"
:heading_uploaded_files: "Hochgeladene Dateien"
:submit_commit: "OK"
:link_documents: "Dateien"
:permission_view_dmsf_folders: "Durchforste Dateien"
:permission_user_preferences: "Benutzereinstellungen"
:permission_view_dmsf_files: "Betrachte Dateien"
:permission_folder_manipulation: "Ordner manipulation"
:permission_file_manipulation: "Datei manipulation"
:permission_file_approval: "Datei approval"
:permission_force_file_unlock: "Erzwinge Aufhebung der Dateisperre"
:label_file: "Datei"
:field_folder: "Ordner"
:error_create_cycle_in_folder_dependency: "schaffen Zyklus in Abhängigkeit Ordner"
:error_contains_invalid_character: "enthält ungültige Zeichen"
:error_file_commit_require_uploaded_file: "Begehen einen Datei erfordet hochladene Datei"
:warning_some_files_were_not_commited: "Einige Dateien wurden nich begehen wegen Validation Fehlern: %{files}"
:error_user_has_not_right_delete_folder: "Der Nutzer hat kein Recht die Ordner zu löschen."
:error_user_has_not_right_delete_file: "Der Nutzer hat kein Recht die Datei zu löschen."
:notice_entries_deleted: "Aufnahmen löschen"
:warning_some_entries_were_not_deleted: "Enige Aufnahmen wurden nich gelöscht: %{entries}"
:question_do_you_really_want_to_delete_entries: "Willst du wirklich die gewählten Aufnahmen löschen?"
:title_delete_checked: "Lösch gewähltest"
:title_number_of_files_in_directory: "Dateizahl in dem Ordner"
:title_filename_for_download: "Dateiname benutzt zum Herunterladen oder ZIP-archivierung"
:label_number_of_folders: "Order"
:label_number_of_documents: "Dokumente"
:label_zip_names_encoding: "ZIP-namen Kodierung"
:note_zip_names_encoding_iconv: "Iconv ist benutzt zum Charset-konversion von utf-8 in Zielkodierung"
:error_file_storage_directory_does_not_exist: "Ordner zum Dateispeichern existiert nicht und kann nicht gebildet."
:error_file_can_not_be_created: "Datei kann nicht in dem gewählten Ordner gebildet werden."
:error_wrong_zip_encoding: "Falsche ZIP-kodierung"
:warning_xapian_not_available: "Xapian nicht zur Verfügung"
:menu_dmsf: "DMS"
:label_physical_file_delete: "Physisches Dateilöschen"
:user_is_not_project_member: "Du bist kein Projektmitglied"
:heading_access_downloads_emails: "Herunterladene/Emails"
:heading_access_first: "Erste"
:heading_access_last: "Letzte"
:label_dmsf_updated: "DMS aktualisiert"
:title_total_size_of_all_files: "Gesamtgröße aller Datein in diesem Ordner"
:project_module_dmsf: "DMS"
:warning_no_project_to_copy_file_to: "Kein Projekt für das Dateikopieren."
:comment_copied_from: "Kopiert aus %{source}"
:notice_file_copied: "Datei kopiert"
:notice_file_moved: "Datei verschoben"
:label_target_project: "Zielprojekte"
:label_target_folder: "Zielordner"
:title_copy_or_move: "Kopieren/Verschieben"
:label_dmsf_folder_plural: "Ordner"
:comment_moved_from: "Verschoben aus %{source}"
:error_target_folder_same: "Zielordner und Projekt sind dieselbe wie die Aktuelle."
:error_file_cannot_be_moved: "Die Datei kann nicht verschoben werden."
:error_file_cannot_be_copied: "Die Datei kann nicht kopiert werden."
:warning_no_project_to_copy_folder_to: "Kein Projekt für das Ordnerkopieren."
:title_copy: "Kopieren"
:error_folder_cannot_be_copied: "Der Ordner kann nicht kopiert werden."
:notice_folder_copied: "Ordner kopiert"
dmsf: DMS
label_dmsf_file_plural: DMS
warning_no_entries_selected: Keine Einträge ausgewählt
error_email_to_must_be_entered: Es muss ein Email-Empfänger angegeben werden.
warning_file_already_locked: Datei schon gesperrt
notice_file_locked: Datei gesperrt
warning_file_not_locked: Datei nicht gesperrt
notice_file_unlocked: Dateisperre gelöst
error_only_user_that_locked_file_can_unlock_it: Nur der Benutzer, der die Datei gesperrt hat, kann sie auch wieder freigeben
question_do_you_really_want_to_delete_this_entry: Willst du diesen Eintrag wirklich löschen?
error_max_files_exceeded: "Grenze für %{number} gleichzeitig heruntergeladene Dateien überschritten"
question_do_you_really_want_to_delete_this_revision: Möchtest du diese Dateiversion wirklich löschen?
error_entry_project_does_not_match_current_project: Entry Projekt entspricht nicht aktuellen Projekt
notice_folder_created: Ordner erstellt
error_folder_creation_failed: Ordnererstellung fehlgeschlagen
error_folder_title_must_be_entered: Es muss ein Titel angegeben werden
notice_folder_deleted: Ordner gelöscht
error_folder_is_not_empty: Ordner ist nicht leer
error_folder_title_is_already_used: Titel wird schon benutzt. Denk dir was Neues aus.
notice_folder_details_were_saved: Ordnerdetails wurden gespeichert
error_file_is_locked: Datei ist gesperrt
notice_file_deleted: Datei gelöscht
error_at_least_one_revision_must_be_present: Es muss mindestens eine Version existieren
notice_revision_deleted: Version gelöscht
warning_one_of_files_locked: Eine der Dateien ist gesperrt
notice_file_unlocked: Dateisperre gelöst
notice_file_revision_created: Dateiversion erstellt
notice_your_preferences_were_saved: Deine Einstellungen wurden gespeichert
warning_folder_notifications_already_activated: Ordnerbenachrichtigungen schon aktiviert
notice_folder_notifications_activated: Ordnerbenachrichtigungen aktiviert
warning_folder_notifications_already_deactivated: Ordnerbenachrichtigungen schon deaktiviert
notice_folder_notifications_deactivated: Ordnerbenachrichtigungen deaktiviert
warning_file_notifications_already_activated: Dateibenachrichtigungen schon aktiviert
notice_file_notifications_activated: Dateibenachrichtigungen aktiviert
warning_file_notifications_already_deactivated: Dateibenachrichtigungen schon deaktiviert
notice_file_notifications_deactivated: Dateibenachrichtigungen deaktiviert
link_details: "%{title} Details"
link_edit: "Bearbeite %{title}"
submit_create: Erstellen
link_create_folder: Erzeuge Ordner
title_check_uncheck_all_for_zip_download_or_email: Wähle alle/keine für ZIP-Download bzw. Email
link_title: Titel
link_size: Größe
link_modified: Geändert
link_ver: Version
link_author: Autor
title_check_for_zip_download_or_email: Wähle für ZIP-Download bzw. Email
title_delete: Löschen
title_notifications_active_deactivate: "Benachrichtigungen aktiv: Ausschalten"
title_notifications_not_active_activate: "Benachrichtigungen nicht aktiv: Einschalten"
title_title_version_version_download: "%{title} Version %{version} Download"
title_locked_by_user: "Gesperrt von %{user}"
title_locked_by_you: Gesperrt von dir
title_waiting_for_approval: Warte auf Zustimmung
title_approved: Zugestimmt
title_unlock_file: Hebe Sperre auf um Änderungen anderer Nutzer zu ermöglichen
title_lock_file: Sperre um Änderungen anderer Nutzer zu verhindern
submit_download: Download
title_download_checked: Download der ausgewählten Dateien in einem ZIP-Archiv
submit_email: Email
title_send_checked_by_email: Sende gewählte Dateien per Email
link_user_preferences: Deine Einstellungen
heading_send_documents_by_email: Sende Dateien per Email
label_email_from: Von
label_email_to: An
label_email_cc: CC
label_email_subject: Betreff
label_email_documents: Dateien
label_email_body: Text
label_email_send: Senden
title_notifications_active: Benachrichtigungen aktiv
label_file_size: Dateigröße
heading_file_upload: Upload
note_uploaded_maximum_files_at_once: "Es können maximal %{number} Dateien auf einmal hochgeladen werden."
note_upload_files_greater_than_two_gb: Um Dateien größer 2GB hochzuladen brauchst du einen 64bit-Browser.
submit_upload_files: Upload
heading_new_folder: Neuer Ordner
label_title: Titel
label_description: Beschreibung
submit_save: Speichern
info_file_locked: Datei gesperrt!
label_notifications: Benachrichtigungen
select_option_default: Voreinstellung
select_option_deactivated: Aus
select_option_activated: Ein
title_save_preferences: Speichere Einstellungen
heading_revisions: Versionen
title_download: Download
title_delete_revision: Lösche Version
label_created: Erstellt
label_changed: Geändert
info_changed_by_user: "%{changed} von %{user}"
label_filename: Dateiname
label_version: Version
label_workflow: Workflow
label_mime: Mime
label_size: Größe
label_comment: Kommentar
heading_new_revision: Neue Version
option_version_same: gleiche Version
option_version_minor: Unterversion
option_version_major: Hauptversion
label_new_content: Neuer Inhalt
label_maximum_files_upload: Maximal hochzuladende Dateien
note_maximum_number_of_files_uploaded: Beschränkt die Anzahl der maximal auf einmal hochladbaren Dateien. 0 bedeutet unbeschränkt.
label_maximum_files_download: Maximal herunterzuladende Dateien
note_maximum_number_of_files_downloaded: Beschränkt die Anzahl der maximal auf einmal herunterladbaren Dateien (per ZIP oder Mail). 0 bedeutet unbeschränkt.
label_file_storage_directory: Verzeichnis für die Dateiablage
label_index_database: Index Datenbank
label_stemming_language: Sprache für die Normalformreduktion
note_possible_values: Mögliche Werte
note_pass_none_to_disable_stemming: "übergebe 'none' um die Normalformreduktion zu unterdrücken"
label_stem_strategy: Normalformreduktionsform
option_stem_none: reduziere nichts (Voreinstellung)
option_stem_some: reduziere manches
option_stem_all: reduziere alles
label_stemming_description: Diese Einstellung beeinflusst wie der Parser den Normalformreduktionsalgorithmus anwendet. Voreingestellt ist STEM_NONE. Die möglichen Werte sind
note_do_not_stem: Mache keine Normalformreduktion.
note_stem_some: "Search for stemmed forms of terms except for those which start with a capital letter, or are followed by certain characters, or are used with operators which need positional information. Stemmed terms are prefixed with 'Z'."
note_stem_all: "Suche nach reduzierten Formen aller Wörter (Achtung: Kein 'Z'-Präfix wird hinzugefügt)."
note_stemming_applied: Beachte, dass der Normalformreduzierungsalgorithmus nur bei Wörtern in Wahrscheinlichkeitsfeldern angewendert wird - boolesche Filterausdrücke werden nie reduziert.
label_default_notifications: standardmäßge Dateibenachrichtigungen
heading_uploaded_files: Hochgeladene Dateien
submit_commit: OK
link_documents: Dateien
permission_view_dmsf_folders: Durchforste Dateien
permission_user_preferences: Benutzereinstellungen
permission_view_dmsf_files: Betrachte Dateien
permission_folder_manipulation: Ordner manipulation
permission_file_manipulation: Datei manipulation
permission_file_approval: Datei approval
permission_force_file_unlock: Erzwinge Aufhebung der Dateisperre
label_file: Datei
field_folder: Ordner
error_create_cycle_in_folder_dependency: schaffen Zyklus in Abhängigkeit Ordner
error_contains_invalid_character: enthält ungültige Zeichen
error_file_commit_require_uploaded_file: Begehen einen Datei erfordet hochladene Datei
warning_some_files_were_not_commited: "Einige Dateien wurden nich begehen wegen Validation Fehlern: %{files}"
error_user_has_not_right_delete_folder: Der Nutzer hat kein Recht die Ordner zu löschen.
error_user_has_not_right_delete_file: Der Nutzer hat kein Recht die Datei zu löschen.
notice_entries_deleted: Aufnahmen löschen
warning_some_entries_were_not_deleted: "Enige Aufnahmen wurden nich gelöscht: %{entries}"
question_do_you_really_want_to_delete_entries: Willst du wirklich die gewählten Aufnahmen löschen?
title_delete_checked: Lösch gewähltest
title_number_of_files_in_directory: Dateizahl in dem Ordner
title_filename_for_download: Dateiname benutzt zum Herunterladen oder ZIP-archivierung
label_number_of_folders: Order
label_number_of_documents: Dokumente
label_zip_names_encoding: ZIP-namen Kodierung
note_zip_names_encoding_iconv: Iconv ist benutzt zum Charset-konversion von utf-8 in Zielkodierung
error_file_storage_directory_does_not_exist: Ordner zum Dateispeichern existiert nicht und kann nicht gebildet.
error_file_can_not_be_created: Datei kann nicht in dem gewählten Ordner gebildet werden.
error_wrong_zip_encoding: Falsche ZIP-kodierung
warning_xapian_not_available: Xapian nicht zur Verfügung
menu_dmsf: DMS
label_physical_file_delete: Physisches Dateilöschen
user_is_not_project_member: Du bist kein Projektmitglied
heading_access_downloads_emails: Herunterladene/Emails
heading_access_first: Erste
heading_access_last: Letzte
label_dmsf_updated: DMS aktualisiert
title_total_size_of_all_files: Gesamtgröße aller Datein in diesem Ordner
project_module_dmsf: DMS
warning_no_project_to_copy_file_to: Kein Projekt für das Dateikopieren.
comment_copied_from: "Kopiert aus %{source}"
notice_file_copied: Datei kopiert
notice_file_moved: Datei verschoben
label_target_project: Zielprojekte
label_target_folder: Zielordner
title_copy_or_move: Kopieren/Verschieben
label_dmsf_folder_plural: Ordner
comment_moved_from: "Verschoben aus %{source}"
error_target_folder_same: Zielordner und Projekt sind dieselbe wie die Aktuelle.
error_file_cannot_be_moved: Die Datei kann nicht verschoben werden.
error_file_cannot_be_copied: Die Datei kann nicht kopiert werden.
warning_no_project_to_copy_folder_to: Kein Projekt für das Ordnerkopieren.
title_copy: Kopieren
error_folder_cannot_be_copied: Der Ordner kann nicht kopiert werden.
notice_folder_copied: Ordner kopiert
:error_max_email_filesize_exceeded: "Maximale Dateigröße der Anlage wurde überschritten. (%{number} MB)"
:note_maximum_email_filesize: "Maximale Dateigröße der Anlage. 0 bedeutet keinen Limit. Der Nummer ist in MB."
:label_maximum_email_filesize: "Maximale Dateigröße der Anlage"
:header_minimum_filesize: "Dateifehler wegen minimaler Dateigröße."
:error_minimum_filesize: "Die Datei %{file} ist 0 Bytes groß und wird deswegen nicht angehängt."
:parent_directory: "übergeordnetes Verzeichnis"
:note_webdav: "Nach der Aktivierung von WebDav kann der Dienst über die URL http(s)://.../dmsf/webdav/ erreicht werden."
:label_webdav: "Webdav Funktionalität"
:label_dmsf_plural: "Kopieren von Dateien und Ordnern (%{files} Dateien in %{folders} Ordnern)"
error_max_email_filesize_exceeded: "Maximale Dateigröße der Anlage wurde überschritten. (%{number} MB)"
note_maximum_email_filesize: Maximale Dateigröße der Anlage. 0 bedeutet keinen Limit. Der Nummer ist in MB.
label_maximum_email_filesize: Maximale Dateigröße der Anlage
header_minimum_filesize: Dateifehler wegen minimaler Dateigröße.
error_minimum_filesize: "Die Datei %{file} ist 0 Bytes groß und wird deswegen nicht angehängt."
parent_directory: übergeordnetes Verzeichnis
note_webdav: "Nach der Aktivierung von WebDav kann der Dienst über die URL http(s)://.../dmsf/webdav/ erreicht werden."
label_webdav: Webdav Funktionalität
label_dmsf_plural: "Kopieren von Dateien und Ordnern (%{files} Dateien in %{folders} Ordnern)"
:warning_folder_already_locked: "Dieser Ordner ist bereits gesperrt"
:notice_folder_locked: "Der Ordner wurde erfolgreich gesperrt"
:warning_folder_not_locked: "Der Ordner konnte nicht gesperrt werden"
:notice_folder_unlocked: "Der Ordner wurde erfolgreich entsperrt"
:error_only_user_that_locked_folder_can_unlock_it: Sie haben keine Berechtigung zur Entsperrung des Ordners"
:warning_folder_already_locked: Dieser Ordner ist bereits gesperrt
:notice_folder_locked: Der Ordner wurde erfolgreich gesperrt
:warning_folder_not_locked: Der Ordner konnte nicht gesperrt werden
:notice_folder_unlocked: Der Ordner wurde erfolgreich entsperrt
:error_only_user_that_locked_folder_can_unlock_it: Sie haben keine Berechtigung zur Entsperrung des Ordners
:title_folder_parent_locked: "Übergeordnetes Verzeichnis %{name} ist gesperrt"
:title_file_parent_locked: "Übergeordnetes Verzeichnis %{name} ist gesperrt"
:title_unlock_folder: "Zur Modifikation für andere Benutzer entsperren"
:title_lock_folder: "Zum Schutz vor Modifikation durch andere Benutzer sperren"
:title_unlock_folder: Zur Modifikation für andere Benutzer entsperren
:title_lock_folder: Zum Schutz vor Modifikation durch andere Benutzer sperren
:select_option_webdav_readonly: "nur Lesen"
:select_option_webdav_readwrite: "Lesen/Schreiben"
:label_webdav_strategy: "Webdav Strategie"
:note_webdav_strategy: "Erlaubt dem Administrator den Wechsel der WebDav Nutzung zwischen nur lesend und auch schreibenden Zugriffen."
:select_option_webdav_readonly: nur Lesen
:select_option_webdav_readwrite: Lesen/Schreiben
:label_webdav_strategy: Webdav Strategie
:note_webdav_strategy: Erlaubt dem Administrator den Wechsel der WebDav Nutzung zwischen nur lesend und auch schreibenden Zugriffen.
error_unable_delete_dmsf_workflow: Unable to delete the workflow
error_empty_note: The note can't be empty
error_workflow_assign: An error occured while assigning
error_cannot_start_workflow: Workflow can't be started
error_cannot_renumber_steps: Steps can't be renumbered
label_dmsf_workflow_new: New approval workflow
field_label_dmsf_workflow: Approval Workflow
field_label_dmsf_workflow_name: Approval workflow name
label_dmsf_workflow_plural: Approval workflows
label_dmsf_workflow_step: Step
label_dmsf_workflow_step_plural: Steps
label_dmsf_workflow_approval: Approval
label_dmsf_workflow_approval_plural: Approvals
label_dmsf: DMSF
label_dmsf_wokflow_action_approve: Approve
label_dmsf_wokflow_action_reject: Reject
label_dmsf_wokflow_action_delegate: Delegate to
label_dmsf_wokflow_action_assign: Assign an approval workflow
label_dmsf_wokflow_action_start: Start workflow
label_dmsf_workflow_add_approver: "Add a new approver with a logical function:"
label_or: or
label_action: Action
label_note: Note
title_none: None
title_rejection: Rejection
title_delegation: Delegation
title_assignment: Assignment
title_start: Start
title_dmsf_workflow_log: Approval Workflow Log
title_assigned: Assigned
title_approval: Approval
title_rejected: Rejected
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
notice_workflow_started: Approval workflow successfully started

View File

@ -1,210 +1,246 @@
# English translation for DMSF by vit.jonas@gmail.com, dan.munn@munnster.co.uk
en:
:dmsf: "DMSF"
:label_dmsf_file_plural: "Dmsf files"
:warning_no_entries_selected: "No entries selected"
:error_email_to_must_be_entered: "Email To must be entered"
:notice_email_sent: "Email sent"
:warning_file_already_locked: "File already locked"
:notice_file_locked: "File locked"
:warning_file_not_locked: "File not locked"
:notice_file_unlocked: "File unlocked"
:error_only_user_that_locked_file_can_unlock_it: "Only user that locked file can unlock it"
:question_do_you_really_want_to_delete_this_entry: "Do you really want to delete this entry?"
:error_max_files_exceeded: "Limit for %{number} simultaneously downloaded files exceeded"
:question_do_you_really_want_to_delete_this_revision: "Do you really want to delete this revision?"
:error_entry_project_does_not_match_current_project: "Entry project doesn't match current project"
:notice_folder_created: "Folder created"
:error_folder_creation_failed: "Folder creation failed"
:error_folder_title_must_be_entered: "Title must be entered"
:notice_folder_deleted: "Folder deleted"
:error_folder_is_not_empty: "Folder is not empty"
:error_folder_title_is_already_used: "Title is already used"
:notice_folder_details_were_saved: "Folder details were saved"
:error_file_is_locked: "File is locked"
:notice_file_deleted: "File deleted"
:error_at_least_one_revision_must_be_present: "At least one revision must be present"
:notice_revision_deleted: "Revision deleted"
:warning_one_of_files_locked: "One of files locked"
:notice_file_unlocked: "File unlocked"
:notice_file_revision_created: "File revision created"
:notice_your_preferences_were_saved: "Your preferences were saved"
:warning_folder_notifications_already_activated: "Folder notifications already activated"
:notice_folder_notifications_activated: "Folder notifications activated"
:warning_folder_notifications_already_deactivated: "Folder notifications already deactivated"
:notice_folder_notifications_deactivated: "Folder notifications deactivated"
:warning_file_notifications_already_activated: "File notifications already activated"
:notice_file_notifications_activated: "File notifications activated"
:warning_file_notifications_already_deactivated: "File notifications already deactivated"
:notice_file_notifications_deactivated: "File notifications deactivated"
:link_details: "%{title} details"
:link_edit: "Edit %{title}"
:submit_create: "Create"
:link_create_folder: "Create folder"
:title_check_uncheck_all_for_zip_download_or_email: "Check/Uncheck all for zip download or email"
:link_title: "Title"
:link_size: "Size"
:link_modified: "Modified"
:link_ver: "Ver."
:link_author: "Author"
:title_check_for_zip_download_or_email: "Check for Zip download or email"
:title_delete: "Delete"
:title_notifications_active_deactivate: "Notifications active: Deactivate"
:title_notifications_not_active_activate: "Notifications not active: Activate"
:title_title_version_version_download: "%{title} version %{version} download"
:title_locked_by_user: "Locked by %{user}"
:title_locked_by_you: "Locked by you"
:title_waiting_for_approval: "Waiting for Approval"
:title_approved: "Approved"
:title_unlock_file: "Unlock to allow changes for other members"
:title_lock_file: "Lock to prevent changes for other members"
:submit_download: "Download"
:title_download_checked: "Download checked in Zip archive"
:submit_email: "Email"
:title_send_checked_by_email: "Send checked by email"
:link_user_preferences: "Your DMSF project preferences"
:heading_send_documents_by_email: "Send documents by email"
:label_email_from: "From"
:label_email_to: "To"
:label_email_cc: "CC"
:label_email_subject: "Subject"
:label_email_documents: "Documents"
:label_email_body: "Body"
:label_email_send: "Send"
:title_notifications_active: "Notifications active"
:label_file_size: "File size"
:heading_file_upload: "Upload"
:note_uploaded_maximum_files_at_once: "There can be uploaded maximum of %{number} files at once."
:note_upload_files_greater_than_two_gb: "To upload files greater than 2GB you must have 64b browser."
:submit_upload_files: "Upload"
:heading_new_folder: "New Folder"
:label_title: "Title"
:label_description: "Description"
:submit_save: "Save"
:info_file_locked: "File locked!"
:label_notifications: "Notifications"
:select_option_default: "Default"
:select_option_deactivated: "Deactivated"
:select_option_activated: "Activated"
:title_save_preferences: "Save preferences"
:heading_revisions: "Revisions"
:title_download: "Download"
:title_delete_revision: "Delete revision"
:label_created: "Created"
:label_changed: "Changed"
:info_changed_by_user: "%{changed} by %{user}"
:label_filename: "Filename"
:label_version: "Version"
:label_workflow: "Workflow"
:option_workflow_waiting_for_approval: "Waiting for approval"
:option_workflow_approved: "Approved"
:option_workflow_none: "None"
:label_mime: "Mime"
:label_size: "Size"
:label_comment: "Comment"
:heading_new_revision: "New Revision"
:option_version_same: "Same"
:option_version_minor: "Minor"
:option_version_major: "Major"
:label_new_content: "New content"
:label_maximum_files_upload: "Maximum files upload"
:note_maximum_number_of_files_uploaded: "Limits maximum number of files uploaded at once. 0 means unlimited."
:label_maximum_files_download: "Maximum files download"
:note_maximum_number_of_files_downloaded: "Limits maximum number of files downloaded in zip or sent via email. 0 means unlimited."
:label_file_storage_directory: "File storage directory"
:label_index_database: "Index database"
:label_stemming_language: "Stemming Language"
:note_possible_values: "Possible values"
:note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
:label_stem_strategy: "Stem strategy"
:option_stem_none: "Stem none (default)"
:option_stem_some: "Stem some"
:option_stem_all: "Stem all"
:label_stemming_description: "This controls how the query parser will apply the stemming algorithm. The default value is STEM_NONE. The possible values are"
:note_do_not_stem: "Don't perform any stemming."
:note_stem_some: "Search for stemmed forms of terms except for those which start with a capital letter, or are followed by certain characters, or are used with operators which need positional information. Stemmed terms are prefixed with 'Z'."
:note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
:note_stemming_applied: "Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed."
:label_default_notifications: "File default notifications"
:heading_uploaded_files: "Uploaded Files"
:submit_commit: "Commit"
:link_documents: "Documents"
:permission_view_dmsf_folders: "Browse documents"
:permission_user_preferences: "User preferences"
:permission_view_dmsf_files: "View documents"
:permission_folder_manipulation: "Folder manipulation"
:permission_file_manipulation: "File manipulation"
:permission_file_approval: "File approval"
:permission_force_file_unlock: "Force file unlock"
:label_file: "File"
:field_folder: "Folder"
:error_create_cycle_in_folder_dependency: "create cycle in folder dependency"
:error_contains_invalid_character: "contains invalid character(s)"
:error_file_commit_require_uploaded_file: "File commit require uploaded file"
:warning_some_files_were_not_commited: "Some files were not commited due to validation errors: %{files}"
:error_user_has_not_right_delete_folder: "User hasn't right to delete forders"
:error_user_has_not_right_delete_file: "User hasn't right to delete file"
:notice_entries_deleted: "Entries deleted"
:warning_some_entries_were_not_deleted: "Some entries weren't deleted: %{entries}"
:question_do_you_really_want_to_delete_entries: "Do you really want to delete checked entries?"
:title_delete_checked: "Delete checked"
:title_number_of_files_in_directory: "Number of files in directory"
:title_filename_for_download: "Filename used for download or in Zip archive"
:label_number_of_folders: "Folders"
:label_number_of_documents: "Documents"
:label_zip_names_encoding: "Zip names encoding"
:note_zip_names_encoding_iconv: "Iconv is used for charset conversion from utf-8 to target encoding"
:error_file_storage_directory_does_not_exist: "File storage directory doesn't exist and can't be created"
:error_file_can_not_be_created: "File can't be created in storage directory"
:error_wrong_zip_encoding: "Wrong Zip encoding"
:warning_xapian_not_available: "Xapian not available"
:menu_dmsf: "DMSF"
:label_physical_file_delete: "Physical file delete"
:user_is_not_project_member: "You are not member of the project"
:heading_access_downloads_emails: "Downloads/Emails"
:heading_access_first: "First"
:heading_access_last: "Last"
:label_dmsf_updated: "DMSF updated"
:title_total_size_of_all_files: "Total size of all files under this folder"
:project_module_dmsf: "DMSF"
:warning_no_project_to_copy_file_to: "No project to copy file to"
:comment_copied_from: "Copied from %{source}"
:notice_file_copied: "File copied"
:notice_file_moved: "File moved"
:label_target_project: "Target project"
:label_target_folder: "Target folder"
:title_copy_or_move: "Copy/Move"
:label_dmsf_folder_plural: "Dmsf folders"
:comment_moved_from: "Moved from %{source}"
:error_target_folder_same: "Target folder and project are the same as current"
:error_file_cannot_be_moved: "File can't be moved"
:error_file_cannot_be_copied: "File can't be copied"
:warning_no_project_to_copy_folder_to: "No project to copy folder to"
:title_copy: "Copy"
:error_folder_cannot_be_copied: "Folder can't be copied"
:notice_folder_copied: "Folder copied"
dmsf: DMSF
label_dmsf_file_plural: Dmsf files
warning_no_entries_selected: No entries selected
error_email_to_must_be_entered: Email To must be entered
warning_file_already_locked: File already locked
notice_file_locked: File locked
warning_file_not_locked: File not locked
notice_file_unlocked: File unlocked
error_only_user_that_locked_file_can_unlock_it: Only user that locked file can unlock it
question_do_you_really_want_to_delete_this_entry: Do you really want to delete this entry?
error_max_files_exceeded: "Limit for %{number} simultaneously downloaded files exceeded"
question_do_you_really_want_to_delete_this_revision: Do you really want to delete this revision?
error_entry_project_does_not_match_current_project: "Entry project doesn't match current project"
notice_folder_created: Folder created
error_folder_creation_failed: Folder creation failed
error_folder_title_must_be_entered: Title must be entered
notice_folder_deleted: Folder deleted
error_folder_is_not_empty: Folder is not empty
error_folder_title_is_already_used: Title is already used
notice_folder_details_were_saved: Folder details were saved
error_file_is_locked: File is locked
notice_file_deleted: File deleted
error_at_least_one_revision_must_be_present: At least one revision must be present
notice_revision_deleted: Revision deleted
warning_one_of_files_locked: One of files locked
notice_file_unlocked: File unlocked
notice_file_revision_created: File revision created
notice_your_preferences_were_saved: Your preferences were saved
warning_folder_notifications_already_activated: Folder notifications already activated
notice_folder_notifications_activated: Folder notifications activated
warning_folder_notifications_already_deactivated: Folder notifications already deactivated
notice_folder_notifications_deactivated: Folder notifications deactivated
warning_file_notifications_already_activated: File notifications already activated
notice_file_notifications_activated: File notifications activated
warning_file_notifications_already_deactivated: File notifications already deactivated
notice_file_notifications_deactivated: File notifications deactivated
link_details: "%{title} details"
link_edit: "Edit %{title}"
submit_create: Create
link_create_folder: Create folder
title_check_uncheck_all_for_zip_download_or_email: Check/Uncheck all for zip download or email
link_title: Title
link_size: Size
link_modified: Modified
link_ver: Ver.
link_author: Author
title_check_for_zip_download_or_email: Check for Zip download or email
title_delete: Delete
title_notifications_active_deactivate: "Notifications active: Deactivate"
title_notifications_not_active_activate: "Notifications not active: Activate"
title_title_version_version_download: "%{title} version %{version} download"
title_locked_by_user: "Locked by %{user}"
title_locked_by_you: Locked by you
title_waiting_for_approval: Waiting for Approval
title_approved: Approved
title_unlock_file: Unlock to allow changes for other members
title_lock_file: Lock to prevent changes for other members
submit_download: Download
title_download_checked: Download checked in Zip archive
submit_email: Email
title_send_checked_by_email: Send checked by email
link_user_preferences: Your DMSF project preferences
heading_send_documents_by_email: Send documents by email
label_email_from: From
label_email_to: To
label_email_cc: CC
label_email_subject: Subject
label_email_documents: Documents
label_email_body: Body
label_email_send: Send
title_notifications_active: Notifications active
label_file_size: File size
heading_file_upload: Upload
note_uploaded_maximum_files_at_once: "There can be uploaded maximum of %{number} files at once."
note_upload_files_greater_than_two_gb: To upload files greater than 2GB you must have 64b browser.
submit_upload_files: Upload
heading_new_folder: New Folder
label_title: Title
label_description: Description
submit_save: Save
info_file_locked: File locked!
label_notifications: Notifications
select_option_default: Default
select_option_deactivated: Deactivated
select_option_activated: Activated
title_save_preferences: Save preferences
heading_revisions: Revisions
title_download: Download
title_delete_revision: Delete revision
label_created: Created
label_changed: Changed
info_changed_by_user: "%{changed} by"
label_filename: Filename
label_version: Version
label_workflow: Workflow
label_mime: Mime
label_size: Size
label_comment: Comment
heading_new_revision: New Revision
option_version_same: Same
option_version_minor: Minor
option_version_major: Major
label_new_content: New content
label_maximum_files_upload: Maximum files upload
note_maximum_number_of_files_uploaded: Limits maximum number of files uploaded at once. 0 means unlimited.
label_maximum_files_download: Maximum files download
note_maximum_number_of_files_downloaded: Limits maximum number of files downloaded in zip or sent via email. 0 means unlimited.
label_file_storage_directory: File storage directory
label_index_database: Index database
label_stemming_language: Stemming Language
note_possible_values: Possible values
note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
label_stem_strategy: Stem strategy
option_stem_none: Stem none (default)
option_stem_some: Stem some
option_stem_all: Stem all
label_stemming_description: This controls how the query parser will apply the stemming algorithm. The default value is STEM_NONE. The possible values are
note_do_not_stem: "Don't perform any stemming."
note_stem_some: Search for stemmed forms of terms except for those which start with a capital letter, or are followed by certain characters, or are used with operators which need positional information. Stemmed terms are prefixed with 'Z'.
note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
note_stemming_applied: Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed.
label_default_notifications: File default notifications
heading_uploaded_files: Uploaded Files
submit_commit: Commit
link_documents: Documents
permission_view_dmsf_folders: Browse documents
permission_user_preferences: User preferences
permission_view_dmsf_files: View documents
permission_folder_manipulation: Folder manipulation
permission_file_manipulation: File manipulation
permission_file_approval: File approval
permission_force_file_unlock: Force file unlock
label_file: File
field_folder: Folder
error_create_cycle_in_folder_dependency: create cycle in folder dependency
error_contains_invalid_character: contains invalid character(s)
error_file_commit_require_uploaded_file: File commit require uploaded file
warning_some_files_were_not_commited: "Some files were not commited due to validation errors: %{files}"
error_user_has_not_right_delete_folder: "User hasn't right to delete forders"
error_user_has_not_right_delete_file: "User hasn't right to delete file"
notice_entries_deleted: Entries deleted
warning_some_entries_were_not_deleted: "Some entries weren't deleted: %{entries}"
question_do_you_really_want_to_delete_entries: Do you really want to delete checked entries?
title_delete_checked: Delete checked
title_number_of_files_in_directory: Number of files in directory
title_filename_for_download: Filename used for download or in Zip archive
label_number_of_folders: Folders
label_number_of_documents: Documents
label_zip_names_encoding: Zip names encoding
note_zip_names_encoding_iconv: Iconv is used for charset conversion from utf-8 to target encoding
error_file_storage_directory_does_not_exist: "File storage directory doesn't exist and can't be created"
error_file_can_not_be_created: "File can't be created in storage directory"
error_wrong_zip_encoding: Wrong Zip encoding
warning_xapian_not_available: Xapian not available
menu_dmsf: DMSF
label_physical_file_delete: Physical file delete
user_is_not_project_member: You are not member of the project
heading_access_downloads_emails: Downloads/Emails
heading_access_first: First
heading_access_last: Last
label_dmsf_updated: DMSF updated
title_total_size_of_all_files: Total size of all files under this folder
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: No project to copy file to
comment_copied_from: "Copied from %{source}"
notice_file_copied: File copied
notice_file_moved: File moved
label_target_project: Target project
label_target_folder: Target folder
title_copy_or_move: Copy/Move
label_dmsf_folder_plural: Dmsf folders
comment_moved_from: "Moved from %{source}"
error_target_folder_same: Target folder and project are the same as current
error_file_cannot_be_moved: "File can't be moved"
error_file_cannot_be_copied: "File can't be copied"
warning_no_project_to_copy_folder_to: No project to copy folder to
title_copy: Copy
error_folder_cannot_be_copied: "Folder can't be copied"
notice_folder_copied: Folder copied
:error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
:note_maximum_email_filesize: "Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB."
:label_maximum_email_filesize: "Maximum email attachment size"
:header_minimum_filesize: "File Error."
:error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
:parent_directory: "Parent Directory"
:note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
:label_webdav: "Webdav functionality"
:label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
note_maximum_email_filesize: Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB.
label_maximum_email_filesize: Maximum email attachment size
header_minimum_filesize: File Error.
error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
parent_directory: Parent Directory
note_webdav: Webdav once enabled can be found at http://.../dmsf/webdav/
label_webdav: Webdav functionality
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
:warning_folder_already_locked: "This folder is already locked"
:notice_folder_locked: "The folder was successfully locked"
:warning_folder_not_locked: "Unfortunately, the folder could not be locked"
:notice_folder_unlocked: "The folder was successfully unlocked"
:error_only_user_that_locked_folder_can_unlock_it: "You are not authorised to unlock this folder"
:title_folder_parent_locked: "Parent folder %{name} is locked"
:title_file_parent_locked: "Parent folder %{name} is locked"
:title_unlock_folder: "Unlock to allow changes for other members"
:title_lock_folder: "Lock to prevent changes for other members"
warning_folder_already_locked: This folder is already locked
notice_folder_locked: The folder was successfully locked
warning_folder_not_locked: Unfortunately, the folder could not be locked
notice_folder_unlocked: The folder was successfully unlocked
error_only_user_that_locked_folder_can_unlock_it: You are not authorised to unlock this folder
title_folder_parent_locked: "Parent folder %{name} is locked"
title_file_parent_locked: "Parent folder %{name} is locked"
title_unlock_folder: Unlock to allow changes for other members
title_lock_folder: Lock to prevent changes for other members
:select_option_webdav_readonly: "Read-only"
:select_option_webdav_readwrite: "Read/Write"
:label_webdav_strategy: "Webdav strategy"
:note_webdav_strategy: "Enables the administrator to decide if webdav is a read-only or read-write platform for end users."
select_option_webdav_readonly: Read-only
select_option_webdav_readwrite: Read/Write
label_webdav_strategy: Webdav strategy
note_webdav_strategy: Enables the administrator to decide if webdav is a read-only or read-write platform for end users.
error_unable_delete_dmsf_workflow: Unable to delete the workflow
error_empty_note: "The note can't be empty"
error_workflow_assign: An error occured while assigning
error_cannot_start_workflow: "Workflow can't be started"
error_cannot_renumber_steps: "Steps can't be renumbered"
label_dmsf_workflow_new: New approval workflow
field_label_dmsf_workflow: Approval Workflow
field_label_dmsf_workflow_name: Approval workflow name
label_dmsf_workflow_plural: Approval workflows
label_dmsf_workflow_step: Step
label_dmsf_workflow_step_plural: Steps
label_dmsf_workflow_approval: Approval
label_dmsf_workflow_approval_plural: Approvals
label_dmsf: DMSF
label_dmsf_wokflow_action_approve: Approve
label_dmsf_wokflow_action_reject: Reject
label_dmsf_wokflow_action_delegate: Delegate to
label_dmsf_wokflow_action_assign: Assign an approval workflow
label_dmsf_wokflow_action_start: Start workflow
label_dmsf_workflow_add_approver: "Add a new approver with a logical function:"
label_or: or
label_action: Action
label_note: Note
title_none: None
title_rejection: Rejection
title_delegation: Delegation
title_assignment: Assignment
title_start: Start
title_dmsf_workflow_log: Approval Workflow Log
title_assigned: Assigned
title_approval: Approval
title_rejected: Rejected
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
notice_workflow_started: Approval workflow successfully started

View File

@ -1,213 +1,248 @@
# Spanish translation for DMSF
es:
:dmsf: "DMSF"
:label_dmsf_file_plural: "DMSF Archivos"
:warning_no_entries_selected: "No ha seleccionado ningún ítem"
:error_email_to_must_be_entered: "Ingrese un email"
:notice_email_sent: "Email sent"
:warning_file_already_locked: "El archivo ya está bloqueado"
:notice_file_locked: "Archivo bloqueado"
:warning_file_not_locked: "Archivo no bloqueado"
:notice_file_unlocked: "Archivo desbloqueado"
:error_only_user_that_locked_file_can_unlock_it: "Solo los usuarios que bloquearon previamente al archivo lo pueden desbloquear"
:question_do_you_really_want_to_delete_this_entry: "¿Está seguro de borrar el ítem seleccionado?"
:error_max_files_exceeded: "Se excedio el numero permitido de archivos bajados de manera simultánea: "
:question_do_you_really_want_to_delete_this_revision: "¿Está seguro de borrar la revision seleccionada?"
:error_entry_project_does_not_match_current_project: "Las entradas del proyecto no concuerdan con el proyecto seleccionado"
:notice_folder_created: "Carpeta creada satisfactoriamente"
:error_folder_creation_failed: "La creacion de la carpeta ha fallado"
:error_folder_title_must_be_entered: "Debe ingresar un título"
:notice_folder_deleted: "Carpeta borrada"
:error_folder_is_not_empty: "La carpeta no está vacía"
:error_folder_title_is_already_used: "El título ingresado ya está siendo usado por otro documento"
:notice_folder_details_were_saved: "Los detalles de la carpeta fueron grabados correctamente"
:error_file_is_locked: "Archivo bloqueado"
:notice_file_deleted: "Archivo borrado"
:error_at_least_one_revision_must_be_present: "al menos una revisión debe estar presente"
:notice_revision_deleted: "Revision eliminada correctamente"
:warning_one_of_files_locked: "Uno de los archivos está bloqueado"
:notice_file_unlocked: "Archivo desbloqueado"
:notice_file_revision_created: "Revision de archivos creada correctamente"
:notice_your_preferences_were_saved: "Sus preferencias han sido guardadas correctamente"
:warning_folder_notifications_already_activated: "Las notificaciones de la carpeta seleccionada ya están activadas previamente"
:notice_folder_notifications_activated: "Notificaciones de carpeta activadas"
:warning_folder_notifications_already_deactivated: "Las notificaciones de la carpeta seleccionada ya están desactivadas previamente"
:notice_folder_notifications_deactivated: "Notificaciones de carpeta desactivadas"
:warning_file_notifications_already_activated: "Las notificaciones del archivo seleccionado ya estaban activadas previamente"
:notice_file_notifications_activated: "Notificación de archivo activado"
:warning_file_notifications_already_deactivated: "Las notificaciones del archivo seleccionado ya estaban desactivadas previamente"
:notice_file_notifications_deactivated: "Notificación de archivo desactivada"
:link_details: "%{title} details"
dmsf: DMSF
label_dmsf_file_plural: DMSF Archivos
warning_no_entries_selected: No ha seleccionado ningún ítem
error_email_to_must_be_entered: Ingrese un email
warning_file_already_locked: El archivo ya está bloqueado
notice_file_locked: Archivo bloqueado
warning_file_not_locked: Archivo no bloqueado
notice_file_unlocked: Archivo desbloqueado
error_only_user_that_locked_file_can_unlock_it: Solo los usuarios que bloquearon previamente al archivo lo pueden desbloquear
question_do_you_really_want_to_delete_this_entry: ¿Está seguro de borrar el ítem seleccionado?
error_max_files_exceeded: "Se excedio el numero permitido de archivos bajados de manera simultánea:"
question_do_you_really_want_to_delete_this_revision: ¿Está seguro de borrar la revision seleccionada?
error_entry_project_does_not_match_current_project: Las entradas del proyecto no concuerdan con el proyecto seleccionado
notice_folder_created: Carpeta creada satisfactoriamente
error_folder_creation_failed: La creacion de la carpeta ha fallado
error_folder_title_must_be_entered: Debe ingresar un título
notice_folder_deleted: Carpeta borrada
error_folder_is_not_empty: La carpeta no está vacía
error_folder_title_is_already_used: El título ingresado ya está siendo usado por otro documento
notice_folder_details_were_saved: Los detalles de la carpeta fueron grabados correctamente
error_file_is_locked: Archivo bloqueado
notice_file_deleted: Archivo borrado
error_at_least_one_revision_must_be_present: al menos una revisión debe estar presente
notice_revision_deleted: Revision eliminada correctamente
warning_one_of_files_locked: Uno de los archivos está bloqueado
notice_file_unlocked: Archivo desbloqueado
notice_file_revision_created: Revision de archivos creada correctamente
notice_your_preferences_were_saved: Sus preferencias han sido guardadas correctamente
warning_folder_notifications_already_activated: Las notificaciones de la carpeta seleccionada ya están activadas previamente
notice_folder_notifications_activated: Notificaciones de carpeta activadas
warning_folder_notifications_already_deactivated: Las notificaciones de la carpeta seleccionada ya están desactivadas previamente
notice_folder_notifications_deactivated: Notificaciones de carpeta desactivadas
warning_file_notifications_already_activated: Las notificaciones del archivo seleccionado ya estaban activadas previamente
notice_file_notifications_activated: Notificación de archivo activado
warning_file_notifications_already_deactivated: Las notificaciones del archivo seleccionado ya estaban desactivadas previamente
notice_file_notifications_deactivated: Notificación de archivo desactivada
# Not translated
# Not translated
link_details: "%{title} details"
link_edit: "Edit %{title}"
submit_create: Create
link_create_folder: Create folder
title_check_uncheck_all_for_zip_download_or_email: Check/Uncheck all for zip download or email
link_title: Title
link_size: Size
link_modified: Modified
link_ver: Ver.
link_author: Author
title_check_for_zip_download_or_email: Check for Zip download or email
title_delete: Delete
title_notifications_active_deactivate: "Notifications active: Deactivate"
title_notifications_not_active_activate: "Notifications not active: Activate"
title_title_version_version_download: "%{title} version %{version} download"
title_locked_by_user: "Locked by %{user}"
title_locked_by_you: Locked by you
title_waiting_for_approval: Waiting for Approval
title_approved: Approved
title_unlock_file: Unlock to allow changes for other members
title_lock_file: Lock to prevent changes for other members
submit_download: Download
title_download_checked: Download checked in Zip archive
submit_email: Email
title_send_checked_by_email: Send checked by email
link_user_preferences: Your DMSF project preferences
heading_send_documents_by_email: Send documents by email
label_email_from: From
label_email_to: To
label_email_cc: CC
label_email_subject: Subject
label_email_documents: Documents
label_email_body: Body
label_email_send: Send
title_notifications_active: Notifications active
label_file_size: File size
heading_file_upload: Upload
note_uploaded_maximum_files_at_once: "There can be uploaded maximum of %{number} files at once."
note_upload_files_greater_than_two_gb: To upload files greater than 2GB you must have 64b browser.
submit_upload_files: Upload
heading_new_folder: New Folder
label_title: Title
label_description: Description
submit_save: Save
info_file_locked: File locked!
label_notifications: Notifications
select_option_default: Default
select_option_deactivated: Deactivated
select_option_activated: Activated
title_save_preferences: Save preferences
heading_revisions: Revisions
title_download: Download
title_delete_revision: Delete revision
label_created: Created
label_changed: Changed
info_changed_by_user: "%{changed} by"
label_filename: Filename
label_version: Version
label_workflow: Workflow
label_mime: Mime
label_size: Size
label_comment: Comment
heading_new_revision: New Revision
option_version_same: Same
option_version_minor: Minor
option_version_major: Major
label_new_content: New content
label_maximum_files_upload: Maximum files upload
note_maximum_number_of_files_uploaded: Limits maximum number of files uploaded at once. 0 means unlimited.
label_maximum_files_download: Maximum files download
note_maximum_number_of_files_downloaded: Limits maximum number of files downloaded in zip or sent via email. 0 means unlimited.
label_file_storage_directory: File storage directory
label_index_database: Index database
label_stemming_language: Stemming Language
note_possible_values: Possible values
note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
label_stem_strategy: Stem strategy
option_stem_none: Stem none (default)
option_stem_some: Stem some
option_stem_all: Stem all
label_stemming_description: This controls how the query parser will apply the stemming algorithm. The default value is STEM_NONE. The possible values are
note_do_not_stem: "Don't perform any stemming."
note_stem_some: Search for stemmed forms of terms except for those which start with a capital letter, or are followed by certain characters, or are used with operators which need positional information. Stemmed terms are prefixed with 'Z'.
note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
note_stemming_applied: Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed.
label_default_notifications: File default notifications
heading_uploaded_files: Uploaded Files
submit_commit: Commit
link_documents: Documents
permission_view_dmsf_folders: Browse documents
permission_user_preferences: User preferences
permission_view_dmsf_files: View documents
permission_folder_manipulation: Folder manipulation
permission_file_manipulation: File manipulation
permission_file_approval: File approval
permission_force_file_unlock: Force file unlock
label_file: File
field_folder: Folder
error_create_cycle_in_folder_dependency: create cycle in folder dependency
error_contains_invalid_character: contains invalid character(s)
error_file_commit_require_uploaded_file: File commit require uploaded file
warning_some_files_were_not_commited: "Some files were not commited due to validation errors: %{files}"
error_user_has_not_right_delete_folder: "User hasn't right to delete forders"
error_user_has_not_right_delete_file: "User hasn't right to delete file"
notice_entries_deleted: Entries deleted
warning_some_entries_were_not_deleted: "Some entries weren't deleted: %{entries}"
question_do_you_really_want_to_delete_entries: Do you really want to delete checked entries?
title_delete_checked: Delete checked
title_number_of_files_in_directory: Number of files in directory
title_filename_for_download: Filename used for download or in Zip archive
label_number_of_folders: Folders
label_number_of_documents: Documents
label_zip_names_encoding: Zip names encoding
note_zip_names_encoding_iconv: Iconv is used for charset conversion from utf-8 to target encoding
error_file_storage_directory_does_not_exist: "File storage directory doesn't exist and can't be created"
error_file_can_not_be_created: "File can't be created in storage directory"
error_wrong_zip_encoding: Wrong Zip encoding
warning_xapian_not_available: Xapian not available
menu_dmsf: DMSF
label_physical_file_delete: Physical file delete
user_is_not_project_member: You are not member of the project
heading_access_downloads_emails: Downloads/Emails
heading_access_first: First
heading_access_last: Last
label_dmsf_updated: DMSF updated
title_total_size_of_all_files: Total size of all files under this folder
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: No project to copy file to
comment_copied_from: "Copied from %{source}"
notice_file_copied: File copied
notice_file_moved: File moved
label_target_project: Target project
label_target_folder: Target folder
title_copy_or_move: Copy/Move
label_dmsf_folder_plural: Dmsf folders
comment_moved_from: "Moved from %{source}"
error_target_folder_same: Target folder and project are the same as current
error_file_cannot_be_moved: "File can't be moved"
error_file_cannot_be_copied: "File can't be copied"
warning_no_project_to_copy_folder_to: No project to copy folder to
title_copy: Copy
error_folder_cannot_be_copied: "Folder can't be copied"
notice_folder_copied: Folder copied
:link_edit: "Edit %{title}"
:submit_create: "Create"
:link_create_folder: "Create folder"
:title_check_uncheck_all_for_zip_download_or_email: "Check/Uncheck all for zip download or email"
:link_title: "Title"
:link_size: "Size"
:link_modified: "Modified"
:link_ver: "Ver."
:link_author: "Author"
:title_check_for_zip_download_or_email: "Check for Zip download or email"
:title_delete: "Delete"
:title_notifications_active_deactivate: "Notifications active: Deactivate"
:title_notifications_not_active_activate: "Notifications not active: Activate"
:title_title_version_version_download: "%{title} version %{version} download"
:title_locked_by_user: "Locked by %{user}"
:title_locked_by_you: "Locked by you"
:title_waiting_for_approval: "Waiting for Approval"
:title_approved: "Approved"
:title_unlock_file: "Unlock to allow changes for other members"
:title_lock_file: "Lock to prevent changes for other members"
:submit_download: "Download"
:title_download_checked: "Download checked in Zip archive"
:submit_email: "Email"
:title_send_checked_by_email: "Send checked by email"
:link_user_preferences: "Your DMSF project preferences"
:heading_send_documents_by_email: "Send documents by email"
:label_email_from: "From"
:label_email_to: "To"
:label_email_cc: "CC"
:label_email_subject: "Subject"
:label_email_documents: "Documents"
:label_email_body: "Body"
:label_email_send: "Send"
:title_notifications_active: "Notifications active"
:label_file_size: "File size"
:heading_file_upload: "Upload"
:note_uploaded_maximum_files_at_once: "There can be uploaded maximum of %{number} files at once."
:note_upload_files_greater_than_two_gb: "To upload files greater than 2GB you must have 64b browser."
:submit_upload_files: "Upload"
:heading_new_folder: "New Folder"
:label_title: "Title"
:label_description: "Description"
:submit_save: "Save"
:info_file_locked: "File locked!"
:label_notifications: "Notifications"
:select_option_default: "Default"
:select_option_deactivated: "Deactivated"
:select_option_activated: "Activated"
:title_save_preferences: "Save preferences"
:heading_revisions: "Revisions"
:title_download: "Download"
:title_delete_revision: "Delete revision"
:label_created: "Created"
:label_changed: "Changed"
:info_changed_by_user: "%{changed} by %{user}"
:label_filename: "Filename"
:label_version: "Version"
:label_workflow: "Workflow"
:option_workflow_waiting_for_approval: "Waiting for approval"
:option_workflow_approved: "Approved"
:option_workflow_none: "None"
:label_mime: "Mime"
:label_size: "Size"
:label_comment: "Comment"
:heading_new_revision: "New Revision"
:option_version_same: "Same"
:option_version_minor: "Minor"
:option_version_major: "Major"
:label_new_content: "New content"
:label_maximum_files_upload: "Maximum files upload"
:note_maximum_number_of_files_uploaded: "Limits maximum number of files uploaded at once. 0 means unlimited."
:label_maximum_files_download: "Maximum files download"
:note_maximum_number_of_files_downloaded: "Limits maximum number of files downloaded in zip or sent via email. 0 means unlimited."
:label_file_storage_directory: "File storage directory"
:label_index_database: "Index database"
:label_stemming_language: "Stemming Language"
:note_possible_values: "Possible values"
:note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
:label_stem_strategy: "Stem strategy"
:option_stem_none: "Stem none (default)"
:option_stem_some: "Stem some"
:option_stem_all: "Stem all"
:label_stemming_description: "This controls how the query parser will apply the stemming algorithm. The default value is STEM_NONE. The possible values are"
:note_do_not_stem: "Don't perform any stemming."
:note_stem_some: "Search for stemmed forms of terms except for those which start with a capital letter, or are followed by certain characters, or are used with operators which need positional information. Stemmed terms are prefixed with 'Z'."
:note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
:note_stemming_applied: "Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed."
:label_default_notifications: "File default notifications"
:heading_uploaded_files: "Uploaded Files"
:submit_commit: "Commit"
:link_documents: "Documents"
:permission_view_dmsf_folders: "Browse documents"
:permission_user_preferences: "User preferences"
:permission_view_dmsf_files: "View documents"
:permission_folder_manipulation: "Folder manipulation"
:permission_file_manipulation: "File manipulation"
:permission_file_approval: "File approval"
:permission_force_file_unlock: "Force file unlock"
:label_file: "File"
:field_folder: "Folder"
:error_create_cycle_in_folder_dependency: "create cycle in folder dependency"
:error_contains_invalid_character: "contains invalid character(s)"
:error_file_commit_require_uploaded_file: "File commit require uploaded file"
:warning_some_files_were_not_commited: "Some files were not commited due to validation errors: %{files}"
:error_user_has_not_right_delete_folder: "User hasn't right to delete forders"
:error_user_has_not_right_delete_file: "User hasn't right to delete file"
:notice_entries_deleted: "Entries deleted"
:warning_some_entries_were_not_deleted: "Some entries weren't deleted: %{entries}"
:question_do_you_really_want_to_delete_entries: "Do you really want to delete checked entries?"
:title_delete_checked: "Delete checked"
:title_number_of_files_in_directory: "Number of files in directory"
:title_filename_for_download: "Filename used for download or in Zip archive"
:label_number_of_folders: "Folders"
:label_number_of_documents: "Documents"
:label_zip_names_encoding: "Zip names encoding"
:note_zip_names_encoding_iconv: "Iconv is used for charset conversion from utf-8 to target encoding"
:error_file_storage_directory_does_not_exist: "File storage directory doesn't exist and can't be created"
:error_file_can_not_be_created: "File can't be created in storage directory"
:error_wrong_zip_encoding: "Wrong Zip encoding"
:warning_xapian_not_available: "Xapian not available"
:menu_dmsf: "DMSF"
:label_physical_file_delete: "Physical file delete"
:user_is_not_project_member: "You are not member of the project"
:heading_access_downloads_emails: "Downloads/Emails"
:heading_access_first: "First"
:heading_access_last: "Last"
:label_dmsf_updated: "DMSF updated"
:title_total_size_of_all_files: "Total size of all files under this folder"
:project_module_dmsf: "DMSF"
:warning_no_project_to_copy_file_to: "No project to copy file to"
:comment_copied_from: "Copied from %{source}"
:notice_file_copied: "File copied"
:notice_file_moved: "File moved"
:label_target_project: "Target project"
:label_target_folder: "Target folder"
:title_copy_or_move: "Copy/Move"
:label_dmsf_folder_plural: "Dmsf folders"
:comment_moved_from: "Moved from %{source}"
:error_target_folder_same: "Target folder and project are the same as current"
:error_file_cannot_be_moved: "File can't be moved"
:error_file_cannot_be_copied: "File can't be copied"
:warning_no_project_to_copy_folder_to: "No project to copy folder to"
:title_copy: "Copy"
:error_folder_cannot_be_copied: "Folder can't be copied"
:notice_folder_copied: "Folder copied"
error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
note_maximum_email_filesize: Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB.
label_maximum_email_filesize: Maximum email attachment size
header_minimum_filesize: File Error.
error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
parent_directory: Parent Directory
note_webdav: Webdav once enabled can be found at http://.../dmsf/webdav/
label_webdav: Webdav functionality
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
:error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
:note_maximum_email_filesize: "Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB."
:label_maximum_email_filesize: "Maximum email attachment size"
:header_minimum_filesize: "File Error."
:error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
:parent_directory: "Parent Directory"
:note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
:label_webdav: "Webdav functionality"
:label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
warning_folder_already_locked: This folder is already locked
notice_folder_locked: The folder was successfully locked
warning_folder_not_locked: Unfortunately, the folder could not be locked
notice_folder_unlocked: The folder was successfully unlocked
error_only_user_that_locked_folder_can_unlock_it: You are not authorised to unlock this folder
title_folder_parent_locked: "Parent folder %{name} is locked"
title_file_parent_locked: "Parent folder %{name} is locked"
title_unlock_folder: Unlock to allow changes for other members
title_lock_folder: Lock to prevent changes for other members
:warning_folder_already_locked: "This folder is already locked"
:notice_folder_locked: "The folder was successfully locked"
:warning_folder_not_locked: "Unfortunately, the folder could not be locked"
:notice_folder_unlocked: "The folder was successfully unlocked"
:error_only_user_that_locked_folder_can_unlock_it: "You are not authorised to unlock this folder"
:title_folder_parent_locked: "Parent folder %{name} is locked"
:title_file_parent_locked: "Parent folder %{name} is locked"
:title_unlock_folder: "Unlock to allow changes for other members"
:title_lock_folder: "Lock to prevent changes for other members"
select_option_webdav_readonly: Read-only
select_option_webdav_readwrite: Read/Write
label_webdav_strategy: Webdav strategy
note_webdav_strategy: Enables the administrator to decide if webdav is a read-only or read-write platform for end users.
:select_option_webdav_readonly: "Read-only"
:select_option_webdav_readwrite: "Read/Write"
:label_webdav_strategy: "Webdav strategy"
:note_webdav_strategy: "Enables the administrator to decide if webdav is a read-only or read-write platform for end users."
error_unable_delete_dmsf_workflow: Unable to delete the workflow
error_empty_note: "The note can't be empty"
error_workflow_assign: An error occured while assigning
error_cannot_start_workflow: "Workflow can't be started"
error_cannot_renumber_steps: "Steps can't be renumbered"
label_dmsf_workflow_new: New approval workflow
field_label_dmsf_workflow: Approval Workflow
field_label_dmsf_workflow_name: Approval workflow name
label_dmsf_workflow_plural: Approval workflows
label_dmsf_workflow_step: Step
label_dmsf_workflow_step_plural: Steps
label_dmsf_workflow_approval: Approval
label_dmsf_workflow_approval_plural: Approvals
label_dmsf: DMSF
label_dmsf_wokflow_action_approve: Approve
label_dmsf_wokflow_action_reject: Reject
label_dmsf_wokflow_action_delegate: Delegate to
label_dmsf_wokflow_action_assign: Assign an approval workflow
label_dmsf_wokflow_action_start: Start workflow
label_dmsf_workflow_add_approver: "Add a new approver with a logical function:"
label_or: or
label_action: Action
label_note: Note
title_none: None
title_rejection: Rejection
title_delegation: Delegation
title_assignment: Assignment
title_start: Start
title_dmsf_workflow_log: Approval Workflow Log
title_assigned: Assigned
title_approval: Approval
title_rejected: Rejected
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
notice_workflow_started: Approval workflow successfully started

View File

@ -1,210 +1,248 @@
# French translation for DMSF
fr:
:dmsf: "DMSF"
:label_dmsf_file_plural: "Fichiers DMSF"
:warning_no_entries_selected: "Aucun fichier sélectionné"
:error_email_to_must_be_entered: "La saisie d'une adresse mail est obligatoire"
:notice_email_sent: "Mail envoyé"
:warning_file_already_locked: "Fichier déjà verrouillé"
:notice_file_locked: "Fichier verrouillé"
:warning_file_not_locked: "Fichier déverrouillé"
:notice_file_unlocked: "Fichier déverrouillé"
:error_only_user_that_locked_file_can_unlock_it: "Le fichier ne peut être déverrouillé que par celui qui l'a verrouillé"
:question_do_you_really_want_to_delete_this_entry: "Etes-vous sûr de vouloir supprimer cet élément ?"
:error_max_files_exceeded: "Le nombre de fichiers pouvant être téléchargés simultanément est dépassé"
:question_do_you_really_want_to_delete_this_revision: "Etes-vous sûr de vouloir supprimer cette révision ?"
:error_entry_project_does_not_match_current_project: "Entry project doesn't match current project"
:notice_folder_created: "Dossier créé"
:error_folder_creation_failed: "Erreur de création du dossier"
:error_folder_title_must_be_entered: "Le titre du document est requis"
:notice_folder_deleted: "Dossier supprimé"
:error_folder_is_not_empty: "Le dossier n'est pas vide"
:error_folder_title_is_already_used: "Le titre du fichier est déjà utilisé"
:notice_folder_details_were_saved: "Les détails du dossier ont été enregistrés"
:error_file_is_locked: "Le fichier est verrouillé"
:notice_file_deleted: "Le fichier a été supprimé"
:error_at_least_one_revision_must_be_present: "Au moins une révision est requise"
:notice_revision_deleted: "Révision supprimée"
:warning_one_of_files_locked: "Un des fichiers sélectionnés est verrouillé"
:notice_file_unlocked: "Fichier déverrouillé"
:notice_file_revision_created: "La révision du fichier a été ajoutée"
:notice_your_preferences_were_saved: "Vos paramètres ont été enregistrés"
:warning_folder_notifications_already_activated: "Les notifications du dossier sont déjà activées"
:notice_folder_notifications_activated: "Les notifications du dossier ont été activées"
:warning_folder_notifications_already_deactivated: "Les notifications du dossier sont déjà désactivées"
:notice_folder_notifications_deactivated: "Les notifications des dossier ont été désactivés"
:warning_file_notifications_already_activated: "Les notifications du fichier sont déjà désactivés"
:notice_file_notifications_activated: "Les notifications du fichier ont été activées"
:warning_file_notifications_already_deactivated: "Les notifications du fichier sont déjà désactivées"
:notice_file_notifications_deactivated: "Les notifications du fichier ont été désactivés"
:link_details: "Détails de %{title}"
:link_edit: "Modification du dossier %{title}"
:submit_create: "Ajouter"
:link_create_folder: "Créer un sous-dossier"
:title_check_uncheck_all_for_zip_download_or_email: "Sélectionner/Ignorer tous les documents pour le téléchargement ou pour la transmission par mail"
:link_title: "Titre"
:link_size: "Taille"
:link_modified: "Modifié"
:link_ver: "Version"
:link_author: "Auteur"
:title_check_for_zip_download_or_email: "Sélectionner pour le téléchargement ou la transmission par mail"
:title_delete: "Supprimer"
:title_notifications_active_deactivate: "Notifications activées : cliquer pour désactiver"
:title_notifications_not_active_activate: "Notifications désactivées : cliquer pour activer"
:title_title_version_version_download: "Télécharger la version %{version} de %{title}"
:title_locked_by_user: "Verrouillé par %{user}"
:title_locked_by_you: "Verrouillé par vous-même"
:title_waiting_for_approval: "Attente de validation"
:title_approved: "Validé"
:title_unlock_file: "Déverrouiller afin de permettre la modification par les membres du projet"
:title_lock_file: "Verrouiller afin d'empêcher les modifications du document"
:submit_download: "Télécharger"
:title_download_checked: "Télécharger les fichiers sélectionnés au format zip"
:submit_email: "Email"
:title_send_checked_by_email: "Transmettre les fichiers sélectionnés par mail"
:link_user_preferences: "Préférences personnelles du module DMSF"
:heading_send_documents_by_email: "Transmettre les documents par mail"
:label_email_from: "De"
:label_email_to: "A"
:label_email_cc: "Cc"
:label_email_subject: "Objet"
:label_email_documents: "Fichiers"
:label_email_body: "Message"
:label_email_send: "Envoyer"
:title_notifications_active: "Notifications actives"
:label_file_size: "Taille du fichier"
:heading_file_upload: "Déposer des fichiers"
:note_uploaded_maximum_files_at_once: "Seulement %{number} fichiers peuvent être déposés à la fois."
:note_upload_files_greater_than_two_gb: "Afin de transmettre des fichiers de plus de 2Go, l'utilisation d'un navigateur de 64Bits est nécessaire."
:submit_upload_files: "Transmission"
:heading_new_folder: "Nouveau Dossier"
:label_title: "Titre"
:label_description: "Description"
:submit_save: "Enregistrer"
:info_file_locked: "Fichier verrouillé"
:label_notifications: "Notifications"
:select_option_default: "Défaut"
:select_option_deactivated: "Désactivé"
:select_option_activated: "Activé"
:title_save_preferences: "Enregistrer les préférences"
:heading_revisions: "Révisions"
:title_download: "Télécharger"
:title_delete_revision: "Supprimer la révision"
:label_created: "Créé"
:label_changed: "Modifié"
:info_changed_by_user: "%{changed} par %{user}"
:label_filename: "Fichier"
:label_version: "Version"
:label_workflow: "Etat"
:option_workflow_waiting_for_approval: "En attente de validation"
:option_workflow_approved: "Validé"
:option_workflow_none: "Aucun"
:label_mime: "Type"
:label_size: "Taille"
:label_comment: "Commentaires"
:heading_new_revision: "Nouvelle révision"
:option_version_same: "(identique)"
:option_version_minor: "(modification mineure)"
:option_version_major: "(modification majeure)"
:label_new_content: "Nouvelle version du fichier"
:label_maximum_files_upload: "Nombre maximal de documents pouvant être transmis"
:note_maximum_number_of_files_uploaded: "Nombre maximal de documents pouvant être transmis en une fois. La valeur 0 signifie illimité."
:label_maximum_files_download: "Nombre maximal de fichiers pouvant être téléchargés"
:note_maximum_number_of_files_downloaded: "Nombre maximal de documents pouvant être téléchargés ou transmis par mail en une fois. La valeur 0 signifie illimité."
:label_file_storage_directory: "Dossier de stockage des documents"
:label_index_database: "Indexer la base de données"
:label_stemming_language: "Méthode de racinisation"
:note_possible_values: "valeurs possibles"
:note_pass_none_to_disable_stemming: "Utiliser 'none' pour désactiver la racinisation"
:label_stem_strategy: "Stratégie de racinisation"
:option_stem_none: "Aucun suffixe(défaut)"
:option_stem_some: "Quelques suffixes"
:option_stem_all: "Tous les suffixes"
:label_stemming_description: "Ce paramètre contrôle l'algorithme de racinisation appliqué par le requêteur. La valeur par défaut est STEM_NONE. Les paramètres disponibles sont"
:note_do_not_stem: "N'effectuer aucune transformation"
:note_stem_some: "Rechercher des stemmes pour tous les mots sauf ceux qui commencent par des majuscules, ceux suivis d'un certain nombre de caractères ou ceux utilisés avec des opérateurs nécessitant des informations contextuelles. Les stemmes doivent être préfixées par 'Z'."
:note_stem_all: "Rechercher toutes les racines de tous les mots (note : le préfix 'Z' ne sera pas ajouté)."
:note_stemming_applied: "Il est à noter que l'algorithme de racinisation ne sera appliqué qu'aux mots in probabilistic fields - Les filtres booléans ne seront pas racinisés."
:label_default_notifications: "Les notifications par défaut du document"
:heading_uploaded_files: "Document(s) transmis"
:submit_commit: "Appliquer"
:link_documents: "Documents"
:permission_view_dmsf_folders: "Parcourir les documents"
:permission_user_preferences: "Préférences utilisateur"
:permission_view_dmsf_files: "Afficher documents"
:permission_folder_manipulation: "Gestion des dossiers"
:permission_file_manipulation: "Gestion des documents"
:permission_file_approval: "Validation du document"
:permission_force_file_unlock: "Forcer le déverrouillage du document"
:label_file: "Fichier"
:field_folder: "Dossier"
:error_create_cycle_in_folder_dependency: "create cycle in folder dependency"
:error_contains_invalid_character: "Contient de(s) caractère(s) invalide(s)"
:error_file_commit_require_uploaded_file: "Transmission des fichiers nécessaire avant l'enregistrement"
:warning_some_files_were_not_commited: "Erreur d'enregsitrement de certains fichiers %{files}"
:error_user_has_not_right_delete_folder: "L'utilisateur ne dispose pas des droits nécessaires permettant la suppression du dossier"
:error_user_has_not_right_delete_file: "L'utilisateur ne dispose pas des droits nécessaires permettant la suppression du dossier"
:notice_entries_deleted: "Elément(s) supprimé(s)"
:warning_some_entries_were_not_deleted: "Certains éléments n'ont pas été supprimés : %{entries}"
:question_do_you_really_want_to_delete_entries: "Etes-vous sûr de vouloir supprimer le(s) élément(s) sélectionné(s)?"
:title_delete_checked: "Supprimer les éléments sélectionnés"
:title_number_of_files_in_directory: "Nombre de fichiers dans le dossier"
:title_filename_for_download: "Nom du fichier à utiliser lors du téléchargement ou de l'archive ZIP"
:label_number_of_folders: "Dossiers"
:label_number_of_documents: "Fichiers"
:label_zip_names_encoding: "Encodage du nom des fichiers ZIP"
:note_zip_names_encoding_iconv: "Iconv est utilisé lors de la transformation du jeu de caractères utf-8 vers le jeu de caractères cible"
:error_file_storage_directory_does_not_exist: "Le répertoire de stockage des fichiers n'existe pas ou n'a pas pu être créé"
:error_file_can_not_be_created: "Le fichier n'a pas pu être enregistré dans le répertoire de stockage"
:error_wrong_zip_encoding: "Mauvais jeu de caractères pour la transformation du nom du ZIP"
:warning_xapian_not_available: "Le module Xapian est indisponible"
:menu_dmsf: "DMSF"
:label_physical_file_delete: "Suppression des fichiers"
:user_is_not_project_member: "Vous n'êtes pas un membre du projet"
:heading_access_downloads_emails: "Téléchargement / Envoi par mail"
:heading_access_first: "Premier"
:heading_access_last: "Dernier"
:label_dmsf_updated: "Dépôt ou mise à jour du document "
:title_total_size_of_all_files: "Taille totale des fichiers de ce dossier"
:project_module_dmsf: "DMSF"
:warning_no_project_to_copy_file_to: "Le projet de destination n'est pas défini"
:comment_copied_from: "Copie effectuée depuis %{source}"
:notice_file_copied: "Fichier copié"
:notice_file_moved: "Fichier déplacé"
:label_target_project: "Projet cible"
:label_target_folder: "Dossier cible"
:title_copy_or_move: "Copie/Déplacement"
:label_dmsf_folder_plural: "Les dossiers de DMSF"
:comment_moved_from: "Déplacé depuis %{source}"
:error_target_folder_same: "Le projet et le dossier cible sont identiques au projet et dossier source"
:error_file_cannot_be_moved: "Le fichier ne peut pas être déplacé"
:error_file_cannot_be_copied: "Le fichier ne peut pas être copié"
:warning_no_project_to_copy_folder_to: "Le projet de destination n'est pas défini"
:title_copy: "Copie"
:error_folder_cannot_be_copied: "Le dossier ne peut pas être copié"
:notice_folder_copied: "Dossier copié"
dmsf: DMSF
label_dmsf_file_plural: Fichiers DMSF
warning_no_entries_selected: Aucun fichier sélectionné
error_email_to_must_be_entered: La saisie d'une adresse mail est obligatoire
warning_file_already_locked: Fichier déjà verrouillé
notice_file_locked: Fichier verrouillé
warning_file_not_locked: Fichier déverrouillé
notice_file_unlocked: Fichier déverrouillé
error_only_user_that_locked_file_can_unlock_it: "Le fichier ne peut être déverrouillé que par celui qui l'a verrouillé"
question_do_you_really_want_to_delete_this_entry: Etes-vous sûr de vouloir supprimer cet élément ?
error_max_files_exceeded: Le nombre de fichiers pouvant être téléchargés simultanément est dépassé
question_do_you_really_want_to_delete_this_revision: Etes-vous sûr de vouloir supprimer cette révision ?
error_entry_project_does_not_match_current_project: Entry project doesn't match current project
notice_folder_created: Dossier créé
error_folder_creation_failed: Erreur de création du dossier
error_folder_title_must_be_entered: Le titre du document est requis
notice_folder_deleted: Dossier supprimé
error_folder_is_not_empty: "Le dossier n'est pas vide"
error_folder_title_is_already_used: Le titre du fichier est déjà utilisé
notice_folder_details_were_saved: Les détails du dossier ont été enregistrés
error_file_is_locked: Le fichier est verrouillé
notice_file_deleted: Le fichier a été supprimé
error_at_least_one_revision_must_be_present: Au moins une révision est requise
notice_revision_deleted: Révision supprimée
warning_one_of_files_locked: Un des fichiers sélectionnés est verrouillé
notice_file_unlocked: Fichier déverrouillé
notice_file_revision_created: La révision du fichier a été ajoutée
notice_your_preferences_were_saved: Vos paramètres ont été enregistrés
warning_folder_notifications_already_activated: Les notifications du dossier sont déjà activées
notice_folder_notifications_activated: Les notifications du dossier ont été activées
warning_folder_notifications_already_deactivated: Les notifications du dossier sont déjà désactivées
notice_folder_notifications_deactivated: Les notifications des dossier ont été désactivés
warning_file_notifications_already_activated: Les notifications du fichier sont déjà désactivés
notice_file_notifications_activated: Les notifications du fichier ont été activées
warning_file_notifications_already_deactivated: Les notifications du fichier sont déjà désactivées
notice_file_notifications_deactivated: Les notifications du fichier ont été désactivés
link_details: "Détails de %{title}"
link_edit: "Modification du dossier %{title}"
submit_create: Ajouter
link_create_folder: Créer un sous-dossier
title_check_uncheck_all_for_zip_download_or_email: Sélectionner/Ignorer tous les documents pour le téléchargement ou pour la transmission par mail
link_title: Titre
link_size: Taille
link_modified: Modifié
link_ver: Version
link_author: Auteur
title_check_for_zip_download_or_email: Sélectionner pour le téléchargement ou la transmission par mail
title_delete: Supprimer
title_notifications_active_deactivate: "Notifications activées : cliquer pour désactiver"
title_notifications_not_active_activate: "Notifications désactivées : cliquer pour activer"
title_title_version_version_download: "Télécharger la version %{version} de %{title}"
title_locked_by_user: "Verrouillé par %{user}"
title_locked_by_you: Verrouillé par vous-même
title_waiting_for_approval: Attente de validation
title_approved: Validé
title_unlock_file: Déverrouiller afin de permettre la modification par les membres du projet
title_lock_file: Verrouiller afin d'empêcher les modifications du document
submit_download: Télécharger
title_download_checked: Télécharger les fichiers sélectionnés au format zip
submit_email: Email
title_send_checked_by_email: Transmettre les fichiers sélectionnés par mail
link_user_preferences: Préférences personnelles du module DMSF
heading_send_documents_by_email: Transmettre les documents par mail
label_email_from: De
label_email_to: A
label_email_cc: Cc
label_email_subject: Objet
label_email_documents: Fichiers
label_email_body: Message
label_email_send: Envoyer
title_notifications_active: Notifications actives
label_file_size: Taille du fichier
heading_file_upload: Déposer des fichiers
note_uploaded_maximum_files_at_once: "Seulement %{number} fichiers peuvent être déposés à la fois."
note_upload_files_greater_than_two_gb: Afin de transmettre des fichiers de plus de 2Go, l'utilisation d'un navigateur de 64Bits est nécessaire.
submit_upload_files: Transmission
heading_new_folder: Nouveau Dossier
label_title: Titre
label_description: Description
submit_save: Enregistrer
info_file_locked: Fichier verrouillé
label_notifications: Notifications
select_option_default: Défaut
select_option_deactivated: Désactivé
select_option_activated: Activé
title_save_preferences: Enregistrer les préférences
heading_revisions: Révisions
title_download: Télécharger
title_delete_revision: Supprimer la révision
label_created: Créé
label_changed: Modifié
info_changed_by_user: "%{changed} par %{user}"
label_filename: Fichier
label_version: Version
label_workflow: Etat
label_mime: Type
label_size: Taille
label_comment: Commentaires
heading_new_revision: Nouvelle révision
option_version_same: (identique)
option_version_minor: (modification mineure)
option_version_major: (modification majeure)
label_new_content: Nouvelle version du fichier
label_maximum_files_upload: Nombre maximal de documents pouvant être transmis
note_maximum_number_of_files_uploaded: Nombre maximal de documents pouvant être transmis en une fois. La valeur 0 signifie illimité.
label_maximum_files_download: Nombre maximal de fichiers pouvant être téléchargés
note_maximum_number_of_files_downloaded: Nombre maximal de documents pouvant être téléchargés ou transmis par mail en une fois. La valeur 0 signifie illimité.
label_file_storage_directory: Dossier de stockage des documents
label_index_database: Indexer la base de données
label_stemming_language: Méthode de racinisation
note_possible_values: valeurs possibles
note_pass_none_to_disable_stemming: "Utiliser 'none' pour désactiver la racinisation"
label_stem_strategy: Stratégie de racinisation
option_stem_none: Aucun suffixe(défaut)
option_stem_some: Quelques suffixes
option_stem_all: Tous les suffixes
label_stemming_description: Ce paramètre contrôle l'algorithme de racinisation appliqué par le requêteur. La valeur par défaut est STEM_NONE. Les paramètres disponibles sont
note_do_not_stem: "N'effectuer aucune transformation"
note_stem_some: "Rechercher des stemmes pour tous les mots sauf ceux qui commencent par des majuscules, ceux suivis d'un certain nombre de caractères ou ceux utilisés avec des opérateurs nécessitant des informations contextuelles. Les stemmes doivent être préfixées par 'Z'."
note_stem_all: "Rechercher toutes les racines de tous les mots (note : le préfix 'Z' ne sera pas ajouté)."
note_stemming_applied: Il est à noter que l'algorithme de racinisation ne sera appliqué qu'aux mots in probabilistic fields - Les filtres booléans ne seront pas racinisés.
label_default_notifications: Les notifications par défaut du document
heading_uploaded_files: Document(s) transmis
submit_commit: Appliquer
link_documents: Documents
permission_view_dmsf_folders: Parcourir les documents
permission_user_preferences: Préférences utilisateur
permission_view_dmsf_files: Afficher documents
permission_folder_manipulation: Gestion des dossiers
permission_file_manipulation: Gestion des documents
permission_file_approval: Validation du document
permission_force_file_unlock: Forcer le déverrouillage du document
label_file: Fichier
field_folder: Dossier
error_create_cycle_in_folder_dependency: create cycle in folder dependency
error_contains_invalid_character: Contient de(s) caractère(s) invalide(s)
error_file_commit_require_uploaded_file: "Transmission des fichiers nécessaire avant l'enregistrement"
warning_some_files_were_not_commited: "Erreur d'enregsitrement de certains fichiers %{files}"
error_user_has_not_right_delete_folder: "L'utilisateur ne dispose pas des droits nécessaires permettant la suppression du dossier"
error_user_has_not_right_delete_file: "L'utilisateur ne dispose pas des droits nécessaires permettant la suppression du dossier"
notice_entries_deleted: Elément(s) supprimé(s)
warning_some_entries_were_not_deleted: "Certains éléments n'ont pas été supprimés : %{entries}"
question_do_you_really_want_to_delete_entries: Etes-vous sûr de vouloir supprimer le(s) élément(s) sélectionné(s)?
title_delete_checked: Supprimer les éléments sélectionnés
title_number_of_files_in_directory: Nombre de fichiers dans le dossier
title_filename_for_download: "Nom du fichier à utiliser lors du téléchargement ou de l'archive ZIP"
label_number_of_folders: Dossiers
label_number_of_documents: Fichiers
label_zip_names_encoding: Encodage du nom des fichiers ZIP
note_zip_names_encoding_iconv: Iconv est utilisé lors de la transformation du jeu de caractères utf-8 vers le jeu de caractères cible
error_file_storage_directory_does_not_exist: Le répertoire de stockage des fichiers n'existe pas ou n'a pas pu être créé
error_file_can_not_be_created: "Le fichier n'a pas pu être enregistré dans le répertoire de stockage"
error_wrong_zip_encoding: Mauvais jeu de caractères pour la transformation du nom du ZIP
warning_xapian_not_available: Le module Xapian est indisponible
menu_dmsf: DMSF
label_physical_file_delete: Suppression des fichiers
user_is_not_project_member: "Vous n'êtes pas un membre du projet"
heading_access_downloads_emails: Téléchargement / Envoi par mail
heading_access_first: Premier
heading_access_last: Dernier
label_dmsf_updated: Dépôt ou mise à jour du document
title_total_size_of_all_files: Taille totale des fichiers de ce dossier
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: "Le projet de destination n'est pas défini"
comment_copied_from: "Copie effectuée depuis %{source}"
notice_file_copied: Fichier copié
notice_file_moved: Fichier déplacé
label_target_project: Projet cible
label_target_folder: Dossier cible
title_copy_or_move: Copie/Déplacement
label_dmsf_folder_plural: Les dossiers de DMSF
comment_moved_from: "Déplacé depuis %{source}"
error_target_folder_same: Le projet et le dossier cible sont identiques au projet et dossier source
error_file_cannot_be_moved: Le fichier ne peut pas être déplacé
error_file_cannot_be_copied: Le fichier ne peut pas être copié
warning_no_project_to_copy_folder_to: "Le projet de destination n'est pas défini"
title_copy: Copie
error_folder_cannot_be_copied: Le dossier ne peut pas être copié
notice_folder_copied: Dossier copié
:error_max_email_filesize_exceeded: "Vous avez dépassé la taille maximale des fichiers pouvant être transmis par mail (%{number} MB)"
:note_maximum_email_filesize: "Taille maximale, en méga octets, des fichiers pouvant être transmis par mail. 0 indique aucune restriction"
:label_maximum_email_filesize: "Taille maximale du fichier attaché"
:header_minimum_filesize: "Erreur de fichier."
:error_minimum_filesize: "Le fichier %{file} est vide. Il ne sera pas transmis."
:parent_directory: "Dossier parent"
:note_webdav: "Après l'activation du module Webdav, celui-ci sera accessible par http://.../dmsf/webdav/"
:label_webdav: "Module Webdav"
:label_dmsf_plural: "Copier les fichiers et les dossiers DMSF (%{files} fichiers dans %{folders} dossiers)"
error_max_email_filesize_exceeded: "Vous avez dépassé la taille maximale des fichiers pouvant être transmis par mail (%{number} MB)"
note_maximum_email_filesize: Taille maximale, en méga octets, des fichiers pouvant être transmis par mail. 0 indique aucune restriction
label_maximum_email_filesize: Taille maximale du fichier attaché
header_minimum_filesize: Erreur de fichier.
error_minimum_filesize: "Le fichier %{file} est vide. Il ne sera pas transmis."
parent_directory: Dossier parent
note_webdav: "Après l'activation du module Webdav, celui-ci sera accessible par http://.../dmsf/webdav/"
label_webdav: Module Webdav
label_dmsf_plural: "Copier les fichiers et les dossiers DMSF (%{files} fichiers dans %{folders} dossiers)"
:warning_folder_already_locked: "Ce dossier est déjà verrouillé"
:notice_folder_locked: "Dossier verrouillé"
:warning_folder_not_locked: "Echec du verrouillage du dossier"
:notice_folder_unlocked: "Le dossier a été déverrouillé"
:error_only_user_that_locked_folder_can_unlock_it: "Vous n'êtes autorisé à déverrouiller ce dossier"
:title_folder_parent_locked: "Le dossier parent %{name} verrouillé"
:title_file_parent_locked: "Le dossier parent %{name} verrouillé"
:title_unlock_folder: "Déverrouiller afin de permettre la modification par les membres du projet"
:title_lock_folder: "Verrouiller afin d'empêcher les modifications du dossier"
warning_folder_already_locked: Ce dossier est déjà verrouillé
notice_folder_locked: Dossier verrouillé
warning_folder_not_locked: Echec du verrouillage du dossier
notice_folder_unlocked: Le dossier a été déverrouillé
error_only_user_that_locked_folder_can_unlock_it: "Vous n'êtes autorisé à déverrouiller ce dossier"
title_folder_parent_locked: "Le dossier parent %{name} verrouillé"
title_file_parent_locked: "Le dossier parent %{name} verrouillé"
title_unlock_folder: Déverrouiller afin de permettre la modification par les membres du projet
title_lock_folder: "Verrouiller afin d'empêcher les modifications du dossier"
:select_option_webdav_readonly: "Lecture"
:select_option_webdav_readwrite: "Lecture/Ecriture"
:label_webdav_strategy: "Accès Webdav"
:note_webdav_strategy: "Permet à l'administrateur d'autoriser les utilisateurs au module Webdav en letcure seule ou en lecture et écriture."
select_option_webdav_readonly: Lecture
select_option_webdav_readwrite: Lecture/Ecriture
label_webdav_strategy: Accès Webdav
note_webdav_strategy: "Permet à l'administrateur d'autoriser les utilisateurs au module Webdav en letcure seule ou en lecture et écriture."
# Not translated
error_unable_delete_dmsf_workflow: Unable to delete the workflow
error_empty_note: The note can't be empty
error_workflow_assign: An error occured while assigning
error_cannot_start_workflow: Workflow can't be started
error_cannot_renumber_steps: Steps can't be renumbered
label_dmsf_workflow_new: New approval workflow
field_label_dmsf_workflow: Approval Workflow
field_label_dmsf_workflow_name: Approval workflow name
label_dmsf_workflow_plural: Approval workflows
label_dmsf_workflow_step: Step
label_dmsf_workflow_step_plural: Steps
label_dmsf_workflow_approval: Approval
label_dmsf_workflow_approval_plural: Approvals
label_dmsf: DMSF
label_dmsf_wokflow_action_approve: Approve
label_dmsf_wokflow_action_reject: Reject
label_dmsf_wokflow_action_delegate: Delegate to
label_dmsf_wokflow_action_assign: Assign an approval workflow
label_dmsf_wokflow_action_start: Start workflow
label_dmsf_workflow_add_approver: "Add a new approver with a logical function:"
label_or: or
label_action: Action
label_note: Note
title_none: None
title_rejection: Rejection
title_delegation: Delegation
title_assignment: Assignment
title_start: Start
title_dmsf_workflow_log: Approval Workflow Log
title_assigned: Assigned
title_approval: Approval
title_rejected: Rejected
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
notice_workflow_started: Approval workflow successfully started

View File

@ -1,212 +1,248 @@
# Japanese translation for DMSF
ja:
:dmsf: "DMSF"
:label_dmsf_file_plural: "Dmsf ファイル"
:warning_no_entries_selected: "エントリーが選ばれていません"
:error_email_to_must_be_entered: "電子メールの To 先は省略できません"
:notice_email_sent: "電子メールを送信しました"
:warning_file_already_locked: "ファイルは既にロックされています"
:notice_file_locked: "ファイルをロックしました"
:warning_file_not_locked: "ファイルはロックされていません"
:notice_file_unlocked: "ファイルをロック解除しました"
:error_only_user_that_locked_file_can_unlock_it: "ファイルをロックしたユーザだけがロック解除できます"
:question_do_you_really_want_to_delete_this_entry: "本当にこのエントリーを削除しますか?"
:error_max_files_exceeded: "同時にダウンロードできるファイル数の上限 %{number} を超えています"
:question_do_you_really_want_to_delete_this_revision: "本当にこのリビジョンを削除しますか?"
:error_entry_project_does_not_match_current_project: "指定したプロジェクトは現在のプロジェクトと一致しません"
:notice_folder_created: "フォルダを作成しました"
:error_folder_creation_failed: "フォルダを作成できません"
:error_folder_title_must_be_entered: "タイトルが必要です"
:notice_folder_deleted: "フォルダを削除しました"
:error_folder_is_not_empty: "フォルダが空ではありません"
:error_folder_title_is_already_used: "タイトルは既に使われています"
:notice_folder_details_were_saved: "フォルダの詳細を保存しました"
:error_file_is_locked: "ファイルはロックされています"
:notice_file_deleted: "ファイルを削除しました"
:error_at_least_one_revision_must_be_present: "少なくとも1つのリビジョンが必要です"
:notice_revision_deleted: "リビジョンを削除しました"
:warning_one_of_files_locked: "ファイルのうちの1つがロックされています"
:notice_file_unlocked: "ファイルをロック解除しました"
:notice_file_revision_created: "ファイルのリビジョンを作成しました"
:notice_your_preferences_were_saved: "あなたの設定を保存しました"
:warning_folder_notifications_already_activated: "フォルダ通知は既に有効です"
:notice_folder_notifications_activated: "フォルダ通知を有効にしました"
:warning_folder_notifications_already_deactivated: "フォルダ通知は既に無効です"
:notice_folder_notifications_deactivated: "フォルダ通知を無効にしました"
:warning_file_notifications_already_activated: "ファイル通知は既に有効です"
:notice_file_notifications_activated: "ファイル通知を有効にしました"
:warning_file_notifications_already_deactivated: "ファイル通知は既に無効です"
:notice_file_notifications_deactivated: "ファイル通知を無効にしました"
:link_details: "%{title} の詳細を表示します"
:link_edit: "%{title} を編集します"
:submit_create: "作成"
:link_create_folder: "フォルダを作成します"
:title_check_uncheck_all_for_zip_download_or_email: "すべての Zip ダウンロードまたは電子メールのチェックをオン/オフします"
:link_title: "タイトル"
:link_size: "サイズ"
:link_modified: "更新日時"
:link_ver: "バージョン"
:link_author: "作成者"
:title_check_for_zip_download_or_email: "Zip ダウンロードまたは電子メールをチェックします"
:title_delete: "削除します"
:title_notifications_active_deactivate: "通知は有効です: 無効にする"
:title_notifications_not_active_activate: "通知は無効です: 有効にする"
:title_title_version_version_download: "%{title} のバージョン %{version} をダウンロードします"
:title_locked_by_user: "%{user} によってロックされています"
:title_locked_by_you: "あなたがロックしています"
:title_waiting_for_approval: "承認待ち"
:title_approved: "承認済み"
:title_unlock_file: "ロック解除して他のメンバーの変更を許可します"
:title_lock_file: "ロックして他のメンバーの変更を禁止します"
:submit_download: "ダウンロード"
:title_download_checked: "チェックしたものを Zip アーカイブでダウンロードします"
:submit_email: "電子メール"
:title_send_checked_by_email: "チェックしたものを電子メールで送信します"
:link_user_preferences: "あなたの DMSF プロジェクト設定"
:heading_send_documents_by_email: "電子メールによる文書の送信"
:label_email_from: "From"
:label_email_to: "To"
:label_email_cc: "CC"
:label_email_subject: "表題"
:label_email_documents: "文書"
:label_email_body: "本文"
:label_email_send: "送信"
:title_notifications_active: "通知は有効です"
:label_file_size: "ファイルサイズ"
:heading_file_upload: "アップロード"
:note_uploaded_maximum_files_at_once: "最大 %{number} ファイルを一度にアップロードすることができます。"
:note_upload_files_greater_than_two_gb: "2GB より大きいファイルをアップロードするには 64bit 対応ブラウザが必要です。"
:submit_upload_files: "アップロード"
:heading_new_folder: "新規フォルダ"
:label_title: "タイトル"
:label_description: "説明"
:submit_save: "保存"
:info_file_locked: "ファイルをロックしました!"
:label_notifications: "通知"
:select_option_default: "既定値"
:select_option_deactivated: "無効"
:select_option_activated: "有効"
:title_save_preferences: "設定を保存します"
:heading_revisions: "リビジョン"
:title_download: "ダウンロードします"
:title_delete_revision: "リビジョンを削除します"
:label_created: "作成者/日時"
:label_changed: "更新者/日時"
:info_changed_by_user: "%{user} / %{changed}"
:label_filename: "ファイル名"
:label_version: "バージョン"
:label_workflow: "ワークフロー"
:option_workflow_waiting_for_approval: "承認待ち"
:option_workflow_approved: "承認済み"
:option_workflow_none: "なし"
:label_mime: "Mime"
:label_size: "サイズ"
:label_comment: "コメント"
:heading_new_revision: "新しいリビジョン"
:option_version_same: "変更なし"
:option_version_minor: "マイナー"
:option_version_major: "メジャー"
:label_new_content: "新規コンテンツ"
:label_maximum_files_upload: "最大ファイルアップロード数"
:note_maximum_number_of_files_uploaded: "一度にアップロードできるファイル数の上限。0は無制限。"
:label_maximum_files_download: "最大ファイルダウンロード数"
:note_maximum_number_of_files_downloaded: "Zip でダウンロードできる、または電子メールで送られるファイル数の上限。0は無制限。"
:label_file_storage_directory: "ファイル保存フォルダ"
:label_index_database: "インデックスデータベース"
:label_stemming_language: "語幹抽出する言語"
:note_possible_values: "取りうる値"
:note_pass_none_to_disable_stemming: "語幹抽出を無効にするには 'none' を設定します。"
:label_stem_strategy: "抽出方針"
:option_stem_none: "Stem none (既定値)"
:option_stem_some: "Stem some"
:option_stem_all: "Stem all"
:label_stemming_description: "クエリ解釈ルーチンがどのように語幹抽出アルゴリズムを適用するかを制御します。既定値は、STEM_NONE です。設定可能な値は次のものです。"
:note_do_not_stem: "語幹抽出しません。"
:note_stem_some: "大文字から始まる、特定の文字の後に続く、あるいは位置情報を必要とするオペレーターと共に使われる語を除くそれ以外の語の語幹を検索します。語幹抽出された語は、先頭に 'Z' が付きます。"
:note_stem_all: "すべての語の語幹を検索します。(注: 先頭に 'Z' は付きません。)"
:note_stemming_applied: "語幹抽出アルゴリズムは、確率を測る対象の位置にある語にしか適用できない (論理演算子の用語自体は語幹抽出されない) ことにご注意ください。"
:label_default_notifications: "ファイル通知の既定値"
:heading_uploaded_files: "アップロードされたファイル"
:submit_commit: "コミット"
:link_documents: "文書"
:permission_view_dmsf_folders: "文書の一覧"
:permission_user_preferences: "ユーザ設定"
:permission_view_dmsf_files: "文書の表示"
:permission_folder_manipulation: "フォルダの操作"
:permission_file_manipulation: "ファイルの操作"
:permission_file_approval: "ファイルの承認"
:permission_force_file_unlock: "ファイルの強制ロック解除"
:label_file: "ファイル"
:field_folder: "フォルダ"
:error_create_cycle_in_folder_dependency: "フォルダの依存関係が循環しています"
:error_contains_invalid_character: "無効な文字を含んでいます"
:error_file_commit_require_uploaded_file: "コミットするには、まずファイルをアップロードしてください"
:warning_some_files_were_not_commited: "いくつかのファイルは、バリデーションエラーのためにコミットされませんでした: %{files}"
:error_user_has_not_right_delete_folder: "ユーザにフォルダを削除する権限がありません"
:error_user_has_not_right_delete_file: "ユーザにファイルを削除する権限がありません"
:notice_entries_deleted: "エントリーを削除しました"
:warning_some_entries_were_not_deleted: "いくつかのエントリーは削除されませんでした: %{entries}"
:question_do_you_really_want_to_delete_entries: "本当にチェックしたエントリーを削除しますか?"
:title_delete_checked: "チェックしたものを削除します"
:title_number_of_files_in_directory: "フォルダ内のファイル数"
:title_filename_for_download: "ファイル名はダウンロードまたは Zip アーカイブに使われます"
:label_number_of_folders: "フォルダ"
:label_number_of_documents: "文書"
:label_zip_names_encoding: "Zip 名のエンコード"
:note_zip_names_encoding_iconv: "文字コードを utf-8 から目的のエンコードに変換するのに Iconv が使われています"
:error_file_storage_directory_does_not_exist: "ファイル保存フォルダが存在せず作ることもできません"
:error_file_can_not_be_created: "ファイルを保存フォルダに作ることができません"
:error_wrong_zip_encoding: "Zip エンコーディングが正しくありません"
:warning_xapian_not_available: "Xapian が利用できる状態になっていません"
:menu_dmsf: "DMSF"
:label_physical_file_delete: "物理ファイルの削除"
:user_is_not_project_member: "あなたはプロジェクトのメンバーではありません"
:heading_access_downloads_emails: "ダウンロード/電子メール"
:heading_access_first: "初回アクセス"
:heading_access_last: "最終アクセス"
:label_dmsf_updated: "DMSF updated"
:title_total_size_of_all_files: "このフォルダにある全ファイルの合計サイズ"
:project_module_dmsf: "DMSF"
:warning_no_project_to_copy_file_to: "ファイルをコピーするプロジェクトがありません"
:comment_copied_from: "%{source} からコピーしました"
:notice_file_copied: "ファイルをコピーしました"
:notice_file_moved: "ファイルを移動しました"
:label_target_project: "ターゲットプロジェクト"
:label_target_folder: "ターゲットフォルダ"
:title_copy_or_move: "コピー/移動"
:label_dmsf_folder_plural: "Dmsf フォルダ"
:comment_moved_from: "%{source} から移動しました"
:error_target_folder_same: "コピー/移動先のフォルダとプロジェクトが現在と同じです"
:error_file_cannot_be_moved: "ファイルを移動できません"
:error_file_cannot_be_copied: "ファイルをコピーできません"
:warning_no_project_to_copy_folder_to: "フォルダをコピーするプロジェクトがありません"
:title_copy: "コピー"
:error_folder_cannot_be_copied: "フォルダをコピーできません"
:notice_folder_copied: "フォルダをコピーしました"
dmsf: DMSF
label_dmsf_file_plural: Dmsf ファイル
warning_no_entries_selected: エントリーが選ばれていません
error_email_to_must_be_entered: 電子メールの To 先は省略できません
warning_file_already_locked: ファイルは既にロックされています
notice_file_locked: ファイルをロックしました
warning_file_not_locked: ファイルはロックされていません
notice_file_unlocked: ファイルをロック解除しました
error_only_user_that_locked_file_can_unlock_it: ファイルをロックしたユーザだけがロック解除できます
question_do_you_really_want_to_delete_this_entry: 本当にこのエントリーを削除しますか?
error_max_files_exceeded: "同時にダウンロードできるファイル数の上限 %{number} を超えています"
question_do_you_really_want_to_delete_this_revision: 本当にこのリビジョンを削除しますか?
error_entry_project_does_not_match_current_project: 指定したプロジェクトは現在のプロジェクトと一致しません
notice_folder_created: フォルダを作成しました
error_folder_creation_failed: フォルダを作成できません
error_folder_title_must_be_entered: タイトルが必要です
notice_folder_deleted: フォルダを削除しました
error_folder_is_not_empty: フォルダが空ではありません
error_folder_title_is_already_used: タイトルは既に使われています
notice_folder_details_were_saved: フォルダの詳細を保存しました
error_file_is_locked: ファイルはロックされています
notice_file_deleted: ファイルを削除しました
error_at_least_one_revision_must_be_present: 少なくとも1つのリビジョンが必要です
notice_revision_deleted: リビジョンを削除しました
warning_one_of_files_locked: ファイルのうちの1つがロックされています
notice_file_unlocked: ファイルをロック解除しました
notice_file_revision_created: ファイルのリビジョンを作成しました
notice_your_preferences_were_saved: あなたの設定を保存しました
warning_folder_notifications_already_activated: フォルダ通知は既に有効です
notice_folder_notifications_activated: フォルダ通知を有効にしました
warning_folder_notifications_already_deactivated: フォルダ通知は既に無効です
notice_folder_notifications_deactivated: フォルダ通知を無効にしました
warning_file_notifications_already_activated: ファイル通知は既に有効です
notice_file_notifications_activated: ファイル通知を有効にしました
warning_file_notifications_already_deactivated: ファイル通知は既に無効です
notice_file_notifications_deactivated: ファイル通知を無効にしました
link_details: "%{title} の詳細を表示します"
link_edit: "%{title} を編集します"
submit_create: 作成
link_create_folder: フォルダを作成します
title_check_uncheck_all_for_zip_download_or_email: すべての Zip ダウンロードまたは電子メールのチェックをオン/オフします
link_title: タイトル
link_size: サイズ
link_modified: 更新日時
link_ver: バージョン
link_author: 作成者
title_check_for_zip_download_or_email: Zip ダウンロードまたは電子メールをチェックします
title_delete: 削除します
title_notifications_active_deactivate: "通知は有効です: 無効にする"
title_notifications_not_active_activate: "通知は無効です: 有効にする"
title_title_version_version_download: "%{title} のバージョン %{version} をダウンロードします"
title_locked_by_user: "%{user} によってロックされています"
title_locked_by_you: あなたがロックしています
title_waiting_for_approval: 承認待ち
title_approved: 承認済み
title_unlock_file: ロック解除して他のメンバーの変更を許可します
title_lock_file: ロックして他のメンバーの変更を禁止します
submit_download: ダウンロード
title_download_checked: チェックしたものを Zip アーカイブでダウンロードします
submit_email: 電子メール
title_send_checked_by_email: チェックしたものを電子メールで送信します
link_user_preferences: あなたの DMSF プロジェクト設定
heading_send_documents_by_email: 電子メールによる文書の送信
label_email_from: From
label_email_to: To
label_email_cc: CC
label_email_subject: 表題
label_email_documents: 文書
label_email_body: 本文
label_email_send: 送信
title_notifications_active: 通知は有効です
label_file_size: ファイルサイズ
heading_file_upload: アップロード
note_uploaded_maximum_files_at_once: "最大 %{number} ファイルを一度にアップロードすることができます。"
note_upload_files_greater_than_two_gb: 2GB より大きいファイルをアップロードするには 64bit 対応ブラウザが必要です。
submit_upload_files: アップロード
heading_new_folder: 新規フォルダ
label_title: タイトル
label_description: 説明
submit_save: 保存
info_file_locked: ファイルをロックしました!
label_notifications: 通知
select_option_default: 既定値
select_option_deactivated: 無効
select_option_activated: 有効
title_save_preferences: 設定を保存します
heading_revisions: リビジョン
title_download: ダウンロードします
title_delete_revision: リビジョンを削除します
label_created: 作成者/日時
label_changed: 更新者/日時
info_changed_by_user: "%{user} / %{changed}"
label_filename: ファイル名
label_version: バージョン
label_workflow: ワークフロー
label_mime: Mime
label_size: サイズ
label_comment: コメント
heading_new_revision: 新しいリビジョン
option_version_same: 変更なし
option_version_minor: マイナー
option_version_major: メジャー
label_new_content: 新規コンテンツ
label_maximum_files_upload: 最大ファイルアップロード数
note_maximum_number_of_files_uploaded: 一度にアップロードできるファイル数の上限。0は無制限。
label_maximum_files_download: 最大ファイルダウンロード数
note_maximum_number_of_files_downloaded: Zip でダウンロードできる、または電子メールで送られるファイル数の上限。0は無制限。
label_file_storage_directory: ファイル保存フォルダ
label_index_database: インデックスデータベース
label_stemming_language: 語幹抽出する言語
note_possible_values: 取りうる値
note_pass_none_to_disable_stemming: 語幹抽出を無効にするには 'none' を設定します。
label_stem_strategy: 抽出方針
option_stem_none: Stem none (既定値)
option_stem_some: Stem some
option_stem_all: Stem all
label_stemming_description: クエリ解釈ルーチンがどのように語幹抽出アルゴリズムを適用するかを制御します。既定値は、STEM_NONE です。設定可能な値は次のものです。
note_do_not_stem: 語幹抽出しません。
note_stem_some: "大文字から始まる、特定の文字の後に続く、あるいは位置情報を必要とするオペレーターと共に使われる語を除くそれ以外の語の語幹を検索します。語幹抽出された語は、先頭に 'Z' が付きます。"
note_stem_all: "すべての語の語幹を検索します。(注: 先頭に 'Z' は付きません。)"
note_stemming_applied: 語幹抽出アルゴリズムは、確率を測る対象の位置にある語にしか適用できない (論理演算子の用語自体は語幹抽出されない) ことにご注意ください。
label_default_notifications: ファイル通知の既定値
heading_uploaded_files: アップロードされたファイル
submit_commit: コミット
link_documents: 文書
permission_view_dmsf_folders: 文書の一覧
permission_user_preferences: ユーザ設定
permission_view_dmsf_files: 文書の表示
permission_folder_manipulation: フォルダの操作
permission_file_manipulation: ファイルの操作
permission_file_approval: ファイルの承認
permission_force_file_unlock: ファイルの強制ロック解除
label_file: ファイル
field_folder: フォルダ
error_create_cycle_in_folder_dependency: フォルダの依存関係が循環しています
error_contains_invalid_character: 無効な文字を含んでいます
error_file_commit_require_uploaded_file: コミットするには、まずファイルをアップロードしてください
warning_some_files_were_not_commited: "いくつかのファイルは、バリデーションエラーのためにコミットされませんでした: %{files}"
error_user_has_not_right_delete_folder: ユーザにフォルダを削除する権限がありません
error_user_has_not_right_delete_file: ユーザにファイルを削除する権限がありません
notice_entries_deleted: エントリーを削除しました
warning_some_entries_were_not_deleted: "いくつかのエントリーは削除されませんでした: %{entries}"
question_do_you_really_want_to_delete_entries: 本当にチェックしたエントリーを削除しますか?
title_delete_checked: チェックしたものを削除します
title_number_of_files_in_directory: フォルダ内のファイル数
title_filename_for_download: ファイル名はダウンロードまたは Zip アーカイブに使われます
label_number_of_folders: フォルダ
label_number_of_documents: 文書
label_zip_names_encoding: Zip 名のエンコード
note_zip_names_encoding_iconv: 文字コードを utf-8 から目的のエンコードに変換するのに Iconv が使われています
error_file_storage_directory_does_not_exist: ファイル保存フォルダが存在せず作ることもできません
error_file_can_not_be_created: ファイルを保存フォルダに作ることができません
error_wrong_zip_encoding: Zip エンコーディングが正しくありません
warning_xapian_not_available: Xapian が利用できる状態になっていません
menu_dmsf: DMSF
label_physical_file_delete: 物理ファイルの削除
user_is_not_project_member: あなたはプロジェクトのメンバーではありません
heading_access_downloads_emails: ダウンロード/電子メール
heading_access_first: 初回アクセス
heading_access_last: 最終アクセス
label_dmsf_updated: DMSF updated
title_total_size_of_all_files: このフォルダにある全ファイルの合計サイズ
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: ファイルをコピーするプロジェクトがありません
comment_copied_from: "%{source} からコピーしました"
notice_file_copied: ファイルをコピーしました
notice_file_moved: ファイルを移動しました
label_target_project: ターゲットプロジェクト
label_target_folder: ターゲットフォルダ
title_copy_or_move: コピー/移動
label_dmsf_folder_plural: Dmsf フォルダ
comment_moved_from: "%{source} から移動しました"
error_target_folder_same: コピー/移動先のフォルダとプロジェクトが現在と同じです
error_file_cannot_be_moved: ファイルを移動できません
error_file_cannot_be_copied: ファイルをコピーできません
warning_no_project_to_copy_folder_to: フォルダをコピーするプロジェクトがありません
title_copy: コピー
error_folder_cannot_be_copied: フォルダをコピーできません
notice_folder_copied: フォルダをコピーしました
# Not translated
# Not translated
:error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
:note_maximum_email_filesize: "Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB."
:label_maximum_email_filesize: "Maximum email attachment size"
:header_minimum_filesize: "File Error."
:error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
:parent_directory: "Parent Directory"
:note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
:label_webdav: "Webdav functionality"
:label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
note_maximum_email_filesize: "Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB."
label_maximum_email_filesize: "Maximum email attachment size"
header_minimum_filesize: "File Error."
error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
parent_directory: "Parent Directory"
note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
label_webdav: "Webdav functionality"
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
:warning_folder_already_locked: "This folder is already locked"
:notice_folder_locked: "The folder was successfully locked"
:warning_folder_not_locked: "Unfortunately, the folder could not be locked"
:notice_folder_unlocked: "The folder was successfully unlocked"
:error_only_user_that_locked_folder_can_unlock_it: "You are not authorised to unlock this folder"
:title_folder_parent_locked: "Parent folder %{name} is locked"
:title_file_parent_locked: "Parent folder %{name} is locked"
:title_unlock_folder: "Unlock to allow changes for other members"
:title_lock_folder: "Lock to prevent changes for other members"
warning_folder_already_locked: "This folder is already locked"
notice_folder_locked: "The folder was successfully locked"
warning_folder_not_locked: "Unfortunately, the folder could not be locked"
notice_folder_unlocked: "The folder was successfully unlocked"
error_only_user_that_locked_folder_can_unlock_it: "You are not authorised to unlock this folder"
title_folder_parent_locked: "Parent folder %{name} is locked"
title_file_parent_locked: "Parent folder %{name} is locked"
title_unlock_folder: "Unlock to allow changes for other members"
title_lock_folder: "Lock to prevent changes for other members"
:select_option_webdav_readonly: "Read-only"
:select_option_webdav_readwrite: "Read/Write"
:label_webdav_strategy: "Webdav strategy"
:note_webdav_strategy: "Enables the administrator to decide if webdav is a read-only or read-write platform for end users."
select_option_webdav_readonly: "Read-only"
select_option_webdav_readwrite: "Read/Write"
label_webdav_strategy: "Webdav strategy"
note_webdav_strategy: "Enables the administrator to decide if webdav is a read-only or read-write platform for end users."
error_unable_delete_dmsf_workflow: Unable to delete the workflow
error_empty_note: The note can't be empty
error_workflow_assign: An error occured while assigning
error_cannot_start_workflow: Workflow can't be started
error_cannot_renumber_steps: Steps can't be renumbered
label_dmsf_workflow_new: New approval workflow
field_label_dmsf_workflow: Approval Workflow
field_label_dmsf_workflow_name: Approval workflow name
label_dmsf_workflow_plural: Approval workflows
label_dmsf_workflow_step: Step
label_dmsf_workflow_step_plural: Steps
label_dmsf_workflow_approval: Approval
label_dmsf_workflow_approval_plural: Approvals
label_dmsf: DMSF
label_dmsf_wokflow_action_approve: Approve
label_dmsf_wokflow_action_reject: Reject
label_dmsf_wokflow_action_delegate: Delegate to
label_dmsf_wokflow_action_assign: Assign an approval workflow
label_dmsf_wokflow_action_start: Start workflow
label_dmsf_workflow_add_approver: "Add a new approver with a logical function:"
label_or: or
label_action: Action
label_note: Note
title_none: None
title_rejection: Rejection
title_delegation: Delegation
title_assignment: Assignment
title_start: Start
title_dmsf_workflow_log: Approval Workflow Log
title_assigned: Assigned
title_approval: Approval
title_rejected: Rejected
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
notice_workflow_started: Approval workflow successfully started

View File

@ -1,210 +1,248 @@
# Russian translation for DMSF
ru:
:dmsf: "DMSF"
:label_dmsf_file_plural: "Файлы DMSF"
:warning_no_entries_selected: "Файлы не выбраны"
:error_email_to_must_be_entered: "Нужно указать, на какую почту отправить письмо"
:notice_email_sent: "Письмо отправлено"
:warning_file_already_locked: "Файл уже заблокирован"
:notice_file_locked: "Файл заблокирован"
:warning_file_not_locked: "Файл не заблокирован"
:notice_file_unlocked: "Файл разблокирован"
:error_only_user_that_locked_file_can_unlock_it: "Только пользователь, который заблокировал файл, может его разблокировать"
:question_do_you_really_want_to_delete_this_entry: "Вы действительно хотите удалить этот файл?"
:error_max_files_exceeded: "Ограничение для %{number} одновременно загружаемых файлов превышено"
:question_do_you_really_want_to_delete_this_revision: "Вы действительно хотите удалить эту редакцию?"
:error_entry_project_does_not_match_current_project: "Проект, которому принадлежит файл, не соответсвует текущему проекту"
:notice_folder_created: "Папка создана"
:error_folder_creation_failed: "Папку не удалось создать"
:error_folder_title_must_be_entered: "Нужно указать название папки"
:notice_folder_deleted: "Папка удалена"
:error_folder_is_not_empty: "Папка не пустая"
:error_folder_title_is_already_used: "Название папки уже используется"
:notice_folder_details_were_saved: "Описание папки было сохранено"
:error_file_is_locked: "Файл заблокирован"
:notice_file_deleted: "Файл удален"
:error_at_least_one_revision_must_be_present: "По крайней мере, одна редакция должна присутствовать"
:notice_revision_deleted: "Редакция удалена"
:warning_one_of_files_locked: "Один из файлов заблокирован"
:notice_file_unlocked: "Файл разблокирован"
:notice_file_revision_created: "Редакция файла создана"
:notice_your_preferences_were_saved: "Ваши настройки были сохранены"
:warning_folder_notifications_already_activated: "Уведомления папки уже включены"
:notice_folder_notifications_activated: "Уведомления папки включены"
:warning_folder_notifications_already_deactivated: "Уведомления папки уже отключены"
:notice_folder_notifications_deactivated: "Уведомления папки отключены"
:warning_file_notifications_already_activated: "Уведомления файла уже включены"
:notice_file_notifications_activated: "Уведомления файла включены"
:warning_file_notifications_already_deactivated: "Уведомления файла уже отключены"
:notice_file_notifications_deactivated: "Уведомления файла отключены"
:link_details: "Подробности %{title}"
:link_edit: "Редактировать %{title}"
:submit_create: "Создать"
:link_create_folder: "Создать папку"
:title_check_uncheck_all_for_zip_download_or_email: "Выбрать/Снять все документы для того, чтобы скачать или отправить их по электронной почте"
:link_title: "Название"
:link_size: "Размер"
:link_modified: "Изменен"
:link_ver: "Версия"
:link_author: "Автор"
:title_check_for_zip_download_or_email: "Выберите документы, которые нужно скачать или отправить их по электронной почте"
:title_delete: "Удалить"
:title_notifications_active_deactivate: "Уведомления включены: Отключить"
:title_notifications_not_active_activate: "Уведомления не включены: Включить"
:title_title_version_version_download: "Скачать %{title} версию %{version}"
:title_locked_by_user: "Заблокировано пользователем %{user}"
:title_locked_by_you: "Заблокировано Вами"
:title_waiting_for_approval: "Ожидается на утверждение"
:title_approved: "Утверждено"
:title_unlock_file: "Разблокируйте файл, чтобы разрешить изменение его другими участниками"
:title_lock_file: "Заблокируйте файл, чтобы запретить его изменение другими участниками"
:submit_download: "Скачать"
:title_download_checked: "Скачать выбранные файлы"
:submit_email: "Отправить письмо"
:title_send_checked_by_email: "Отправить выбранные файлы по электронной почте"
:link_user_preferences: "Ваши настройки DMSF проекта"
:heading_send_documents_by_email: "Отправить документы по электронной почте"
:label_email_from: "От"
:label_email_to: "Кому"
:label_email_cc: "CC"
:label_email_subject: "Тема"
:label_email_documents: "Документы"
:label_email_body: "Содержание"
:label_email_send: "Отправить"
:title_notifications_active: "Уведомления активны"
:label_file_size: "Размер файла"
:heading_file_upload: "Закачать"
:note_uploaded_maximum_files_at_once: "За один раз можно загрузить только %{number} файлов."
:note_upload_files_greater_than_two_gb: "Чтобы загружать файлы размером больше чем 2 Гб у вас должен быть 64-битный браузер."
:submit_upload_files: "Загрузить"
:heading_new_folder: "Новая папка"
:label_title: "Заголовок"
:label_description: "Описание"
:submit_save: "Сохранить"
:info_file_locked: "Файл заблокирован!"
:label_notifications: "Уведомления"
:select_option_default: "По умолчанию"
:select_option_deactivated: "Отключено"
:select_option_activated: "Включено"
:title_save_preferences: "Сохранить настройки"
:heading_revisions: "Редакции"
:title_download: "Скачать"
:title_delete_revision: "Удалить редакцию"
:label_created: "Создан"
:label_changed: "Изменен"
:info_changed_by_user: "%{changed} пользователем %{user}"
:label_filename: "Имя файла"
:label_version: "Версия"
:label_workflow: "Поток работ"
:option_workflow_waiting_for_approval: "Ожидается на утверждение"
:option_workflow_approved: "Утверждено"
:option_workflow_none: "Нет"
:label_mime: "MIME-тип"
:label_size: "Размер"
:label_comment: "Комментарий"
:heading_new_revision: "Новая редакция"
:option_version_same: "Та же версия"
:option_version_minor: "Незначительные изменения"
:option_version_major: "Значительные изменения"
:label_new_content: "Новое содержание"
:label_maximum_files_upload: "Максимальное количество файлов для загрузки"
:note_maximum_number_of_files_uploaded: "Ограничивает максимальное количество файлов, которое может быть загружено за один раз. 0 означает отсутствие ограничений."
:label_maximum_files_download: "Максимальное количество файлов для скачивания"
:note_maximum_number_of_files_downloaded: "Ограничивает максимальное количество файлов, которое может быть скачано или отправлено по почте за один раз. 0 означает отсутствие ограничений."
:label_file_storage_directory: "Каталог для хранения файлов"
:label_index_database: "Индексная база данных"
:label_stemming_language: "Язык для стемминга"
:note_possible_values: "Возможные значения"
:note_pass_none_to_disable_stemming: "Укажите 'none' чтобы отключить стемминг"
:label_stem_strategy: "Стратегия стемминга"
:option_stem_none: "Нет (По умолчанию)"
:option_stem_some: "Некоторые"
:option_stem_all: "Все"
:label_stemming_description: "Это контролирует как парсер запросов будет применять алгоритм стемминга. Значением по умолчанию есть STEM_NONE. Возможны следующие значения"
:note_do_not_stem: "Не выполнять никакого стемминга."
:note_stem_some: "Искать обусловленные формы терминов за исключением тех, которые начинаются с большой буквы, или следуют после определенных символов, или используются с операторами, которым нужна информация о позиции. Обусловленные термины имеют префикс 'Z'."
:note_stem_all: "Искать обусловленные формы всех слов (примечание: Префикс 'Z' не добавляется)."
:note_stemming_applied: "Обратите внимание на то, что алгоритм стемминга применяется только к словам в вероятностных областях — логическое фильтрирует термины, которые никогда не обусловлены."
:label_default_notifications: "Значение по умолчанию для уведомлений"
:heading_uploaded_files: "Загруженные файлы"
:submit_commit: "Зафиксировать"
:link_documents: "Документы"
:permission_view_dmsf_folders: "Просматривать папки"
:permission_user_preferences: "Настройки пользователя"
:permission_view_dmsf_files: "Просматривать документы"
:permission_folder_manipulation: "Управление папками"
:permission_file_manipulation: "Управление файлами"
:permission_file_approval: "Утверждение файлов"
:permission_force_file_unlock: "Разблокировка любых файлов"
:label_file: "Файл"
:field_folder: "Папка"
:error_create_cycle_in_folder_dependency: "создать циклическую зависимость в папке"
:error_contains_invalid_character: "содержит недопустимые символы"
:error_file_commit_require_uploaded_file: "Чтобы зафиксировать файл нужно для начала его загрузить"
:warning_some_files_were_not_commited: "Некоторые файлы не были зафиксированы через ошибки валидации: %{files}"
:error_user_has_not_right_delete_folder: "Пользователь не имеет нужных прав для удаления папки"
:error_user_has_not_right_delete_file: "Пользователь не имеет нужных прав для удаления файла"
:notice_entries_deleted: "Файлы удалены"
:warning_some_entries_were_not_deleted: "Некоторые файлы не были удалены: %{entries}"
:question_do_you_really_want_to_delete_entries: "Вы действительно хотите удалить выбранные файлы?"
:title_delete_checked: "Удалить выбранные документы"
:title_number_of_files_in_directory: "Количество файлов в директории"
:title_filename_for_download: "Имя файла для скачиваемого архива"
:label_number_of_folders: "Папок"
:label_number_of_documents: "Документов"
:label_zip_names_encoding: "Кодировка zip имен"
:note_zip_names_encoding_iconv: "Iconv используется для преобразования с кодировки UTF-8 в целевую кодировку"
:error_file_storage_directory_does_not_exist: "Каталог для хранения файлов не существует и не может быть создан"
:error_file_can_not_be_created: "Файл не может быть создан в каталоге хранения файлов"
:error_wrong_zip_encoding: "Неверная кодировка zip"
:warning_xapian_not_available: "Xapian не доступен"
:menu_dmsf: "Документы"
:label_physical_file_delete: "Физическое удаление файла"
:user_is_not_project_member: "Вы не являетесь участником проекта"
:heading_access_downloads_emails: "Скачивание / Отправка по почте"
:heading_access_first: "Первый"
:heading_access_last: "Последний"
:label_dmsf_updated: "Документ обновлен"
:title_total_size_of_all_files: "Общий размер всех файлов в этой папке"
:project_module_dmsf: "DMSF"
:warning_no_project_to_copy_file_to: "Не выбран проект, в который нужно скопировать файл"
:comment_copied_from: "Скопировано из %{source}"
:notice_file_copied: "Файл скопирован"
:notice_file_moved: "Файл перемещен"
:label_target_project: "Целевой проект"
:label_target_folder: "Целевая папка"
:title_copy_or_move: "Копировать/Переместить"
:label_dmsf_folder_plural: "DMSF папки"
:comment_moved_from: "Перемещен из %{source}"
:error_target_folder_same: "Целевая папка и проект совпадают с текущими"
:error_file_cannot_be_moved: "Файл не может быть перемещен"
:error_file_cannot_be_copied: "Файл не может быть скопирован"
:warning_no_project_to_copy_folder_to: "Не выбран проект, в который нужно скопировать папку"
:title_copy: "Копировать"
:error_folder_cannot_be_copied: "Папка не может быть скопирована"
:notice_folder_copied: "Папка скопирована"
dmsf: DMSF
label_dmsf_file_plural: Файлы DMSF
warning_no_entries_selected: Файлы не выбраны
error_email_to_must_be_entered: Нужно указать, на какую почту отправить письмо
warning_file_already_locked: Файл уже заблокирован
notice_file_locked: Файл заблокирован
warning_file_not_locked: Файл не заблокирован
notice_file_unlocked: Файл разблокирован
error_only_user_that_locked_file_can_unlock_it: Только пользователь, который заблокировал файл, может его разблокировать
question_do_you_really_want_to_delete_this_entry: Вы действительно хотите удалить этот файл?
error_max_files_exceeded: "Ограничение для %{number} одновременно загружаемых файлов превышено"
question_do_you_really_want_to_delete_this_revision: Вы действительно хотите удалить эту редакцию?
error_entry_project_does_not_match_current_project: Проект, которому принадлежит файл, не соответсвует текущему проекту
notice_folder_created: Папка создана
error_folder_creation_failed: Папку не удалось создать
error_folder_title_must_be_entered: Нужно указать название папки
notice_folder_deleted: Папка удалена
error_folder_is_not_empty: Папка не пустая
error_folder_title_is_already_used: Название папки уже используется
notice_folder_details_were_saved: Описание папки было сохранено
error_file_is_locked: Файл заблокирован
notice_file_deleted: Файл удален
error_at_least_one_revision_must_be_present: По крайней мере, одна редакция должна присутствовать
notice_revision_deleted: Редакция удалена
warning_one_of_files_locked: Один из файлов заблокирован
notice_file_unlocked: Файл разблокирован
notice_file_revision_created: Редакция файла создана
notice_your_preferences_were_saved: Ваши настройки были сохранены
warning_folder_notifications_already_activated: Уведомления папки уже включены
notice_folder_notifications_activated: Уведомления папки включены
warning_folder_notifications_already_deactivated: Уведомления папки уже отключены
notice_folder_notifications_deactivated: Уведомления папки отключены
warning_file_notifications_already_activated: Уведомления файла уже включены
notice_file_notifications_activated: Уведомления файла включены
warning_file_notifications_already_deactivated: Уведомления файла уже отключены
notice_file_notifications_deactivated: Уведомления файла отключены
link_details: "Подробности %{title}"
link_edit: "Редактировать %{title}"
submit_create: Создать
link_create_folder: Создать папку
title_check_uncheck_all_for_zip_download_or_email: Выбрать/Снять все документы для того, чтобы скачать или отправить их по электронной почте
link_title: Название
link_size: Размер
link_modified: Изменен
link_ver: Версия
link_author: Автор
title_check_for_zip_download_or_email: Выберите документы, которые нужно скачать или отправить их по электронной почте
title_delete: Удалить
title_notifications_active_deactivate: "Уведомления включены: Отключить"
title_notifications_not_active_activate: "Уведомления не включены: Включить"
title_title_version_version_download: "Скачать %{title} версию %{version}"
title_locked_by_user: "Заблокировано пользователем %{user}"
title_locked_by_you: Заблокировано Вами
title_waiting_for_approval: Ожидается на утверждение
title_approved: Утверждено
title_unlock_file: Разблокируйте файл, чтобы разрешить изменение его другими участниками
title_lock_file: Заблокируйте файл, чтобы запретить его изменение другими участниками
submit_download: Скачать
title_download_checked: Скачать выбранные файлы
submit_email: Отправить письмо
title_send_checked_by_email: Отправить выбранные файлы по электронной почте
link_user_preferences: Ваши настройки DMSF проекта
heading_send_documents_by_email: Отправить документы по электронной почте
label_email_from: От
label_email_to: Кому
label_email_cc: CC
label_email_subject: Тема
label_email_documents: Документы
label_email_body: Содержание
label_email_send: Отправить
title_notifications_active: Уведомления активны
label_file_size: Размер файла
heading_file_upload: Закачать
note_uploaded_maximum_files_at_once: "За один раз можно загрузить только %{number} файлов."
note_upload_files_greater_than_two_gb: Чтобы загружать файлы размером больше чем 2 Гб у вас должен быть 64-битный браузер.
submit_upload_files: Загрузить
heading_new_folder: Новая папка
label_title: Заголовок
label_description: Описание
submit_save: Сохранить
info_file_locked: Файл заблокирован!
label_notifications: Уведомления
select_option_default: По умолчанию
select_option_deactivated: Отключено
select_option_activated: Включено
title_save_preferences: Сохранить настройки
heading_revisions: Редакции
title_download: Скачать
title_delete_revision: Удалить редакцию
label_created: Создан
label_changed: Изменен
info_changed_by_user: "%{changed} пользователем %{user}"
label_filename: Имя файла
label_version: Версия
label_workflow: Поток работ
label_mime: MIME-тип
label_size: Размер
label_comment: Комментарий
heading_new_revision: Новая редакция
option_version_same: Та же версия
option_version_minor: Незначительные изменения
option_version_major: Значительные изменения
label_new_content: Новое содержание
label_maximum_files_upload: Максимальное количество файлов для загрузки
note_maximum_number_of_files_uploaded: Ограничивает максимальное количество файлов, которое может быть загружено за один раз. 0 означает отсутствие ограничений.
label_maximum_files_download: Максимальное количество файлов для скачивания
note_maximum_number_of_files_downloaded: Ограничивает максимальное количество файлов, которое может быть скачано или отправлено по почте за один раз. 0 означает отсутствие ограничений.
label_file_storage_directory: Каталог для хранения файлов
label_index_database: Индексная база данных
label_stemming_language: Язык для стемминга
note_possible_values: Возможные значения
note_pass_none_to_disable_stemming: "Укажите 'none' чтобы отключить стемминг"
label_stem_strategy: Стратегия стемминга
option_stem_none: Нет (По умолчанию)
option_stem_some: Некоторые
option_stem_all: Все
label_stemming_description: Это контролирует как парсер запросов будет применять алгоритм стемминга. Значением по умолчанию есть STEM_NONE. Возможны следующие значения
note_do_not_stem: Не выполнять никакого стемминга."
note_stem_some: "Искать обусловленные формы терминов за исключением тех, которые начинаются с большой буквы, или следуют после определенных символов, или используются с операторами, которым нужна информация о позиции. Обусловленные термины имеют префикс 'Z'."
note_stem_all: "Искать обусловленные формы всех слов (примечание: Префикс 'Z' не добавляется)."
note_stemming_applied: Обратите внимание на то, что алгоритм стемминга применяется только к словам в вероятностных областях — логическое фильтрирует термины, которые никогда не обусловлены.
label_default_notifications: Значение по умолчанию для уведомлений
heading_uploaded_files: Загруженные файлы
submit_commit: Зафиксировать
link_documents: Документы
permission_view_dmsf_folders: Просматривать папки
permission_user_preferences: Настройки пользователя
permission_view_dmsf_files: Просматривать документы
permission_folder_manipulation: Управление папками
permission_file_manipulation: Управление файлами
permission_file_approval: Утверждение файлов
permission_force_file_unlock: Разблокировка любых файлов
label_file: Файл
field_folder: Папка
error_create_cycle_in_folder_dependency: создать циклическую зависимость в папке
error_contains_invalid_character: содержит недопустимые символы
error_file_commit_require_uploaded_file: Чтобы зафиксировать файл нужно для начала его загрузить
warning_some_files_were_not_commited: "Некоторые файлы не были зафиксированы через ошибки валидации: %{files}"
error_user_has_not_right_delete_folder: Пользователь не имеет нужных прав для удаления папки
error_user_has_not_right_delete_file: Пользователь не имеет нужных прав для удаления файла
notice_entries_deleted: Файлы удалены
warning_some_entries_were_not_deleted: "Некоторые файлы не были удалены: %{entries}"
question_do_you_really_want_to_delete_entries: Вы действительно хотите удалить выбранные файлы?
title_delete_checked: Удалить выбранные документы
title_number_of_files_in_directory: Количество файлов в директории
title_filename_for_download: Имя файла для скачиваемого архива
label_number_of_folders: Папок
label_number_of_documents: Документов
label_zip_names_encoding: Кодировка zip имен
note_zip_names_encoding_iconv: Iconv используется для преобразования с кодировки UTF-8 в целевую кодировку
error_file_storage_directory_does_not_exist: Каталог для хранения файлов не существует и не может быть создан
error_file_can_not_be_created: Файл не может быть создан в каталоге хранения файлов
error_wrong_zip_encoding: Неверная кодировка zip
warning_xapian_not_available: Xapian не доступен
menu_dmsf: Документы
label_physical_file_delete: Физическое удаление файла
user_is_not_project_member: Вы не являетесь участником проекта
heading_access_downloads_emails: Скачивание / Отправка по почте
heading_access_first: Первый
heading_access_last: Последний
label_dmsf_updated: Документ обновлен
title_total_size_of_all_files: Общий размер всех файлов в этой папке
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: Не выбран проект, в который нужно скопировать файл
comment_copied_from: "Скопировано из %{source}"
notice_file_copied: Файл скопирован
notice_file_moved: Файл перемещен
label_target_project: Целевой проект
label_target_folder: Целевая папка
title_copy_or_move: Копировать/Переместить
label_dmsf_folder_plural: DMSF папки
comment_moved_from: "Перемещен из %{source}"
error_target_folder_same: Целевая папка и проект совпадают с текущими
error_file_cannot_be_moved: Файл не может быть перемещен
error_file_cannot_be_copied: Файл не может быть скопирован
warning_no_project_to_copy_folder_to: Не выбран проект, в который нужно скопировать папку
title_copy: Копировать
error_folder_cannot_be_copied: Папка не может быть скопирована
notice_folder_copied: Папка скопирована
:error_max_email_filesize_exceeded: "Вы превысили максимальный размер для отправки по электронной почте. (%{number} Мб)"
:note_maximum_email_filesize: "Ограничение максимального размера файла, который можно отправить по электронной почте. 0 означает отсутствие ограничений. Значение в мегабайтах."
:label_maximum_email_filesize: "Максимальный размер вложения в письме"
:header_minimum_filesize: "Ошибка файла."
:error_minimum_filesize: "Файла %{file} является пустым и он не будет прикреплен."
:parent_directory: "Родительская директория"
:note_webdav: "После включения, WebDAV можно найти по адресу http://redmine-host/dmsf/webdav/"
:label_webdav: "Функциональность WebDAV"
:label_dmsf_plural: "Скопировать DMSF файлы и папки (%{files} файлов в %{folders} папках)"
error_max_email_filesize_exceeded: "Вы превысили максимальный размер для отправки по электронной почте. (%{number} Мб)"
note_maximum_email_filesize: "Ограничение максимального размера файла, который можно отправить по электронной почте. 0 означает отсутствие ограничений. Значение в мегабайтах."
label_maximum_email_filesize: "Максимальный размер вложения в письме"
header_minimum_filesize: "Ошибка файла."
error_minimum_filesize: "Файла %{file} является пустым и он не будет прикреплен."
parent_directory: "Родительская директория"
note_webdav: "После включения, WebDAV можно найти по адресу http://redmine-host/dmsf/webdav/"
label_webdav: "Функциональность WebDAV"
label_dmsf_plural: "Скопировать DMSF файлы и папки (%{files} файлов в %{folders} папках)"
:warning_folder_already_locked: "Эта папка уже заблокирована"
:notice_folder_locked: "Папка была успешно заблокирована"
:warning_folder_not_locked: "К сожалению, папка не может быть заблокирована"
:notice_folder_unlocked: "Папка была успешно разблокирована"
:error_only_user_that_locked_folder_can_unlock_it: "Только пользователь, который заблокировал папку, может её разблокировать"
:title_folder_parent_locked: "Родительская папка %{name} заблокирована"
:title_file_parent_locked: "Родительская папка %{name} заблокирована"
:title_unlock_folder: "Разблокируйте папку, чтобы разрешить изменение её другими участниками"
:title_lock_folder: "Заблокируйте папку, чтобы запретить ёё изменение другими участниками"
warning_folder_already_locked: "Эта папка уже заблокирована"
notice_folder_locked: "Папка была успешно заблокирована"
warning_folder_not_locked: "К сожалению, папка не может быть заблокирована"
notice_folder_unlocked: "Папка была успешно разблокирована"
error_only_user_that_locked_folder_can_unlock_it: "Только пользователь, который заблокировал папку, может её разблокировать"
title_folder_parent_locked: "Родительская папка %{name} заблокирована"
title_file_parent_locked: "Родительская папка %{name} заблокирована"
title_unlock_folder: "Разблокируйте папку, чтобы разрешить изменение её другими участниками"
title_lock_folder: "Заблокируйте папку, чтобы запретить ёё изменение другими участниками"
:select_option_webdav_readonly: "Только для чтения"
:select_option_webdav_readwrite: "Чтение/Запись"
:label_webdav_strategy: "Стратегия WebDAV"
:note_webdav_strategy: "Позволяет администратору решить в каком режиме предоставить доступ к WebDAV для конечных пользователей (Только для чтения или Чтение+Запись)."
select_option_webdav_readonly: "Только для чтения"
select_option_webdav_readwrite: "Чтение/Запись"
label_webdav_strategy: "Стратегия WebDAV"
note_webdav_strategy: "Позволяет администратору решить в каком режиме предоставить доступ к WebDAV для конечных пользователей (Только для чтения или Чтение+Запись)."
# Not translated
error_unable_delete_dmsf_workflow: Unable to delete the workflow
error_empty_note: The note can't be empty
error_workflow_assign: An error occured while assigning
error_cannot_start_workflow: Workflow can't be started
error_cannot_renumber_steps: Steps can't be renumbered
label_dmsf_workflow_new: New approval workflow
field_label_dmsf_workflow: Approval Workflow
field_label_dmsf_workflow_name: Approval workflow name
label_dmsf_workflow_plural: Approval workflows
label_dmsf_workflow_step: Step
label_dmsf_workflow_step_plural: Steps
label_dmsf_workflow_approval: Approval
label_dmsf_workflow_approval_plural: Approvals
label_dmsf: DMSF
label_dmsf_wokflow_action_approve: Approve
label_dmsf_wokflow_action_reject: Reject
label_dmsf_wokflow_action_delegate: Delegate to
label_dmsf_wokflow_action_assign: Assign an approval workflow
label_dmsf_wokflow_action_start: Start workflow
label_dmsf_workflow_add_approver: "Add a new approver with a logical function:"
label_or: or
label_action: Action
label_note: Note
title_none: None
title_rejection: Rejection
title_delegation: Delegation
title_assignment: Assignment
title_start: Start
title_dmsf_workflow_log: Approval Workflow Log
title_assigned: Assigned
title_approval: Approval
title_rejected: Rejected
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
notice_workflow_started: Approval workflow successfully started

View File

@ -1,214 +1,249 @@
# Chinese translation for DMSF
zh:
:dmsf: "文档管家"
:label_dmsf_file_plural: "Dmsf files"
:warning_no_entries_selected: "未选择任何条目"
:error_email_to_must_be_entered: "请输入电子邮件"
:notice_email_sent: "邮件已发送"
:warning_file_already_locked: "文件已经锁定"
:notice_file_locked: "文件锁定"
:warning_file_not_locked: "文件未锁定"
:notice_file_unlocked: "文件解锁"
:error_only_user_that_locked_file_can_unlock_it: "只有锁定文件的用户才能解锁该文件"
:question_do_you_really_want_to_delete_this_entry: "您确定删除此条目?"
:error_max_files_exceeded: "超出同时下载%{number}个文件数量限制"
:question_do_you_really_want_to_delete_this_revision: "您确定删除此修订版本吗?"
:error_entry_project_does_not_match_current_project: "入口项目与当前项目不匹配"
:notice_folder_created: "文件夹创建完毕"
:error_folder_creation_failed: "文件夹创建失败"
:error_folder_title_must_be_entered: "请输入主题"
:notice_folder_deleted: "文件夹已删除"
:error_folder_is_not_empty: "非空文件夹"
:error_folder_title_is_already_used: "标题已经被使用"
:notice_folder_details_were_saved: "文件夹详细信息已保存"
:error_file_is_locked: "文件被锁定"
:notice_file_deleted: "文件已删除"
:error_at_least_one_revision_must_be_present: "至少一个修订版本必须存在"
:notice_revision_deleted: "修订版本已删除"
:warning_one_of_files_locked: "其中一个文件被锁定"
:notice_file_unlocked: "文件解锁"
:notice_file_revision_created: "文件修订版本已创建"
:notice_your_preferences_were_saved: "您的偏好设定已保存"
:warning_folder_notifications_already_activated: "文件夹通知已激活"
:notice_folder_notifications_activated: "文件夹通知激活"
:warning_folder_notifications_already_deactivated: "文件夹通知已注销"
:notice_folder_notifications_deactivated: "文件夹通知注销"
:warning_file_notifications_already_activated: "文件通知已激活"
:notice_file_notifications_activated: "文件通知激活"
:warning_file_notifications_already_deactivated: "文件通知已注销"
:notice_file_notifications_deactivated: "文件通知注销"
:link_details: "%{title} 详情"
:link_edit: "编辑 %{title}"
:submit_create: "创建"
:link_create_folder: "创建文件夹"
:title_check_uncheck_all_for_zip_download_or_email: "全选/全不选zip下载或邮件发送"
:link_title: "主题"
:link_size: "大小"
:link_modified: "修改日期"
:link_ver: "版本."
:link_author: "作者"
:title_check_for_zip_download_or_email: "选中用于Zip下载或邮件发送"
:title_delete: "删除"
:title_notifications_active_deactivate: "通知有效:点击注销通知"
:title_notifications_not_active_activate: "通知无效:点击激活通知"
:title_title_version_version_download: " 下载‘%{title}’版本‘%{version}"
:title_locked_by_user: "%{user}锁定"
:title_locked_by_you: "您锁定"
:title_waiting_for_approval: "待批准"
:title_approved: "已批准"
:title_unlock_file: "解除锁定允许其他成员修改"
:title_lock_file: "锁定以防其他成员修改"
:submit_download: "下载"
:title_download_checked: "zip归档下载所选"
:submit_email: "电子邮件"
:title_send_checked_by_email: "电子邮件发送所选"
:link_user_preferences: "您的文档管理系统项目偏好设定"
:heading_send_documents_by_email: "电子邮件发送文档"
:label_email_from: "发件人"
:label_email_to: "收件人"
:label_email_cc: "抄送"
:label_email_subject: "主题"
:label_email_documents: "文档"
:label_email_body: "正文"
:label_email_send: "发送"
:title_notifications_active: "通知处于有效状态"
:label_file_size: "文件大小"
:heading_file_upload: "上传"
:note_uploaded_maximum_files_at_once: "一次最多上传%{number}个文件."
:note_upload_files_greater_than_two_gb: "为了上传大于2GB文件您需要64位版本的浏览器."
:submit_upload_files: "上传"
:heading_new_folder: "新建文件夹"
:label_title: "标题"
:label_description: "描述"
:submit_save: "保存"
:info_file_locked: "文件已被锁定!"
:label_notifications: "通知功能"
:select_option_default: "默认"
:select_option_deactivated: "注销"
:select_option_activated: "激活"
:title_save_preferences: "保存偏好设定"
:heading_revisions: "修订版本"
:title_download: "下载"
:title_delete_revision: "删除此修订"
:label_created: "创建"
:label_changed: "修改"
:info_changed_by_user: "%{changed} by %{user}"
:label_filename: "文件名"
:label_version: "版本"
:label_workflow: "工作流程"
:option_workflow_waiting_for_approval: "待批准"
:option_workflow_approved: "已批准"
:option_workflow_none: "无"
:label_mime: "Mime"
:label_size: "大小"
:label_comment: "注释"
:heading_new_revision: "新修订"
:option_version_same: "Same"
:option_version_minor: "Minor"
:option_version_major: "Major"
:label_new_content: "新内容"
:label_maximum_files_upload: "最大上传文件数"
:note_maximum_number_of_files_uploaded: "一次上传的最大文件数量. 0表示无限制."
:label_maximum_files_download: "最大下载文件数"
:note_maximum_number_of_files_downloaded: "最大文件下载数量(zip或发送电子邮件方式). 0表示无限制."
:label_file_storage_directory: "文件存储目录"
:label_index_database: "Index database"
:label_stemming_language: "Stemming Language"
:note_possible_values: "Possible values"
:note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
:label_stem_strategy: "Stem strategy"
:option_stem_none: "Stem none (default)"
:option_stem_some: "Stem some"
:option_stem_all: "Stem all"
:label_stemming_description: "This controls how the query parser will apply the stemming algorithm. The default value is STEM_NONE. The possible values are"
:note_do_not_stem: "Don't perform any stemming."
:note_stem_some: "Search for stemmed forms of terms except for those which start with a capital letter, or are followed by certain characters, or are used with operators which need positional information. Stemmed terms are prefixed with 'Z'."
:note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
:note_stemming_applied: "Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed."
:label_default_notifications: "文件默认通知"
:heading_uploaded_files: "上传文件"
:submit_commit: "提交"
:link_documents: "文档"
:permission_view_dmsf_folders: "浏览文档"
:permission_user_preferences: "用户偏好设定"
:permission_view_dmsf_files: "查看文档"
:permission_folder_manipulation: "文件夹操作"
:permission_file_manipulation: "文件操作"
:permission_file_approval: "批准文件"
:permission_force_file_unlock: "强制文件解锁"
:label_file: "文件"
:field_folder: "文件夹"
:error_create_cycle_in_folder_dependency: "create cycle in folder dependency"
:error_contains_invalid_character: "含有无效字符"
:error_file_commit_require_uploaded_file: "文件提交要求上传文件"
:warning_some_files_were_not_commited: "某些文件因验证错误未能被提交: %{files}"
:error_user_has_not_right_delete_folder: "用户没有权限删除文件夹"
:error_user_has_not_right_delete_file: "用户没有权限删除文件"
:notice_entries_deleted: "条目已删除"
:warning_some_entries_were_not_deleted: "某些条目未被删除: %{entries}"
:question_do_you_really_want_to_delete_entries: "您确定删除所选的条目吗?"
:title_delete_checked: "删除选中"
:title_number_of_files_in_directory: "目录总文件个数"
:title_filename_for_download: "用于下载或zip归档的文件名"
:label_number_of_folders: "Folders"
:label_number_of_documents: "Documents"
:label_zip_names_encoding: "Zip文件名编码"
:note_zip_names_encoding_iconv: "Iconv is used for charset conversion from utf-8 to target encoding"
:error_file_storage_directory_does_not_exist: "文件存储目录不存在或不能创建"
:error_file_can_not_be_created: "文件未能在存储目录中创建"
:error_wrong_zip_encoding: "不正确的Zip编码"
:warning_xapian_not_available: "Xapian not available"
:menu_dmsf: "文档管家"
:label_physical_file_delete: "物理删除文件"
:user_is_not_project_member: "您不是该项目的成员"
:heading_access_downloads_emails: "存取次数"
:heading_access_first: "首次"
:heading_access_last: "末次"
:label_dmsf_updated: "DMSF updated"
:title_total_size_of_all_files: "文件夹所有文件总大小"
:project_module_dmsf: "文档管家"
dmsf: 文档管家
label_dmsf_file_plural: Dmsf files
warning_no_entries_selected: 未选择任何条目
error_email_to_must_be_entered: 请输入电子邮件
warning_file_already_locked: 文件已经锁定
notice_file_locked: 文件锁定
warning_file_not_locked: 文件未锁定
notice_file_unlocked: 文件解锁
error_only_user_that_locked_file_can_unlock_it: 只有锁定文件的用户才能解锁该文件
question_do_you_really_want_to_delete_this_entry: 您确定删除此条目?
error_max_files_exceeded: "超出同时下载%{number}个文件数量限制"
question_do_you_really_want_to_delete_this_revision: 您确定删除此修订版本吗?
error_entry_project_does_not_match_current_project: 入口项目与当前项目不匹配
notice_folder_created: 文件夹创建完毕
error_folder_creation_failed: 文件夹创建失败
error_folder_title_must_be_entered: 请输入主题
notice_folder_deleted: 文件夹已删除
error_folder_is_not_empty: 非空文件夹
error_folder_title_is_already_used: 标题已经被使用
notice_folder_details_were_saved: 文件夹详细信息已保存
error_file_is_locked: 文件被锁定
notice_file_deleted: 文件已删除
error_at_least_one_revision_must_be_present: 至少一个修订版本必须存在
notice_revision_deleted: 修订版本已删除
warning_one_of_files_locked: 其中一个文件被锁定
notice_file_unlocked: 文件解锁
notice_file_revision_created: 文件修订版本已创建
notice_your_preferences_were_saved: 您的偏好设定已保存
warning_folder_notifications_already_activated: 文件夹通知已激活
notice_folder_notifications_activated: 文件夹通知激活
warning_folder_notifications_already_deactivated: 文件夹通知已注销
notice_folder_notifications_deactivated: 文件夹通知注销
warning_file_notifications_already_activated: 文件通知已激活
notice_file_notifications_activated: 文件通知激活
warning_file_notifications_already_deactivated: 文件通知已注销
notice_file_notifications_deactivated: 文件通知注销
link_details: "%{title} 详情"
link_edit: "编辑 %{title}"
submit_create: 创建
link_create_folder: 创建文件夹
title_check_uncheck_all_for_zip_download_or_email: 全选/全不选zip下载或邮件发送
link_title: 主题
link_size: 大小
link_modified: 修改日期
link_ver: 版本.
link_author: 作者
title_check_for_zip_download_or_email: 选中用于Zip下载或邮件发送
title_delete: 删除
title_notifications_active_deactivate: "通知有效:点击注销通知"
title_notifications_not_active_activate: "通知无效:点击激活通知"
title_title_version_version_download: " 下载‘%{title}’版本‘%{version}"
title_locked_by_user: "%{user}锁定"
title_locked_by_you: 您锁定
title_waiting_for_approval: 待批准
title_approved: 已批准
title_unlock_file: 解除锁定允许其他成员修改
title_lock_file: 锁定以防其他成员修改
submit_download: 下载
title_download_checked: zip归档下载所选
submit_email: 电子邮件
title_send_checked_by_email: 电子邮件发送所选
link_user_preferences: 您的文档管理系统项目偏好设定
heading_send_documents_by_email: 电子邮件发送文档
label_email_from: 发件人
label_email_to: 收件人
label_email_cc: 抄送
label_email_subject: 主题
label_email_documents: 文档
label_email_body: 正文
label_email_send: 发送
title_notifications_active: 通知处于有效状态
label_file_size: 文件大小
heading_file_upload: 上传
note_uploaded_maximum_files_at_once: "一次最多上传%{number}个文件."
note_upload_files_greater_than_two_gb: 为了上传大于2GB文件您需要64位版本的浏览器.
submit_upload_files: 上传
heading_new_folder: 新建文件夹
label_title: 标题
label_description: 描述
submit_save: 保存
info_file_locked: 文件已被锁定!
label_notifications: 通知功能
select_option_default: 默认
select_option_deactivated: 注销
select_option_activated: 激活
title_save_preferences: 保存偏好设定
heading_revisions: 修订版本
title_download: 下载
title_delete_revision: 删除此修订
label_created: 创建
label_changed: 修改
info_changed_by_user: "%{changed} by %{user}"
label_filename: 文件名
label_version: 版本
label_workflow: 工作流程
label_mime: Mime
label_size: 大小
label_comment: 注释
heading_new_revision: 新修订
option_version_same: Same
option_version_minor: Minor
option_version_major: Major
label_new_content: 新内容
label_maximum_files_upload: 最大上传文件数
note_maximum_number_of_files_uploaded: 一次上传的最大文件数量. 0表示无限制.
label_maximum_files_download: 最大下载文件数
note_maximum_number_of_files_downloaded: 最大文件下载数量(zip或发送电子邮件方式). 0表示无限制.
label_file_storage_directory: 文件存储目录
label_index_database: Index database
label_stemming_language: Stemming Language
note_possible_values: Possible values
note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
label_stem_strategy: Stem strategy
option_stem_none: Stem none (default)
option_stem_some: Stem some
option_stem_all: Stem all
label_stemming_description: This controls how the query parser will apply the stemming algorithm. The default value is STEM_NONE. The possible values are
note_do_not_stem: "Don't perform any stemming."
note_stem_some: "Search for stemmed forms of terms except for those which start with a capital letter, or are followed by certain characters, or are used with operators which need positional information. Stemmed terms are prefixed with 'Z'."
note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
note_stemming_applied: Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed.
label_default_notifications: 文件默认通知
heading_uploaded_files: 上传文件
submit_commit: 提交
link_documents: 文档
permission_view_dmsf_folders: 浏览文档
permission_user_preferences: 用户偏好设定
permission_view_dmsf_files: 查看文档
permission_folder_manipulation: 文件夹操作
permission_file_manipulation: 文件操作
permission_file_approval: 批准文件
permission_force_file_unlock: 强制文件解锁
label_file: 文件
field_folder: 件夹
error_create_cycle_in_folder_dependency: create cycle in folder dependency
error_contains_invalid_character: 含有无效字符
error_file_commit_require_uploaded_file: 文件提交要求上传文件
warning_some_files_were_not_commited: "某些文件因验证错误未能被提交: %{files}"
error_user_has_not_right_delete_folder: 用户没有权限删除文件夹
error_user_has_not_right_delete_file: 用户没有权限删除文件
notice_entries_deleted: 条目已删除
warning_some_entries_were_not_deleted: "某些条目未被删除: %{entries}"
question_do_you_really_want_to_delete_entries: 您确定删除所选的条目吗?
title_delete_checked: 删除选中
title_number_of_files_in_directory: 目录总文件个数
title_filename_for_download: 用于下载或zip归档的文件名
label_number_of_folders: Folders
label_number_of_documents: Documents
label_zip_names_encoding: Zip文件名编码
note_zip_names_encoding_iconv: Iconv is used for charset conversion from utf-8 to target encoding
error_file_storage_directory_does_not_exist: 文件存储目录不存在或不能创建
error_file_can_not_be_created: 文件未能在存储目录中创建
error_wrong_zip_encoding: 不正确的Zip编码
warning_xapian_not_available: Xapian not available
menu_dmsf: 文档管家
label_physical_file_delete: 物理删除文件
user_is_not_project_member: 您不是该项目的成员
heading_access_downloads_emails: 存取次数
heading_access_first: 首次
heading_access_last: 末次
label_dmsf_updated: DMSF updated
title_total_size_of_all_files: 文件夹所有文件总大小
project_module_dmsf: 文档管家
# Not translated
# Not translated
:warning_no_project_to_copy_file_to: "No project to copy file to"
:comment_copied_from: "Copied from %{source}"
:notice_file_copied: "File copied"
:notice_file_moved: "File moved"
:label_target_project: "Target project"
:label_target_folder: "Target folder"
:title_copy_or_move: "Copy/Move"
:label_dmsf_folder_plural: "Dmsf folders"
:comment_moved_from: "Moved from %{source}"
:error_target_folder_same: "Target folder and project are the same as current"
:error_file_cannot_be_moved: "File can't be moved"
:error_file_cannot_be_copied: "File can't be copied"
:warning_no_project_to_copy_folder_to: "No project to copy folder to"
:title_copy: "Copy"
:error_folder_cannot_be_copied: "Folder can't be copied"
:notice_folder_copied: "Folder copied"
warning_no_project_to_copy_file_to: No project to copy file to
comment_copied_from: "Copied from %{source}"
notice_file_copied: File copied
notice_file_moved: File moved
label_target_project: Target project
label_target_folder: Target folder
title_copy_or_move: Copy/Move
label_dmsf_folder_plural: Dmsf folders
comment_moved_from: "Moved from %{source}"
error_target_folder_same: Target folder and project are the same as current
error_file_cannot_be_moved: "File can't be moved"
error_file_cannot_be_copied: "File can't be copied"
warning_no_project_to_copy_folder_to: No project to copy folder to
title_copy: Copy
error_folder_cannot_be_copied: "Folder can't be copied"
notice_folder_copied: Folder copied
:error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
:note_maximum_email_filesize: "Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB."
:label_maximum_email_filesize: "Maximum email attachment size"
:header_minimum_filesize: "File Error."
:error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
:parent_directory: "Parent Directory"
:note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
:label_webdav: "Webdav functionality"
:label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
note_maximum_email_filesize: Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB.
label_maximum_email_filesize: Maximum email attachment size
header_minimum_filesize: File Error.
error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
parent_directory: Parent Directory
note_webdav: Webdav once enabled can be found at http://.../dmsf/webdav/
label_webdav: Webdav functionality
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
:warning_folder_already_locked: "This folder is already locked"
:notice_folder_locked: "The folder was successfully locked"
:warning_folder_not_locked: "Unfortunately, the folder could not be locked"
:notice_folder_unlocked: "The folder was successfully unlocked"
:error_only_user_that_locked_folder_can_unlock_it: "You are not authorised to unlock this folder"
:title_folder_parent_locked: "Parent folder %{name} is locked"
:title_file_parent_locked: "Parent folder %{name} is locked"
:title_unlock_folder: "Unlock to allow changes for other members"
:title_lock_folder: "Lock to prevent changes for other members"
warning_folder_already_locked: This folder is already locked
notice_folder_locked: The folder was successfully locked
warning_folder_not_locked: Unfortunately, the folder could not be locked
notice_folder_unlocked: The folder was successfully unlocked
error_only_user_that_locked_folder_can_unlock_it: You are not authorised to unlock this folder
title_folder_parent_locked: "Parent folder %{name} is locked"
title_file_parent_locked: "Parent folder %{name} is locked"
title_unlock_folder: Unlock to allow changes for other members
title_lock_folder: Lock to prevent changes for other members
:select_option_webdav_readonly: "Read-only"
:select_option_webdav_readwrite: "Read/Write"
:label_webdav_strategy: "Webdav strategy"
:note_webdav_strategy: "Enables the administrator to decide if webdav is a read-only or read-write platform for end users."
select_option_webdav_readonly: Read-only
select_option_webdav_readwrite: Read/Write
label_webdav_strategy: Webdav strategy
note_webdav_strategy: Enables the administrator to decide if webdav is a read-only or read-write platform for end users.
error_unable_delete_dmsf_workflow: Unable to delete the workflow
error_empty_note: "The note can't be empty"
error_workflow_assign: An error occured while assigning
error_cannot_start_workflow: "Workflow can't be started"
error_cannot_renumber_steps: "Steps can't be renumbered"
label_dmsf_workflow_new: New approval workflow
field_label_dmsf_workflow: Approval Workflow
field_label_dmsf_workflow_name: Approval workflow name
label_dmsf_workflow_plural: Approval workflows
label_dmsf_workflow_step: Step
label_dmsf_workflow_step_plural: Steps
label_dmsf_workflow_approval: Approval
label_dmsf_workflow_approval_plural: Approvals
label_dmsf: DMSF
label_dmsf_wokflow_action_approve: Approve
label_dmsf_wokflow_action_reject: Reject
label_dmsf_wokflow_action_delegate: Delegate to
label_dmsf_wokflow_action_assign: Assign an approval workflow
label_dmsf_wokflow_action_start: Start workflow
label_dmsf_workflow_add_approver: "Add a new approver with a logical function:"
label_or: or
label_action: Action
label_note: Note
title_none: None
title_rejection: Rejection
title_delegation: Delegation
title_assignment: Assignment
title_start: Start
title_dmsf_workflow_log: Approval Workflow Log
title_assigned: Assigned
title_approval: Approval
title_rejected: Rejected
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
notice_workflow_started: Approval workflow successfully started

View File

@ -73,6 +73,9 @@ RedmineApp::Application.routes.draw do
# Just to keep backward compatibility of external url links
get '/dmsf_files/:id', :controller => 'dmsf_files', :action => 'show'
# Just to keep backward compatibility with old external direct links
get '/dmsf_files/:id', :controller => 'dmsf_files', :action => 'show'
#
# files_copy controller
# /dmsf/files/<file id>/copy
@ -97,4 +100,21 @@ RedmineApp::Application.routes.draw do
:resource_class => RedmineDmsf::Webdav::ResourceProxy,
:controller_class => RedmineDmsf::Webdav::Controller
), :at => "/dmsf/webdav"
# Approval workflow
resources :dmsf_workflows do
member do
get 'autocomplete_for_user'
get 'action'
get 'assign'
get 'log'
post 'new_action'
post 'start'
post 'assignment'
end
end
match 'dmsf_workflows/:id/edit', :controller => 'dmsf_workflows', :action => 'add_step', :id => /\d+/, :via => :post
match 'dmsf_workflows/:id/edit', :controller => 'dmsf_workflows', :action => 'remove_step', :id => /\d+/, :via => :delete
match 'dmsf_workflows/:id/edit', :controller => 'dmsf_workflows', :action => 'reorder_steps', :id => /\d+/, :via => :put
end

View File

@ -0,0 +1,44 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class CreateDmsfWorkflows < ActiveRecord::Migration
def self.up
create_table :dmsf_workflows do |t|
t.string :name, :null => false
t.references :project
end
add_index :dmsf_workflows, [:name], :unique => true
change_table :dmsf_file_revisions do |t|
t.references :dmsf_workflow
t.integer :dmsf_workflow_assigned_by
t.datetime :dmsf_workflow_assigned_at
t.integer :dmsf_workflow_started_by
t.datetime :dmsf_workflow_started_at
end
end
def self.down
remove_column :dmsf_file_revisions, :dmsf_workflow_id
remove_column :dmsf_file_revisions, :dmsf_workflow_assigned_by
remove_column :dmsf_file_revisions, :dmsf_workflow_assigned_at
remove_column :dmsf_file_revisions, :dmsf_workflow_started_by
remove_column :dmsf_file_revisions, :dmsf_workflow_started_at
drop_table :dmsf_workflows
end
end

View File

@ -0,0 +1,33 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class CreateDmsfWorkflowSteps < ActiveRecord::Migration
def self.up
create_table :dmsf_workflow_steps do |t|
t.references :dmsf_workflow, :null => false
t.integer :step, :null => false
t.references :user, :null => false
t.integer :operator, :null => false
end
add_index :dmsf_workflow_steps, :dmsf_workflow_id
end
def self.down
drop_table :dmsf_workflow_steps
end
end

View File

@ -0,0 +1,36 @@
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class CreateDmsfWorkflowStepAssignments < ActiveRecord::Migration
def self.up
create_table :dmsf_workflow_step_assignments do |t|
t.references :dmsf_workflow_step, :null => false
t.references :user, :null => false
t.references :dmsf_file_revision, :null => false
end
add_index :dmsf_workflow_step_assignments,
[:dmsf_workflow_step_id, :dmsf_file_revision_id],
# The default index name exceeds the index name limit
:name => 'index_dmsf_wrkfl_step_assigns_on_wrkfl_step_id_and_frev_id',
:unique => true
end
def self.down
drop_table :dmsf_workflow_step_assignments
end
end

Some files were not shown because too many files have changed in this diff Show More