1.4.6 devel -> 1.4.6 stable (master)
19
.travis.yml
Normal 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
|
||||
19
CHANGELOG.md
@ -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
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
302
app/controllers/dmsf_workflows_controller.rb
Normal 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
|
||||
65
app/helpers/dmsf_workflows_helper.rb
Normal 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
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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)
|
||||
|
||||
22
app/models/dmsf_permission.rb
Normal 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
@ -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
|
||||
61
app/models/dmsf_workflow_step.rb
Normal 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
|
||||
98
app/models/dmsf_workflow_step_action.rb
Normal 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
|
||||
40
app/models/dmsf_workflow_step_assignment.rb
Normal 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
|
||||
@ -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 %>
|
||||
@ -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>
|
||||
|
||||
@ -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 %>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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? %>
|
||||
|
||||
<%= 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? ) %>
|
||||
|
||||
<%= link_to("", {:action => "edit", :id => @project, :folder_id => @folder },
|
||||
:title => l(:link_edit, :title => h(@folder.title)), :class => "icon icon-edit") %>
|
||||
<% end %>
|
||||
|
||||
<%= 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? %>
|
||||
|
||||
<%= 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? ) %>
|
||||
|
||||
<%= 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 %>
|
||||
|
||||
<% 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 %>
|
||||
|
||||
<%= 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 %>
|
||||
|
||||
<% 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 %>
|
||||
|
||||
<% 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 %>
|
||||
|
||||
<% 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 %>
|
||||
|
||||
<% 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/>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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) %>
|
||||
|
||||
<%= 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) %>
|
||||
</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) %>
|
||||
<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" %>
|
||||
|
||||
@ -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? %>
|
||||
|
||||
@ -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| %>
|
||||
|
||||
@ -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 %>
|
||||
|
||||
@ -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 %>
|
||||
@ -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>
|
||||
@ -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 %>
|
||||
@ -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"> <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"> <em><%= h(file.last_revision.comment) %></em></span>
|
||||
<% end %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
@ -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 %>
|
||||
@ -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"> <em><%= h(file.last_revision.comment) %></em></span>
|
||||
<% end %>
|
||||
</p>
|
||||
<% end %>
|
||||
</body>
|
||||
</html>
|
||||
@ -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 %>
|
||||
8
app/views/dmsf_mailer/workflow_notification.html.erb
Normal file
@ -0,0 +1,8 @@
|
||||
<p>Dear user,</p>
|
||||
<p>
|
||||
<%= @text1 %>
|
||||
</p>
|
||||
<p>
|
||||
<%= @text2 %>
|
||||
</p>
|
||||
|
||||
4
app/views/dmsf_mailer/workflow_notification.text.erb
Normal file
@ -0,0 +1,4 @@
|
||||
Dear user,
|
||||
<%= @text1 %>
|
||||
|
||||
<%= @text2 %>
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
27
app/views/dmsf_workflows/_action.html.erb
Normal 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 %>
|
||||
16
app/views/dmsf_workflows/_assign.html.erb
Normal 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 %>
|
||||
77
app/views/dmsf_workflows/_log.html.erb
Normal 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>
|
||||
|
||||
32
app/views/dmsf_workflows/_main.html.erb
Normal 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 %>
|
||||
77
app/views/dmsf_workflows/_steps.html.erb
Normal file
@ -0,0 +1,77 @@
|
||||
<% if @workflow.project %>
|
||||
<h2><%= link_to l(:label_dmsf_workflow_plural), settings_project_path(@project, :tab => 'dmsf_workflow') %> » <%=h @workflow %></h2>
|
||||
<% else %>
|
||||
<h2><%= link_to l(:label_dmsf_workflow_plural), dmsf_workflows_path %> » <%=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> 
|
||||
<% 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) %> <%= l(:label_or) %> <%= submit_tag l(:dmsf_or) %></p>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
3
app/views/dmsf_workflows/action.js.erb
Normal 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');
|
||||
1
app/views/dmsf_workflows/add_step.html.erb
Normal file
@ -0,0 +1 @@
|
||||
<%= render 'steps' %>
|
||||
3
app/views/dmsf_workflows/assign.js.erb
Normal file
@ -0,0 +1,3 @@
|
||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'assign', :locals => {:workflow => @workflow}) %>');
|
||||
showModal('ajax-modal', '400px');
|
||||
$('#ajax-modal').addClass('assignment');
|
||||
1
app/views/dmsf_workflows/autocomplete_for_user.html.erb
Normal file
@ -0,0 +1 @@
|
||||
<%= render_principals_for_new_dmsf_workflow_users(@workflow, params[:dmsf_workflow_step_assignment_id], params[:dmsf_file_revision_id]) %>
|
||||
1
app/views/dmsf_workflows/edit.html.erb
Normal file
@ -0,0 +1 @@
|
||||
<%= render 'steps' %>
|
||||
1
app/views/dmsf_workflows/index.html.erb
Normal file
@ -0,0 +1 @@
|
||||
<%= render 'main' %>
|
||||
3
app/views/dmsf_workflows/log.js.erb
Normal 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');
|
||||
17
app/views/dmsf_workflows/new.html.erb
Normal 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') %> » <%=l(:label_dmsf_workflow_new)%></h2>
|
||||
<% else %>
|
||||
<h2><%= link_to l(:label_dmsf_workflow_plural), dmsf_workflows_path %> » <%=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 %>
|
||||
1
app/views/dmsf_workflows/remove_step.html.erb
Normal file
@ -0,0 +1 @@
|
||||
<%= render 'steps' %>
|
||||
1
app/views/dmsf_workflows/reorder_steps.html.erb
Normal file
@ -0,0 +1 @@
|
||||
<%= render 'steps' %>
|
||||
@ -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>
|
||||
|
||||
@ -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]",
|
||||
|
||||
|
Before Width: | Height: | Size: 535 B |
|
Before Width: | Height: | Size: 262 B After Width: | Height: | Size: 752 B |
|
Before Width: | Height: | Size: 641 B |
BIN
assets/images/assigned.png
Normal file
|
After Width: | Height: | Size: 459 B |
BIN
assets/images/none.png
Normal file
|
After Width: | Height: | Size: 776 B |
BIN
assets/images/rejected.png
Normal file
|
After Width: | Height: | Size: 631 B |
BIN
assets/images/rev_delete.png
Normal file
|
After Width: | Height: | Size: 647 B |
BIN
assets/images/rev_download.png
Normal file
|
After Width: | Height: | Size: 656 B |
BIN
assets/images/rev_downloads.png
Normal file
|
After Width: | Height: | Size: 642 B |
BIN
assets/images/ticket_go.png
Normal file
|
After Width: | Height: | Size: 608 B |
BIN
assets/images/waiting_for_approval.png
Normal file
|
After Width: | Height: | Size: 630 B |
|
Before Width: | Height: | Size: 412 B |
|
Before Width: | Height: | Size: 1.4 KiB |
@ -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: ': 'خطا: فایل حجیم است :: ',
|
||||
|
||||
@ -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}
|
||||
|
After Width: | Height: | Size: 260 B |
|
After Width: | Height: | Size: 251 B |
|
After Width: | Height: | Size: 178 B |
|
After Width: | Height: | Size: 113 B |
|
After Width: | Height: | Size: 104 B |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 90 B |
|
After Width: | Height: | Size: 126 B |
BIN
assets/stylesheets/jquery-ui/images/ui-icons_759fcf_256x240.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
assets/stylesheets/jquery-ui/images/ui-icons_ffd27a_256x240.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
assets/stylesheets/jquery-ui/images/ui-icons_ffffff_256x240.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
578
assets/stylesheets/jquery-ui/jquery-ui-1.8.13.css
vendored
@ -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%; }
|
||||
5
assets/stylesheets/jquery-ui/jquery-ui-1.9.2.css
vendored
Normal file
7
config/database.yml.travis
Normal file
@ -0,0 +1,7 @@
|
||||
development:
|
||||
adapter: sqlite3
|
||||
database: db/redmine_development.sqlite3
|
||||
|
||||
test:
|
||||
adapter: sqlite3
|
||||
database: db/redmine_development.sqlite3
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
44
db/migrate/20120822100401_create_dmsf_workflows.rb
Normal 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
|
||||
33
db/migrate/20120822100402_create_dmsf_workflow_steps.rb
Normal 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
|
||||
@ -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
|
||||