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
|
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
|
* 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 #27 - incorrect call to display column information from database (redmine 1.x fragment).
|
||||||
* Fix: Issue #28 - incompatible SQL in db migration script for postgresql
|
* Fix: Issue #28 - incompatible SQL in db migration script for postgresql
|
||||||
|
|||||||
10
Gemfile
@ -1,11 +1,11 @@
|
|||||||
source :rubygems
|
source :rubygems
|
||||||
|
|
||||||
gem "rubyzip"
|
gem 'rubyzip', '>= 1.0.0'
|
||||||
gem "simple_enum"
|
gem 'zip-zip' # Just to avoid 'cannot load such file -- zip/zip' error
|
||||||
gem "nokogiri", ">= 1.4.2"
|
gem 'simple_enum'
|
||||||
gem "uuidtools", "~> 2.1.1"
|
gem 'uuidtools', '~> 2.1.1'
|
||||||
|
|
||||||
#Allows --without=xapian
|
#Allows --without=xapian
|
||||||
group :xapian do
|
group :xapian do
|
||||||
gem "xapian-full", :require => false
|
gem 'xapian-full', :require => false
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
Redmine DMSF Plugin
|
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.
|
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)
|
* Bundler 1.1 or greater (Gem)
|
||||||
* Redmine 2.0.x
|
* Redmine 2.0.x
|
||||||
* Rails 3.2.x (Inline with Redmine installation requirement)
|
* Rails 3.2.x (Inline with Redmine installation requirement)
|
||||||
* rubyzip (Gem)
|
* rubyzip 1.0.0 (Gem)
|
||||||
* Nokogiri 1.4.2 or greater (Gem)
|
|
||||||
* UUIDTools 2.1.1 or greater (less than 2.2.0) (Gem)
|
* UUIDTools 2.1.1 or greater (less than 2.2.0) (Gem)
|
||||||
* simple_enum (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:
|
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)
|
This command must be run on regular basis (e.g. from cron)
|
||||||
|
|
||||||
Example of cron job (once per hour at 8th minute):
|
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.
|
Use omindex -h for help.
|
||||||
|
|
||||||
|
|||||||
@ -204,26 +204,46 @@ class DmsfController < ApplicationController
|
|||||||
redirect_to :controller => "dmsf", :action => "show", :id => @project
|
redirect_to :controller => "dmsf", :action => "show", :id => @project
|
||||||
end
|
end
|
||||||
|
|
||||||
def notify_activate
|
def notify_activate
|
||||||
if @folder.notification
|
if((@folder && @folder.notification) || (@folder.nil? && @project.dmsf_notification))
|
||||||
flash[:warning] = l(:warning_folder_notifications_already_activated)
|
flash[:warning] = l(:warning_folder_notifications_already_activated)
|
||||||
else
|
else
|
||||||
@folder.notify_activate
|
if @folder
|
||||||
|
@folder.notify_activate
|
||||||
|
else
|
||||||
|
@project.dmsf_notification = true
|
||||||
|
@project.save
|
||||||
|
end
|
||||||
flash[:notice] = l(:notice_folder_notifications_activated)
|
flash[:notice] = l(:notice_folder_notifications_activated)
|
||||||
end
|
end
|
||||||
redirect_to params[:current] ? params[:current] :
|
if params[:current]
|
||||||
{:controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder.folder}
|
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
|
end
|
||||||
|
|
||||||
def notify_deactivate
|
def notify_deactivate
|
||||||
if !@folder.notification
|
if((@folder && !@folder.notification) || (@folder.nil? && !@project.dmsf_notification))
|
||||||
flash[:warning] = l(:warning_folder_notifications_already_deactivated)
|
flash[:warning] = l(:warning_folder_notifications_already_deactivated)
|
||||||
else
|
else
|
||||||
@folder.notify_deactivate
|
if @folder
|
||||||
|
@folder.notify_deactivate
|
||||||
|
else
|
||||||
|
@project.dmsf_notification = false
|
||||||
|
@project.save
|
||||||
|
end
|
||||||
flash[:notice] = l(:notice_folder_notifications_deactivated)
|
flash[:notice] = l(:notice_folder_notifications_deactivated)
|
||||||
end
|
end
|
||||||
redirect_to params[:current] ? params[:current] :
|
if params[:current]
|
||||||
{:controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder.folder}
|
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
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -256,8 +276,22 @@ class DmsfController < ApplicationController
|
|||||||
redirect_to params[:current] ? params[:current] :
|
redirect_to params[:current] ? params[:current] :
|
||||||
{:controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder.folder}
|
{:controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder.folder}
|
||||||
end
|
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
|
private
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,7 @@ class DmsfFilesController < ApplicationController
|
|||||||
before_filter :authorize
|
before_filter :authorize
|
||||||
|
|
||||||
helper :all
|
helper :all
|
||||||
|
helper :dmsf_workflows
|
||||||
|
|
||||||
def show
|
def show
|
||||||
# download is put here to provide more clear and usable links
|
# download is put here to provide more clear and usable links
|
||||||
@ -48,7 +49,11 @@ class DmsfFilesController < ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
check_project(@revision.file)
|
check_project(@revision.file)
|
||||||
send_revision
|
begin
|
||||||
|
send_revision
|
||||||
|
rescue ActionController::MissingFile => e
|
||||||
|
render_404
|
||||||
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -82,7 +87,7 @@ class DmsfFilesController < ApplicationController
|
|||||||
|
|
||||||
@revision.major_version = last_revision.major_version
|
@revision.major_version = last_revision.major_version
|
||||||
@revision.minor_version = last_revision.minor_version
|
@revision.minor_version = last_revision.minor_version
|
||||||
@revision.workflow = last_revision.workflow
|
#@revision.workflow = last_revision.workflow
|
||||||
version = params[:version].to_i
|
version = params[:version].to_i
|
||||||
file_upload = params[:file_upload]
|
file_upload = params[:file_upload]
|
||||||
if file_upload.nil?
|
if file_upload.nil?
|
||||||
@ -96,13 +101,14 @@ class DmsfFilesController < ApplicationController
|
|||||||
@revision.disk_filename = @revision.new_storage_filename
|
@revision.disk_filename = @revision.new_storage_filename
|
||||||
@revision.mime_type = Redmine::MimeType.of(file_upload.original_filename)
|
@revision.mime_type = Redmine::MimeType.of(file_upload.original_filename)
|
||||||
end
|
end
|
||||||
@revision.set_workflow(params[:workflow])
|
#@revision.set_workflow(params[:dmsf_workflow_id], params[:commit])
|
||||||
|
|
||||||
@file.name = @revision.name
|
@file.name = @revision.name
|
||||||
@file.folder = @revision.folder
|
@file.folder = @revision.folder
|
||||||
|
|
||||||
if @revision.valid? && @file.valid?
|
if @revision.valid? && @file.valid?
|
||||||
@revision.save!
|
@revision.save!
|
||||||
|
@revision.assign_workflow(params[:dmsf_workflow_id])
|
||||||
unless file_upload.nil?
|
unless file_upload.nil?
|
||||||
@revision.copy_file_content(file_upload)
|
@revision.copy_file_content(file_upload)
|
||||||
end
|
end
|
||||||
@ -123,7 +129,7 @@ class DmsfFilesController < ApplicationController
|
|||||||
begin
|
begin
|
||||||
DmsfMailer.files_updated(User.current, [@file]).deliver
|
DmsfMailer.files_updated(User.current, [@file]).deliver
|
||||||
rescue ActionView::MissingTemplate => e
|
rescue ActionView::MissingTemplate => e
|
||||||
Rails.logger.error "Could not send email notifications: " + e
|
Rails.logger.error "Could not send email notifications: #{e.message}"
|
||||||
end
|
end
|
||||||
redirect_to :action => "show", :id => @file
|
redirect_to :action => "show", :id => @file
|
||||||
else
|
else
|
||||||
|
|||||||
@ -72,7 +72,7 @@ class DmsfFilesCopyController < ApplicationController
|
|||||||
begin
|
begin
|
||||||
DmsfMailer.files_updated(User.current, [new_file]).deliver
|
DmsfMailer.files_updated(User.current, [new_file]).deliver
|
||||||
rescue ActionView::MissingTemplate => e
|
rescue ActionView::MissingTemplate => e
|
||||||
Rails.logger.error "Could not send email notifications: " + e
|
Rails.logger.error "Could not send email notifications: #{e.message}"
|
||||||
end
|
end
|
||||||
|
|
||||||
redirect_to :controller => "dmsf_files", :action => "show", :id => new_file
|
redirect_to :controller => "dmsf_files", :action => "show", :id => new_file
|
||||||
@ -110,7 +110,7 @@ class DmsfFilesCopyController < ApplicationController
|
|||||||
# TODO: implement proper mail notification
|
# TODO: implement proper mail notification
|
||||||
DmsfMailer.files_updated(User.current, [@file]).deliver
|
DmsfMailer.files_updated(User.current, [@file]).deliver
|
||||||
rescue ActionView::MissingTemplate => e
|
rescue ActionView::MissingTemplate => e
|
||||||
Rails.logger.error "Could not send email notifications: " + e
|
Rails.logger.error "Could not send email notifications: #{e.message}"
|
||||||
end
|
end
|
||||||
|
|
||||||
redirect_to :controller => "dmsf_files", :action => "show", :id => @file
|
redirect_to :controller => "dmsf_files", :action => "show", :id => @file
|
||||||
|
|||||||
@ -26,6 +26,7 @@ class DmsfUploadController < ApplicationController
|
|||||||
before_filter :find_folder, :except => [:upload_file]
|
before_filter :find_folder, :except => [:upload_file]
|
||||||
|
|
||||||
helper :all
|
helper :all
|
||||||
|
helper :dmsf_workflows
|
||||||
|
|
||||||
def upload_files
|
def upload_files
|
||||||
uploaded_files = params[:uploaded_files]
|
uploaded_files = params[:uploaded_files]
|
||||||
@ -107,7 +108,7 @@ class DmsfUploadController < ApplicationController
|
|||||||
new_revision.source_revision = last_revision
|
new_revision.source_revision = last_revision
|
||||||
new_revision.major_version = last_revision.major_version
|
new_revision.major_version = last_revision.major_version
|
||||||
new_revision.minor_version = last_revision.minor_version
|
new_revision.minor_version = last_revision.minor_version
|
||||||
new_revision.workflow = last_revision.workflow
|
#new_revision.workflow = last_revision.workflow
|
||||||
end
|
end
|
||||||
|
|
||||||
commited_disk_filepath = "#{DmsfHelper.temp_dir}/#{commited_file["disk_filename"].gsub(/[\/\\]/,'')}"
|
commited_disk_filepath = "#{DmsfHelper.temp_dir}/#{commited_file["disk_filename"].gsub(/[\/\\]/,'')}"
|
||||||
@ -120,8 +121,7 @@ class DmsfUploadController < ApplicationController
|
|||||||
new_revision.title = commited_file["title"]
|
new_revision.title = commited_file["title"]
|
||||||
new_revision.description = commited_file["description"]
|
new_revision.description = commited_file["description"]
|
||||||
new_revision.comment = commited_file["comment"]
|
new_revision.comment = commited_file["comment"]
|
||||||
new_revision.increase_version(commited_file["version"].to_i, true)
|
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.mime_type = Redmine::MimeType.of(new_revision.name)
|
||||||
new_revision.size = File.size(commited_disk_filepath)
|
new_revision.size = File.size(commited_disk_filepath)
|
||||||
|
|
||||||
@ -133,8 +133,13 @@ class DmsfUploadController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
if file.locked?
|
if file.locked?
|
||||||
file.unlock!
|
begin
|
||||||
flash[:notice] = l(:notice_file_unlocked)
|
file.unlock!
|
||||||
|
flash[:notice] = l(:notice_file_unlocked)
|
||||||
|
rescue DmsfLockError => e
|
||||||
|
flash[:error] = e.message
|
||||||
|
next
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Need to save file first to generate id for it in case of creation.
|
# Need to save file first to generate id for it in case of creation.
|
||||||
@ -147,6 +152,7 @@ class DmsfUploadController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
if new_revision.save
|
if new_revision.save
|
||||||
|
new_revision.assign_workflow(commited_file[:dmsf_workflow_id])
|
||||||
file.reload
|
file.reload
|
||||||
|
|
||||||
new_revision.copy_file_content(file_upload)
|
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
|
end
|
||||||
|
|
||||||
def title
|
def title
|
||||||
self.last_revision.title
|
self.last_revision ? self.last_revision.title : self.name
|
||||||
end
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
self.last_revision.description
|
self.last_revision ? self.last_revision.description : ''
|
||||||
end
|
end
|
||||||
|
|
||||||
def version
|
def version
|
||||||
self.last_revision.version
|
self.last_revision ? self.last_revision.version : '0'
|
||||||
end
|
end
|
||||||
|
|
||||||
def workflow
|
def workflow
|
||||||
self.last_revision.workflow
|
self.last_revision ? self.last_revision.workflow : nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def size
|
def size
|
||||||
self.last_revision.size
|
self.last_revision ? self.last_revision.size : 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def dmsf_path
|
def dmsf_path
|
||||||
@ -150,15 +150,14 @@ class DmsfFile < ActiveRecord::Base
|
|||||||
path
|
path
|
||||||
end
|
end
|
||||||
|
|
||||||
def dmsf_path_str
|
def dmsf_path_str
|
||||||
path = self.dmsf_path
|
self.dmsf_path.map { |element| element.title }.join('/')
|
||||||
string_path = path.map { |element| element.title }
|
|
||||||
string_path.join("/")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def notify?
|
def notify?
|
||||||
return true if self.notification
|
return true if self.notification
|
||||||
return true if folder && folder.notify?
|
return true if folder && folder.notify?
|
||||||
|
return true if !folder && self.project.dmsf_notification
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -215,7 +214,7 @@ class DmsfFile < ActiveRecord::Base
|
|||||||
|
|
||||||
new_revision = self.last_revision.clone
|
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.project = folder ? folder.project : project
|
||||||
new_revision.comment = l(:comment_moved_from, :source => "#{self.project.identifier}:#{self.dmsf_path_str}")
|
new_revision.comment = l(:comment_moved_from, :source => "#{self.project.identifier}:#{self.dmsf_path_str}")
|
||||||
|
|
||||||
@ -230,25 +229,32 @@ class DmsfFile < ActiveRecord::Base
|
|||||||
new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value})
|
new_revision.custom_values << CustomValue.new({:custom_field => cf, :value => cf.default_value})
|
||||||
end
|
end
|
||||||
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.folder = new_revision.folder
|
||||||
self.project = new_revision.project
|
self.project = new_revision.project
|
||||||
|
|
||||||
return self.save && new_revision.save
|
self.save && new_revision.save
|
||||||
end
|
end
|
||||||
|
|
||||||
def copy_to(project, folder)
|
def copy_to(project, folder)
|
||||||
file = DmsfFile.new
|
file = DmsfFile.new
|
||||||
file.folder = folder ? folder : nil
|
file.folder = folder
|
||||||
file.project = folder ? folder.project : project
|
file.project = folder ? folder.project : project
|
||||||
file.name = self.name
|
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
|
if file.save
|
||||||
new_revision = self.last_revision.clone
|
new_revision = self.last_revision.clone
|
||||||
|
|
||||||
new_revision.file = file
|
new_revision.file = file
|
||||||
new_revision.folder = folder ? folder : nil
|
new_revision.folder = folder
|
||||||
new_revision.project = folder ? folder.project : project
|
new_revision.project = folder ? folder.project : project
|
||||||
new_revision.comment = l(:comment_copied_from, :source => "#{self.project.identifier}: #{self.dmsf_path_str}")
|
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
|
unless new_revision.save
|
||||||
file.delete
|
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
|
||||||
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 :deleted_by_user, :class_name => "User", :foreign_key => "deleted_by_user_id"
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
has_many :access, :class_name => "DmsfFileRevisionAccess", :foreign_key => "dmsf_file_revision_id", :dependent => :destroy
|
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
|
#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) }
|
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) }
|
||||||
@ -154,30 +155,43 @@ class DmsfFileRevision < ActiveRecord::Base
|
|||||||
|
|
||||||
return new_revision
|
return new_revision
|
||||||
end
|
end
|
||||||
|
|
||||||
#TODO: validate if it isn't doubled or move it to view
|
def workflow_str(name)
|
||||||
def workflow_str
|
str = ''
|
||||||
|
if name && dmsf_workflow_id
|
||||||
|
wf = DmsfWorkflow.find_by_id(dmsf_workflow_id)
|
||||||
|
str = "#{wf.name} - " if wf
|
||||||
|
end
|
||||||
case workflow
|
case workflow
|
||||||
when 1 then l(:title_waiting_for_approval)
|
when DmsfWorkflow::STATE_WAITING_FOR_APPROVAL
|
||||||
when 2 then l(:title_approved)
|
str + l(:title_waiting_for_approval)
|
||||||
else nil
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_workflow(workflow)
|
def set_workflow(dmsf_workflow_id, commit)
|
||||||
if User.current.allowed_to?(:file_approval, self.file.project)
|
self.dmsf_workflow_id = dmsf_workflow_id
|
||||||
self.workflow = workflow
|
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
|
else
|
||||||
if self.source_revision.nil?
|
self.workflow = DmsfWorkflow::STATE_ASSIGNED
|
||||||
self.workflow = workflow == 2 ? 1 : workflow
|
self.dmsf_workflow_assigned_by = User.current.id if User.current
|
||||||
else
|
self.dmsf_workflow_assigned_at = DateTime.now
|
||||||
if workflow == 2 || self.source_revision.workflow == 1 || self.source_revision.workflow == 2
|
end
|
||||||
self.workflow = 1
|
end
|
||||||
else
|
|
||||||
self.workflow = workflow
|
def assign_workflow(dmsf_workflow_id)
|
||||||
end
|
wf = DmsfWorkflow.find_by_id(dmsf_workflow_id)
|
||||||
end
|
wf.assign(self.id) if wf && self.id
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def increase_version(version_to_increase, new_content)
|
def increase_version(version_to_increase, new_content)
|
||||||
@ -227,7 +241,7 @@ class DmsfFileRevision < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields
|
# Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields
|
||||||
def available_custom_fields
|
def available_custom_fields
|
||||||
search_project = nil
|
search_project = nil
|
||||||
if self.project.present?
|
if self.project.present?
|
||||||
search_project = self.project
|
search_project = self.project
|
||||||
|
|||||||
@ -115,6 +115,7 @@ class DmsfFolder < ActiveRecord::Base
|
|||||||
def notify?
|
def notify?
|
||||||
return true if self.notification
|
return true if self.notification
|
||||||
return true if folder && folder.notify?
|
return true if folder && folder.notify?
|
||||||
|
return true if !folder && self.project.dmsf_notification
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
# Redmine plugin for Document Management System "Features"
|
# Redmine plugin for Document Management System "Features"
|
||||||
#
|
#
|
||||||
# Copyright (C) 2011 Vít Jonáš <vit.jonas@gmail.com>
|
# 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
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# 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.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
class DmsfLock < ActiveRecord::Base
|
class DmsfLock < ActiveRecord::Base
|
||||||
# unloadable
|
|
||||||
before_create :generate_uuid
|
before_create :generate_uuid
|
||||||
belongs_to :file, :class_name => "DmsfFile", :foreign_key => "entity_id"
|
belongs_to :file, :class_name => "DmsfFile", :foreign_key => "entity_id"
|
||||||
belongs_to :folder, :class_name => "DmsfFolder", :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)
|
mail(:to => email_to, :cc => email_cc, :subject => email_subject, :from => user.mail)
|
||||||
end
|
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
|
private
|
||||||
|
|
||||||
def get_notify_user_emails(user, files)
|
def get_notify_user_emails(user, files)
|
||||||
@ -93,5 +107,5 @@ class DmsfMailer < Mailer
|
|||||||
|
|
||||||
notify_members.collect {|m| m.user.mail }
|
notify_members.collect {|m| m.user.mail }
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
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
|
create = @pathfolder == @parent
|
||||||
%>
|
%>
|
||||||
<h2>
|
|
||||||
<%= render(:partial => "path", :locals => {:path => @pathfolder.nil? ? [] : @pathfolder.dmsf_path}) %>
|
<h2>
|
||||||
<%= ("/ " + 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>
|
</h2>
|
||||||
|
|
||||||
<%= form_for(@folder, :url => {:action => create ? "create" : "save", :id => @project, :folder_id => @folder, :parent_id => @parent},
|
<%= form_for(@folder, :url => {:action => create ? "create" : "save", :id => @project, :folder_id => @folder, :parent_id => @parent},
|
||||||
@ -27,8 +33,9 @@
|
|||||||
<p>
|
<p>
|
||||||
<%= label_tag("", l(:field_folder) + ":") %>
|
<%= label_tag("", l(:field_folder) + ":") %>
|
||||||
<%= f.select(:dmsf_folder_id,
|
<%= f.select(:dmsf_folder_id,
|
||||||
options_for_select(DmsfFolder.directory_tree(@project, @folder),
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -3,23 +3,25 @@
|
|||||||
<div class="contextual">
|
<div class="contextual">
|
||||||
</div>
|
</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},
|
<%= form_for(@project, :url => {:action => 'save_root', :id => @project},
|
||||||
:html => {:method=>:post}) do |f| %>
|
:html => {:method=>:post}) do |f| %>
|
||||||
<div class="box dmsf_detail">
|
<div class="box dmsf_detail">
|
||||||
<p class="no-ident">
|
<p class="no-ident">
|
||||||
<%= label_tag("project_dmsf_description", l(:label_description) + ":") %>
|
<%= label_tag('project_dmsf_description', "#{l(:label_description)}:") %>
|
||||||
</p>
|
</p>
|
||||||
<div class="wiki data clear">
|
<div class="wiki data clear">
|
||||||
<%= f.text_area(:dmsf_description, :rows => 15, :class => "wiki-edit") %>
|
<%= f.text_area(:dmsf_description, :rows => 15, :class => 'wiki-edit') %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<%= submit_tag(l(:submit_save)) %>
|
<%= submit_tag(l(:submit_save)) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= wikitoolbar_for "dmsf_folder_description" %>
|
<%= wikitoolbar_for 'dmsf_folder_description' %>
|
||||||
|
|
||||||
<% content_for :header_tags do %>
|
<% content_for :header_tags do %>
|
||||||
<%= stylesheet_link_tag "dmsf", :plugin => "redmine_dmsf" %>
|
<%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@ -3,9 +3,13 @@
|
|||||||
<div class="contextual">
|
<div class="contextual">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% path = @folder.nil? ? [] : @folder.dmsf_path %>
|
<h2>
|
||||||
<h2>
|
<% path = @folder ? @folder.dmsf_path : [] %>
|
||||||
<%= render(:partial => 'path', :locals => {:path => 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>
|
</h2>
|
||||||
|
|
||||||
<h3><%= l(:heading_send_documents_by_email) %></h3>
|
<h3><%= l(:heading_send_documents_by_email) %></h3>
|
||||||
|
|||||||
@ -1,40 +1,56 @@
|
|||||||
<% html_title(l(:dmsf)) %>
|
<% html_title(l(:dmsf)) %>
|
||||||
|
|
||||||
<div class="contextual">
|
<div class="contextual">
|
||||||
<% if User.current.allowed_to?(:folder_manipulation, @project) %>
|
<% 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.nil? %>
|
||||||
<% if @folder.locked? %>
|
|
||||||
<% unless @folder.unlockable? %>
|
<%= link_to('', {:action => 'edit_root', :id => @project},
|
||||||
<%= image_tag("locked.png", :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => @folder.folder.lock.reverse[0].folder.title)) unless @folder.nil?%>
|
:title => l(:link_edit, :title => l(:link_documents)), :class => 'icon icon-edit') %>
|
||||||
<% else %>
|
<% elsif (@folder && !@folder.locked_for_user? ) %>
|
||||||
<%= link_to_function(image_tag("unlock.png", :plugin => "redmine_dmsf"),
|
|
||||||
"manipulation_link('#{url_for(:action => 'unlock', :id => @project, :folder_id => @folder, :current => request.url)}')",
|
<%= link_to('', {:action => 'edit', :id => @project, :folder_id => @folder },
|
||||||
:title => l(:title_unlock_folder)) unless @folder.nil?%>
|
:title => l(:link_edit, :title => h(@folder.title)), :class => 'icon icon-edit') %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% else %>
|
<% if @folder && (!@folder.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)) %>
|
||||||
<%= link_to_function(image_tag("lock.png", :plugin => "redmine_dmsf"),
|
<% if @folder.locked? %>
|
||||||
"manipulation_link('#{url_for(:action => 'lock', :id => @project, :folder_id => @folder, :current => request.url)}')",
|
<% unless @folder.unlockable? %>
|
||||||
:title => l(:title_lock_folder)) unless @folder.nil?%>
|
<%= image_tag('locked.png', :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => @folder.folder.lock.reverse[0].folder.title)) unless @folder.nil?%>
|
||||||
<% end %>
|
<% else %>
|
||||||
<% end %>
|
<%= link_to_function(image_tag('unlock.png', :plugin => 'redmine_dmsf'),
|
||||||
<% if @folder.nil? %>
|
"manipulation_link('#{url_for(:action => 'unlock', :id => @project, :folder_id => @folder, :current => request.url)}')",
|
||||||
|
:title => l(:title_unlock_folder)) if @folder %>
|
||||||
<%= link_to("", {:action => "edit_root", :id => @project},
|
<% end %>
|
||||||
:title => l(:link_edit, :title => l(:link_documents)), :class => "icon icon-edit") %>
|
<% else %>
|
||||||
<% elsif (!@folder.nil? && !@folder.locked_for_user? ) %>
|
<%= link_to_function(image_tag('lock.png', :plugin => 'redmine_dmsf'),
|
||||||
|
"manipulation_link('#{url_for(:action => 'lock', :id => @project, :folder_id => @folder, :current => request.url)}')",
|
||||||
<%= link_to("", {:action => "edit", :id => @project, :folder_id => @folder },
|
:title => l(:title_lock_folder)) if @folder %>
|
||||||
:title => l(:link_edit, :title => h(@folder.title)), :class => "icon icon-edit") %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% unless @folder %>
|
||||||
<%= 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?) %>
|
<% if @project.dmsf_notification %>
|
||||||
<% end %>
|
<%= 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>
|
</div>
|
||||||
|
|
||||||
<% path = @folder.nil? ? [] : @folder.dmsf_path %>
|
<h2>
|
||||||
<h2>
|
<% path = @folder ? @folder.dmsf_path : [] %>
|
||||||
<%= render(:partial => 'path', :locals => {:path => 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>
|
</h2>
|
||||||
|
|
||||||
<div class="dmsf-header">
|
<div class="dmsf-header">
|
||||||
@ -43,212 +59,271 @@
|
|||||||
</div>
|
</div>
|
||||||
<%= render "custom_fields", :object => @folder %>
|
<%= render "custom_fields", :object => @folder %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<%= error_messages_for('dmsf_workflow') %>
|
||||||
|
|
||||||
<%= form_tag({:action => :entries_operation, :id => @project, :folder_id => @folder}, :method => :post,
|
<%= form_tag({:action => :entries_operation, :id => @project, :folder_id => @folder}, :method => :post,
|
||||||
:class => "dmfs_entries", :id => "entries_form") do %>
|
:class => 'dmfs_entries', :id => 'entries_form') do %>
|
||||||
<%= hidden_field_tag("action") %>
|
<%= hidden_field_tag('action') %>
|
||||||
<div class="controls" style="float: left">
|
<div class="controls" style="float: left">
|
||||||
<%= submit_tag(l(:submit_download), :title => l(:title_download_checked), :name => "download_entries") %>
|
<%= 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") %>
|
<%= 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?) %>
|
<% 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>
|
<button type="button" id="entries_delete_button" title="<%=l(:title_delete_checked)%>"><%=l(:button_delete)%></button>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<table class="display entries" id="browser">
|
<table class="display entries" id="browser">
|
||||||
<thead>
|
<thead>
|
||||||
<tr id="root">
|
<tr id="root">
|
||||||
<th class="check">
|
<th class="check">
|
||||||
<input id="check_all_entries" title="<%= l(:title_check_uncheck_all_for_zip_download_or_email) %>" type="checkbox" />
|
<input id="check_all_entries" title="<%= l(:title_check_uncheck_all_for_zip_download_or_email) %>" type="checkbox" />
|
||||||
</th>
|
</th>
|
||||||
<th><%= l(:link_title) %></th>
|
<th><%= l(:link_title) %></th>
|
||||||
<th><%= l(:link_size) %></th>
|
<th><%= l(:link_size) %></th>
|
||||||
<th><%= l(:link_modified) %></th>
|
<th><%= l(:link_modified) %></th>
|
||||||
<th><%= l(:link_ver) %></th>
|
<th title="<%= l(:label_version) %>"><%= l(:link_ver) %></th>
|
||||||
<th><%= l(:link_author) %></th>
|
<th><%= l(:link_workflow) %></th>
|
||||||
<th></th>
|
<th><%= l(:link_author) %></th>
|
||||||
<th class="hidden"></th>
|
<th></th>
|
||||||
<th class="hidden"></th>
|
<th class="hidden"></th>
|
||||||
</tr>
|
<th class="hidden"></th>
|
||||||
</thead>
|
</tr>
|
||||||
<tbody>
|
</thead>
|
||||||
<% @subfolders.each do |subfolder| %>
|
<tbody>
|
||||||
<tr class="dir">
|
<% @subfolders.each do |subfolder| %>
|
||||||
<td class="check"><%= check_box_tag("subfolders[]", subfolder.id, false, :title => l(:title_check_for_zip_download_or_email)) %></td>
|
<tr class="dir">
|
||||||
<td class="title">
|
<td class="check"><%= check_box_tag("subfolders[]", subfolder.id, false, :title => l(:title_check_for_zip_download_or_email)) %></td>
|
||||||
<%= link_to(h(subfolder.title),
|
<td class="title">
|
||||||
{:action => "show", :id => @project, :folder_id => subfolder},
|
<%= link_to(h(subfolder.title),
|
||||||
:class => "icon icon-folder") %>
|
{:action => "show", :id => @project, :folder_id => subfolder},
|
||||||
<div class="filename" title="<%= l(:title_number_of_files_in_directory)%>">[<%= subfolder.deep_file_count %>]</div>
|
:class => "icon icon-folder") %>
|
||||||
<%= render "custom_fields", :object => subfolder %>
|
<div class="filename" title="<%= l(:title_number_of_files_in_directory)%>">[<%= subfolder.deep_file_count %>]</div>
|
||||||
</td>
|
<%= render 'custom_fields', :object => subfolder %>
|
||||||
<td class="size" title="<%= l(:title_total_size_of_all_files)%>"><%= number_to_human_size(subfolder.deep_size) %></td>
|
</td>
|
||||||
<td class="modified"><%= format_time(subfolder.updated_at) %>
|
<td class="size" title="<%= l(:title_total_size_of_all_files)%>"><%= number_to_human_size(subfolder.deep_size) %></td>
|
||||||
<% if subfolder.locked_for_user? %>
|
<td class="modified"><%= format_time(subfolder.updated_at) %>
|
||||||
<%= link_to(image_tag("locked.png", :plugin => :redmine_dmsf),
|
<% if subfolder.locked_for_user? %>
|
||||||
{:controller => "users", :action => "show", :id => subfolder.lock.reverse[0].user },
|
<%= link_to(image_tag("locked.png", :plugin => :redmine_dmsf),
|
||||||
:title => l(:title_locked_by_user, :user => subfolder.lock.reverse[0].user.to_s)) %>
|
{:controller => "users", :action => "show", :id => subfolder.lock.reverse[0].user },
|
||||||
<% elsif subfolder.locked? %>
|
:title => l(:title_locked_by_user, :user => subfolder.lock.reverse[0].user.to_s)) %>
|
||||||
<%= image_tag("lockedbycurrent.png", :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %>
|
<% elsif subfolder.locked? %>
|
||||||
<% end %>
|
<%= image_tag("lockedbycurrent.png", :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %>
|
||||||
</td>
|
<% end %>
|
||||||
<td class="version"></td>
|
</td>
|
||||||
<td class="author"><%= h(subfolder.user) %></td>
|
<td class="version"></td>
|
||||||
<td class="actions">
|
<td class="workflow"></td>
|
||||||
<% if User.current.allowed_to?(:file_approval, @project) %>
|
<td class="author"><%= h(subfolder.user) %></td>
|
||||||
<div class="right_icon_box">
|
<td class="actions">
|
||||||
<% if subfolder.notification %>
|
<% if User.current.allowed_to?(:file_approval, @project) %>
|
||||||
<%= link_to_function(image_tag("notify.png", :plugin => :redmine_dmsf),
|
<div class="right_icon_box" style="width:26px;">
|
||||||
"manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @project, :folder_id => subfolder)}')",
|
<% if subfolder.notification %>
|
||||||
:title => l(:title_notifications_active_deactivate)) %>
|
<%= link_to_function(image_tag('notify.png', :plugin => :redmine_dmsf),
|
||||||
<% else %>
|
"manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @project, :folder_id => subfolder)}')",
|
||||||
<%= link_to_function(image_tag("notifynot.png", :plugin => :redmine_dmsf),
|
:title => l(:title_notifications_active_deactivate)) %>
|
||||||
"manipulation_link('#{url_for(:action => 'notify_activate', :id => @project, :folder_id => subfolder)}')",
|
<% else %>
|
||||||
:title => l(:title_notifications_not_active_activate)) %>
|
<%= link_to_function(image_tag('notifynot.png', :plugin => :redmine_dmsf),
|
||||||
<% end %>
|
"manipulation_link('#{url_for(:action => 'notify_activate', :id => @project, :folder_id => subfolder)}')",
|
||||||
</div>
|
:title => l(:title_notifications_not_active_activate)) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="right_icon_box" style="width: 70px;">
|
</div>
|
||||||
<% if User.current.allowed_to?(:folder_manipulation, @project) %>
|
<% end %>
|
||||||
<div style="float: left">
|
<div class="right_icon_box" style="width: 70px;">
|
||||||
<%= link_to(image_tag("edit.png", :class =>"detail_icon"),
|
<% if User.current.allowed_to?(:folder_manipulation, @project) %>
|
||||||
{:action => "edit", :id => @project, :folder_id => subfolder },
|
<div style="float: left">
|
||||||
:title => l(:link_edit, :title => h(subfolder.title))) unless subfolder.locked_for_user? %>
|
<%= link_to(image_tag('edit.png', :class =>'detail_icon'),
|
||||||
</div>
|
{:action => 'edit', :id => @project, :folder_id => subfolder },
|
||||||
<% end %>
|
:title => l(:link_edit, :title => h(subfolder.title))) unless subfolder.locked_for_user? %>
|
||||||
<div style="float: right; width: 44px;">
|
</div>
|
||||||
<% unless subfolder.locked_for_user? && !User.current.allowed_to?(:force_file_unlock, @project)%>
|
<% end %>
|
||||||
<% if subfolder.locked? %>
|
<div style="float: right; width: 44px;">
|
||||||
<% if subfolder.unlockable? %>
|
<% unless subfolder.locked_for_user? && !User.current.allowed_to?(:force_file_unlock, @project)%>
|
||||||
<%= link_to_function(image_tag("unlock.png", :plugin => :redmine_dmsf),
|
<% if subfolder.locked? %>
|
||||||
"manipulation_link('#{url_for(:controller => "dmsf", :action => 'unlock',
|
<% if subfolder.unlockable? %>
|
||||||
:id => @project, :folder_id => subfolder)}')",
|
<%= link_to_function(image_tag('unlock.png', :plugin => :redmine_dmsf),
|
||||||
:title => l(:title_unlock_file))%>
|
"manipulation_link('#{url_for(:controller => 'dmsf', :action => 'unlock',
|
||||||
<% else %>
|
:id => @project, :folder_id => subfolder)}')",
|
||||||
<%= image_tag("locked.png", :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => subfolder.lock.reverse[0].folder.title)) %>
|
:title => l(:title_unlock_file))%>
|
||||||
<% end %>
|
<% else %>
|
||||||
<% else %>
|
<%= image_tag('locked.png', :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => subfolder.lock.reverse[0].folder.title)) %>
|
||||||
<%= link_to_function(image_tag("lock.png", :plugin => :redmine_dmsf),
|
<% end %>
|
||||||
"manipulation_link('#{url_for(:controller => "dmsf", :action => 'lock',
|
<% else %>
|
||||||
:id => @project, :folder_id => subfolder)}')",
|
<%= link_to_function(image_tag('lock.png', :plugin => :redmine_dmsf),
|
||||||
:title => l(:title_lock_file)) %>
|
"manipulation_link('#{url_for(:controller => 'dmsf', :action => 'lock',
|
||||||
<% end %>
|
: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)}')",
|
<% end %>
|
||||||
:title => l(:title_delete)) unless (subfolder.locked_for_user?)%>
|
<%= link_to_function(image_tag('delete.png', :plugin => :redmine_dmsf),
|
||||||
</div>
|
"confirmation_link('#{url_for(:action => 'delete', :id => @project, :folder_id => @folder, :delete_folder_id => subfolder)}')",
|
||||||
</div>
|
:title => l(:title_delete)) unless (subfolder.locked_for_user?)%>
|
||||||
<br class="clear" />
|
</div>
|
||||||
</td>
|
</div>
|
||||||
<td class="hidden">0</td>
|
<br class="clear" />
|
||||||
<td class="hidden"><%= subfolder.deep_size %></td>
|
</td>
|
||||||
</tr>
|
<td class="hidden">0</td>
|
||||||
<% end %>
|
<td class="hidden"><%= subfolder.deep_size %></td>
|
||||||
<% @files.each do |file| %>
|
</tr>
|
||||||
<tr class="file">
|
<% end %>
|
||||||
<td class="check"><%= check_box_tag("files[]", file.id, false, :title => l(:title_check_for_zip_download_or_email)) %></td>
|
<% workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', @project.id]).count > 0 %>
|
||||||
<td class="title">
|
<% @files.each do |file| %>
|
||||||
<% file_download_url = url_for({:only_path => false, :controller => :dmsf_files, :action => "show", :id => file, :download => ""}) %>
|
<% wf = DmsfWorkflow.find_by_id(file.last_revision.dmsf_workflow_id) %>
|
||||||
<%= link_to(h(file.last_revision.display_title),
|
<tr class="file">
|
||||||
file_download_url,
|
<td class="check"><%= check_box_tag("files[]", file.id, false, :title => l(:title_check_for_zip_download_or_email)) %></td>
|
||||||
:class => "icon icon-file #{DmsfHelper.filetype_css(file.name)}",
|
<td class="title">
|
||||||
:title => l(:title_title_version_version_download, :title => h(file.title), :version => file.version),
|
<% file_download_url = url_for({:only_path => false, :controller => :dmsf_files, :action => "show", :id => file, :download => ""}) %>
|
||||||
"data-downloadurl" => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_download_url}") %>
|
<%= link_to(h(file.last_revision.display_title),
|
||||||
<div class="filename" title="<%= l(:title_filename_for_download)%>"><%= h(file.display_name) %></div>
|
file_download_url,
|
||||||
<%= render "custom_fields", :object => file.last_revision %>
|
:class => "icon icon-file #{DmsfHelper.filetype_css(file.name)}",
|
||||||
</td>
|
:title => l(:title_title_version_version_download, :title => h(file.title), :version => file.version),
|
||||||
<td class="size"><%= number_to_human_size(file.last_revision.size) %></td>
|
"data-downloadurl" => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_download_url}") %>
|
||||||
<td class="modified">
|
<div class="filename" title="<%= l(:title_filename_for_download)%>"><%= h(file.display_name) %></div>
|
||||||
<%= format_time(file.last_revision.updated_at) %>
|
<%= render 'custom_fields', :object => file.last_revision %>
|
||||||
<% if file.locked_for_user? %>
|
</td>
|
||||||
<%= link_to(image_tag("locked.png", :plugin => :redmine_dmsf),
|
<td class="size"><%= number_to_human_size(file.last_revision.size) %></td>
|
||||||
{:controller => "users", :action => "show", :id => file.lock.reverse[0].user },
|
<td class="modified">
|
||||||
:title => l(:title_locked_by_user, :user => file.lock.reverse[0].user.to_s)) %>
|
<%= format_time(file.last_revision.updated_at) %>
|
||||||
<% elsif file.locked? %>
|
<% if file.locked_for_user? %>
|
||||||
<%= image_tag("lockedbycurrent.png", :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %>
|
<%= link_to(image_tag('locked.png', :plugin => :redmine_dmsf),
|
||||||
<% end %>
|
{:controller => 'users', :action => 'show', :id => file.lock.reverse[0].user },
|
||||||
</td>
|
:title => l(:title_locked_by_user, :user => file.lock.reverse[0].user.to_s)) %>
|
||||||
<td class="version">
|
<% elsif file.locked? %>
|
||||||
<%= file.last_revision.version %>
|
<%= image_tag('lockedbycurrent.png', :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %>
|
||||||
<% case file.last_revision.workflow
|
<% end %>
|
||||||
when 1 then %><%= image_tag("waitingforapproval.png", :title => l(:title_waiting_for_approval),
|
</td>
|
||||||
:plugin => :redmine_dmsf) %>
|
<td class="version"><%= file.last_revision.version %></td>
|
||||||
<% when 2 then %><%= image_tag("approved.png", :title => l(:title_approved),
|
<td class="workflow">
|
||||||
:plugin => :redmine_dmsf) %>
|
<% if wf %>
|
||||||
<% end %>
|
<%= link_to(
|
||||||
</td>
|
file.last_revision.workflow_str(false),
|
||||||
<td class="author"><%= h(file.last_revision.user) %></td>
|
log_dmsf_workflow_path(
|
||||||
<td class="actions">
|
:project_id => @project.id,
|
||||||
<% if User.current.allowed_to?(:file_approval, @project) %>
|
:id => wf.id,
|
||||||
<div class="right_icon_box">
|
:dmsf_file_revision_id => file.last_revision.id),
|
||||||
<% if file.notification %>
|
:title => DmsfWorkflow.assignments_to_users_str(wf.next_assignments(file.last_revision.id)),
|
||||||
<%= link_to_function(image_tag("notify.png", :plugin => :redmine_dmsf),
|
:remote => true) %>
|
||||||
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'notify_deactivate', :id => file)}')",
|
<% else %>
|
||||||
:title => l(:title_notifications_active_deactivate)) %>
|
<%= file.last_revision.workflow_str(false) %>
|
||||||
<% else %>
|
<% end %>
|
||||||
<%= link_to_function(image_tag("notifynot.png", :plugin => :redmine_dmsf),
|
</td>
|
||||||
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'notify_activate', :id => file)}')",
|
<td class="author"><%= h(file.last_revision.user) %></td>
|
||||||
:title => l(:title_notifications_not_active_activate)) %>
|
<td class="actions">
|
||||||
<% end %>
|
<% if User.current.allowed_to?(:file_approval, @project) %>
|
||||||
</div>
|
<div class="right_icon_box" style="width:26px;">
|
||||||
<% end %>
|
<% if file.notification %>
|
||||||
<div class="right_icon_box" style="width: 70px;">
|
<%= link_to_function(image_tag('notify.png', :plugin => :redmine_dmsf),
|
||||||
<div style="float: left">
|
"manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'notify_deactivate', :id => file)}')",
|
||||||
<%= link_to(image_tag("filedetails.png", :plugin => :redmine_dmsf, :class =>"detail_icon"),
|
:title => l(:title_notifications_active_deactivate)) %>
|
||||||
{:controller => "dmsf_files", :action => :show, :id => file },
|
<% else %>
|
||||||
:title => l(:link_details, :title =>h(file.last_revision.title))) %>
|
<%= link_to_function(image_tag('notifynot.png', :plugin => :redmine_dmsf),
|
||||||
</div>
|
"manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'notify_activate', :id => file)}')",
|
||||||
<div style="float: right; width: 44px;">
|
:title => l(:title_notifications_not_active_activate)) %>
|
||||||
<% unless file.locked_for_user? && !User.current.allowed_to?(:force_file_unlock, @project)%>
|
<% end %>
|
||||||
<% if file.locked? %>
|
<% case file.last_revision.workflow %>
|
||||||
<% if file.unlockable? %>
|
<% when DmsfWorkflow::STATE_WAITING_FOR_APPROVAL %>
|
||||||
<%= link_to_function(image_tag("unlock.png", :plugin => :redmine_dmsf),
|
<% if wf %>
|
||||||
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'unlock', :id => file)}')",
|
<% assignments = wf.next_assignments(file.last_revision.id) %>
|
||||||
:title => l(:title_unlock_file))%>
|
<% index = assignments.find_index{|assignment| assignment.user_id == User.current.id} if assignments %>
|
||||||
<% else %>
|
<% if index %>
|
||||||
<%= image_tag("locked.png", :plugin => :redmine_dmsf, :title => l(:title_file_parent_locked, :name => file.folder.lock.reverse[0].folder.title)) %>
|
<%= link_to(
|
||||||
<% end%>
|
image_tag('waiting_for_approval.png', :plugin => :redmine_dmsf),
|
||||||
<% else %>
|
action_dmsf_workflow_path(
|
||||||
<%= link_to_function(image_tag("lock.png", :plugin => :redmine_dmsf),
|
:project_id => @project.id,
|
||||||
"manipulation_link('#{url_for(:controller => "dmsf_files", :action => 'lock', :id => file)}')",
|
:id => wf.id,
|
||||||
:title => l(:title_lock_file)) %>
|
:dmsf_workflow_step_assignment_id => assignments[index].id,
|
||||||
<% end %>
|
:dmsf_file_revision_id => file.last_revision.id),
|
||||||
|
:title => l(:title_waiting_for_approval),
|
||||||
<% end %>
|
:remote => true) %>
|
||||||
<% if User.current.allowed_to?(:file_manipulation, @project) && !file.locked_for_user? %>
|
<% else %>
|
||||||
<%= link_to_function(image_tag("delete.png", :plugin => :redmine_dmsf),
|
<%= 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) %>
|
||||||
"confirmation_link('#{url_for(:controller => "dmsf_files", :action => 'delete', :id => file)}')",
|
<% end %>
|
||||||
:title => l(:title_delete)) %>
|
<% else %>
|
||||||
<% end %>
|
<%= 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) %>
|
||||||
</div>
|
<% end %>
|
||||||
</div>
|
<% when DmsfWorkflow::STATE_APPROVED %>
|
||||||
<br class="clear" />
|
<%= image_tag('approved.png', :title => l(:title_approved), :plugin => :redmine_dmsf) %>
|
||||||
</td>
|
<% when DmsfWorkflow::STATE_ASSIGNED %>
|
||||||
<td class="hidden">1</td>
|
<% if User.current && (file.last_revision.dmsf_workflow_assigned_by == User.current.id) && wf %>
|
||||||
<td class="hidden"><%=file.last_revision.size%></td>
|
<%= link_to_function(image_tag('assigned.png', :plugin => :redmine_dmsf),
|
||||||
</tr>
|
"manipulation_link('#{start_dmsf_workflow_path(
|
||||||
<% end %>
|
:id => file.last_revision.dmsf_workflow_id,
|
||||||
</tbody>
|
:dmsf_file_revision_id => file.last_revision.id)}')",
|
||||||
</table>
|
:title => l(:label_dmsf_wokflow_action_start)) %>
|
||||||
<br />
|
<% 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 %>
|
<% end %>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
jQuery("#entries_delete_button").click(function(event) {
|
jQuery("#entries_delete_button").click(function(event) {
|
||||||
if(window.confirm("<%= l(:question_do_you_really_want_to_delete_entries) %>")) {
|
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").attr("action", "<%= url_for(:action => :delete_entries, :id => @project, :folder_id => @folder) %>");
|
||||||
jQuery("#entries_form").submit();
|
jQuery("#entries_form").submit();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
jQuery("#check_all_entries").click(function(event) {
|
jQuery("#check_all_entries").click(function(event) {
|
||||||
var $this = jQuery(this);
|
var $this = jQuery(this);
|
||||||
if($this.prop("checked")) {
|
if($this.prop("checked")) {
|
||||||
jQuery("input[type=checkbox]", jQuery("#browser > tbody")).prop("checked", true);
|
jQuery("input[type=checkbox]", jQuery("#browser > tbody")).prop("checked", true);
|
||||||
} else {
|
} else {
|
||||||
jQuery("input[type=checkbox]", jQuery("#browser > tbody")).prop("checked", false);
|
jQuery("input[type=checkbox]", jQuery("#browser > tbody")).prop("checked", false);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<%
|
<%
|
||||||
@ -257,68 +332,68 @@ sUrl = "jquery.dataTables/#{I18n.locale.to_s.downcase}.json" if I18n.locale && !
|
|||||||
%>
|
%>
|
||||||
|
|
||||||
<% content_for :header_tags do %>
|
<% 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 "plupload/jquery.ui.plupload.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 "jquery.dataTables/jquery-ui.dataTables.css", :plugin => "redmine_dmsf" %>
|
||||||
<%= stylesheet_link_tag "dmsf", :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-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-ui-1.8.13.min.js", :plugin => "redmine_dmsf" %>
|
||||||
<%= javascript_include_tag "jquery.dataTables/jquery.dataTables.min.js", :plugin => "redmine_dmsf" %>
|
<%= javascript_include_tag "jquery.dataTables/jquery.dataTables.min.js", :plugin => "redmine_dmsf" %>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
jQuery.noConflict();
|
jQuery.noConflict();
|
||||||
jQuery(document).ready(function() {
|
jQuery(document).ready(function() {
|
||||||
jQuery("#browser").dataTable({
|
jQuery("#browser").dataTable({
|
||||||
"bJQueryUI": true,
|
"bJQueryUI": true,
|
||||||
"oLanguage": {
|
"oLanguage": {
|
||||||
'sUrl': '<%= plugin_asset_path(:redmine_dmsf, 'javascripts', sUrl) %>'
|
'sUrl': '<%= plugin_asset_path(:redmine_dmsf, 'javascripts', sUrl) %>'
|
||||||
},
|
},
|
||||||
"bAutoWidth": false,
|
"bAutoWidth": false,
|
||||||
"bPaginate": false,
|
"bPaginate": false,
|
||||||
"aaSorting": [[1,'asc']],
|
"aaSorting": [[1,'asc']],
|
||||||
"aaSortingFixed": [[7,'asc']],
|
"aaSortingFixed": [[8,'asc']],
|
||||||
"aoColumnDefs": [
|
"aoColumnDefs": [
|
||||||
{ "bSearchable": false, "aTargets": [0, 6, 7, 8] },
|
{ "bSearchable": false, "aTargets": [0, 7, 8, 9] },
|
||||||
{ "bSortable": false, "aTargets": [0, 6, 7] },
|
{ "bSortable": false, "aTargets": [0, 7, 8] },
|
||||||
{ "iDataSort": 8, "aTargets": [ 2 ] }
|
{ "iDataSort": 9, "aTargets": [ 2 ] }
|
||||||
],
|
],
|
||||||
"fnInitComplete": function() {
|
"fnInitComplete": function() {
|
||||||
jQuery("div.controls").prependTo(jQuery("#browser_wrapper div.fg-toolbar")[0]);
|
jQuery("div.controls").prependTo(jQuery("#browser_wrapper div.fg-toolbar")[0]);
|
||||||
},
|
},
|
||||||
"fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
|
"fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
|
||||||
return "<%= l(:label_number_of_folders)%>: <%= @subfolders.length %>, <%= l(:label_number_of_documents)%>: <%= @files.length %>";
|
return "<%= l(:label_number_of_folders)%>: <%= @subfolders.length %>, <%= l(:label_number_of_documents)%>: <%= @files.length %>";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery("[data-downloadurl]").each(function() {
|
jQuery("[data-downloadurl]").each(function() {
|
||||||
var url = this.getAttribute("data-downloadurl");
|
var url = this.getAttribute("data-downloadurl");
|
||||||
if (this.addEventListener) {
|
if (this.addEventListener) {
|
||||||
this.addEventListener("dragstart", function(e) {
|
this.addEventListener("dragstart", function(e) {
|
||||||
if (e.dataTransfer) {
|
if (e.dataTransfer) {
|
||||||
e.dataTransfer.setData("DownloadURL", url);
|
e.dataTransfer.setData("DownloadURL", url);
|
||||||
}
|
}
|
||||||
},false);
|
},false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery("#entries_form").submit(function () {
|
jQuery("#entries_form").submit(function () {
|
||||||
jQuery(this).removeAttr('data-submitted');
|
jQuery(this).removeAttr('data-submitted');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function manipulation_link(action) {
|
function manipulation_link(action) {
|
||||||
jQuery("#entries_form").attr("action", action);
|
jQuery("#entries_form").attr("action", action);
|
||||||
jQuery("#entries_form").submit();
|
jQuery("#entries_form").submit();
|
||||||
};
|
};
|
||||||
|
|
||||||
function confirmation_link(action) {
|
function confirmation_link(action) {
|
||||||
if(!window.confirm("<%= l(:question_do_you_really_want_to_delete_this_entry) %>")) return;
|
if(!window.confirm("<%= l(:question_do_you_really_want_to_delete_this_entry) %>")) return;
|
||||||
jQuery("#entries_form").attr("action", action);
|
jQuery("#entries_form").attr("action", action);
|
||||||
jQuery("#entries_form").submit();
|
jQuery("#entries_form").submit();
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= render(:partial => "multi_upload") if (User.current.allowed_to?(:file_manipulation, @project) &&
|
<%= render(:partial => 'multi_upload') if (User.current.allowed_to?(:file_manipulation, @project) &&
|
||||||
( @folder.nil? || (!@folder.nil? &&!@folder.locked_for_user?) ) ) %>
|
(@folder.nil? || (!@folder.nil? &&!@folder.locked_for_user?))) %>
|
||||||
<br />
|
<br/>
|
||||||
|
|||||||
@ -4,21 +4,6 @@
|
|||||||
<% if @file.locked_for_user? %>
|
<% if @file.locked_for_user? %>
|
||||||
<p class="warning"><%= l(:info_file_locked) %></p>
|
<p class="warning"><%= l(:info_file_locked) %></p>
|
||||||
<% else %>
|
<% 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},
|
<%= form_for(@revision, :url => {:action => "create_revision", :id => @file},
|
||||||
:html => {:method=>:post, :multipart => true, :id => "new_revision_form"}) do |f| %>
|
:html => {:method=>:post, :multipart => true, :id => "new_revision_form"}) do |f| %>
|
||||||
<div class="clear">
|
<div class="clear">
|
||||||
@ -57,16 +42,7 @@ end
|
|||||||
<%= @file.last_revision.major_version %>.<%= @file.last_revision.minor_version + 1 %> <%= l(:option_version_minor) %><br />
|
<%= @file.last_revision.major_version %>.<%= @file.last_revision.minor_version + 1 %> <%= l(:option_version_minor) %><br />
|
||||||
<%= radio_button_tag("version", 2, @revision.major_version != @file.last_revision.major_version) %>
|
<%= 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 />
|
<%= @file.last_revision.major_version + 1 %>.0 <%= l(:option_version_major) %><br />
|
||||||
</div>
|
</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>
|
||||||
<div class="splitcontentright clear">
|
<div class="splitcontentright clear">
|
||||||
<p>
|
<p>
|
||||||
@ -78,7 +54,7 @@ end
|
|||||||
(<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)
|
(<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<br style="clear: both"/>
|
<br style="clear: both"/>
|
||||||
<div class="custom_fields">
|
<div class="custom_fields">
|
||||||
@ -96,6 +72,7 @@ end
|
|||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<%= submit_tag(l(:submit_create)) %>
|
<%= submit_tag(l(:submit_create)) %>
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</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)) %>
|
<%= link_to(image_tag("copy.png"), {:controller => :dmsf_files_copy, :action => "new", :id => @file }, :title => l(:title_copy_or_move)) %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% path = @file.folder.nil? ? [] : @file.folder.dmsf_path %>
|
<h2>
|
||||||
<h2>
|
<% path = @file.folder ? @file.folder.dmsf_path : [] %>
|
||||||
<%= render(:partial => "/dmsf/path", :locals => {:path => path}) %>
|
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
|
||||||
/
|
<% path.each do |path_element| %>
|
||||||
<%= h(@file.last_revision.title) %>
|
/
|
||||||
<%= image_tag("notify.png", :plugin => "redmine_dmsf", :title => l(:title_notifications_active)) if @file.notification %>
|
<%= 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>
|
</h2>
|
||||||
|
|
||||||
<%= error_messages_for("file") %>
|
<%= error_messages_for("file") %>
|
||||||
@ -57,77 +61,72 @@
|
|||||||
|
|
||||||
<h3><%= l(:heading_revisions) %></h3>
|
<h3><%= l(:heading_revisions) %></h3>
|
||||||
<% @file.revisions.visible[@revision_pages.current.offset,@revision_pages.items_per_page].each do |revision| %>
|
<% @file.revisions.visible[@revision_pages.current.offset,@revision_pages.items_per_page].each do |revision| %>
|
||||||
<div class="box dmsf_detail">
|
<div class="revision_box dmsf_detail dataTables_wrapper">
|
||||||
<div style="float:right">
|
<div class="fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix">
|
||||||
<%= link_to(image_tag("download.png", :plugin => "redmine_dmsf"),
|
<div class="dataTables_lenght">
|
||||||
{:action => "show", :id => @file, :download => revision},
|
<div class="controls" style="float: right">
|
||||||
:title => l(:title_title_version_version_download, :title => h(revision.title), :version => revision.version)) %>
|
<%= link_to_function(image_tag('rev_downloads.png', :plugin => 'redmine_dmsf'), "$('#revision_access-#{revision.id}').toggle()", :title => 'Download entries')%>
|
||||||
<% if User.current.allowed_to?(:file_approval, @project) %>
|
<%= link_to(image_tag('rev_download.png', :plugin => 'redmine_dmsf'),
|
||||||
|
{:action => 'show', :id => @file, :download => revision},
|
||||||
<%= link_to_function(image_tag("delete.png", :plugin => "redmine_dmsf"),
|
:title => l(:title_title_version_version_download, :title => h(revision.title), :version => revision.version)) %>
|
||||||
"confirmation_link('#{url_for(:action => 'delete_revision', :id => revision)}', '#{l(:question_do_you_really_want_to_delete_this_revision)}')",
|
<% if User.current.allowed_to?(:file_approval, @project) %>
|
||||||
:title => l(:title_delete_revision)) %>
|
<%= link_to_function(image_tag('rev_delete.png', :plugin => 'redmine_dmsf'),
|
||||||
<% end %>
|
"confirmation_link('#{url_for(:action => 'delete_revision', :id => revision)}', '#{l(:question_do_you_really_want_to_delete_this_revision)}')",
|
||||||
</div>
|
:title => l(:title_delete_revision)) %>
|
||||||
<p class="no-ident">
|
<% end %>
|
||||||
<%=label_tag("", (revision.source_revision.nil? ? l(:label_created) : l(:label_changed)) + ":")%>
|
</div>
|
||||||
<%= l(:info_changed_by_user, :changed => format_time(revision.updated_at), :user => h(revision.user)) %>
|
<i><%= l(:info_revision, :rev => revision.id) %></i>
|
||||||
</p>
|
<%= (revision.source_revision.nil? ? l(:label_created) : l(:label_changed)).downcase %>
|
||||||
<div class="clear">
|
<%= l(:info_changed_by_user, :changed => format_time(revision.updated_at)) %>
|
||||||
<div class="splitcontentleft">
|
<%= link_to(revision.user) %>
|
||||||
<p>
|
</div>
|
||||||
<%= label_tag("", l(:label_title) + ":") %>
|
</div>
|
||||||
<%= h(revision.title) %>
|
<div style="border: 1px solid #e4e4e4;">
|
||||||
</p>
|
<div class="clear">
|
||||||
</div>
|
<div class="splitcontentleft">
|
||||||
<div class="splitcontentright">
|
<%= label_tag("", l(:label_title) + ":") %>
|
||||||
<p>
|
<%= h(revision.title) %>
|
||||||
<%= label_tag("", l(:label_file) + ":") %>
|
</div>
|
||||||
<%= (h(revision.folder.dmsf_path_str) + "/") unless revision.folder.nil? %><%= h(revision.name) %>
|
<div class="splitcontentright">
|
||||||
</p>
|
<%= label_tag("", l(:label_file) + ":") %>
|
||||||
</div>
|
<%= (h(revision.folder.dmsf_path_str) + "/") unless revision.folder.nil? %><%= h(revision.name) %>
|
||||||
</div>
|
</div>
|
||||||
<p class="no-ident">
|
</div>
|
||||||
<%= label_tag("", l(:label_description) + ":") %>
|
<p class="no-ident">
|
||||||
</p>
|
<%= label_tag("", l(:label_description) + ":") %>
|
||||||
<div class="wiki clear" style="margin-left: 110px">
|
</p>
|
||||||
<%= textilizable(revision.description) %>
|
<div class="wiki clear" style="margin-left: 110px">
|
||||||
</div>
|
<%= textilizable(revision.description) %>
|
||||||
|
</div>
|
||||||
<div class="splitcontentleft">
|
<div class="splitcontentleft">
|
||||||
<p>
|
<%= label_tag("", l(:label_version) + ":") %>
|
||||||
<%= label_tag("", l(:label_version) + ":") %>
|
<%= revision.major_version %>.<%= revision.minor_version %>
|
||||||
<%= revision.major_version %>.<%= revision.minor_version %>
|
<br/>
|
||||||
</p>
|
<%= label_tag('', l(:label_workflow) + ':') %>
|
||||||
<p>
|
<%= revision.workflow_str true %>
|
||||||
<%= label_tag("", l(:label_workflow) + ":") %>
|
</div>
|
||||||
<%= case revision.workflow
|
<div class="splitcontentright clear">
|
||||||
when 1 then l(:option_workflow_waiting_for_approval)
|
<%= label_tag("", l(:label_mime) + ":") %>
|
||||||
when 2 then l(:option_workflow_approved)
|
<%= h(revision.mime_type) %>
|
||||||
else l(:option_workflow_none)
|
<br/>
|
||||||
end %>
|
<%= label_tag("", l(:label_size) + ":") %>
|
||||||
</p>
|
<%= number_to_human_size(revision.size) %>
|
||||||
</div>
|
</div>
|
||||||
<div class="splitcontentright clear">
|
<div class="no-ident clear">
|
||||||
<p>
|
<%= render "dmsf/custom_fields", :object => revision %>
|
||||||
<%= label_tag("", l(:label_mime) + ":") %>
|
</div>
|
||||||
<%= h(revision.mime_type) %>
|
<div class="splitcontentleft clear">
|
||||||
</p>
|
<%= label_tag("", l(:label_comment) + ":") %>
|
||||||
<p>
|
<%= h(revision.comment) %>
|
||||||
<%= label_tag("", l(:label_size) + ":") %>
|
</div>
|
||||||
<%= number_to_human_size(revision.size) %>
|
<br/>
|
||||||
</p>
|
<div id="<%= "revision_access-#{revision.id}" %>" style="display:none">
|
||||||
</div>
|
<%= render(:partial => "revision_access", :locals => {:revision => revision}) if User.current.allowed_to?(:file_approval, @file.project) %>
|
||||||
<br style="clear: both"/>
|
</div>
|
||||||
<div class="no-ident clear">
|
</div>
|
||||||
<%= render "dmsf/custom_fields", :object => revision %>
|
</div>
|
||||||
</div>
|
<br/>
|
||||||
<p class="no-ident clear">
|
<br/>
|
||||||
<%= 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>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<p class="pagination"><%= pagination_links_full @revision_pages, @file.revisions.visible.count %></p>
|
<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 %>
|
<% end %>
|
||||||
|
|
||||||
<% content_for :header_tags do %>
|
<% 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 "jquery.dataTables/jquery-ui.dataTables.css", :plugin => "redmine_dmsf" %>
|
||||||
<%= stylesheet_link_tag "dmsf", :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-1.6.1.min.js", :plugin => "redmine_dmsf" %>
|
||||||
|
|||||||
@ -3,12 +3,16 @@
|
|||||||
<div class="contextual">
|
<div class="contextual">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% path = @file.folder.nil? ? [] : @file.folder.dmsf_path %>
|
<h2>
|
||||||
<h2>
|
<% path = @file.folder ? @file.folder.dmsf_path : [] %>
|
||||||
<%= render(:partial => "/dmsf/path", :locals => {:path => path}) %>
|
<%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id=> @project } %>
|
||||||
/
|
<% path.each do |path_element| %>
|
||||||
<%= 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 %>
|
<%= 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>
|
</h2>
|
||||||
|
|
||||||
<% unless DmsfFile.allowed_target_projects_on_copy.blank? %>
|
<% unless DmsfFile.allowed_target_projects_on_copy.blank? %>
|
||||||
|
|||||||
@ -3,7 +3,13 @@
|
|||||||
<div class="contextual">
|
<div class="contextual">
|
||||||
</div>
|
</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? %>
|
<% unless DmsfFolder.allowed_target_projects_on_copy.blank? %>
|
||||||
<%= form_tag({:action => "copy_to", :id => @folder}, :id => "copyForm") do |f| %>
|
<%= 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">
|
User <%= link_to(h(@user), {:only_path => false, :controller => 'users', :action => 'show', :id => @user }) %>
|
||||||
<html>
|
deleted DMSF files in project <%= @project.name %>:
|
||||||
<head>
|
<% @files.each do |file| %>
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
<p>
|
||||||
</head>
|
<%= h(file.dmsf_path_str) %> (<%= file.name %>)
|
||||||
<body>
|
<% if file.last_revision %>
|
||||||
User <%= link_to(h(@user), {:only_path => false, :controller => "users", :action => "show", :id => @user }) %>
|
, <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>
|
||||||
deleted DMSF files in project <%= @project.name %>:
|
<% end %>
|
||||||
<% @files.each do |file| %>
|
</p>
|
||||||
<p>
|
<% end %>
|
||||||
<%= 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 +1,7 @@
|
|||||||
User <%= @user %> deleted DMSF files in project <%= @project.name %>:
|
User <%= @user %> deleted DMSF files in project <%= @project.name %>:
|
||||||
<% @files.each do |file| %>
|
<% @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 %>
|
<% 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">
|
User <%= link_to(h(@user), {:only_path => false, :controller => "users", :action => "show", :id => @user }) %>
|
||||||
<html>
|
actualized DMSF files in project <%= @project.name %>:
|
||||||
<head>
|
<% @files.each do |file| %>
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
<p>
|
||||||
</head>
|
<%= link_to(h(file.dmsf_path_str),
|
||||||
<body>
|
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file,
|
||||||
User <%= link_to(h(@user), {:only_path => false, :controller => "users", :action => "show", :id => @user }) %>
|
:download => ""}) %> (<%= file.name %>),
|
||||||
actualized DMSF files in project <%= @project.name %>:
|
<%= number_to_human_size(file.last_revision.size) %>,
|
||||||
<% @files.each do |file| %>
|
version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>,
|
||||||
<p>
|
<%= "#{file.last_revision.workflow_str(true)}," unless file.last_revision.workflow_str(true).blank? %>
|
||||||
<%= link_to(h(file.dmsf_path_str),
|
<%= link_to("Details",
|
||||||
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file,
|
{:only_path => false, :controller => "dmsf_files", :action => "show", :id => file}) %>
|
||||||
:download => ""}) %> (<%= file.name %>),
|
<% unless file.last_revision.comment.blank? %>
|
||||||
<%= number_to_human_size(file.last_revision.size) %>,
|
<br /><span style="font-size: 0.9em"> <em><%= h(file.last_revision.comment) %></em></span>
|
||||||
version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>,
|
<% end %>
|
||||||
<%= "#{file.last_revision.workflow_str}," unless file.last_revision.workflow_str.blank? %>
|
</p>
|
||||||
<%= link_to("Details",
|
<% end %>
|
||||||
{: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 +1,6 @@
|
|||||||
User <%= @user %> actualized DMSF files in project <%= @project.name %>:
|
User <%= @user %> actualized DMSF files in project <%= @project.name %>:
|
||||||
<% @files.each do |file| %>
|
<% @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}) %>
|
<%= url_for({:only_path => false, :controller => "dmsf_files", :action => "show", :id => file}) %>
|
||||||
<% unless file.last_revision.comment.blank? %> comment: <%= file.last_revision.comment %><% end %>
|
<% unless file.last_revision.comment.blank? %> comment: <%= file.last_revision.comment %><% end %>
|
||||||
<% 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">
|
<div class="box dmsf_detail">
|
||||||
<%= hidden_field_tag("commited_files[#{i}][disk_filename]", upload.disk_filename) %>
|
<%= hidden_field_tag("commited_files[#{i}][disk_filename]", upload.disk_filename) %>
|
||||||
<div class="clear">
|
<div class="clear">
|
||||||
@ -44,16 +31,7 @@ end
|
|||||||
<%= upload.major_version %>.<%= upload.minor_version + 1 %> <%= l(:option_version_minor) %><br />
|
<%= upload.major_version %>.<%= upload.minor_version + 1 %> <%= l(:option_version_minor) %><br />
|
||||||
<%= radio_button_tag("commited_files[#{i}][version]", 2) %>
|
<%= radio_button_tag("commited_files[#{i}][version]", 2) %>
|
||||||
<%= upload.major_version + 1 %>.0 <%= l(:option_version_major) %><br />
|
<%= upload.major_version + 1 %>.0 <%= l(:option_version_major) %><br />
|
||||||
</div>
|
</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>
|
||||||
<div class="splitcontentright clear">
|
<div class="splitcontentright clear">
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@ -27,15 +27,7 @@
|
|||||||
<p>
|
<p>
|
||||||
<%= label_tag("", l(:label_version) + ":") %>
|
<%= label_tag("", l(:label_version) + ":") %>
|
||||||
<%= upload.major_version %>.<%= upload.minor_version %>
|
<%= upload.major_version %>.<%= upload.minor_version %>
|
||||||
</p>
|
</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>
|
||||||
<div class="splitcontentright clear">
|
<div class="splitcontentright clear">
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@ -3,9 +3,13 @@
|
|||||||
<div class="contextual">
|
<div class="contextual">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% path = @folder.nil? ? [] : @folder.dmsf_path %>
|
<h2>
|
||||||
<h2>
|
<% path = @folder ? @folder.dmsf_path : [] %>
|
||||||
<%= render(:partial => '/dmsf/path', :locals => {:path => 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>
|
</h2>
|
||||||
|
|
||||||
<div class="wiki">
|
<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>
|
<p>
|
||||||
<label class="block"><%= check_box_tag 'only[]', 'dmsf', true %><%= l(:label_dmsf_plural, @source_project.dmsf_count) %></label>
|
<label class="block"><%= check_box_tag 'only[]', 'dmsf', true %><%= l(:label_dmsf_plural, @source_project.dmsf_count) %></label>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@ -66,21 +66,6 @@
|
|||||||
(<%=l(:label_default)%>: <%=l(:select_option_deactivated)%>)
|
(<%=l(:label_default)%>: <%=l(:select_option_deactivated)%>)
|
||||||
</p>
|
</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>
|
<p>
|
||||||
<%=content_tag(:label, l(:label_webdav) + ":") %>
|
<%=content_tag(:label, l(:label_webdav) + ":") %>
|
||||||
<%=select_tag("settings[dmsf_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': 'بستن',
|
'Close': 'بستن',
|
||||||
'%d files queued': '%d فایل در صف',
|
'%d files queued': '%d فایل در صف',
|
||||||
'Using runtime: ': 'استفاده میکنید از : ',
|
'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 element accepts only %d file(s) at a time. Extra files were stripped.': 'عنصر بارگذار فقط %d فایل رو در یک زمان می پذیرد. سایر فایل ها مجرد از این موضوع هستند.',
|
||||||
'Upload URL might be wrong or doesn\'t exist': 'آدرس آپلود اشتباه می باشد یا وجود ندارد',
|
'Upload URL might be wrong or doesn\'t exist': 'آدرس آپلود اشتباه می باشد یا وجود ندارد',
|
||||||
'Error: File too large: ': 'خطا: فایل حجیم است :: ',
|
'Error: File too large: ': 'خطا: فایل حجیم است :: ',
|
||||||
|
|||||||
@ -14,17 +14,17 @@ table.entries {
|
|||||||
}
|
}
|
||||||
|
|
||||||
table.entries td.modified {
|
table.entries td.modified {
|
||||||
min-width: 140px;
|
min-width: 104px;
|
||||||
width: 140px;
|
width: 104px;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.entries td.actions {
|
table.entries td.actions {
|
||||||
min-width: 108px;
|
min-width: 116px;
|
||||||
width: 108px;
|
width: 116px;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.entries td.title {
|
table.entries td.title {
|
||||||
width: 50%;
|
width: 40%;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.entries th.check, table.entries td.check {
|
table.entries th.check, table.entries td.check {
|
||||||
@ -136,6 +136,11 @@ td.version img {
|
|||||||
vertical-align:text-top;
|
vertical-align:text-top;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
td.workflow {
|
||||||
|
font-size: 0.8em;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
/* DMSF entries list icons */
|
/* DMSF entries list icons */
|
||||||
|
|
||||||
div.right_icon_box {
|
div.right_icon_box {
|
||||||
@ -233,3 +238,57 @@ table.access-table tbody td, table.access-table tbody tr:hover td {
|
|||||||
display: block;
|
display: block;
|
||||||
float: left;
|
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
|
# Czech translation for DMSF by vit.jonas@gmail.com, karel.picman@kontron.com
|
||||||
cs:
|
cs:
|
||||||
:dmsf: "DMSF"
|
dmsf: DMSF
|
||||||
:label_dmsf_file_plural: "Dmsf soubory"
|
label_dmsf_file_plural: Dmsf soubory
|
||||||
:warning_no_entries_selected: "Není nic vybráno"
|
warning_no_entries_selected: Není nic vybráno
|
||||||
:error_email_to_must_be_entered: "Musí být zadán adresát"
|
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
|
||||||
:warning_file_already_locked: "Soubor už je zamčen"
|
notice_file_locked: Soubor byl zamčen
|
||||||
:notice_file_locked: "Soubor byl zamčen"
|
warning_file_not_locked: Soubor není zamčen
|
||||||
:warning_file_not_locked: "Soubor není zamčen"
|
notice_file_unlocked: Soubor byl odemč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
|
||||||
: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?
|
||||||
: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"
|
||||||
: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?
|
||||||
: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
|
||||||
:error_entry_project_does_not_match_current_project: "Zadaný projekt neodpovídá aktuálnímu projektu"
|
notice_folder_created: Adresář byl vytvořen
|
||||||
:notice_folder_created: "Adresář byl vytvořen"
|
error_folder_creation_failed: Vytváření složky selhalo
|
||||||
:error_folder_creation_failed: "Vytváření složky selhalo"
|
error_folder_title_must_be_entered: Musí být zadán název
|
||||||
:error_folder_title_must_be_entered: "Musí být zadán název"
|
notice_folder_deleted: Adresář byl smazán
|
||||||
:notice_folder_deleted: "Adresář byl smazán"
|
error_folder_is_not_empty: Adresář není prázdný
|
||||||
:error_folder_is_not_empty: "Adresář není prázdný"
|
error_folder_title_is_already_used: Název již existuje
|
||||||
:error_folder_title_is_already_used: "Název již existuje"
|
notice_folder_details_were_saved: Detaily složky byly uloženy
|
||||||
:notice_folder_details_were_saved: "Detaily složky byly uloženy"
|
error_file_is_locked: Soubor je zamčen
|
||||||
:error_file_is_locked: "Soubor je zamčen"
|
notice_file_deleted: Soubor byl smazán
|
||||||
:notice_file_deleted: "Soubor byl smazán"
|
error_at_least_one_revision_must_be_present: Musí existovat alespoň jedna revize
|
||||||
:error_at_least_one_revision_must_be_present: "Musí ezistovat alespoň jedna revize"
|
notice_revision_deleted: Revize byla smazána
|
||||||
:notice_revision_deleted: "Revize byla smazána"
|
warning_one_of_files_locked: Jeden ze souborů je zamčen
|
||||||
:warning_one_of_files_locked: "Jeden ze souborů je zamčen"
|
notice_file_unlocked: Soubor byl odemčen
|
||||||
:notice_file_unlocked: "Soubor bykl odemčen"
|
notice_file_revision_created: vytvořena nová revize
|
||||||
:notice_file_revision_created: " vytvořena nová revize"
|
notice_your_preferences_were_saved: Vaše nastavení bylo uloženo
|
||||||
:notice_your_preferences_were_saved: "Vaše nastavení bylo uloženo"
|
warning_folder_notifications_already_activated: Notifikace složky již byly aktivovány
|
||||||
:warning_folder_notifications_already_activated: "Notifikace složky již byly aktivovány"
|
notice_folder_notifications_activated: Notifikace složky 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
|
||||||
:warning_folder_notifications_already_deactivated: "Notifikace složky již byly deaktivovány"
|
notice_folder_notifications_deactivated: Notifikace složky byly deaktivovány
|
||||||
:notice_folder_notifications_deactivated: "Notifikace složky byly deaktivovány"
|
warning_file_notifications_already_activated: Notifikace souboru již byly aktivovány
|
||||||
:warning_file_notifications_already_activated: "Notifikace souboru již byly aktivovány"
|
notice_file_notifications_activated: Notifikace souboru byly aktivovány
|
||||||
:notice_file_notifications_activated: "Notifikace souboru byly aktivovány"
|
warning_file_notifications_already_deactivated: Notifikace souboru již byly deaktivovány
|
||||||
:warning_file_notifications_already_deactivated: "Notifikace souboru již byly deaktivovány"
|
notice_file_notifications_deactivated: Notifikace souboru byly deaktivovány
|
||||||
:notice_file_notifications_deactivated: "Notifikace souboru byly deaktivovány"
|
link_details: "%{title} detaily"
|
||||||
:link_details: "%{title} detaily"
|
link_edit: "Upravit %{title}"
|
||||||
:link_edit: "Upravit %{title}"
|
submit_create: Vytvořit
|
||||||
:submit_create: "Vytvořit"
|
link_create_folder: Vytvořit složku
|
||||||
: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
|
||||||
: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_title: "Název"
|
link_size: Velikost
|
||||||
:link_size: "Velikost"
|
link_modified: Změněno
|
||||||
:link_modified: "Změněno"
|
link_ver: Ver.
|
||||||
:link_ver: "Ver."
|
link_author: Autor
|
||||||
:link_author: "Autor"
|
title_check_for_zip_download_or_email: Vybrat pro stažení jako Zip nebo emailem
|
||||||
:title_check_for_zip_download_or_email: "Vybrat pro stažení jako Zip nebo emailem"
|
title_delete: Smazat
|
||||||
:title_delete: "Smazat"
|
title_notifications_active_deactivate: "Notifikace aktivní: Deaktivovat"
|
||||||
:title_notifications_active_deactivate: "Notifikace aktivní: Deaktivovat"
|
title_notifications_not_active_activate: "Notifikace nejsou aktivní: Aktivovat"
|
||||||
:title_notifications_not_active_activate: "Notifikace nejsou aktivní: Aktivovat"
|
title_title_version_version_download: "%{title} verze %{version} stáhnout"
|
||||||
:title_title_version_version_download: "%{title} verze %{version} stáhnout"
|
title_locked_by_user: "Zamčeno uživatelem %{user}"
|
||||||
:title_locked_by_user: "Zamčeno uživatelem %{user}"
|
title_locked_by_you: Zamčeno Vámi
|
||||||
:title_locked_by_you: "Zamčeno Vámi"
|
title_waiting_for_approval: Čeká na schválení
|
||||||
:title_waiting_for_approval: "Čeká na schválení"
|
title_approved: Schváleno
|
||||||
:title_approved: "Schváleno"
|
title_unlock_file: Odemknout a umožnit změny ostatním uživatelům
|
||||||
: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ů
|
||||||
:title_lock_file: "Zamknout a zabránit změnám ostatních uživatelů"
|
submit_download: Stáhnout
|
||||||
:submit_download: "Stáhnout"
|
title_download_checked: Stáhnout vybrané jako Zip
|
||||||
:title_download_checked: "Stáhnout vybrané jako Zip"
|
submit_email: Email
|
||||||
:submit_email: "Email"
|
title_send_checked_by_email: Zaslat vybrané emailem
|
||||||
:title_send_checked_by_email: "Zadeslat vybrané emailem"
|
link_user_preferences: Vaše nastavení
|
||||||
:link_user_preferences: "Vaše nastavení"
|
heading_send_documents_by_email: Odeslat dokumenty emailem
|
||||||
:heading_send_documents_by_email: "Odeslat dokumenty emailem"
|
label_email_from: Od
|
||||||
:label_email_from: "Od"
|
label_email_to: Komu
|
||||||
:label_email_to: "Komu"
|
label_email_cc: Kopie
|
||||||
:label_email_cc: "Kopie"
|
label_email_subject: Předmět
|
||||||
:label_email_subject: "Předmět"
|
label_email_documents: Documenty
|
||||||
:label_email_documents: "Documenty"
|
label_email_body: Obsah
|
||||||
:label_email_body: "Obsah"
|
label_email_send: Odesláno
|
||||||
:label_email_send: "Odesláno"
|
title_notifications_active: Notifikace jsou aktivní
|
||||||
:title_notifications_active: "Notifikace jsou aktivní"
|
label_file_size: Velikost souboru
|
||||||
:label_file_size: "Velikost souboru"
|
heading_file_upload: Nahrát
|
||||||
:heading_file_upload: "Nahrát"
|
note_uploaded_maximum_files_at_once: "Maximálně může být nahráno %{number} souborů najednou."
|
||||||
: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č.
|
||||||
: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í
|
||||||
:submit_upload_files: "Nahrání"
|
heading_new_folder: Nová složka
|
||||||
:heading_new_folder: "Nová složka"
|
label_title: Název
|
||||||
:label_title: "Název"
|
label_description: Popis
|
||||||
:label_description: "Popis"
|
submit_save: Uložit
|
||||||
:submit_save: "Uložit"
|
info_file_locked: Soubor je zamčen!
|
||||||
:info_file_locked: "Soubor je zamčen!"
|
label_notifications: Notifikace
|
||||||
:label_notifications: "Notifikace"
|
select_option_default: Výchozí
|
||||||
:select_option_default: "Výchozí"
|
select_option_deactivated: Deaktivováno
|
||||||
:select_option_deactivated: "Deaktivováno"
|
select_option_activated: Aktivováno
|
||||||
:select_option_activated: "Aktivováno"
|
title_save_preferences: Uložit nastavení
|
||||||
:title_save_preferences: "Uložit nastavení"
|
heading_revisions: Revize
|
||||||
:heading_revisions: "Revize"
|
title_download: Stáhnout
|
||||||
:title_download: "Stáhnout"
|
title_delete_revision: Smazat revizi
|
||||||
:title_delete_revision: "Smazat revizi"
|
label_created: Vytvořeno
|
||||||
:label_created: "Vytvořeno"
|
label_changed: Změněno
|
||||||
:label_changed: "Změněno"
|
info_changed_by_user: "%{changed} uživatelem %{user}"
|
||||||
:info_changed_by_user: "%{changed} uživatelem %{user}"
|
label_filename: Jméno souboru
|
||||||
:label_filename: "Jméno souboru"
|
label_version: Verze
|
||||||
:label_version: "Verze"
|
label_workflow: Workflow
|
||||||
:label_workflow: "Workflow"
|
label_mime: Typ
|
||||||
:option_workflow_waiting_for_approval: "Čeká na schválení"
|
label_size: Velikost
|
||||||
:option_workflow_approved: "Schváleno"
|
label_comment: Komentář
|
||||||
:option_workflow_none: "Žádné"
|
heading_new_revision: Nová revize
|
||||||
:label_mime: "Typ"
|
option_version_same: Stejná
|
||||||
:label_size: "Velikost"
|
option_version_minor: Podružná
|
||||||
:label_comment: "Komentář"
|
option_version_major: Hlavní
|
||||||
:heading_new_revision: "Nová revize"
|
label_new_content: Nový obsah
|
||||||
:option_version_same: "Stejná"
|
label_maximum_files_upload: Maximální počet najednou nahraných souborů
|
||||||
:option_version_minor: "Podružná"
|
note_maximum_number_of_files_uploaded: Maximální počet najednou nahraných souborů. 0 znamená bez omezení.
|
||||||
:option_version_major: "Hlavní"
|
label_maximum_files_download: Maximální počet najednou stažených souborů
|
||||||
:label_new_content: "Nový obsah"
|
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_maximum_files_upload: "Maximální počet najednou nahraných souborů"
|
label_file_storage_directory: Složka pro uložení souborů
|
||||||
:note_maximum_number_of_files_uploaded: "Maximální počet najednou nahraných souborů. 0 znamená bez omezení."
|
label_index_database: Index databáze
|
||||||
:label_maximum_files_download: "Maximální počet najednou stažených souborů"
|
label_stemming_language: "Jazyk pro 'Stemming'"
|
||||||
: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í."
|
note_possible_values: Povolené hodnoty
|
||||||
:label_file_storage_directory: "Složka pro uložení souborů"
|
note_pass_none_to_disable_stemming: "zadej 'nic' pro vypnutí 'Stemming'"
|
||||||
:label_index_database: "Index databáze"
|
label_stem_strategy: "'Stem' strategie"
|
||||||
:label_stemming_language: "Jazyk pro 'Stemming'"
|
option_stem_none: Stem nic (výchozí)
|
||||||
:note_possible_values: "Povolené hodnoty"
|
option_stem_some: Stem něco
|
||||||
:note_pass_none_to_disable_stemming: "zadej 'nic' pro vypnutí 'Stemming'"
|
option_stem_all: Stem vše
|
||||||
:label_stem_strategy: "'Stem' strategie"
|
label_stemming_description: Tímto je určeno, jak analyzátor dotazu aplikuje algoritmus Stemmingu. Výchozí hodnota je STEM_NONE. Dostupné hodnoty jsou
|
||||||
:option_stem_none: "Stem nic (výchozí)"
|
note_do_not_stem: Žádný stemming.
|
||||||
:option_stem_some: "Stem něco"
|
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'."
|
||||||
:option_stem_all: "Stem vše"
|
note_stem_all: "Hledej stemmed formy všech slov (poznámka: 'Z' prefix není přidán)."
|
||||||
: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_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.
|
||||||
:note_do_not_stem: "Žádný stemming."
|
label_default_notifications: Výchozí notifikace souboru
|
||||||
: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'."
|
heading_uploaded_files: Nahrané soubory
|
||||||
:note_stem_all: "Hledej stemmed formy všech slov (poznámka: 'Z' prefix není přidán)."
|
submit_commit: Potvrdit
|
||||||
: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."
|
link_documents: Dokumenty
|
||||||
:label_default_notifications: "Výchozí notifikace souboru"
|
permission_view_dmsf_folders: Procházet dokumenty
|
||||||
:heading_uploaded_files: "Nahrané soubory"
|
permission_user_preferences: Nastavení uživatele
|
||||||
:submit_commit: "Potvrdit"
|
permission_view_dmsf_files: Zobrazit dokumenty
|
||||||
:link_documents: "Dokumenty"
|
permission_folder_manipulation: Manipulace se složkami
|
||||||
:permission_view_dmsf_folders: "Procházet dokumenty"
|
permission_file_manipulation: Manipulace se soubory
|
||||||
:permission_user_preferences: "Nastavení uživatele"
|
permission_file_approval: Schválení souboru
|
||||||
:permission_view_dmsf_files: "Zobrazit dokumenty"
|
permission_force_file_unlock: Vynucené odemknutí souboru
|
||||||
:permission_folder_manipulation: "Manipulace se složkami"
|
label_file: Soubor
|
||||||
:permission_file_manipulation: "Manipulace se soubory"
|
field_folder: Složka
|
||||||
:permission_file_approval: "Schválení souboru"
|
error_create_cycle_in_folder_dependency: vytvořit smyčku v závislostech složky
|
||||||
:permission_force_file_unlock: "Vynucené odemknutí souboru"
|
error_contains_invalid_character: obsahuje neplatné znaky
|
||||||
:label_file: "Soubor"
|
error_file_commit_require_uploaded_file: Potvrzení vyžaduje nahraný soubor
|
||||||
:field_folder: "Složka"
|
warning_some_files_were_not_commited: "Některé soubory nebyly potvrzené z důvodu chyb při validaci: %{files}"
|
||||||
:error_create_cycle_in_folder_dependency: "vytvořit smyčku v závislostech složky"
|
error_user_has_not_right_delete_folder: Uživatel nemá právo mazat složky
|
||||||
:error_contains_invalid_character: "obsahuje neplatné znaky"
|
error_user_has_not_right_delete_file: Uživatel nemá právo mazat soubor
|
||||||
:error_file_commit_require_uploaded_file: "Potvrzení vyžaduje nahraný soubor"
|
notice_entries_deleted: Položky smazány
|
||||||
:warning_some_files_were_not_commited: "Některé soubory nebyly potvrzené z důvodu chyb při validaci: %{files}"
|
warning_some_entries_were_not_deleted: "Některé položky nebyly smazány: %{entries}"
|
||||||
:error_user_has_not_right_delete_folder: "Uživatel nemá právo mazat složky"
|
question_do_you_really_want_to_delete_entries: Opravdu chcete smazat vybrané položky?
|
||||||
:error_user_has_not_right_delete_file: "Uživatel nemá právo mazat soubor"
|
title_delete_checked: Smaž vybrané
|
||||||
:notice_entries_deleted: "Poožky smazány"
|
title_number_of_files_in_directory: Počet souborů ve složce
|
||||||
:warning_some_entries_were_not_deleted: "Některé položky nebyly smazány: %{entries}"
|
title_filename_for_download: Název Zip archívu ke stažení
|
||||||
:question_do_you_really_want_to_delete_entries: "Opravdu chcete smazat vybrané položky?"
|
label_number_of_folders: Složky
|
||||||
:title_delete_checked: "Smaž vybrané"
|
label_number_of_documents: Dokumenty
|
||||||
:title_number_of_files_in_directory: "Počet souborů ve složce"
|
label_zip_names_encoding: Kódováni názvu Zipu
|
||||||
:title_filename_for_download: "Název Zip archívu ke stažení"
|
note_zip_names_encoding_iconv: Pro kódováni znaků z UTF8 do cílového kování je použi Iconv
|
||||||
:label_number_of_folders: "Složky"
|
error_file_storage_directory_does_not_exist: Cílová složka neexistuje a nemůže být vytvořena
|
||||||
:label_number_of_documents: "Dokumenty"
|
error_file_can_not_be_created: Nelze vytvořit soubor v cílové složce
|
||||||
:label_zip_names_encoding: "Kódováni názvu Zipu"
|
error_wrong_zip_encoding: Chybné kódování Zipu
|
||||||
:note_zip_names_encoding_iconv: "Pro kódováni znaků z UTF8 do cílového kování je použi Iconv"
|
warning_xapian_not_available: Xapian není k dostupný
|
||||||
:error_file_storage_directory_does_not_exist: "Cílová složka neexistuje a nemůže být vytvořena"
|
menu_dmsf: DMSF
|
||||||
:error_file_can_not_be_created: "Nelze vytvořit soubor v cílové složce"
|
label_physical_file_delete: Fyzické smazání souboru
|
||||||
:error_wrong_zip_encoding: "Chybné kódování Zipu"
|
user_is_not_project_member: Nejste členem projektu
|
||||||
:warning_xapian_not_available: "Xapian není k dostupný"
|
heading_access_downloads_emails: Stažené/Emaily
|
||||||
:menu_dmsf: "DMSF"
|
heading_access_first: První
|
||||||
:label_physical_file_delete: "Fyzické smazání souboru"
|
heading_access_last: Poslední
|
||||||
:user_is_not_project_member: "Nejste členem projektu"
|
label_dmsf_updated: DMSF změněno
|
||||||
:heading_access_downloads_emails: "Stažené/Emaily"
|
title_total_size_of_all_files: Celková velikost všech souborů v adresáři
|
||||||
:heading_access_first: "První"
|
project_module_dmsf: DMSF
|
||||||
:heading_access_last: "Poslední"
|
warning_no_project_to_copy_file_to: Neexistuje projekt, do kterého můžete kopírovat
|
||||||
:label_dmsf_updated: "DMSF změněno"
|
comment_copied_from: "Zkopírováno z %{source}"
|
||||||
:title_total_size_of_all_files: "Celková velikost všech souborů v adresáři"
|
notice_file_copied: Soubor zkopírován
|
||||||
:project_module_dmsf: "DMSF"
|
notice_file_moved: Soubor přesunut
|
||||||
:warning_no_project_to_copy_file_to: "Neexistuje projekt, do kterého můžete kopírovat"
|
label_target_project: Cílový projekt
|
||||||
:comment_copied_from: "Zkopírováno z %{source}"
|
label_target_folder: Cílový adresář
|
||||||
:notice_file_copied: "Soubor zkopírován"
|
title_copy_or_move: Kopírovat/Přesunout
|
||||||
:notice_file_moved: "Soubor přesunut"
|
label_dmsf_folder_plural: Dmsf složky
|
||||||
:label_target_project: "Cílový projekt"
|
comment_moved_from: "Přesunuto z %{source}"
|
||||||
:label_target_folder: "Cílový adresář"
|
error_target_folder_same: Cílový adresář a projekt jsou stejné jako aktuální
|
||||||
:title_copy_or_move: "Kopírovat/Přesunout"
|
error_file_cannot_be_moved: Soubor nemůže být přesunut
|
||||||
:label_dmsf_folder_plural: "Dmsf složky"
|
error_file_cannot_be_copied: Soubor nemůže být zkopírován
|
||||||
:comment_moved_from: "Přesunuto z %{source}"
|
warning_no_project_to_copy_folder_to: Neexistuje projekt, do kterého můžete kopírovat
|
||||||
:error_target_folder_same: "Cílový adresář a projekt jsou stejné jako aktuální"
|
title_copy: Kopírovat
|
||||||
:error_file_cannot_be_moved: "Soubor nemůže být přesunut"
|
error_folder_cannot_be_copied: Složka nemůže být zkopírována
|
||||||
:error_file_cannot_be_copied: "Soubor nemůže být zkopírován"
|
notice_folder_copied: Složka zkopírována
|
||||||
:warning_no_project_to_copy_folder_to: "Neexistuje projekt, do kterého můžete kopírovat"
|
error_max_email_filesize_exceeded: "Přesáhli jste maximální velikost souboru, který lze poslat emailem. (%{number} MB)"
|
||||||
: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."
|
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"
|
label_maximum_email_filesize: Maximální velikost souboru emailu
|
||||||
:header_minimum_filesize: "Chyba souboru."
|
header_minimum_filesize: Chyba souboru.
|
||||||
:error_minimum_filesize: "Soubor %{file} má nulovou velikost a nebude přiložen."
|
error_minimum_filesize: "Soubor %{file} má nulovou velikost a nebude přiložen."
|
||||||
:parent_directory: "Nadřazený adresář"
|
parent_directory: Nadřazený adresář
|
||||||
:note_webdav: "Webdav je po založení k dispozici na http://.../dmsf/webdav/"
|
note_webdav: "Webdav je po založení k dispozici na http://.../dmsf/webdav/"
|
||||||
:label_webdav: "Webdav functionalita"
|
label_webdav: Webdav functionalita
|
||||||
:label_dmsf_plural: "Kopíruj DMSF soubory a složky (%{files} souborů v %{folders} složkách)"
|
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á"
|
warning_folder_already_locked: Tato složka je již zamčená
|
||||||
:notice_folder_locked: "Složka byla úspěšně zamčena"
|
notice_folder_locked: Složka byla úspěšně zamčena
|
||||||
:warning_folder_not_locked: "Složku nelze zamknout"
|
warning_folder_not_locked: Složku nelze zamknout
|
||||||
:notice_folder_unlocked: "Složka byla odemčena"
|
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"
|
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_folder_parent_locked: "Nadřazená složka %{name} je zamčená"
|
||||||
:title_file_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_unlock_folder: Odemknout
|
||||||
:title_lock_folder: "Zamknout"
|
title_lock_folder: Zamknout
|
||||||
|
|
||||||
:select_option_webdav_readonly: "Pouze pro čtení"
|
select_option_webdav_readonly: Pouze pro čtení
|
||||||
:select_option_webdav_readwrite: "Čtení/Zápis"
|
select_option_webdav_readwrite: Čtení/Zápis
|
||||||
:label_webdav_strategy: "Webdav strategie"
|
label_webdav_strategy: Webdav strategie
|
||||||
:note_webdav_strategy: "Umožní administrátorovi rozhodnout, zdali je webdav pouze pro čtení nebo i pro zápis."
|
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
|
# German translation for DMSF by Terrence Miller
|
||||||
de:
|
de:
|
||||||
:dmsf: "DMS"
|
dmsf: DMS
|
||||||
:label_dmsf_file_plural: "DMS"
|
label_dmsf_file_plural: DMS
|
||||||
:warning_no_entries_selected: "Keine Einträge ausgewählt"
|
warning_no_entries_selected: Keine Einträge ausgewählt
|
||||||
:error_email_to_must_be_entered: "Es muss ein Email-Empfänger angegeben werden."
|
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
|
||||||
:warning_file_already_locked: "Datei schon gesperrt"
|
notice_file_locked: Datei gesperrt
|
||||||
:notice_file_locked: "Datei gesperrt"
|
warning_file_not_locked: Datei nicht gesperrt
|
||||||
:warning_file_not_locked: "Datei nicht gesperrt"
|
notice_file_unlocked: Dateisperre gelöst
|
||||||
: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
|
||||||
: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?
|
||||||
: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"
|
||||||
: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?
|
||||||
: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
|
||||||
:error_entry_project_does_not_match_current_project: "Entry Projekt entspricht nicht aktuellen Projekt"
|
notice_folder_created: Ordner erstellt
|
||||||
:notice_folder_created: "Ordner erstellt"
|
error_folder_creation_failed: Ordnererstellung fehlgeschlagen
|
||||||
:error_folder_creation_failed: "Ordnererstellung fehlgeschlagen"
|
error_folder_title_must_be_entered: Es muss ein Titel angegeben werden
|
||||||
:error_folder_title_must_be_entered: "Es muss ein Titel angegeben werden"
|
notice_folder_deleted: Ordner gelöscht
|
||||||
:notice_folder_deleted: "Ordner gelöscht"
|
error_folder_is_not_empty: Ordner ist nicht leer
|
||||||
:error_folder_is_not_empty: "Ordner ist nicht leer"
|
error_folder_title_is_already_used: Titel wird schon benutzt. Denk dir was Neues aus.
|
||||||
:error_folder_title_is_already_used: "Titel wird schon benutzt. Denk dir was Neues aus."
|
notice_folder_details_were_saved: Ordnerdetails wurden gespeichert
|
||||||
:notice_folder_details_were_saved: "Ordnerdetails wurden gespeichert"
|
error_file_is_locked: Datei ist gesperrt
|
||||||
:error_file_is_locked: "Datei ist gesperrt"
|
notice_file_deleted: Datei gelöscht
|
||||||
:notice_file_deleted: "Datei gelöscht"
|
error_at_least_one_revision_must_be_present: Es muss mindestens eine Version existieren
|
||||||
:error_at_least_one_revision_must_be_present: "Es muss mindestens eine Version existieren"
|
notice_revision_deleted: Version gelöscht
|
||||||
:notice_revision_deleted: "Version gelöscht"
|
warning_one_of_files_locked: Eine der Dateien ist gesperrt
|
||||||
:warning_one_of_files_locked: "Eine der Dateien ist gesperrt"
|
notice_file_unlocked: Dateisperre gelöst
|
||||||
:notice_file_unlocked: "Dateisperre gelöst"
|
notice_file_revision_created: Dateiversion erstellt
|
||||||
:notice_file_revision_created: "Dateiversion erstellt"
|
notice_your_preferences_were_saved: Deine Einstellungen wurden gespeichert
|
||||||
:notice_your_preferences_were_saved: "Deine Einstellungen wurden gespeichert"
|
warning_folder_notifications_already_activated: Ordnerbenachrichtigungen schon aktiviert
|
||||||
:warning_folder_notifications_already_activated: "Ordnerbenachrichtigungen schon aktiviert"
|
notice_folder_notifications_activated: Ordnerbenachrichtigungen aktiviert
|
||||||
:notice_folder_notifications_activated: "Ordnerbenachrichtigungen aktiviert"
|
warning_folder_notifications_already_deactivated: Ordnerbenachrichtigungen schon deaktiviert
|
||||||
:warning_folder_notifications_already_deactivated: "Ordnerbenachrichtigungen schon deaktiviert"
|
notice_folder_notifications_deactivated: Ordnerbenachrichtigungen deaktiviert
|
||||||
:notice_folder_notifications_deactivated: "Ordnerbenachrichtigungen deaktiviert"
|
warning_file_notifications_already_activated: Dateibenachrichtigungen schon aktiviert
|
||||||
:warning_file_notifications_already_activated: "Dateibenachrichtigungen schon aktiviert"
|
notice_file_notifications_activated: Dateibenachrichtigungen aktiviert
|
||||||
:notice_file_notifications_activated: "Dateibenachrichtigungen aktiviert"
|
warning_file_notifications_already_deactivated: Dateibenachrichtigungen schon deaktiviert
|
||||||
:warning_file_notifications_already_deactivated: "Dateibenachrichtigungen schon deaktiviert"
|
notice_file_notifications_deactivated: Dateibenachrichtigungen deaktiviert
|
||||||
:notice_file_notifications_deactivated: "Dateibenachrichtigungen deaktiviert"
|
link_details: "%{title} Details"
|
||||||
:link_details: "%{title} Details"
|
link_edit: "Bearbeite %{title}"
|
||||||
:link_edit: "Bearbeite %{title}"
|
submit_create: Erstellen
|
||||||
:submit_create: "Erstellen"
|
link_create_folder: Erzeuge Ordner
|
||||||
:link_create_folder: "Erzeuge Ordner"
|
title_check_uncheck_all_for_zip_download_or_email: Wähle alle/keine für ZIP-Download bzw. Email
|
||||||
:title_check_uncheck_all_for_zip_download_or_email: "Wähle alle/keine für ZIP-Download bzw. Email"
|
link_title: Titel
|
||||||
:link_title: "Titel"
|
link_size: Größe
|
||||||
:link_size: "Größe"
|
link_modified: Geändert
|
||||||
:link_modified: "Geändert"
|
link_ver: Version
|
||||||
:link_ver: "Version"
|
link_author: Autor
|
||||||
:link_author: "Autor"
|
title_check_for_zip_download_or_email: Wähle für ZIP-Download bzw. Email
|
||||||
:title_check_for_zip_download_or_email: "Wähle für ZIP-Download bzw. Email"
|
title_delete: Löschen
|
||||||
:title_delete: "Löschen"
|
title_notifications_active_deactivate: "Benachrichtigungen aktiv: Ausschalten"
|
||||||
:title_notifications_active_deactivate: "Benachrichtigungen aktiv: Ausschalten"
|
title_notifications_not_active_activate: "Benachrichtigungen nicht aktiv: Einschalten"
|
||||||
:title_notifications_not_active_activate: "Benachrichtigungen nicht aktiv: Einschalten"
|
title_title_version_version_download: "%{title} Version %{version} Download"
|
||||||
:title_title_version_version_download: "%{title} Version %{version} Download"
|
title_locked_by_user: "Gesperrt von %{user}"
|
||||||
:title_locked_by_user: "Gesperrt von %{user}"
|
title_locked_by_you: Gesperrt von dir
|
||||||
:title_locked_by_you: "Gesperrt von dir"
|
title_waiting_for_approval: Warte auf Zustimmung
|
||||||
:title_waiting_for_approval: "Warte auf Zustimmung"
|
title_approved: Zugestimmt
|
||||||
:title_approved: "Zugestimmt"
|
title_unlock_file: Hebe Sperre auf um Änderungen anderer Nutzer zu ermöglichen
|
||||||
:title_unlock_file: "Hebe Sperre auf um Änderungen anderer Nutzer zu ermöglichen"
|
title_lock_file: Sperre um Änderungen anderer Nutzer zu verhindern
|
||||||
:title_lock_file: "Sperre um Änderungen anderer Nutzer zu verhindern"
|
submit_download: Download
|
||||||
:submit_download: "Download"
|
title_download_checked: Download der ausgewählten Dateien in einem ZIP-Archiv
|
||||||
:title_download_checked: "Download der ausgewählten Dateien in einem ZIP-Archiv"
|
submit_email: Email
|
||||||
:submit_email: "Email"
|
title_send_checked_by_email: Sende gewählte Dateien per Email
|
||||||
:title_send_checked_by_email: "Sende gewählte Dateien per Email"
|
link_user_preferences: Deine Einstellungen
|
||||||
:link_user_preferences: "Deine Einstellungen"
|
heading_send_documents_by_email: Sende Dateien per Email
|
||||||
:heading_send_documents_by_email: "Sende Dateien per Email"
|
label_email_from: Von
|
||||||
:label_email_from: "Von"
|
label_email_to: An
|
||||||
:label_email_to: "An"
|
label_email_cc: CC
|
||||||
:label_email_cc: "CC"
|
label_email_subject: Betreff
|
||||||
:label_email_subject: "Betreff"
|
label_email_documents: Dateien
|
||||||
:label_email_documents: "Dateien"
|
label_email_body: Text
|
||||||
:label_email_body: "Text"
|
label_email_send: Senden
|
||||||
:label_email_send: "Senden"
|
title_notifications_active: Benachrichtigungen aktiv
|
||||||
:title_notifications_active: "Benachrichtigungen aktiv"
|
label_file_size: Dateigröße
|
||||||
:label_file_size: "Dateigröße"
|
heading_file_upload: Upload
|
||||||
:heading_file_upload: "Upload"
|
note_uploaded_maximum_files_at_once: "Es können maximal %{number} Dateien auf einmal hochgeladen werden."
|
||||||
: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.
|
||||||
:note_upload_files_greater_than_two_gb: "Um Dateien größer 2GB hochzuladen brauchst du einen 64bit-Browser."
|
submit_upload_files: Upload
|
||||||
:submit_upload_files: "Upload"
|
heading_new_folder: Neuer Ordner
|
||||||
:heading_new_folder: "Neuer Ordner"
|
label_title: Titel
|
||||||
:label_title: "Titel"
|
label_description: Beschreibung
|
||||||
:label_description: "Beschreibung"
|
submit_save: Speichern
|
||||||
:submit_save: "Speichern"
|
info_file_locked: Datei gesperrt!
|
||||||
:info_file_locked: "Datei gesperrt!"
|
label_notifications: Benachrichtigungen
|
||||||
:label_notifications: "Benachrichtigungen"
|
select_option_default: Voreinstellung
|
||||||
:select_option_default: "Voreinstellung"
|
select_option_deactivated: Aus
|
||||||
:select_option_deactivated: "Aus"
|
select_option_activated: Ein
|
||||||
:select_option_activated: "Ein"
|
title_save_preferences: Speichere Einstellungen
|
||||||
:title_save_preferences: "Speichere Einstellungen"
|
heading_revisions: Versionen
|
||||||
:heading_revisions: "Versionen"
|
title_download: Download
|
||||||
:title_download: "Download"
|
title_delete_revision: Lösche Version
|
||||||
:title_delete_revision: "Lösche Version"
|
label_created: Erstellt
|
||||||
:label_created: "Erstellt"
|
label_changed: Geändert
|
||||||
:label_changed: "Geändert"
|
info_changed_by_user: "%{changed} von %{user}"
|
||||||
:info_changed_by_user: "%{changed} von %{user}"
|
label_filename: Dateiname
|
||||||
:label_filename: "Dateiname"
|
label_version: Version
|
||||||
:label_version: "Version"
|
label_workflow: Workflow
|
||||||
:label_workflow: "Workflow"
|
label_mime: Mime
|
||||||
:option_workflow_waiting_for_approval: "Warte auf Zustimmung"
|
label_size: Größe
|
||||||
:option_workflow_approved: "Zugestimmt"
|
label_comment: Kommentar
|
||||||
:option_workflow_none: "Keiner"
|
heading_new_revision: Neue Version
|
||||||
:label_mime: "Mime"
|
option_version_same: gleiche Version
|
||||||
:label_size: "Größe"
|
option_version_minor: Unterversion
|
||||||
:label_comment: "Kommentar"
|
option_version_major: Hauptversion
|
||||||
:heading_new_revision: "Neue Version"
|
label_new_content: Neuer Inhalt
|
||||||
:option_version_same: "gleiche Version"
|
label_maximum_files_upload: Maximal hochzuladende Dateien
|
||||||
:option_version_minor: "Unterversion"
|
note_maximum_number_of_files_uploaded: Beschränkt die Anzahl der maximal auf einmal hochladbaren Dateien. 0 bedeutet unbeschränkt.
|
||||||
:option_version_major: "Hauptversion"
|
label_maximum_files_download: Maximal herunterzuladende Dateien
|
||||||
:label_new_content: "Neuer Inhalt"
|
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_maximum_files_upload: "Maximal hochzuladende Dateien"
|
label_file_storage_directory: Verzeichnis für die Dateiablage
|
||||||
:note_maximum_number_of_files_uploaded: "Beschränkt die Anzahl der maximal auf einmal hochladbaren Dateien. 0 bedeutet unbeschränkt."
|
label_index_database: Index Datenbank
|
||||||
:label_maximum_files_download: "Maximal herunterzuladende Dateien"
|
label_stemming_language: Sprache für die Normalformreduktion
|
||||||
:note_maximum_number_of_files_downloaded: "Beschränkt die Anzahl der maximal auf einmal herunterladbaren Dateien (per ZIP oder Mail). 0 bedeutet unbeschränkt."
|
note_possible_values: Mögliche Werte
|
||||||
:label_file_storage_directory: "Verzeichnis für die Dateiablage"
|
note_pass_none_to_disable_stemming: "übergebe 'none' um die Normalformreduktion zu unterdrücken"
|
||||||
:label_index_database: "Index Datenbank"
|
label_stem_strategy: Normalformreduktionsform
|
||||||
:label_stemming_language: "Sprache für die Normalformreduktion"
|
option_stem_none: reduziere nichts (Voreinstellung)
|
||||||
:note_possible_values: "Mögliche Werte"
|
option_stem_some: reduziere manches
|
||||||
:note_pass_none_to_disable_stemming: "übergebe 'none' um die Normalformreduktion zu unterdrücken"
|
option_stem_all: reduziere alles
|
||||||
:label_stem_strategy: "Normalformreduktionsform"
|
label_stemming_description: Diese Einstellung beeinflusst wie der Parser den Normalformreduktionsalgorithmus anwendet. Voreingestellt ist STEM_NONE. Die möglichen Werte sind
|
||||||
:option_stem_none: "reduziere nichts (Voreinstellung)"
|
note_do_not_stem: Mache keine Normalformreduktion.
|
||||||
:option_stem_some: "reduziere manches"
|
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'."
|
||||||
:option_stem_all: "reduziere alles"
|
note_stem_all: "Suche nach reduzierten Formen aller Wörter (Achtung: Kein 'Z'-Präfix wird hinzugefügt)."
|
||||||
:label_stemming_description: "Diese Einstellung beeinflusst wie der Parser den Normalformreduktionsalgorithmus anwendet. Voreingestellt ist STEM_NONE. Die möglichen Werte sind"
|
note_stemming_applied: Beachte, dass der Normalformreduzierungsalgorithmus nur bei Wörtern in Wahrscheinlichkeitsfeldern angewendert wird - boolesche Filterausdrücke werden nie reduziert.
|
||||||
:note_do_not_stem: "Mache keine Normalformreduktion."
|
label_default_notifications: standardmäßge Dateibenachrichtigungen
|
||||||
: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'."
|
heading_uploaded_files: Hochgeladene Dateien
|
||||||
:note_stem_all: "Suche nach reduzierten Formen aller Wörter (Achtung: Kein 'Z'-Präfix wird hinzugefügt)."
|
submit_commit: OK
|
||||||
:note_stemming_applied: "Beachte, dass der Normalformreduzierungsalgorithmus nur bei Wörtern in Wahrscheinlichkeitsfeldern angewendert wird - boolesche Filterausdrücke werden nie reduziert."
|
link_documents: Dateien
|
||||||
:label_default_notifications: "standardmäßge Dateibenachrichtigungen"
|
permission_view_dmsf_folders: Durchforste Dateien
|
||||||
:heading_uploaded_files: "Hochgeladene Dateien"
|
permission_user_preferences: Benutzereinstellungen
|
||||||
:submit_commit: "OK"
|
permission_view_dmsf_files: Betrachte Dateien
|
||||||
:link_documents: "Dateien"
|
permission_folder_manipulation: Ordner manipulation
|
||||||
:permission_view_dmsf_folders: "Durchforste Dateien"
|
permission_file_manipulation: Datei manipulation
|
||||||
:permission_user_preferences: "Benutzereinstellungen"
|
permission_file_approval: Datei approval
|
||||||
:permission_view_dmsf_files: "Betrachte Dateien"
|
permission_force_file_unlock: Erzwinge Aufhebung der Dateisperre
|
||||||
:permission_folder_manipulation: "Ordner manipulation"
|
label_file: Datei
|
||||||
:permission_file_manipulation: "Datei manipulation"
|
field_folder: Ordner
|
||||||
:permission_file_approval: "Datei approval"
|
error_create_cycle_in_folder_dependency: schaffen Zyklus in Abhängigkeit Ordner
|
||||||
:permission_force_file_unlock: "Erzwinge Aufhebung der Dateisperre"
|
error_contains_invalid_character: enthält ungültige Zeichen
|
||||||
:label_file: "Datei"
|
error_file_commit_require_uploaded_file: Begehen einen Datei erfordet hochladene Datei
|
||||||
:field_folder: "Ordner"
|
warning_some_files_were_not_commited: "Einige Dateien wurden nich begehen wegen Validation Fehlern: %{files}"
|
||||||
:error_create_cycle_in_folder_dependency: "schaffen Zyklus in Abhängigkeit Ordner"
|
error_user_has_not_right_delete_folder: Der Nutzer hat kein Recht die Ordner zu löschen.
|
||||||
:error_contains_invalid_character: "enthält ungültige Zeichen"
|
error_user_has_not_right_delete_file: Der Nutzer hat kein Recht die Datei zu löschen.
|
||||||
:error_file_commit_require_uploaded_file: "Begehen einen Datei erfordet hochladene Datei"
|
notice_entries_deleted: Aufnahmen löschen
|
||||||
:warning_some_files_were_not_commited: "Einige Dateien wurden nich begehen wegen Validation Fehlern: %{files}"
|
warning_some_entries_were_not_deleted: "Enige Aufnahmen wurden nich gelöscht: %{entries}"
|
||||||
:error_user_has_not_right_delete_folder: "Der Nutzer hat kein Recht die Ordner zu löschen."
|
question_do_you_really_want_to_delete_entries: Willst du wirklich die gewählten Aufnahmen löschen?
|
||||||
:error_user_has_not_right_delete_file: "Der Nutzer hat kein Recht die Datei zu löschen."
|
title_delete_checked: Lösch gewähltest
|
||||||
:notice_entries_deleted: "Aufnahmen löschen"
|
title_number_of_files_in_directory: Dateizahl in dem Ordner
|
||||||
:warning_some_entries_were_not_deleted: "Enige Aufnahmen wurden nich gelöscht: %{entries}"
|
title_filename_for_download: Dateiname benutzt zum Herunterladen oder ZIP-archivierung
|
||||||
:question_do_you_really_want_to_delete_entries: "Willst du wirklich die gewählten Aufnahmen löschen?"
|
label_number_of_folders: Order
|
||||||
:title_delete_checked: "Lösch gewähltest"
|
label_number_of_documents: Dokumente
|
||||||
:title_number_of_files_in_directory: "Dateizahl in dem Ordner"
|
label_zip_names_encoding: ZIP-namen Kodierung
|
||||||
:title_filename_for_download: "Dateiname benutzt zum Herunterladen oder ZIP-archivierung"
|
note_zip_names_encoding_iconv: Iconv ist benutzt zum Charset-konversion von utf-8 in Zielkodierung
|
||||||
:label_number_of_folders: "Order"
|
error_file_storage_directory_does_not_exist: Ordner zum Dateispeichern existiert nicht und kann nicht gebildet.
|
||||||
:label_number_of_documents: "Dokumente"
|
error_file_can_not_be_created: Datei kann nicht in dem gewählten Ordner gebildet werden.
|
||||||
:label_zip_names_encoding: "ZIP-namen Kodierung"
|
error_wrong_zip_encoding: Falsche ZIP-kodierung
|
||||||
:note_zip_names_encoding_iconv: "Iconv ist benutzt zum Charset-konversion von utf-8 in Zielkodierung"
|
warning_xapian_not_available: Xapian nicht zur Verfügung
|
||||||
:error_file_storage_directory_does_not_exist: "Ordner zum Dateispeichern existiert nicht und kann nicht gebildet."
|
menu_dmsf: DMS
|
||||||
:error_file_can_not_be_created: "Datei kann nicht in dem gewählten Ordner gebildet werden."
|
label_physical_file_delete: Physisches Dateilöschen
|
||||||
:error_wrong_zip_encoding: "Falsche ZIP-kodierung"
|
user_is_not_project_member: Du bist kein Projektmitglied
|
||||||
:warning_xapian_not_available: "Xapian nicht zur Verfügung"
|
heading_access_downloads_emails: Herunterladene/Emails
|
||||||
:menu_dmsf: "DMS"
|
heading_access_first: Erste
|
||||||
:label_physical_file_delete: "Physisches Dateilöschen"
|
heading_access_last: Letzte
|
||||||
:user_is_not_project_member: "Du bist kein Projektmitglied"
|
label_dmsf_updated: DMS aktualisiert
|
||||||
:heading_access_downloads_emails: "Herunterladene/Emails"
|
title_total_size_of_all_files: Gesamtgröße aller Datein in diesem Ordner
|
||||||
:heading_access_first: "Erste"
|
project_module_dmsf: DMS
|
||||||
:heading_access_last: "Letzte"
|
warning_no_project_to_copy_file_to: Kein Projekt für das Dateikopieren.
|
||||||
:label_dmsf_updated: "DMS aktualisiert"
|
comment_copied_from: "Kopiert aus %{source}"
|
||||||
:title_total_size_of_all_files: "Gesamtgröße aller Datein in diesem Ordner"
|
notice_file_copied: Datei kopiert
|
||||||
:project_module_dmsf: "DMS"
|
notice_file_moved: Datei verschoben
|
||||||
:warning_no_project_to_copy_file_to: "Kein Projekt für das Dateikopieren."
|
label_target_project: Zielprojekte
|
||||||
:comment_copied_from: "Kopiert aus %{source}"
|
label_target_folder: Zielordner
|
||||||
:notice_file_copied: "Datei kopiert"
|
title_copy_or_move: Kopieren/Verschieben
|
||||||
:notice_file_moved: "Datei verschoben"
|
label_dmsf_folder_plural: Ordner
|
||||||
:label_target_project: "Zielprojekte"
|
comment_moved_from: "Verschoben aus %{source}"
|
||||||
:label_target_folder: "Zielordner"
|
error_target_folder_same: Zielordner und Projekt sind dieselbe wie die Aktuelle.
|
||||||
:title_copy_or_move: "Kopieren/Verschieben"
|
error_file_cannot_be_moved: Die Datei kann nicht verschoben werden.
|
||||||
:label_dmsf_folder_plural: "Ordner"
|
error_file_cannot_be_copied: Die Datei kann nicht kopiert werden.
|
||||||
:comment_moved_from: "Verschoben aus %{source}"
|
warning_no_project_to_copy_folder_to: Kein Projekt für das Ordnerkopieren.
|
||||||
:error_target_folder_same: "Zielordner und Projekt sind dieselbe wie die Aktuelle."
|
title_copy: Kopieren
|
||||||
:error_file_cannot_be_moved: "Die Datei kann nicht verschoben werden."
|
error_folder_cannot_be_copied: Der Ordner kann nicht kopiert werden.
|
||||||
:error_file_cannot_be_copied: "Die Datei kann nicht kopiert werden."
|
notice_folder_copied: Ordner kopiert
|
||||||
: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)"
|
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."
|
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"
|
label_maximum_email_filesize: Maximale Dateigröße der Anlage
|
||||||
:header_minimum_filesize: "Dateifehler wegen minimaler Dateigröße."
|
header_minimum_filesize: Dateifehler wegen minimaler Dateigröße.
|
||||||
:error_minimum_filesize: "Die Datei %{file} ist 0 Bytes groß und wird deswegen nicht angehängt."
|
error_minimum_filesize: "Die Datei %{file} ist 0 Bytes groß und wird deswegen nicht angehängt."
|
||||||
:parent_directory: "übergeordnetes Verzeichnis"
|
parent_directory: übergeordnetes Verzeichnis
|
||||||
:note_webdav: "Nach der Aktivierung von WebDav kann der Dienst über die URL http(s)://.../dmsf/webdav/ erreicht werden."
|
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_webdav: Webdav Funktionalität
|
||||||
:label_dmsf_plural: "Kopieren von Dateien und Ordnern (%{files} Dateien in %{folders} Ordnern)"
|
label_dmsf_plural: "Kopieren von Dateien und Ordnern (%{files} Dateien in %{folders} Ordnern)"
|
||||||
|
|
||||||
:warning_folder_already_locked: "Dieser Ordner ist bereits gesperrt"
|
:warning_folder_already_locked: Dieser Ordner ist bereits gesperrt
|
||||||
:notice_folder_locked: "Der Ordner wurde erfolgreich gesperrt"
|
:notice_folder_locked: Der Ordner wurde erfolgreich gesperrt
|
||||||
:warning_folder_not_locked: "Der Ordner konnte nicht gesperrt werden"
|
:warning_folder_not_locked: Der Ordner konnte nicht gesperrt werden
|
||||||
:notice_folder_unlocked: "Der Ordner wurde erfolgreich entsperrt"
|
: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"
|
: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_folder_parent_locked: "Übergeordnetes Verzeichnis %{name} ist gesperrt"
|
||||||
:title_file_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_unlock_folder: Zur Modifikation für andere Benutzer entsperren
|
||||||
:title_lock_folder: "Zum Schutz vor Modifikation durch andere Benutzer sperren"
|
:title_lock_folder: Zum Schutz vor Modifikation durch andere Benutzer sperren
|
||||||
|
|
||||||
:select_option_webdav_readonly: "nur Lesen"
|
:select_option_webdav_readonly: nur Lesen
|
||||||
:select_option_webdav_readwrite: "Lesen/Schreiben"
|
:select_option_webdav_readwrite: Lesen/Schreiben
|
||||||
:label_webdav_strategy: "Webdav Strategie"
|
:label_webdav_strategy: Webdav Strategie
|
||||||
:note_webdav_strategy: "Erlaubt dem Administrator den Wechsel der WebDav Nutzung zwischen nur lesend und auch schreibenden Zugriffen."
|
: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
|
# English translation for DMSF by vit.jonas@gmail.com, dan.munn@munnster.co.uk
|
||||||
en:
|
en:
|
||||||
:dmsf: "DMSF"
|
dmsf: DMSF
|
||||||
:label_dmsf_file_plural: "Dmsf files"
|
label_dmsf_file_plural: Dmsf files
|
||||||
:warning_no_entries_selected: "No entries selected"
|
warning_no_entries_selected: No entries selected
|
||||||
:error_email_to_must_be_entered: "Email To must be entered"
|
error_email_to_must_be_entered: Email To must be entered
|
||||||
:notice_email_sent: "Email sent"
|
warning_file_already_locked: File already locked
|
||||||
:warning_file_already_locked: "File already locked"
|
notice_file_locked: File locked
|
||||||
:notice_file_locked: "File locked"
|
warning_file_not_locked: File not locked
|
||||||
:warning_file_not_locked: "File not locked"
|
notice_file_unlocked: File unlocked
|
||||||
:notice_file_unlocked: "File unlocked"
|
error_only_user_that_locked_file_can_unlock_it: Only user that locked file can unlock it
|
||||||
: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?
|
||||||
: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"
|
||||||
: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?
|
||||||
: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"
|
||||||
:error_entry_project_does_not_match_current_project: "Entry project doesn't match current project"
|
notice_folder_created: Folder created
|
||||||
:notice_folder_created: "Folder created"
|
error_folder_creation_failed: Folder creation failed
|
||||||
:error_folder_creation_failed: "Folder creation failed"
|
error_folder_title_must_be_entered: Title must be entered
|
||||||
:error_folder_title_must_be_entered: "Title must be entered"
|
notice_folder_deleted: Folder deleted
|
||||||
:notice_folder_deleted: "Folder deleted"
|
error_folder_is_not_empty: Folder is not empty
|
||||||
:error_folder_is_not_empty: "Folder is not empty"
|
error_folder_title_is_already_used: Title is already used
|
||||||
:error_folder_title_is_already_used: "Title is already used"
|
notice_folder_details_were_saved: Folder details were saved
|
||||||
:notice_folder_details_were_saved: "Folder details were saved"
|
error_file_is_locked: File is locked
|
||||||
:error_file_is_locked: "File is locked"
|
notice_file_deleted: File deleted
|
||||||
:notice_file_deleted: "File deleted"
|
error_at_least_one_revision_must_be_present: At least one revision must be present
|
||||||
:error_at_least_one_revision_must_be_present: "At least one revision must be present"
|
notice_revision_deleted: Revision deleted
|
||||||
:notice_revision_deleted: "Revision deleted"
|
warning_one_of_files_locked: One of files locked
|
||||||
:warning_one_of_files_locked: "One of files locked"
|
notice_file_unlocked: File unlocked
|
||||||
:notice_file_unlocked: "File unlocked"
|
notice_file_revision_created: File revision created
|
||||||
:notice_file_revision_created: "File revision created"
|
notice_your_preferences_were_saved: Your preferences were saved
|
||||||
:notice_your_preferences_were_saved: "Your preferences were saved"
|
warning_folder_notifications_already_activated: Folder notifications already activated
|
||||||
:warning_folder_notifications_already_activated: "Folder notifications already activated"
|
notice_folder_notifications_activated: Folder notifications activated
|
||||||
:notice_folder_notifications_activated: "Folder notifications activated"
|
warning_folder_notifications_already_deactivated: Folder notifications already deactivated
|
||||||
:warning_folder_notifications_already_deactivated: "Folder notifications already deactivated"
|
notice_folder_notifications_deactivated: Folder notifications deactivated
|
||||||
:notice_folder_notifications_deactivated: "Folder notifications deactivated"
|
warning_file_notifications_already_activated: File notifications already activated
|
||||||
:warning_file_notifications_already_activated: "File notifications already activated"
|
notice_file_notifications_activated: File notifications activated
|
||||||
:notice_file_notifications_activated: "File notifications activated"
|
warning_file_notifications_already_deactivated: File notifications already deactivated
|
||||||
:warning_file_notifications_already_deactivated: "File notifications already deactivated"
|
notice_file_notifications_deactivated: File notifications deactivated
|
||||||
:notice_file_notifications_deactivated: "File notifications deactivated"
|
link_details: "%{title} details"
|
||||||
:link_details: "%{title} details"
|
link_edit: "Edit %{title}"
|
||||||
:link_edit: "Edit %{title}"
|
submit_create: Create
|
||||||
:submit_create: "Create"
|
link_create_folder: Create folder
|
||||||
:link_create_folder: "Create folder"
|
title_check_uncheck_all_for_zip_download_or_email: Check/Uncheck all for zip download or email
|
||||||
:title_check_uncheck_all_for_zip_download_or_email: "Check/Uncheck all for zip download or email"
|
link_title: Title
|
||||||
:link_title: "Title"
|
link_size: Size
|
||||||
:link_size: "Size"
|
link_modified: Modified
|
||||||
:link_modified: "Modified"
|
link_ver: Ver.
|
||||||
:link_ver: "Ver."
|
link_author: Author
|
||||||
:link_author: "Author"
|
title_check_for_zip_download_or_email: Check for Zip download or email
|
||||||
:title_check_for_zip_download_or_email: "Check for Zip download or email"
|
title_delete: Delete
|
||||||
:title_delete: "Delete"
|
title_notifications_active_deactivate: "Notifications active: Deactivate"
|
||||||
:title_notifications_active_deactivate: "Notifications active: Deactivate"
|
title_notifications_not_active_activate: "Notifications not active: Activate"
|
||||||
:title_notifications_not_active_activate: "Notifications not active: Activate"
|
title_title_version_version_download: "%{title} version %{version} download"
|
||||||
:title_title_version_version_download: "%{title} version %{version} download"
|
title_locked_by_user: "Locked by %{user}"
|
||||||
:title_locked_by_user: "Locked by %{user}"
|
title_locked_by_you: Locked by you
|
||||||
:title_locked_by_you: "Locked by you"
|
title_waiting_for_approval: Waiting for Approval
|
||||||
:title_waiting_for_approval: "Waiting for Approval"
|
title_approved: Approved
|
||||||
:title_approved: "Approved"
|
title_unlock_file: Unlock to allow changes for other members
|
||||||
:title_unlock_file: "Unlock to allow changes for other members"
|
title_lock_file: Lock to prevent changes for other members
|
||||||
:title_lock_file: "Lock to prevent changes for other members"
|
submit_download: Download
|
||||||
:submit_download: "Download"
|
title_download_checked: Download checked in Zip archive
|
||||||
:title_download_checked: "Download checked in Zip archive"
|
submit_email: Email
|
||||||
:submit_email: "Email"
|
title_send_checked_by_email: Send checked by email
|
||||||
:title_send_checked_by_email: "Send checked by email"
|
link_user_preferences: Your DMSF project preferences
|
||||||
:link_user_preferences: "Your DMSF project preferences"
|
heading_send_documents_by_email: Send documents by email
|
||||||
:heading_send_documents_by_email: "Send documents by email"
|
label_email_from: From
|
||||||
:label_email_from: "From"
|
label_email_to: To
|
||||||
:label_email_to: "To"
|
label_email_cc: CC
|
||||||
:label_email_cc: "CC"
|
label_email_subject: Subject
|
||||||
:label_email_subject: "Subject"
|
label_email_documents: Documents
|
||||||
:label_email_documents: "Documents"
|
label_email_body: Body
|
||||||
:label_email_body: "Body"
|
label_email_send: Send
|
||||||
:label_email_send: "Send"
|
title_notifications_active: Notifications active
|
||||||
:title_notifications_active: "Notifications active"
|
label_file_size: File size
|
||||||
:label_file_size: "File size"
|
heading_file_upload: Upload
|
||||||
:heading_file_upload: "Upload"
|
note_uploaded_maximum_files_at_once: "There can be uploaded maximum of %{number} files at once."
|
||||||
: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.
|
||||||
:note_upload_files_greater_than_two_gb: "To upload files greater than 2GB you must have 64b browser."
|
submit_upload_files: Upload
|
||||||
:submit_upload_files: "Upload"
|
heading_new_folder: New Folder
|
||||||
:heading_new_folder: "New Folder"
|
label_title: Title
|
||||||
:label_title: "Title"
|
label_description: Description
|
||||||
:label_description: "Description"
|
submit_save: Save
|
||||||
:submit_save: "Save"
|
info_file_locked: File locked!
|
||||||
:info_file_locked: "File locked!"
|
label_notifications: Notifications
|
||||||
:label_notifications: "Notifications"
|
select_option_default: Default
|
||||||
:select_option_default: "Default"
|
select_option_deactivated: Deactivated
|
||||||
:select_option_deactivated: "Deactivated"
|
select_option_activated: Activated
|
||||||
:select_option_activated: "Activated"
|
title_save_preferences: Save preferences
|
||||||
:title_save_preferences: "Save preferences"
|
heading_revisions: Revisions
|
||||||
:heading_revisions: "Revisions"
|
title_download: Download
|
||||||
:title_download: "Download"
|
title_delete_revision: Delete revision
|
||||||
:title_delete_revision: "Delete revision"
|
label_created: Created
|
||||||
:label_created: "Created"
|
label_changed: Changed
|
||||||
:label_changed: "Changed"
|
info_changed_by_user: "%{changed} by"
|
||||||
:info_changed_by_user: "%{changed} by %{user}"
|
label_filename: Filename
|
||||||
:label_filename: "Filename"
|
label_version: Version
|
||||||
:label_version: "Version"
|
label_workflow: Workflow
|
||||||
:label_workflow: "Workflow"
|
label_mime: Mime
|
||||||
:option_workflow_waiting_for_approval: "Waiting for approval"
|
label_size: Size
|
||||||
:option_workflow_approved: "Approved"
|
label_comment: Comment
|
||||||
:option_workflow_none: "None"
|
heading_new_revision: New Revision
|
||||||
:label_mime: "Mime"
|
option_version_same: Same
|
||||||
:label_size: "Size"
|
option_version_minor: Minor
|
||||||
:label_comment: "Comment"
|
option_version_major: Major
|
||||||
:heading_new_revision: "New Revision"
|
label_new_content: New content
|
||||||
:option_version_same: "Same"
|
label_maximum_files_upload: Maximum files upload
|
||||||
:option_version_minor: "Minor"
|
note_maximum_number_of_files_uploaded: Limits maximum number of files uploaded at once. 0 means unlimited.
|
||||||
:option_version_major: "Major"
|
label_maximum_files_download: Maximum files download
|
||||||
:label_new_content: "New content"
|
note_maximum_number_of_files_downloaded: Limits maximum number of files downloaded in zip or sent via email. 0 means unlimited.
|
||||||
:label_maximum_files_upload: "Maximum files upload"
|
label_file_storage_directory: File storage directory
|
||||||
:note_maximum_number_of_files_uploaded: "Limits maximum number of files uploaded at once. 0 means unlimited."
|
label_index_database: Index database
|
||||||
:label_maximum_files_download: "Maximum files download"
|
label_stemming_language: Stemming Language
|
||||||
:note_maximum_number_of_files_downloaded: "Limits maximum number of files downloaded in zip or sent via email. 0 means unlimited."
|
note_possible_values: Possible values
|
||||||
:label_file_storage_directory: "File storage directory"
|
note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
|
||||||
:label_index_database: "Index database"
|
label_stem_strategy: Stem strategy
|
||||||
:label_stemming_language: "Stemming Language"
|
option_stem_none: Stem none (default)
|
||||||
:note_possible_values: "Possible values"
|
option_stem_some: Stem some
|
||||||
:note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
|
option_stem_all: Stem all
|
||||||
:label_stem_strategy: "Stem strategy"
|
label_stemming_description: This controls how the query parser will apply the stemming algorithm. The default value is STEM_NONE. The possible values are
|
||||||
:option_stem_none: "Stem none (default)"
|
note_do_not_stem: "Don't perform any stemming."
|
||||||
:option_stem_some: "Stem some"
|
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'.
|
||||||
:option_stem_all: "Stem all"
|
note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
|
||||||
: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_stemming_applied: Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed.
|
||||||
:note_do_not_stem: "Don't perform any stemming."
|
label_default_notifications: File default notifications
|
||||||
: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'."
|
heading_uploaded_files: Uploaded Files
|
||||||
:note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
|
submit_commit: Commit
|
||||||
:note_stemming_applied: "Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed."
|
link_documents: Documents
|
||||||
:label_default_notifications: "File default notifications"
|
permission_view_dmsf_folders: Browse documents
|
||||||
:heading_uploaded_files: "Uploaded Files"
|
permission_user_preferences: User preferences
|
||||||
:submit_commit: "Commit"
|
permission_view_dmsf_files: View documents
|
||||||
:link_documents: "Documents"
|
permission_folder_manipulation: Folder manipulation
|
||||||
:permission_view_dmsf_folders: "Browse documents"
|
permission_file_manipulation: File manipulation
|
||||||
:permission_user_preferences: "User preferences"
|
permission_file_approval: File approval
|
||||||
:permission_view_dmsf_files: "View documents"
|
permission_force_file_unlock: Force file unlock
|
||||||
:permission_folder_manipulation: "Folder manipulation"
|
label_file: File
|
||||||
:permission_file_manipulation: "File manipulation"
|
field_folder: Folder
|
||||||
:permission_file_approval: "File approval"
|
error_create_cycle_in_folder_dependency: create cycle in folder dependency
|
||||||
:permission_force_file_unlock: "Force file unlock"
|
error_contains_invalid_character: contains invalid character(s)
|
||||||
:label_file: "File"
|
error_file_commit_require_uploaded_file: File commit require uploaded file
|
||||||
:field_folder: "Folder"
|
warning_some_files_were_not_commited: "Some files were not commited due to validation errors: %{files}"
|
||||||
:error_create_cycle_in_folder_dependency: "create cycle in folder dependency"
|
error_user_has_not_right_delete_folder: "User hasn't right to delete forders"
|
||||||
:error_contains_invalid_character: "contains invalid character(s)"
|
error_user_has_not_right_delete_file: "User hasn't right to delete file"
|
||||||
:error_file_commit_require_uploaded_file: "File commit require uploaded file"
|
notice_entries_deleted: Entries deleted
|
||||||
:warning_some_files_were_not_commited: "Some files were not commited due to validation errors: %{files}"
|
warning_some_entries_were_not_deleted: "Some entries weren't deleted: %{entries}"
|
||||||
:error_user_has_not_right_delete_folder: "User hasn't right to delete forders"
|
question_do_you_really_want_to_delete_entries: Do you really want to delete checked entries?
|
||||||
:error_user_has_not_right_delete_file: "User hasn't right to delete file"
|
title_delete_checked: Delete checked
|
||||||
:notice_entries_deleted: "Entries deleted"
|
title_number_of_files_in_directory: Number of files in directory
|
||||||
:warning_some_entries_were_not_deleted: "Some entries weren't deleted: %{entries}"
|
title_filename_for_download: Filename used for download or in Zip archive
|
||||||
:question_do_you_really_want_to_delete_entries: "Do you really want to delete checked entries?"
|
label_number_of_folders: Folders
|
||||||
:title_delete_checked: "Delete checked"
|
label_number_of_documents: Documents
|
||||||
:title_number_of_files_in_directory: "Number of files in directory"
|
label_zip_names_encoding: Zip names encoding
|
||||||
:title_filename_for_download: "Filename used for download or in Zip archive"
|
note_zip_names_encoding_iconv: Iconv is used for charset conversion from utf-8 to target encoding
|
||||||
:label_number_of_folders: "Folders"
|
error_file_storage_directory_does_not_exist: "File storage directory doesn't exist and can't be created"
|
||||||
:label_number_of_documents: "Documents"
|
error_file_can_not_be_created: "File can't be created in storage directory"
|
||||||
:label_zip_names_encoding: "Zip names encoding"
|
error_wrong_zip_encoding: Wrong Zip encoding
|
||||||
:note_zip_names_encoding_iconv: "Iconv is used for charset conversion from utf-8 to target encoding"
|
warning_xapian_not_available: Xapian not available
|
||||||
:error_file_storage_directory_does_not_exist: "File storage directory doesn't exist and can't be created"
|
menu_dmsf: DMSF
|
||||||
:error_file_can_not_be_created: "File can't be created in storage directory"
|
label_physical_file_delete: Physical file delete
|
||||||
:error_wrong_zip_encoding: "Wrong Zip encoding"
|
user_is_not_project_member: You are not member of the project
|
||||||
:warning_xapian_not_available: "Xapian not available"
|
heading_access_downloads_emails: Downloads/Emails
|
||||||
:menu_dmsf: "DMSF"
|
heading_access_first: First
|
||||||
:label_physical_file_delete: "Physical file delete"
|
heading_access_last: Last
|
||||||
:user_is_not_project_member: "You are not member of the project"
|
label_dmsf_updated: DMSF updated
|
||||||
:heading_access_downloads_emails: "Downloads/Emails"
|
title_total_size_of_all_files: Total size of all files under this folder
|
||||||
:heading_access_first: "First"
|
project_module_dmsf: DMSF
|
||||||
:heading_access_last: "Last"
|
warning_no_project_to_copy_file_to: No project to copy file to
|
||||||
:label_dmsf_updated: "DMSF updated"
|
comment_copied_from: "Copied from %{source}"
|
||||||
:title_total_size_of_all_files: "Total size of all files under this folder"
|
notice_file_copied: File copied
|
||||||
:project_module_dmsf: "DMSF"
|
notice_file_moved: File moved
|
||||||
:warning_no_project_to_copy_file_to: "No project to copy file to"
|
label_target_project: Target project
|
||||||
:comment_copied_from: "Copied from %{source}"
|
label_target_folder: Target folder
|
||||||
:notice_file_copied: "File copied"
|
title_copy_or_move: Copy/Move
|
||||||
:notice_file_moved: "File moved"
|
label_dmsf_folder_plural: Dmsf folders
|
||||||
:label_target_project: "Target project"
|
comment_moved_from: "Moved from %{source}"
|
||||||
:label_target_folder: "Target folder"
|
error_target_folder_same: Target folder and project are the same as current
|
||||||
:title_copy_or_move: "Copy/Move"
|
error_file_cannot_be_moved: "File can't be moved"
|
||||||
:label_dmsf_folder_plural: "Dmsf folders"
|
error_file_cannot_be_copied: "File can't be copied"
|
||||||
:comment_moved_from: "Moved from %{source}"
|
warning_no_project_to_copy_folder_to: No project to copy folder to
|
||||||
:error_target_folder_same: "Target folder and project are the same as current"
|
title_copy: Copy
|
||||||
:error_file_cannot_be_moved: "File can't be moved"
|
error_folder_cannot_be_copied: "Folder can't be copied"
|
||||||
:error_file_cannot_be_copied: "File can't be copied"
|
notice_folder_copied: Folder 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)"
|
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."
|
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"
|
label_maximum_email_filesize: Maximum email attachment size
|
||||||
:header_minimum_filesize: "File Error."
|
header_minimum_filesize: File Error.
|
||||||
:error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
|
error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
|
||||||
:parent_directory: "Parent Directory"
|
parent_directory: Parent Directory
|
||||||
:note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
|
note_webdav: Webdav once enabled can be found at http://.../dmsf/webdav/
|
||||||
:label_webdav: "Webdav functionality"
|
label_webdav: Webdav functionality
|
||||||
:label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
|
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
|
||||||
|
|
||||||
:warning_folder_already_locked: "This folder is already locked"
|
warning_folder_already_locked: This folder is already locked
|
||||||
:notice_folder_locked: "The folder was successfully locked"
|
notice_folder_locked: The folder was successfully locked
|
||||||
:warning_folder_not_locked: "Unfortunately, the folder could not be locked"
|
warning_folder_not_locked: Unfortunately, the folder could not be locked
|
||||||
:notice_folder_unlocked: "The folder was successfully unlocked"
|
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"
|
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_folder_parent_locked: "Parent folder %{name} is locked"
|
||||||
:title_file_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_unlock_folder: Unlock to allow changes for other members
|
||||||
:title_lock_folder: "Lock to prevent changes for other members"
|
title_lock_folder: Lock to prevent changes for other members
|
||||||
|
|
||||||
:select_option_webdav_readonly: "Read-only"
|
select_option_webdav_readonly: Read-only
|
||||||
:select_option_webdav_readwrite: "Read/Write"
|
select_option_webdav_readwrite: Read/Write
|
||||||
:label_webdav_strategy: "Webdav strategy"
|
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."
|
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
|
# Spanish translation for DMSF
|
||||||
es:
|
es:
|
||||||
:dmsf: "DMSF"
|
dmsf: DMSF
|
||||||
:label_dmsf_file_plural: "DMSF Archivos"
|
label_dmsf_file_plural: DMSF Archivos
|
||||||
:warning_no_entries_selected: "No ha seleccionado ningún ítem"
|
warning_no_entries_selected: No ha seleccionado ningún ítem
|
||||||
:error_email_to_must_be_entered: "Ingrese un email"
|
error_email_to_must_be_entered: Ingrese un email
|
||||||
:notice_email_sent: "Email sent"
|
warning_file_already_locked: El archivo ya está bloqueado
|
||||||
:warning_file_already_locked: "El archivo ya está bloqueado"
|
notice_file_locked: Archivo bloqueado
|
||||||
:notice_file_locked: "Archivo bloqueado"
|
warning_file_not_locked: Archivo no bloqueado
|
||||||
:warning_file_not_locked: "Archivo no bloqueado"
|
notice_file_unlocked: Archivo desbloqueado
|
||||||
: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
|
||||||
: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?
|
||||||
: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:"
|
||||||
: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?
|
||||||
: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
|
||||||
:error_entry_project_does_not_match_current_project: "Las entradas del proyecto no concuerdan con el proyecto seleccionado"
|
notice_folder_created: Carpeta creada satisfactoriamente
|
||||||
:notice_folder_created: "Carpeta creada satisfactoriamente"
|
error_folder_creation_failed: La creacion de la carpeta ha fallado
|
||||||
:error_folder_creation_failed: "La creacion de la carpeta ha fallado"
|
error_folder_title_must_be_entered: Debe ingresar un título
|
||||||
:error_folder_title_must_be_entered: "Debe ingresar un título"
|
notice_folder_deleted: Carpeta borrada
|
||||||
:notice_folder_deleted: "Carpeta borrada"
|
error_folder_is_not_empty: La carpeta no está vacía
|
||||||
: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
|
||||||
: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
|
||||||
:notice_folder_details_were_saved: "Los detalles de la carpeta fueron grabados correctamente"
|
error_file_is_locked: Archivo bloqueado
|
||||||
:error_file_is_locked: "Archivo bloqueado"
|
notice_file_deleted: Archivo borrado
|
||||||
:notice_file_deleted: "Archivo borrado"
|
error_at_least_one_revision_must_be_present: al menos una revisión debe estar presente
|
||||||
:error_at_least_one_revision_must_be_present: "al menos una revisión debe estar presente"
|
notice_revision_deleted: Revision eliminada correctamente
|
||||||
:notice_revision_deleted: "Revision eliminada correctamente"
|
warning_one_of_files_locked: Uno de los archivos está bloqueado
|
||||||
:warning_one_of_files_locked: "Uno de los archivos está bloqueado"
|
notice_file_unlocked: Archivo desbloqueado
|
||||||
:notice_file_unlocked: "Archivo desbloqueado"
|
notice_file_revision_created: Revision de archivos creada correctamente
|
||||||
:notice_file_revision_created: "Revision de archivos creada correctamente"
|
notice_your_preferences_were_saved: Sus preferencias han sido guardadas 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
|
||||||
:warning_folder_notifications_already_activated: "Las notificaciones de la carpeta seleccionada ya están activadas previamente"
|
notice_folder_notifications_activated: Notificaciones de carpeta activadas
|
||||||
:notice_folder_notifications_activated: "Notificaciones de carpeta activadas"
|
warning_folder_notifications_already_deactivated: Las notificaciones de la carpeta seleccionada ya están desactivadas previamente
|
||||||
:warning_folder_notifications_already_deactivated: "Las notificaciones de la carpeta seleccionada ya están desactivadas previamente"
|
notice_folder_notifications_deactivated: Notificaciones de carpeta desactivadas
|
||||||
:notice_folder_notifications_deactivated: "Notificaciones de carpeta desactivadas"
|
warning_file_notifications_already_activated: Las notificaciones del archivo seleccionado ya estaban activadas previamente
|
||||||
:warning_file_notifications_already_activated: "Las notificaciones del archivo seleccionado ya estaban activadas previamente"
|
notice_file_notifications_activated: Notificación de archivo activado
|
||||||
:notice_file_notifications_activated: "Notificación de archivo activado"
|
warning_file_notifications_already_deactivated: Las notificaciones del archivo seleccionado ya estaban desactivadas previamente
|
||||||
:warning_file_notifications_already_deactivated: "Las notificaciones del archivo seleccionado ya estaban desactivadas previamente"
|
notice_file_notifications_deactivated: Notificación de archivo desactivada
|
||||||
:notice_file_notifications_deactivated: "Notificación de archivo desactivada"
|
|
||||||
:link_details: "%{title} details"
|
|
||||||
|
|
||||||
# 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}"
|
error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
|
||||||
:submit_create: "Create"
|
note_maximum_email_filesize: Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB.
|
||||||
:link_create_folder: "Create folder"
|
label_maximum_email_filesize: Maximum email attachment size
|
||||||
:title_check_uncheck_all_for_zip_download_or_email: "Check/Uncheck all for zip download or email"
|
header_minimum_filesize: File Error.
|
||||||
:link_title: "Title"
|
error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
|
||||||
:link_size: "Size"
|
parent_directory: Parent Directory
|
||||||
:link_modified: "Modified"
|
note_webdav: Webdav once enabled can be found at http://.../dmsf/webdav/
|
||||||
:link_ver: "Ver."
|
label_webdav: Webdav functionality
|
||||||
:link_author: "Author"
|
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
|
||||||
: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)"
|
|
||||||
|
|
||||||
:warning_folder_already_locked: "This folder is already locked"
|
warning_folder_already_locked: This folder is already locked
|
||||||
:notice_folder_locked: "The folder was successfully locked"
|
notice_folder_locked: The folder was successfully locked
|
||||||
:warning_folder_not_locked: "Unfortunately, the folder could not be locked"
|
warning_folder_not_locked: Unfortunately, the folder could not be locked
|
||||||
:notice_folder_unlocked: "The folder was successfully unlocked"
|
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"
|
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_folder_parent_locked: "Parent folder %{name} is locked"
|
||||||
:title_file_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_unlock_folder: Unlock to allow changes for other members
|
||||||
:title_lock_folder: "Lock to prevent changes for other members"
|
title_lock_folder: Lock to prevent changes for other members
|
||||||
|
|
||||||
:select_option_webdav_readonly: "Read-only"
|
select_option_webdav_readonly: Read-only
|
||||||
:select_option_webdav_readwrite: "Read/Write"
|
select_option_webdav_readwrite: Read/Write
|
||||||
:label_webdav_strategy: "Webdav strategy"
|
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."
|
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
|
# French translation for DMSF
|
||||||
fr:
|
fr:
|
||||||
:dmsf: "DMSF"
|
dmsf: DMSF
|
||||||
:label_dmsf_file_plural: "Fichiers DMSF"
|
label_dmsf_file_plural: Fichiers DMSF
|
||||||
:warning_no_entries_selected: "Aucun fichier sélectionné"
|
warning_no_entries_selected: Aucun fichier sélectionné
|
||||||
:error_email_to_must_be_entered: "La saisie d'une adresse mail est obligatoire"
|
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é
|
||||||
:warning_file_already_locked: "Fichier déjà verrouillé"
|
notice_file_locked: Fichier verrouillé
|
||||||
:notice_file_locked: "Fichier verrouillé"
|
warning_file_not_locked: Fichier déverrouillé
|
||||||
:warning_file_not_locked: "Fichier déverrouillé"
|
notice_file_unlocked: 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é"
|
||||||
: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 ?
|
||||||
: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é
|
||||||
: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 ?
|
||||||
: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
|
||||||
:error_entry_project_does_not_match_current_project: "Entry project doesn't match current project"
|
notice_folder_created: Dossier créé
|
||||||
:notice_folder_created: "Dossier créé"
|
error_folder_creation_failed: Erreur de création du dossier
|
||||||
:error_folder_creation_failed: "Erreur de création du dossier"
|
error_folder_title_must_be_entered: Le titre du document est requis
|
||||||
:error_folder_title_must_be_entered: "Le titre du document est requis"
|
notice_folder_deleted: Dossier supprimé
|
||||||
:notice_folder_deleted: "Dossier supprimé"
|
error_folder_is_not_empty: "Le dossier n'est pas vide"
|
||||||
: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é
|
||||||
: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
|
||||||
:notice_folder_details_were_saved: "Les détails du dossier ont été enregistrés"
|
error_file_is_locked: Le fichier est verrouillé
|
||||||
:error_file_is_locked: "Le fichier est verrouillé"
|
notice_file_deleted: Le fichier a été supprimé
|
||||||
:notice_file_deleted: "Le fichier a été supprimé"
|
error_at_least_one_revision_must_be_present: Au moins une révision est requise
|
||||||
:error_at_least_one_revision_must_be_present: "Au moins une révision est requise"
|
notice_revision_deleted: Révision supprimée
|
||||||
:notice_revision_deleted: "Révision supprimée"
|
warning_one_of_files_locked: Un des fichiers sélectionnés est verrouillé
|
||||||
:warning_one_of_files_locked: "Un des fichiers sélectionnés est verrouillé"
|
notice_file_unlocked: Fichier déverrouillé
|
||||||
:notice_file_unlocked: "Fichier déverrouillé"
|
notice_file_revision_created: La révision du fichier a été ajoutée
|
||||||
: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
|
||||||
: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
|
||||||
: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
|
||||||
: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
|
||||||
: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
|
||||||
: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
|
||||||
: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
|
||||||
: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
|
||||||
: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
|
||||||
:notice_file_notifications_deactivated: "Les notifications du fichier ont été désactivés"
|
link_details: "Détails de %{title}"
|
||||||
:link_details: "Détails de %{title}"
|
link_edit: "Modification du dossier %{title}"
|
||||||
:link_edit: "Modification du dossier %{title}"
|
submit_create: Ajouter
|
||||||
:submit_create: "Ajouter"
|
link_create_folder: Créer un sous-dossier
|
||||||
: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
|
||||||
: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_title: "Titre"
|
link_size: Taille
|
||||||
:link_size: "Taille"
|
link_modified: Modifié
|
||||||
:link_modified: "Modifié"
|
link_ver: Version
|
||||||
:link_ver: "Version"
|
link_author: Auteur
|
||||||
:link_author: "Auteur"
|
title_check_for_zip_download_or_email: Sélectionner pour le téléchargement ou la transmission par mail
|
||||||
:title_check_for_zip_download_or_email: "Sélectionner pour le téléchargement ou la transmission par mail"
|
title_delete: Supprimer
|
||||||
:title_delete: "Supprimer"
|
title_notifications_active_deactivate: "Notifications activées : cliquer pour désactiver"
|
||||||
:title_notifications_active_deactivate: "Notifications activées : cliquer pour désactiver"
|
title_notifications_not_active_activate: "Notifications désactivées : cliquer pour activer"
|
||||||
: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_title_version_version_download: "Télécharger la version %{version} de %{title}"
|
title_locked_by_user: "Verrouillé par %{user}"
|
||||||
:title_locked_by_user: "Verrouillé par %{user}"
|
title_locked_by_you: Verrouillé par vous-même
|
||||||
:title_locked_by_you: "Verrouillé par vous-même"
|
title_waiting_for_approval: Attente de validation
|
||||||
:title_waiting_for_approval: "Attente de validation"
|
title_approved: Validé
|
||||||
:title_approved: "Validé"
|
title_unlock_file: Déverrouiller afin de permettre la modification par les membres du projet
|
||||||
: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
|
||||||
:title_lock_file: "Verrouiller afin d'empêcher les modifications du document"
|
submit_download: Télécharger
|
||||||
:submit_download: "Télécharger"
|
title_download_checked: Télécharger les fichiers sélectionnés au format zip
|
||||||
:title_download_checked: "Télécharger les fichiers sélectionnés au format zip"
|
submit_email: Email
|
||||||
:submit_email: "Email"
|
title_send_checked_by_email: Transmettre les fichiers sélectionnés par mail
|
||||||
:title_send_checked_by_email: "Transmettre les fichiers sélectionnés par mail"
|
link_user_preferences: Préférences personnelles du module DMSF
|
||||||
:link_user_preferences: "Préférences personnelles du module DMSF"
|
heading_send_documents_by_email: Transmettre les documents par mail
|
||||||
:heading_send_documents_by_email: "Transmettre les documents par mail"
|
label_email_from: De
|
||||||
:label_email_from: "De"
|
label_email_to: A
|
||||||
:label_email_to: "A"
|
label_email_cc: Cc
|
||||||
:label_email_cc: "Cc"
|
label_email_subject: Objet
|
||||||
:label_email_subject: "Objet"
|
label_email_documents: Fichiers
|
||||||
:label_email_documents: "Fichiers"
|
label_email_body: Message
|
||||||
:label_email_body: "Message"
|
label_email_send: Envoyer
|
||||||
:label_email_send: "Envoyer"
|
title_notifications_active: Notifications actives
|
||||||
:title_notifications_active: "Notifications actives"
|
label_file_size: Taille du fichier
|
||||||
:label_file_size: "Taille du fichier"
|
heading_file_upload: Déposer des fichiers
|
||||||
:heading_file_upload: "Déposer des fichiers"
|
note_uploaded_maximum_files_at_once: "Seulement %{number} fichiers peuvent être déposés à la fois."
|
||||||
: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.
|
||||||
: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
|
||||||
:submit_upload_files: "Transmission"
|
heading_new_folder: Nouveau Dossier
|
||||||
:heading_new_folder: "Nouveau Dossier"
|
label_title: Titre
|
||||||
:label_title: "Titre"
|
label_description: Description
|
||||||
:label_description: "Description"
|
submit_save: Enregistrer
|
||||||
:submit_save: "Enregistrer"
|
info_file_locked: Fichier verrouillé
|
||||||
:info_file_locked: "Fichier verrouillé"
|
label_notifications: Notifications
|
||||||
:label_notifications: "Notifications"
|
select_option_default: Défaut
|
||||||
:select_option_default: "Défaut"
|
select_option_deactivated: Désactivé
|
||||||
:select_option_deactivated: "Désactivé"
|
select_option_activated: Activé
|
||||||
:select_option_activated: "Activé"
|
title_save_preferences: Enregistrer les préférences
|
||||||
:title_save_preferences: "Enregistrer les préférences"
|
heading_revisions: Révisions
|
||||||
:heading_revisions: "Révisions"
|
title_download: Télécharger
|
||||||
:title_download: "Télécharger"
|
title_delete_revision: Supprimer la révision
|
||||||
:title_delete_revision: "Supprimer la révision"
|
label_created: Créé
|
||||||
:label_created: "Créé"
|
label_changed: Modifié
|
||||||
:label_changed: "Modifié"
|
info_changed_by_user: "%{changed} par %{user}"
|
||||||
:info_changed_by_user: "%{changed} par %{user}"
|
label_filename: Fichier
|
||||||
:label_filename: "Fichier"
|
label_version: Version
|
||||||
:label_version: "Version"
|
label_workflow: Etat
|
||||||
:label_workflow: "Etat"
|
label_mime: Type
|
||||||
:option_workflow_waiting_for_approval: "En attente de validation"
|
label_size: Taille
|
||||||
:option_workflow_approved: "Validé"
|
label_comment: Commentaires
|
||||||
:option_workflow_none: "Aucun"
|
heading_new_revision: Nouvelle révision
|
||||||
:label_mime: "Type"
|
option_version_same: (identique)
|
||||||
:label_size: "Taille"
|
option_version_minor: (modification mineure)
|
||||||
:label_comment: "Commentaires"
|
option_version_major: (modification majeure)
|
||||||
:heading_new_revision: "Nouvelle révision"
|
label_new_content: Nouvelle version du fichier
|
||||||
:option_version_same: "(identique)"
|
label_maximum_files_upload: Nombre maximal de documents pouvant être transmis
|
||||||
:option_version_minor: "(modification mineure)"
|
note_maximum_number_of_files_uploaded: Nombre maximal de documents pouvant être transmis en une fois. La valeur 0 signifie illimité.
|
||||||
:option_version_major: "(modification majeure)"
|
label_maximum_files_download: Nombre maximal de fichiers pouvant être téléchargés
|
||||||
:label_new_content: "Nouvelle version du fichier"
|
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_maximum_files_upload: "Nombre maximal de documents pouvant être transmis"
|
label_file_storage_directory: Dossier de stockage des documents
|
||||||
:note_maximum_number_of_files_uploaded: "Nombre maximal de documents pouvant être transmis en une fois. La valeur 0 signifie illimité."
|
label_index_database: Indexer la base de données
|
||||||
:label_maximum_files_download: "Nombre maximal de fichiers pouvant être téléchargés"
|
label_stemming_language: Méthode de racinisation
|
||||||
: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é."
|
note_possible_values: valeurs possibles
|
||||||
:label_file_storage_directory: "Dossier de stockage des documents"
|
note_pass_none_to_disable_stemming: "Utiliser 'none' pour désactiver la racinisation"
|
||||||
:label_index_database: "Indexer la base de données"
|
label_stem_strategy: Stratégie de racinisation
|
||||||
:label_stemming_language: "Méthode de racinisation"
|
option_stem_none: Aucun suffixe(défaut)
|
||||||
:note_possible_values: "valeurs possibles"
|
option_stem_some: Quelques suffixes
|
||||||
:note_pass_none_to_disable_stemming: "Utiliser 'none' pour désactiver la racinisation"
|
option_stem_all: Tous les suffixes
|
||||||
:label_stem_strategy: "Stratégie de racinisation"
|
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
|
||||||
:option_stem_none: "Aucun suffixe(défaut)"
|
note_do_not_stem: "N'effectuer aucune transformation"
|
||||||
:option_stem_some: "Quelques suffixes"
|
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'."
|
||||||
:option_stem_all: "Tous les suffixes"
|
note_stem_all: "Rechercher toutes les racines de tous les mots (note : le préfix 'Z' ne sera pas ajouté)."
|
||||||
: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_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.
|
||||||
:note_do_not_stem: "N'effectuer aucune transformation"
|
label_default_notifications: Les notifications par défaut du document
|
||||||
: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'."
|
heading_uploaded_files: Document(s) transmis
|
||||||
:note_stem_all: "Rechercher toutes les racines de tous les mots (note : le préfix 'Z' ne sera pas ajouté)."
|
submit_commit: Appliquer
|
||||||
: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."
|
link_documents: Documents
|
||||||
:label_default_notifications: "Les notifications par défaut du document"
|
permission_view_dmsf_folders: Parcourir les documents
|
||||||
:heading_uploaded_files: "Document(s) transmis"
|
permission_user_preferences: Préférences utilisateur
|
||||||
:submit_commit: "Appliquer"
|
permission_view_dmsf_files: Afficher documents
|
||||||
:link_documents: "Documents"
|
permission_folder_manipulation: Gestion des dossiers
|
||||||
:permission_view_dmsf_folders: "Parcourir les documents"
|
permission_file_manipulation: Gestion des documents
|
||||||
:permission_user_preferences: "Préférences utilisateur"
|
permission_file_approval: Validation du document
|
||||||
:permission_view_dmsf_files: "Afficher documents"
|
permission_force_file_unlock: Forcer le déverrouillage du document
|
||||||
:permission_folder_manipulation: "Gestion des dossiers"
|
label_file: Fichier
|
||||||
:permission_file_manipulation: "Gestion des documents"
|
field_folder: Dossier
|
||||||
:permission_file_approval: "Validation du document"
|
error_create_cycle_in_folder_dependency: create cycle in folder dependency
|
||||||
:permission_force_file_unlock: "Forcer le déverrouillage du document"
|
error_contains_invalid_character: Contient de(s) caractère(s) invalide(s)
|
||||||
:label_file: "Fichier"
|
error_file_commit_require_uploaded_file: "Transmission des fichiers nécessaire avant l'enregistrement"
|
||||||
:field_folder: "Dossier"
|
warning_some_files_were_not_commited: "Erreur d'enregsitrement de certains fichiers %{files}"
|
||||||
:error_create_cycle_in_folder_dependency: "create cycle in folder dependency"
|
error_user_has_not_right_delete_folder: "L'utilisateur ne dispose pas des droits nécessaires permettant la suppression du dossier"
|
||||||
:error_contains_invalid_character: "Contient de(s) caractère(s) invalide(s)"
|
error_user_has_not_right_delete_file: "L'utilisateur ne dispose pas des droits nécessaires permettant la suppression du dossier"
|
||||||
:error_file_commit_require_uploaded_file: "Transmission des fichiers nécessaire avant l'enregistrement"
|
notice_entries_deleted: Elément(s) supprimé(s)
|
||||||
:warning_some_files_were_not_commited: "Erreur d'enregsitrement de certains fichiers %{files}"
|
warning_some_entries_were_not_deleted: "Certains éléments n'ont pas été supprimés : %{entries}"
|
||||||
:error_user_has_not_right_delete_folder: "L'utilisateur ne dispose pas des droits nécessaires permettant la suppression du dossier"
|
question_do_you_really_want_to_delete_entries: Etes-vous sûr de vouloir supprimer le(s) élément(s) sélectionné(s)?
|
||||||
:error_user_has_not_right_delete_file: "L'utilisateur ne dispose pas des droits nécessaires permettant la suppression du dossier"
|
title_delete_checked: Supprimer les éléments sélectionnés
|
||||||
:notice_entries_deleted: "Elément(s) supprimé(s)"
|
title_number_of_files_in_directory: Nombre de fichiers dans le dossier
|
||||||
:warning_some_entries_were_not_deleted: "Certains éléments n'ont pas été supprimés : %{entries}"
|
title_filename_for_download: "Nom du fichier à utiliser lors du téléchargement ou de l'archive ZIP"
|
||||||
:question_do_you_really_want_to_delete_entries: "Etes-vous sûr de vouloir supprimer le(s) élément(s) sélectionné(s)?"
|
label_number_of_folders: Dossiers
|
||||||
:title_delete_checked: "Supprimer les éléments sélectionnés"
|
label_number_of_documents: Fichiers
|
||||||
:title_number_of_files_in_directory: "Nombre de fichiers dans le dossier"
|
label_zip_names_encoding: Encodage du nom des fichiers ZIP
|
||||||
:title_filename_for_download: "Nom du fichier à utiliser lors du téléchargement ou de l'archive 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
|
||||||
:label_number_of_folders: "Dossiers"
|
error_file_storage_directory_does_not_exist: Le répertoire de stockage des fichiers n'existe pas ou n'a pas pu être créé
|
||||||
:label_number_of_documents: "Fichiers"
|
error_file_can_not_be_created: "Le fichier n'a pas pu être enregistré dans le répertoire de stockage"
|
||||||
:label_zip_names_encoding: "Encodage du nom des fichiers ZIP"
|
error_wrong_zip_encoding: Mauvais jeu de caractères pour la transformation du nom du 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"
|
warning_xapian_not_available: Le module Xapian est indisponible
|
||||||
:error_file_storage_directory_does_not_exist: "Le répertoire de stockage des fichiers n'existe pas ou n'a pas pu être créé"
|
menu_dmsf: DMSF
|
||||||
:error_file_can_not_be_created: "Le fichier n'a pas pu être enregistré dans le répertoire de stockage"
|
label_physical_file_delete: Suppression des fichiers
|
||||||
:error_wrong_zip_encoding: "Mauvais jeu de caractères pour la transformation du nom du ZIP"
|
user_is_not_project_member: "Vous n'êtes pas un membre du projet"
|
||||||
:warning_xapian_not_available: "Le module Xapian est indisponible"
|
heading_access_downloads_emails: Téléchargement / Envoi par mail
|
||||||
:menu_dmsf: "DMSF"
|
heading_access_first: Premier
|
||||||
:label_physical_file_delete: "Suppression des fichiers"
|
heading_access_last: Dernier
|
||||||
:user_is_not_project_member: "Vous n'êtes pas un membre du projet"
|
label_dmsf_updated: Dépôt ou mise à jour du document
|
||||||
:heading_access_downloads_emails: "Téléchargement / Envoi par mail"
|
title_total_size_of_all_files: Taille totale des fichiers de ce dossier
|
||||||
:heading_access_first: "Premier"
|
project_module_dmsf: DMSF
|
||||||
:heading_access_last: "Dernier"
|
warning_no_project_to_copy_file_to: "Le projet de destination n'est pas défini"
|
||||||
:label_dmsf_updated: "Dépôt ou mise à jour du document "
|
comment_copied_from: "Copie effectuée depuis %{source}"
|
||||||
:title_total_size_of_all_files: "Taille totale des fichiers de ce dossier"
|
notice_file_copied: Fichier copié
|
||||||
:project_module_dmsf: "DMSF"
|
notice_file_moved: Fichier déplacé
|
||||||
:warning_no_project_to_copy_file_to: "Le projet de destination n'est pas défini"
|
label_target_project: Projet cible
|
||||||
:comment_copied_from: "Copie effectuée depuis %{source}"
|
label_target_folder: Dossier cible
|
||||||
:notice_file_copied: "Fichier copié"
|
title_copy_or_move: Copie/Déplacement
|
||||||
:notice_file_moved: "Fichier déplacé"
|
label_dmsf_folder_plural: Les dossiers de DMSF
|
||||||
:label_target_project: "Projet cible"
|
comment_moved_from: "Déplacé depuis %{source}"
|
||||||
:label_target_folder: "Dossier cible"
|
error_target_folder_same: Le projet et le dossier cible sont identiques au projet et dossier source
|
||||||
:title_copy_or_move: "Copie/Déplacement"
|
error_file_cannot_be_moved: Le fichier ne peut pas être déplacé
|
||||||
:label_dmsf_folder_plural: "Les dossiers de DMSF"
|
error_file_cannot_be_copied: Le fichier ne peut pas être copié
|
||||||
:comment_moved_from: "Déplacé depuis %{source}"
|
warning_no_project_to_copy_folder_to: "Le projet de destination n'est pas défini"
|
||||||
:error_target_folder_same: "Le projet et le dossier cible sont identiques au projet et dossier source"
|
title_copy: Copie
|
||||||
:error_file_cannot_be_moved: "Le fichier ne peut pas être déplacé"
|
error_folder_cannot_be_copied: Le dossier ne peut pas être copié
|
||||||
:error_file_cannot_be_copied: "Le fichier ne peut pas être copié"
|
notice_folder_copied: Dossier 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)"
|
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"
|
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é"
|
label_maximum_email_filesize: Taille maximale du fichier attaché
|
||||||
:header_minimum_filesize: "Erreur de fichier."
|
header_minimum_filesize: Erreur de fichier.
|
||||||
:error_minimum_filesize: "Le fichier %{file} est vide. Il ne sera pas transmis."
|
error_minimum_filesize: "Le fichier %{file} est vide. Il ne sera pas transmis."
|
||||||
:parent_directory: "Dossier parent"
|
parent_directory: Dossier parent
|
||||||
:note_webdav: "Après l'activation du module Webdav, celui-ci sera accessible par http://.../dmsf/webdav/"
|
note_webdav: "Après l'activation du module Webdav, celui-ci sera accessible par http://.../dmsf/webdav/"
|
||||||
:label_webdav: "Module Webdav"
|
label_webdav: Module Webdav
|
||||||
:label_dmsf_plural: "Copier les fichiers et les dossiers DMSF (%{files} fichiers dans %{folders} dossiers)"
|
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é"
|
warning_folder_already_locked: Ce dossier est déjà verrouillé
|
||||||
:notice_folder_locked: "Dossier verrouillé"
|
notice_folder_locked: Dossier verrouillé
|
||||||
:warning_folder_not_locked: "Echec du verrouillage du dossier"
|
warning_folder_not_locked: Echec du verrouillage du dossier
|
||||||
:notice_folder_unlocked: "Le dossier a été déverrouillé"
|
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"
|
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_folder_parent_locked: "Le dossier parent %{name} verrouillé"
|
||||||
:title_file_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_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"
|
title_lock_folder: "Verrouiller afin d'empêcher les modifications du dossier"
|
||||||
|
|
||||||
:select_option_webdav_readonly: "Lecture"
|
select_option_webdav_readonly: Lecture
|
||||||
:select_option_webdav_readwrite: "Lecture/Ecriture"
|
select_option_webdav_readwrite: Lecture/Ecriture
|
||||||
:label_webdav_strategy: "Accès Webdav"
|
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."
|
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
|
# Japanese translation for DMSF
|
||||||
ja:
|
ja:
|
||||||
:dmsf: "DMSF"
|
dmsf: DMSF
|
||||||
:label_dmsf_file_plural: "Dmsf ファイル"
|
label_dmsf_file_plural: Dmsf ファイル
|
||||||
:warning_no_entries_selected: "エントリーが選ばれていません"
|
warning_no_entries_selected: エントリーが選ばれていません
|
||||||
:error_email_to_must_be_entered: "電子メールの To 先は省略できません"
|
error_email_to_must_be_entered: 電子メールの To 先は省略できません
|
||||||
:notice_email_sent: "電子メールを送信しました"
|
warning_file_already_locked: ファイルは既にロックされています
|
||||||
:warning_file_already_locked: "ファイルは既にロックされています"
|
notice_file_locked: ファイルをロックしました
|
||||||
:notice_file_locked: "ファイルをロックしました"
|
warning_file_not_locked: ファイルはロックされていません
|
||||||
:warning_file_not_locked: "ファイルはロックされていません"
|
notice_file_unlocked: ファイルをロック解除しました
|
||||||
:notice_file_unlocked: "ファイルをロック解除しました"
|
error_only_user_that_locked_file_can_unlock_it: ファイルをロックしたユーザだけがロック解除できます
|
||||||
:error_only_user_that_locked_file_can_unlock_it: "ファイルをロックしたユーザだけがロック解除できます"
|
question_do_you_really_want_to_delete_this_entry: 本当にこのエントリーを削除しますか?
|
||||||
:question_do_you_really_want_to_delete_this_entry: "本当にこのエントリーを削除しますか?"
|
error_max_files_exceeded: "同時にダウンロードできるファイル数の上限 %{number} を超えています"
|
||||||
:error_max_files_exceeded: "同時にダウンロードできるファイル数の上限 %{number} を超えています"
|
question_do_you_really_want_to_delete_this_revision: 本当にこのリビジョンを削除しますか?
|
||||||
:question_do_you_really_want_to_delete_this_revision: "本当にこのリビジョンを削除しますか?"
|
error_entry_project_does_not_match_current_project: 指定したプロジェクトは現在のプロジェクトと一致しません
|
||||||
:error_entry_project_does_not_match_current_project: "指定したプロジェクトは現在のプロジェクトと一致しません"
|
notice_folder_created: フォルダを作成しました
|
||||||
:notice_folder_created: "フォルダを作成しました"
|
error_folder_creation_failed: フォルダを作成できません
|
||||||
:error_folder_creation_failed: "フォルダを作成できません"
|
error_folder_title_must_be_entered: タイトルが必要です
|
||||||
:error_folder_title_must_be_entered: "タイトルが必要です"
|
notice_folder_deleted: フォルダを削除しました
|
||||||
:notice_folder_deleted: "フォルダを削除しました"
|
error_folder_is_not_empty: フォルダが空ではありません
|
||||||
:error_folder_is_not_empty: "フォルダが空ではありません"
|
error_folder_title_is_already_used: タイトルは既に使われています
|
||||||
:error_folder_title_is_already_used: "タイトルは既に使われています"
|
notice_folder_details_were_saved: フォルダの詳細を保存しました
|
||||||
:notice_folder_details_were_saved: "フォルダの詳細を保存しました"
|
error_file_is_locked: ファイルはロックされています
|
||||||
:error_file_is_locked: "ファイルはロックされています"
|
notice_file_deleted: ファイルを削除しました
|
||||||
:notice_file_deleted: "ファイルを削除しました"
|
error_at_least_one_revision_must_be_present: 少なくとも1つのリビジョンが必要です
|
||||||
:error_at_least_one_revision_must_be_present: "少なくとも1つのリビジョンが必要です"
|
notice_revision_deleted: リビジョンを削除しました
|
||||||
:notice_revision_deleted: "リビジョンを削除しました"
|
warning_one_of_files_locked: ファイルのうちの1つがロックされています
|
||||||
:warning_one_of_files_locked: "ファイルのうちの1つがロックされています"
|
notice_file_unlocked: ファイルをロック解除しました
|
||||||
:notice_file_unlocked: "ファイルをロック解除しました"
|
notice_file_revision_created: ファイルのリビジョンを作成しました
|
||||||
:notice_file_revision_created: "ファイルのリビジョンを作成しました"
|
notice_your_preferences_were_saved: あなたの設定を保存しました
|
||||||
:notice_your_preferences_were_saved: "あなたの設定を保存しました"
|
warning_folder_notifications_already_activated: フォルダ通知は既に有効です
|
||||||
:warning_folder_notifications_already_activated: "フォルダ通知は既に有効です"
|
notice_folder_notifications_activated: フォルダ通知を有効にしました
|
||||||
:notice_folder_notifications_activated: "フォルダ通知を有効にしました"
|
warning_folder_notifications_already_deactivated: フォルダ通知は既に無効です
|
||||||
:warning_folder_notifications_already_deactivated: "フォルダ通知は既に無効です"
|
notice_folder_notifications_deactivated: フォルダ通知を無効にしました
|
||||||
:notice_folder_notifications_deactivated: "フォルダ通知を無効にしました"
|
warning_file_notifications_already_activated: ファイル通知は既に有効です
|
||||||
:warning_file_notifications_already_activated: "ファイル通知は既に有効です"
|
notice_file_notifications_activated: ファイル通知を有効にしました
|
||||||
:notice_file_notifications_activated: "ファイル通知を有効にしました"
|
warning_file_notifications_already_deactivated: ファイル通知は既に無効です
|
||||||
:warning_file_notifications_already_deactivated: "ファイル通知は既に無効です"
|
notice_file_notifications_deactivated: ファイル通知を無効にしました
|
||||||
:notice_file_notifications_deactivated: "ファイル通知を無効にしました"
|
link_details: "%{title} の詳細を表示します"
|
||||||
:link_details: "%{title} の詳細を表示します"
|
link_edit: "%{title} を編集します"
|
||||||
:link_edit: "%{title} を編集します"
|
submit_create: 作成
|
||||||
:submit_create: "作成"
|
link_create_folder: フォルダを作成します
|
||||||
:link_create_folder: "フォルダを作成します"
|
title_check_uncheck_all_for_zip_download_or_email: すべての Zip ダウンロードまたは電子メールのチェックをオン/オフします
|
||||||
:title_check_uncheck_all_for_zip_download_or_email: "すべての Zip ダウンロードまたは電子メールのチェックをオン/オフします"
|
link_title: タイトル
|
||||||
:link_title: "タイトル"
|
link_size: サイズ
|
||||||
:link_size: "サイズ"
|
link_modified: 更新日時
|
||||||
:link_modified: "更新日時"
|
link_ver: バージョン
|
||||||
:link_ver: "バージョン"
|
link_author: 作成者
|
||||||
:link_author: "作成者"
|
title_check_for_zip_download_or_email: Zip ダウンロードまたは電子メールをチェックします
|
||||||
:title_check_for_zip_download_or_email: "Zip ダウンロードまたは電子メールをチェックします"
|
title_delete: 削除します
|
||||||
:title_delete: "削除します"
|
title_notifications_active_deactivate: "通知は有効です: 無効にする"
|
||||||
:title_notifications_active_deactivate: "通知は有効です: 無効にする"
|
title_notifications_not_active_activate: "通知は無効です: 有効にする"
|
||||||
:title_notifications_not_active_activate: "通知は無効です: 有効にする"
|
title_title_version_version_download: "%{title} のバージョン %{version} をダウンロードします"
|
||||||
:title_title_version_version_download: "%{title} のバージョン %{version} をダウンロードします"
|
title_locked_by_user: "%{user} によってロックされています"
|
||||||
:title_locked_by_user: "%{user} によってロックされています"
|
title_locked_by_you: あなたがロックしています
|
||||||
:title_locked_by_you: "あなたがロックしています"
|
title_waiting_for_approval: 承認待ち
|
||||||
:title_waiting_for_approval: "承認待ち"
|
title_approved: 承認済み
|
||||||
:title_approved: "承認済み"
|
title_unlock_file: ロック解除して他のメンバーの変更を許可します
|
||||||
:title_unlock_file: "ロック解除して他のメンバーの変更を許可します"
|
title_lock_file: ロックして他のメンバーの変更を禁止します
|
||||||
:title_lock_file: "ロックして他のメンバーの変更を禁止します"
|
submit_download: ダウンロード
|
||||||
:submit_download: "ダウンロード"
|
title_download_checked: チェックしたものを Zip アーカイブでダウンロードします
|
||||||
:title_download_checked: "チェックしたものを Zip アーカイブでダウンロードします"
|
submit_email: 電子メール
|
||||||
:submit_email: "電子メール"
|
title_send_checked_by_email: チェックしたものを電子メールで送信します
|
||||||
:title_send_checked_by_email: "チェックしたものを電子メールで送信します"
|
link_user_preferences: あなたの DMSF プロジェクト設定
|
||||||
:link_user_preferences: "あなたの DMSF プロジェクト設定"
|
heading_send_documents_by_email: 電子メールによる文書の送信
|
||||||
:heading_send_documents_by_email: "電子メールによる文書の送信"
|
label_email_from: From
|
||||||
:label_email_from: "From"
|
label_email_to: To
|
||||||
:label_email_to: "To"
|
label_email_cc: CC
|
||||||
:label_email_cc: "CC"
|
label_email_subject: 表題
|
||||||
:label_email_subject: "表題"
|
label_email_documents: 文書
|
||||||
:label_email_documents: "文書"
|
label_email_body: 本文
|
||||||
:label_email_body: "本文"
|
label_email_send: 送信
|
||||||
:label_email_send: "送信"
|
title_notifications_active: 通知は有効です
|
||||||
:title_notifications_active: "通知は有効です"
|
label_file_size: ファイルサイズ
|
||||||
:label_file_size: "ファイルサイズ"
|
heading_file_upload: アップロード
|
||||||
:heading_file_upload: "アップロード"
|
note_uploaded_maximum_files_at_once: "最大 %{number} ファイルを一度にアップロードすることができます。"
|
||||||
:note_uploaded_maximum_files_at_once: "最大 %{number} ファイルを一度にアップロードすることができます。"
|
note_upload_files_greater_than_two_gb: 2GB より大きいファイルをアップロードするには 64bit 対応ブラウザが必要です。
|
||||||
:note_upload_files_greater_than_two_gb: "2GB より大きいファイルをアップロードするには 64bit 対応ブラウザが必要です。"
|
submit_upload_files: アップロード
|
||||||
:submit_upload_files: "アップロード"
|
heading_new_folder: 新規フォルダ
|
||||||
:heading_new_folder: "新規フォルダ"
|
label_title: タイトル
|
||||||
:label_title: "タイトル"
|
label_description: 説明
|
||||||
:label_description: "説明"
|
submit_save: 保存
|
||||||
:submit_save: "保存"
|
info_file_locked: ファイルをロックしました!
|
||||||
:info_file_locked: "ファイルをロックしました!"
|
label_notifications: 通知
|
||||||
:label_notifications: "通知"
|
select_option_default: 既定値
|
||||||
:select_option_default: "既定値"
|
select_option_deactivated: 無効
|
||||||
:select_option_deactivated: "無効"
|
select_option_activated: 有効
|
||||||
:select_option_activated: "有効"
|
title_save_preferences: 設定を保存します
|
||||||
:title_save_preferences: "設定を保存します"
|
heading_revisions: リビジョン
|
||||||
:heading_revisions: "リビジョン"
|
title_download: ダウンロードします
|
||||||
:title_download: "ダウンロードします"
|
title_delete_revision: リビジョンを削除します
|
||||||
:title_delete_revision: "リビジョンを削除します"
|
label_created: 作成者/日時
|
||||||
:label_created: "作成者/日時"
|
label_changed: 更新者/日時
|
||||||
:label_changed: "更新者/日時"
|
info_changed_by_user: "%{user} / %{changed}"
|
||||||
:info_changed_by_user: "%{user} / %{changed}"
|
label_filename: ファイル名
|
||||||
:label_filename: "ファイル名"
|
label_version: バージョン
|
||||||
:label_version: "バージョン"
|
label_workflow: ワークフロー
|
||||||
:label_workflow: "ワークフロー"
|
label_mime: Mime
|
||||||
:option_workflow_waiting_for_approval: "承認待ち"
|
label_size: サイズ
|
||||||
:option_workflow_approved: "承認済み"
|
label_comment: コメント
|
||||||
:option_workflow_none: "なし"
|
heading_new_revision: 新しいリビジョン
|
||||||
:label_mime: "Mime"
|
option_version_same: 変更なし
|
||||||
:label_size: "サイズ"
|
option_version_minor: マイナー
|
||||||
:label_comment: "コメント"
|
option_version_major: メジャー
|
||||||
:heading_new_revision: "新しいリビジョン"
|
label_new_content: 新規コンテンツ
|
||||||
:option_version_same: "変更なし"
|
label_maximum_files_upload: 最大ファイルアップロード数
|
||||||
:option_version_minor: "マイナー"
|
note_maximum_number_of_files_uploaded: 一度にアップロードできるファイル数の上限。0は無制限。
|
||||||
:option_version_major: "メジャー"
|
label_maximum_files_download: 最大ファイルダウンロード数
|
||||||
:label_new_content: "新規コンテンツ"
|
note_maximum_number_of_files_downloaded: Zip でダウンロードできる、または電子メールで送られるファイル数の上限。0は無制限。
|
||||||
:label_maximum_files_upload: "最大ファイルアップロード数"
|
label_file_storage_directory: ファイル保存フォルダ
|
||||||
:note_maximum_number_of_files_uploaded: "一度にアップロードできるファイル数の上限。0は無制限。"
|
label_index_database: インデックスデータベース
|
||||||
:label_maximum_files_download: "最大ファイルダウンロード数"
|
label_stemming_language: 語幹抽出する言語
|
||||||
:note_maximum_number_of_files_downloaded: "Zip でダウンロードできる、または電子メールで送られるファイル数の上限。0は無制限。"
|
note_possible_values: 取りうる値
|
||||||
:label_file_storage_directory: "ファイル保存フォルダ"
|
note_pass_none_to_disable_stemming: 語幹抽出を無効にするには 'none' を設定します。
|
||||||
:label_index_database: "インデックスデータベース"
|
label_stem_strategy: 抽出方針
|
||||||
:label_stemming_language: "語幹抽出する言語"
|
option_stem_none: Stem none (既定値)
|
||||||
:note_possible_values: "取りうる値"
|
option_stem_some: Stem some
|
||||||
:note_pass_none_to_disable_stemming: "語幹抽出を無効にするには 'none' を設定します。"
|
option_stem_all: Stem all
|
||||||
:label_stem_strategy: "抽出方針"
|
label_stemming_description: クエリ解釈ルーチンがどのように語幹抽出アルゴリズムを適用するかを制御します。既定値は、STEM_NONE です。設定可能な値は次のものです。
|
||||||
:option_stem_none: "Stem none (既定値)"
|
note_do_not_stem: 語幹抽出しません。
|
||||||
:option_stem_some: "Stem some"
|
note_stem_some: "大文字から始まる、特定の文字の後に続く、あるいは位置情報を必要とするオペレーターと共に使われる語を除くそれ以外の語の語幹を検索します。語幹抽出された語は、先頭に 'Z' が付きます。"
|
||||||
:option_stem_all: "Stem all"
|
note_stem_all: "すべての語の語幹を検索します。(注: 先頭に 'Z' は付きません。)"
|
||||||
:label_stemming_description: "クエリ解釈ルーチンがどのように語幹抽出アルゴリズムを適用するかを制御します。既定値は、STEM_NONE です。設定可能な値は次のものです。"
|
note_stemming_applied: 語幹抽出アルゴリズムは、確率を測る対象の位置にある語にしか適用できない (論理演算子の用語自体は語幹抽出されない) ことにご注意ください。
|
||||||
:note_do_not_stem: "語幹抽出しません。"
|
label_default_notifications: ファイル通知の既定値
|
||||||
:note_stem_some: "大文字から始まる、特定の文字の後に続く、あるいは位置情報を必要とするオペレーターと共に使われる語を除くそれ以外の語の語幹を検索します。語幹抽出された語は、先頭に 'Z' が付きます。"
|
heading_uploaded_files: アップロードされたファイル
|
||||||
:note_stem_all: "すべての語の語幹を検索します。(注: 先頭に 'Z' は付きません。)"
|
submit_commit: コミット
|
||||||
:note_stemming_applied: "語幹抽出アルゴリズムは、確率を測る対象の位置にある語にしか適用できない (論理演算子の用語自体は語幹抽出されない) ことにご注意ください。"
|
link_documents: 文書
|
||||||
:label_default_notifications: "ファイル通知の既定値"
|
permission_view_dmsf_folders: 文書の一覧
|
||||||
:heading_uploaded_files: "アップロードされたファイル"
|
permission_user_preferences: ユーザ設定
|
||||||
:submit_commit: "コミット"
|
permission_view_dmsf_files: 文書の表示
|
||||||
:link_documents: "文書"
|
permission_folder_manipulation: フォルダの操作
|
||||||
:permission_view_dmsf_folders: "文書の一覧"
|
permission_file_manipulation: ファイルの操作
|
||||||
:permission_user_preferences: "ユーザ設定"
|
permission_file_approval: ファイルの承認
|
||||||
:permission_view_dmsf_files: "文書の表示"
|
permission_force_file_unlock: ファイルの強制ロック解除
|
||||||
:permission_folder_manipulation: "フォルダの操作"
|
label_file: ファイル
|
||||||
:permission_file_manipulation: "ファイルの操作"
|
field_folder: フォルダ
|
||||||
:permission_file_approval: "ファイルの承認"
|
error_create_cycle_in_folder_dependency: フォルダの依存関係が循環しています
|
||||||
:permission_force_file_unlock: "ファイルの強制ロック解除"
|
error_contains_invalid_character: 無効な文字を含んでいます
|
||||||
:label_file: "ファイル"
|
error_file_commit_require_uploaded_file: コミットするには、まずファイルをアップロードしてください
|
||||||
:field_folder: "フォルダ"
|
warning_some_files_were_not_commited: "いくつかのファイルは、バリデーションエラーのためにコミットされませんでした: %{files}"
|
||||||
:error_create_cycle_in_folder_dependency: "フォルダの依存関係が循環しています"
|
error_user_has_not_right_delete_folder: ユーザにフォルダを削除する権限がありません
|
||||||
:error_contains_invalid_character: "無効な文字を含んでいます"
|
error_user_has_not_right_delete_file: ユーザにファイルを削除する権限がありません
|
||||||
:error_file_commit_require_uploaded_file: "コミットするには、まずファイルをアップロードしてください"
|
notice_entries_deleted: エントリーを削除しました
|
||||||
:warning_some_files_were_not_commited: "いくつかのファイルは、バリデーションエラーのためにコミットされませんでした: %{files}"
|
warning_some_entries_were_not_deleted: "いくつかのエントリーは削除されませんでした: %{entries}"
|
||||||
:error_user_has_not_right_delete_folder: "ユーザにフォルダを削除する権限がありません"
|
question_do_you_really_want_to_delete_entries: 本当にチェックしたエントリーを削除しますか?
|
||||||
:error_user_has_not_right_delete_file: "ユーザにファイルを削除する権限がありません"
|
title_delete_checked: チェックしたものを削除します
|
||||||
:notice_entries_deleted: "エントリーを削除しました"
|
title_number_of_files_in_directory: フォルダ内のファイル数
|
||||||
:warning_some_entries_were_not_deleted: "いくつかのエントリーは削除されませんでした: %{entries}"
|
title_filename_for_download: ファイル名はダウンロードまたは Zip アーカイブに使われます
|
||||||
:question_do_you_really_want_to_delete_entries: "本当にチェックしたエントリーを削除しますか?"
|
label_number_of_folders: フォルダ
|
||||||
:title_delete_checked: "チェックしたものを削除します"
|
label_number_of_documents: 文書
|
||||||
:title_number_of_files_in_directory: "フォルダ内のファイル数"
|
label_zip_names_encoding: Zip 名のエンコード
|
||||||
:title_filename_for_download: "ファイル名はダウンロードまたは Zip アーカイブに使われます"
|
note_zip_names_encoding_iconv: 文字コードを utf-8 から目的のエンコードに変換するのに Iconv が使われています
|
||||||
:label_number_of_folders: "フォルダ"
|
error_file_storage_directory_does_not_exist: ファイル保存フォルダが存在せず作ることもできません
|
||||||
:label_number_of_documents: "文書"
|
error_file_can_not_be_created: ファイルを保存フォルダに作ることができません
|
||||||
:label_zip_names_encoding: "Zip 名のエンコード"
|
error_wrong_zip_encoding: Zip エンコーディングが正しくありません
|
||||||
:note_zip_names_encoding_iconv: "文字コードを utf-8 から目的のエンコードに変換するのに Iconv が使われています"
|
warning_xapian_not_available: Xapian が利用できる状態になっていません
|
||||||
:error_file_storage_directory_does_not_exist: "ファイル保存フォルダが存在せず作ることもできません"
|
menu_dmsf: DMSF
|
||||||
:error_file_can_not_be_created: "ファイルを保存フォルダに作ることができません"
|
label_physical_file_delete: 物理ファイルの削除
|
||||||
:error_wrong_zip_encoding: "Zip エンコーディングが正しくありません"
|
user_is_not_project_member: あなたはプロジェクトのメンバーではありません
|
||||||
:warning_xapian_not_available: "Xapian が利用できる状態になっていません"
|
heading_access_downloads_emails: ダウンロード/電子メール
|
||||||
:menu_dmsf: "DMSF"
|
heading_access_first: 初回アクセス
|
||||||
:label_physical_file_delete: "物理ファイルの削除"
|
heading_access_last: 最終アクセス
|
||||||
:user_is_not_project_member: "あなたはプロジェクトのメンバーではありません"
|
label_dmsf_updated: DMSF updated
|
||||||
:heading_access_downloads_emails: "ダウンロード/電子メール"
|
title_total_size_of_all_files: このフォルダにある全ファイルの合計サイズ
|
||||||
:heading_access_first: "初回アクセス"
|
project_module_dmsf: DMSF
|
||||||
:heading_access_last: "最終アクセス"
|
warning_no_project_to_copy_file_to: ファイルをコピーするプロジェクトがありません
|
||||||
:label_dmsf_updated: "DMSF updated"
|
comment_copied_from: "%{source} からコピーしました"
|
||||||
:title_total_size_of_all_files: "このフォルダにある全ファイルの合計サイズ"
|
notice_file_copied: ファイルをコピーしました
|
||||||
:project_module_dmsf: "DMSF"
|
notice_file_moved: ファイルを移動しました
|
||||||
:warning_no_project_to_copy_file_to: "ファイルをコピーするプロジェクトがありません"
|
label_target_project: ターゲットプロジェクト
|
||||||
:comment_copied_from: "%{source} からコピーしました"
|
label_target_folder: ターゲットフォルダ
|
||||||
:notice_file_copied: "ファイルをコピーしました"
|
title_copy_or_move: コピー/移動
|
||||||
:notice_file_moved: "ファイルを移動しました"
|
label_dmsf_folder_plural: Dmsf フォルダ
|
||||||
:label_target_project: "ターゲットプロジェクト"
|
comment_moved_from: "%{source} から移動しました"
|
||||||
:label_target_folder: "ターゲットフォルダ"
|
error_target_folder_same: コピー/移動先のフォルダとプロジェクトが現在と同じです
|
||||||
:title_copy_or_move: "コピー/移動"
|
error_file_cannot_be_moved: ファイルを移動できません
|
||||||
:label_dmsf_folder_plural: "Dmsf フォルダ"
|
error_file_cannot_be_copied: ファイルをコピーできません
|
||||||
:comment_moved_from: "%{source} から移動しました"
|
warning_no_project_to_copy_folder_to: フォルダをコピーするプロジェクトがありません
|
||||||
:error_target_folder_same: "コピー/移動先のフォルダとプロジェクトが現在と同じです"
|
title_copy: コピー
|
||||||
:error_file_cannot_be_moved: "ファイルを移動できません"
|
error_folder_cannot_be_copied: フォルダをコピーできません
|
||||||
:error_file_cannot_be_copied: "ファイルをコピーできません"
|
notice_folder_copied: フォルダをコピーしました
|
||||||
:warning_no_project_to_copy_folder_to: "フォルダをコピーするプロジェクトがありません"
|
|
||||||
:title_copy: "コピー"
|
# Not translated
|
||||||
:error_folder_cannot_be_copied: "フォルダをコピーできません"
|
|
||||||
:notice_folder_copied: "フォルダをコピーしました"
|
|
||||||
|
|
||||||
# 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."
|
||||||
:error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
|
label_maximum_email_filesize: "Maximum email attachment size"
|
||||||
:note_maximum_email_filesize: "Limits maximum filesize that can be sent via email. 0 means unlimited. Number is in MB."
|
header_minimum_filesize: "File Error."
|
||||||
:label_maximum_email_filesize: "Maximum email attachment size"
|
error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
|
||||||
:header_minimum_filesize: "File Error."
|
parent_directory: "Parent Directory"
|
||||||
:error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
|
note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
|
||||||
:parent_directory: "Parent Directory"
|
label_webdav: "Webdav functionality"
|
||||||
:note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
|
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
|
||||||
: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"
|
warning_folder_already_locked: "This folder is already locked"
|
||||||
:notice_folder_locked: "The folder was successfully locked"
|
notice_folder_locked: "The folder was successfully locked"
|
||||||
:warning_folder_not_locked: "Unfortunately, the folder could not be locked"
|
warning_folder_not_locked: "Unfortunately, the folder could not be locked"
|
||||||
:notice_folder_unlocked: "The folder was successfully unlocked"
|
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"
|
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_folder_parent_locked: "Parent folder %{name} is locked"
|
||||||
:title_file_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_unlock_folder: "Unlock to allow changes for other members"
|
||||||
:title_lock_folder: "Lock to prevent changes for other members"
|
title_lock_folder: "Lock to prevent changes for other members"
|
||||||
|
|
||||||
:select_option_webdav_readonly: "Read-only"
|
select_option_webdav_readonly: "Read-only"
|
||||||
:select_option_webdav_readwrite: "Read/Write"
|
select_option_webdav_readwrite: "Read/Write"
|
||||||
:label_webdav_strategy: "Webdav strategy"
|
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."
|
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
|
# Russian translation for DMSF
|
||||||
ru:
|
ru:
|
||||||
:dmsf: "DMSF"
|
dmsf: DMSF
|
||||||
:label_dmsf_file_plural: "Файлы DMSF"
|
label_dmsf_file_plural: Файлы DMSF
|
||||||
:warning_no_entries_selected: "Файлы не выбраны"
|
warning_no_entries_selected: Файлы не выбраны
|
||||||
:error_email_to_must_be_entered: "Нужно указать, на какую почту отправить письмо"
|
error_email_to_must_be_entered: Нужно указать, на какую почту отправить письмо
|
||||||
:notice_email_sent: "Письмо отправлено"
|
warning_file_already_locked: Файл уже заблокирован
|
||||||
:warning_file_already_locked: "Файл уже заблокирован"
|
notice_file_locked: Файл заблокирован
|
||||||
:notice_file_locked: "Файл заблокирован"
|
warning_file_not_locked: Файл не заблокирован
|
||||||
:warning_file_not_locked: "Файл не заблокирован"
|
notice_file_unlocked: Файл разблокирован
|
||||||
:notice_file_unlocked: "Файл разблокирован"
|
error_only_user_that_locked_file_can_unlock_it: Только пользователь, который заблокировал файл, может его разблокировать
|
||||||
:error_only_user_that_locked_file_can_unlock_it: "Только пользователь, который заблокировал файл, может его разблокировать"
|
question_do_you_really_want_to_delete_this_entry: Вы действительно хотите удалить этот файл?
|
||||||
:question_do_you_really_want_to_delete_this_entry: "Вы действительно хотите удалить этот файл?"
|
error_max_files_exceeded: "Ограничение для %{number} одновременно загружаемых файлов превышено"
|
||||||
:error_max_files_exceeded: "Ограничение для %{number} одновременно загружаемых файлов превышено"
|
question_do_you_really_want_to_delete_this_revision: Вы действительно хотите удалить эту редакцию?
|
||||||
:question_do_you_really_want_to_delete_this_revision: "Вы действительно хотите удалить эту редакцию?"
|
error_entry_project_does_not_match_current_project: Проект, которому принадлежит файл, не соответсвует текущему проекту
|
||||||
:error_entry_project_does_not_match_current_project: "Проект, которому принадлежит файл, не соответсвует текущему проекту"
|
notice_folder_created: Папка создана
|
||||||
:notice_folder_created: "Папка создана"
|
error_folder_creation_failed: Папку не удалось создать
|
||||||
:error_folder_creation_failed: "Папку не удалось создать"
|
error_folder_title_must_be_entered: Нужно указать название папки
|
||||||
:error_folder_title_must_be_entered: "Нужно указать название папки"
|
notice_folder_deleted: Папка удалена
|
||||||
:notice_folder_deleted: "Папка удалена"
|
error_folder_is_not_empty: Папка не пустая
|
||||||
:error_folder_is_not_empty: "Папка не пустая"
|
error_folder_title_is_already_used: Название папки уже используется
|
||||||
:error_folder_title_is_already_used: "Название папки уже используется"
|
notice_folder_details_were_saved: Описание папки было сохранено
|
||||||
:notice_folder_details_were_saved: "Описание папки было сохранено"
|
error_file_is_locked: Файл заблокирован
|
||||||
:error_file_is_locked: "Файл заблокирован"
|
notice_file_deleted: Файл удален
|
||||||
:notice_file_deleted: "Файл удален"
|
error_at_least_one_revision_must_be_present: По крайней мере, одна редакция должна присутствовать
|
||||||
:error_at_least_one_revision_must_be_present: "По крайней мере, одна редакция должна присутствовать"
|
notice_revision_deleted: Редакция удалена
|
||||||
:notice_revision_deleted: "Редакция удалена"
|
warning_one_of_files_locked: Один из файлов заблокирован
|
||||||
:warning_one_of_files_locked: "Один из файлов заблокирован"
|
notice_file_unlocked: Файл разблокирован
|
||||||
:notice_file_unlocked: "Файл разблокирован"
|
notice_file_revision_created: Редакция файла создана
|
||||||
:notice_file_revision_created: "Редакция файла создана"
|
notice_your_preferences_were_saved: Ваши настройки были сохранены
|
||||||
:notice_your_preferences_were_saved: "Ваши настройки были сохранены"
|
warning_folder_notifications_already_activated: Уведомления папки уже включены
|
||||||
:warning_folder_notifications_already_activated: "Уведомления папки уже включены"
|
notice_folder_notifications_activated: Уведомления папки включены
|
||||||
:notice_folder_notifications_activated: "Уведомления папки включены"
|
warning_folder_notifications_already_deactivated: Уведомления папки уже отключены
|
||||||
:warning_folder_notifications_already_deactivated: "Уведомления папки уже отключены"
|
notice_folder_notifications_deactivated: Уведомления папки отключены
|
||||||
:notice_folder_notifications_deactivated: "Уведомления папки отключены"
|
warning_file_notifications_already_activated: Уведомления файла уже включены
|
||||||
:warning_file_notifications_already_activated: "Уведомления файла уже включены"
|
notice_file_notifications_activated: Уведомления файла включены
|
||||||
:notice_file_notifications_activated: "Уведомления файла включены"
|
warning_file_notifications_already_deactivated: Уведомления файла уже отключены
|
||||||
:warning_file_notifications_already_deactivated: "Уведомления файла уже отключены"
|
notice_file_notifications_deactivated: Уведомления файла отключены
|
||||||
:notice_file_notifications_deactivated: "Уведомления файла отключены"
|
link_details: "Подробности %{title}"
|
||||||
:link_details: "Подробности %{title}"
|
link_edit: "Редактировать %{title}"
|
||||||
:link_edit: "Редактировать %{title}"
|
submit_create: Создать
|
||||||
:submit_create: "Создать"
|
link_create_folder: Создать папку
|
||||||
:link_create_folder: "Создать папку"
|
title_check_uncheck_all_for_zip_download_or_email: Выбрать/Снять все документы для того, чтобы скачать или отправить их по электронной почте
|
||||||
:title_check_uncheck_all_for_zip_download_or_email: "Выбрать/Снять все документы для того, чтобы скачать или отправить их по электронной почте"
|
link_title: Название
|
||||||
:link_title: "Название"
|
link_size: Размер
|
||||||
:link_size: "Размер"
|
link_modified: Изменен
|
||||||
:link_modified: "Изменен"
|
link_ver: Версия
|
||||||
:link_ver: "Версия"
|
link_author: Автор
|
||||||
:link_author: "Автор"
|
title_check_for_zip_download_or_email: Выберите документы, которые нужно скачать или отправить их по электронной почте
|
||||||
:title_check_for_zip_download_or_email: "Выберите документы, которые нужно скачать или отправить их по электронной почте"
|
title_delete: Удалить
|
||||||
:title_delete: "Удалить"
|
title_notifications_active_deactivate: "Уведомления включены: Отключить"
|
||||||
:title_notifications_active_deactivate: "Уведомления включены: Отключить"
|
title_notifications_not_active_activate: "Уведомления не включены: Включить"
|
||||||
:title_notifications_not_active_activate: "Уведомления не включены: Включить"
|
title_title_version_version_download: "Скачать %{title} версию %{version}"
|
||||||
:title_title_version_version_download: "Скачать %{title} версию %{version}"
|
title_locked_by_user: "Заблокировано пользователем %{user}"
|
||||||
:title_locked_by_user: "Заблокировано пользователем %{user}"
|
title_locked_by_you: Заблокировано Вами
|
||||||
:title_locked_by_you: "Заблокировано Вами"
|
title_waiting_for_approval: Ожидается на утверждение
|
||||||
:title_waiting_for_approval: "Ожидается на утверждение"
|
title_approved: Утверждено
|
||||||
:title_approved: "Утверждено"
|
title_unlock_file: Разблокируйте файл, чтобы разрешить изменение его другими участниками
|
||||||
:title_unlock_file: "Разблокируйте файл, чтобы разрешить изменение его другими участниками"
|
title_lock_file: Заблокируйте файл, чтобы запретить его изменение другими участниками
|
||||||
:title_lock_file: "Заблокируйте файл, чтобы запретить его изменение другими участниками"
|
submit_download: Скачать
|
||||||
:submit_download: "Скачать"
|
title_download_checked: Скачать выбранные файлы
|
||||||
:title_download_checked: "Скачать выбранные файлы"
|
submit_email: Отправить письмо
|
||||||
:submit_email: "Отправить письмо"
|
title_send_checked_by_email: Отправить выбранные файлы по электронной почте
|
||||||
:title_send_checked_by_email: "Отправить выбранные файлы по электронной почте"
|
link_user_preferences: Ваши настройки DMSF проекта
|
||||||
:link_user_preferences: "Ваши настройки DMSF проекта"
|
heading_send_documents_by_email: Отправить документы по электронной почте
|
||||||
:heading_send_documents_by_email: "Отправить документы по электронной почте"
|
label_email_from: От
|
||||||
:label_email_from: "От"
|
label_email_to: Кому
|
||||||
:label_email_to: "Кому"
|
label_email_cc: CC
|
||||||
:label_email_cc: "CC"
|
label_email_subject: Тема
|
||||||
:label_email_subject: "Тема"
|
label_email_documents: Документы
|
||||||
:label_email_documents: "Документы"
|
label_email_body: Содержание
|
||||||
:label_email_body: "Содержание"
|
label_email_send: Отправить
|
||||||
:label_email_send: "Отправить"
|
title_notifications_active: Уведомления активны
|
||||||
:title_notifications_active: "Уведомления активны"
|
label_file_size: Размер файла
|
||||||
:label_file_size: "Размер файла"
|
heading_file_upload: Закачать
|
||||||
:heading_file_upload: "Закачать"
|
note_uploaded_maximum_files_at_once: "За один раз можно загрузить только %{number} файлов."
|
||||||
:note_uploaded_maximum_files_at_once: "За один раз можно загрузить только %{number} файлов."
|
note_upload_files_greater_than_two_gb: Чтобы загружать файлы размером больше чем 2 Гб у вас должен быть 64-битный браузер.
|
||||||
:note_upload_files_greater_than_two_gb: "Чтобы загружать файлы размером больше чем 2 Гб у вас должен быть 64-битный браузер."
|
submit_upload_files: Загрузить
|
||||||
:submit_upload_files: "Загрузить"
|
heading_new_folder: Новая папка
|
||||||
:heading_new_folder: "Новая папка"
|
label_title: Заголовок
|
||||||
:label_title: "Заголовок"
|
label_description: Описание
|
||||||
:label_description: "Описание"
|
submit_save: Сохранить
|
||||||
:submit_save: "Сохранить"
|
info_file_locked: Файл заблокирован!
|
||||||
:info_file_locked: "Файл заблокирован!"
|
label_notifications: Уведомления
|
||||||
:label_notifications: "Уведомления"
|
select_option_default: По умолчанию
|
||||||
:select_option_default: "По умолчанию"
|
select_option_deactivated: Отключено
|
||||||
:select_option_deactivated: "Отключено"
|
select_option_activated: Включено
|
||||||
:select_option_activated: "Включено"
|
title_save_preferences: Сохранить настройки
|
||||||
:title_save_preferences: "Сохранить настройки"
|
heading_revisions: Редакции
|
||||||
:heading_revisions: "Редакции"
|
title_download: Скачать
|
||||||
:title_download: "Скачать"
|
title_delete_revision: Удалить редакцию
|
||||||
:title_delete_revision: "Удалить редакцию"
|
label_created: Создан
|
||||||
:label_created: "Создан"
|
label_changed: Изменен
|
||||||
:label_changed: "Изменен"
|
info_changed_by_user: "%{changed} пользователем %{user}"
|
||||||
:info_changed_by_user: "%{changed} пользователем %{user}"
|
label_filename: Имя файла
|
||||||
:label_filename: "Имя файла"
|
label_version: Версия
|
||||||
:label_version: "Версия"
|
label_workflow: Поток работ
|
||||||
:label_workflow: "Поток работ"
|
label_mime: MIME-тип
|
||||||
:option_workflow_waiting_for_approval: "Ожидается на утверждение"
|
label_size: Размер
|
||||||
:option_workflow_approved: "Утверждено"
|
label_comment: Комментарий
|
||||||
:option_workflow_none: "Нет"
|
heading_new_revision: Новая редакция
|
||||||
:label_mime: "MIME-тип"
|
option_version_same: Та же версия
|
||||||
:label_size: "Размер"
|
option_version_minor: Незначительные изменения
|
||||||
:label_comment: "Комментарий"
|
option_version_major: Значительные изменения
|
||||||
:heading_new_revision: "Новая редакция"
|
label_new_content: Новое содержание
|
||||||
:option_version_same: "Та же версия"
|
label_maximum_files_upload: Максимальное количество файлов для загрузки
|
||||||
:option_version_minor: "Незначительные изменения"
|
note_maximum_number_of_files_uploaded: Ограничивает максимальное количество файлов, которое может быть загружено за один раз. 0 означает отсутствие ограничений.
|
||||||
:option_version_major: "Значительные изменения"
|
label_maximum_files_download: Максимальное количество файлов для скачивания
|
||||||
:label_new_content: "Новое содержание"
|
note_maximum_number_of_files_downloaded: Ограничивает максимальное количество файлов, которое может быть скачано или отправлено по почте за один раз. 0 означает отсутствие ограничений.
|
||||||
:label_maximum_files_upload: "Максимальное количество файлов для загрузки"
|
label_file_storage_directory: Каталог для хранения файлов
|
||||||
:note_maximum_number_of_files_uploaded: "Ограничивает максимальное количество файлов, которое может быть загружено за один раз. 0 означает отсутствие ограничений."
|
label_index_database: Индексная база данных
|
||||||
:label_maximum_files_download: "Максимальное количество файлов для скачивания"
|
label_stemming_language: Язык для стемминга
|
||||||
:note_maximum_number_of_files_downloaded: "Ограничивает максимальное количество файлов, которое может быть скачано или отправлено по почте за один раз. 0 означает отсутствие ограничений."
|
note_possible_values: Возможные значения
|
||||||
:label_file_storage_directory: "Каталог для хранения файлов"
|
note_pass_none_to_disable_stemming: "Укажите 'none' чтобы отключить стемминг"
|
||||||
:label_index_database: "Индексная база данных"
|
label_stem_strategy: Стратегия стемминга
|
||||||
:label_stemming_language: "Язык для стемминга"
|
option_stem_none: Нет (По умолчанию)
|
||||||
:note_possible_values: "Возможные значения"
|
option_stem_some: Некоторые
|
||||||
:note_pass_none_to_disable_stemming: "Укажите 'none' чтобы отключить стемминг"
|
option_stem_all: Все
|
||||||
:label_stem_strategy: "Стратегия стемминга"
|
label_stemming_description: Это контролирует как парсер запросов будет применять алгоритм стемминга. Значением по умолчанию есть STEM_NONE. Возможны следующие значения
|
||||||
:option_stem_none: "Нет (По умолчанию)"
|
note_do_not_stem: Не выполнять никакого стемминга."
|
||||||
:option_stem_some: "Некоторые"
|
note_stem_some: "Искать обусловленные формы терминов за исключением тех, которые начинаются с большой буквы, или следуют после определенных символов, или используются с операторами, которым нужна информация о позиции. Обусловленные термины имеют префикс 'Z'."
|
||||||
:option_stem_all: "Все"
|
note_stem_all: "Искать обусловленные формы всех слов (примечание: Префикс 'Z' не добавляется)."
|
||||||
:label_stemming_description: "Это контролирует как парсер запросов будет применять алгоритм стемминга. Значением по умолчанию есть STEM_NONE. Возможны следующие значения"
|
note_stemming_applied: Обратите внимание на то, что алгоритм стемминга применяется только к словам в вероятностных областях — логическое фильтрирует термины, которые никогда не обусловлены.
|
||||||
:note_do_not_stem: "Не выполнять никакого стемминга."
|
label_default_notifications: Значение по умолчанию для уведомлений
|
||||||
:note_stem_some: "Искать обусловленные формы терминов за исключением тех, которые начинаются с большой буквы, или следуют после определенных символов, или используются с операторами, которым нужна информация о позиции. Обусловленные термины имеют префикс 'Z'."
|
heading_uploaded_files: Загруженные файлы
|
||||||
:note_stem_all: "Искать обусловленные формы всех слов (примечание: Префикс 'Z' не добавляется)."
|
submit_commit: Зафиксировать
|
||||||
:note_stemming_applied: "Обратите внимание на то, что алгоритм стемминга применяется только к словам в вероятностных областях — логическое фильтрирует термины, которые никогда не обусловлены."
|
link_documents: Документы
|
||||||
:label_default_notifications: "Значение по умолчанию для уведомлений"
|
permission_view_dmsf_folders: Просматривать папки
|
||||||
:heading_uploaded_files: "Загруженные файлы"
|
permission_user_preferences: Настройки пользователя
|
||||||
:submit_commit: "Зафиксировать"
|
permission_view_dmsf_files: Просматривать документы
|
||||||
:link_documents: "Документы"
|
permission_folder_manipulation: Управление папками
|
||||||
:permission_view_dmsf_folders: "Просматривать папки"
|
permission_file_manipulation: Управление файлами
|
||||||
:permission_user_preferences: "Настройки пользователя"
|
permission_file_approval: Утверждение файлов
|
||||||
:permission_view_dmsf_files: "Просматривать документы"
|
permission_force_file_unlock: Разблокировка любых файлов
|
||||||
:permission_folder_manipulation: "Управление папками"
|
label_file: Файл
|
||||||
:permission_file_manipulation: "Управление файлами"
|
field_folder: Папка
|
||||||
:permission_file_approval: "Утверждение файлов"
|
error_create_cycle_in_folder_dependency: создать циклическую зависимость в папке
|
||||||
:permission_force_file_unlock: "Разблокировка любых файлов"
|
error_contains_invalid_character: содержит недопустимые символы
|
||||||
:label_file: "Файл"
|
error_file_commit_require_uploaded_file: Чтобы зафиксировать файл нужно для начала его загрузить
|
||||||
:field_folder: "Папка"
|
warning_some_files_were_not_commited: "Некоторые файлы не были зафиксированы через ошибки валидации: %{files}"
|
||||||
:error_create_cycle_in_folder_dependency: "создать циклическую зависимость в папке"
|
error_user_has_not_right_delete_folder: Пользователь не имеет нужных прав для удаления папки
|
||||||
:error_contains_invalid_character: "содержит недопустимые символы"
|
error_user_has_not_right_delete_file: Пользователь не имеет нужных прав для удаления файла
|
||||||
:error_file_commit_require_uploaded_file: "Чтобы зафиксировать файл нужно для начала его загрузить"
|
notice_entries_deleted: Файлы удалены
|
||||||
:warning_some_files_were_not_commited: "Некоторые файлы не были зафиксированы через ошибки валидации: %{files}"
|
warning_some_entries_were_not_deleted: "Некоторые файлы не были удалены: %{entries}"
|
||||||
:error_user_has_not_right_delete_folder: "Пользователь не имеет нужных прав для удаления папки"
|
question_do_you_really_want_to_delete_entries: Вы действительно хотите удалить выбранные файлы?
|
||||||
:error_user_has_not_right_delete_file: "Пользователь не имеет нужных прав для удаления файла"
|
title_delete_checked: Удалить выбранные документы
|
||||||
:notice_entries_deleted: "Файлы удалены"
|
title_number_of_files_in_directory: Количество файлов в директории
|
||||||
:warning_some_entries_were_not_deleted: "Некоторые файлы не были удалены: %{entries}"
|
title_filename_for_download: Имя файла для скачиваемого архива
|
||||||
:question_do_you_really_want_to_delete_entries: "Вы действительно хотите удалить выбранные файлы?"
|
label_number_of_folders: Папок
|
||||||
:title_delete_checked: "Удалить выбранные документы"
|
label_number_of_documents: Документов
|
||||||
:title_number_of_files_in_directory: "Количество файлов в директории"
|
label_zip_names_encoding: Кодировка zip имен
|
||||||
:title_filename_for_download: "Имя файла для скачиваемого архива"
|
note_zip_names_encoding_iconv: Iconv используется для преобразования с кодировки UTF-8 в целевую кодировку
|
||||||
:label_number_of_folders: "Папок"
|
error_file_storage_directory_does_not_exist: Каталог для хранения файлов не существует и не может быть создан
|
||||||
:label_number_of_documents: "Документов"
|
error_file_can_not_be_created: Файл не может быть создан в каталоге хранения файлов
|
||||||
:label_zip_names_encoding: "Кодировка zip имен"
|
error_wrong_zip_encoding: Неверная кодировка zip
|
||||||
:note_zip_names_encoding_iconv: "Iconv используется для преобразования с кодировки UTF-8 в целевую кодировку"
|
warning_xapian_not_available: Xapian не доступен
|
||||||
:error_file_storage_directory_does_not_exist: "Каталог для хранения файлов не существует и не может быть создан"
|
menu_dmsf: Документы
|
||||||
:error_file_can_not_be_created: "Файл не может быть создан в каталоге хранения файлов"
|
label_physical_file_delete: Физическое удаление файла
|
||||||
:error_wrong_zip_encoding: "Неверная кодировка zip"
|
user_is_not_project_member: Вы не являетесь участником проекта
|
||||||
:warning_xapian_not_available: "Xapian не доступен"
|
heading_access_downloads_emails: Скачивание / Отправка по почте
|
||||||
:menu_dmsf: "Документы"
|
heading_access_first: Первый
|
||||||
:label_physical_file_delete: "Физическое удаление файла"
|
heading_access_last: Последний
|
||||||
:user_is_not_project_member: "Вы не являетесь участником проекта"
|
label_dmsf_updated: Документ обновлен
|
||||||
:heading_access_downloads_emails: "Скачивание / Отправка по почте"
|
title_total_size_of_all_files: Общий размер всех файлов в этой папке
|
||||||
:heading_access_first: "Первый"
|
project_module_dmsf: DMSF
|
||||||
:heading_access_last: "Последний"
|
warning_no_project_to_copy_file_to: Не выбран проект, в который нужно скопировать файл
|
||||||
:label_dmsf_updated: "Документ обновлен"
|
comment_copied_from: "Скопировано из %{source}"
|
||||||
:title_total_size_of_all_files: "Общий размер всех файлов в этой папке"
|
notice_file_copied: Файл скопирован
|
||||||
:project_module_dmsf: "DMSF"
|
notice_file_moved: Файл перемещен
|
||||||
:warning_no_project_to_copy_file_to: "Не выбран проект, в который нужно скопировать файл"
|
label_target_project: Целевой проект
|
||||||
:comment_copied_from: "Скопировано из %{source}"
|
label_target_folder: Целевая папка
|
||||||
:notice_file_copied: "Файл скопирован"
|
title_copy_or_move: Копировать/Переместить
|
||||||
:notice_file_moved: "Файл перемещен"
|
label_dmsf_folder_plural: DMSF папки
|
||||||
:label_target_project: "Целевой проект"
|
comment_moved_from: "Перемещен из %{source}"
|
||||||
:label_target_folder: "Целевая папка"
|
error_target_folder_same: Целевая папка и проект совпадают с текущими
|
||||||
:title_copy_or_move: "Копировать/Переместить"
|
error_file_cannot_be_moved: Файл не может быть перемещен
|
||||||
:label_dmsf_folder_plural: "DMSF папки"
|
error_file_cannot_be_copied: Файл не может быть скопирован
|
||||||
:comment_moved_from: "Перемещен из %{source}"
|
warning_no_project_to_copy_folder_to: Не выбран проект, в который нужно скопировать папку
|
||||||
:error_target_folder_same: "Целевая папка и проект совпадают с текущими"
|
title_copy: Копировать
|
||||||
:error_file_cannot_be_moved: "Файл не может быть перемещен"
|
error_folder_cannot_be_copied: Папка не может быть скопирована
|
||||||
:error_file_cannot_be_copied: "Файл не может быть скопирован"
|
notice_folder_copied: Папка скопирована
|
||||||
:warning_no_project_to_copy_folder_to: "Не выбран проект, в который нужно скопировать папку"
|
|
||||||
:title_copy: "Копировать"
|
|
||||||
:error_folder_cannot_be_copied: "Папка не может быть скопирована"
|
|
||||||
:notice_folder_copied: "Папка скопирована"
|
|
||||||
|
|
||||||
:error_max_email_filesize_exceeded: "Вы превысили максимальный размер для отправки по электронной почте. (%{number} Мб)"
|
error_max_email_filesize_exceeded: "Вы превысили максимальный размер для отправки по электронной почте. (%{number} Мб)"
|
||||||
:note_maximum_email_filesize: "Ограничение максимального размера файла, который можно отправить по электронной почте. 0 означает отсутствие ограничений. Значение в мегабайтах."
|
note_maximum_email_filesize: "Ограничение максимального размера файла, который можно отправить по электронной почте. 0 означает отсутствие ограничений. Значение в мегабайтах."
|
||||||
:label_maximum_email_filesize: "Максимальный размер вложения в письме"
|
label_maximum_email_filesize: "Максимальный размер вложения в письме"
|
||||||
:header_minimum_filesize: "Ошибка файла."
|
header_minimum_filesize: "Ошибка файла."
|
||||||
:error_minimum_filesize: "Файла %{file} является пустым и он не будет прикреплен."
|
error_minimum_filesize: "Файла %{file} является пустым и он не будет прикреплен."
|
||||||
:parent_directory: "Родительская директория"
|
parent_directory: "Родительская директория"
|
||||||
:note_webdav: "После включения, WebDAV можно найти по адресу http://redmine-host/dmsf/webdav/"
|
note_webdav: "После включения, WebDAV можно найти по адресу http://redmine-host/dmsf/webdav/"
|
||||||
:label_webdav: "Функциональность WebDAV"
|
label_webdav: "Функциональность WebDAV"
|
||||||
:label_dmsf_plural: "Скопировать DMSF файлы и папки (%{files} файлов в %{folders} папках)"
|
label_dmsf_plural: "Скопировать DMSF файлы и папки (%{files} файлов в %{folders} папках)"
|
||||||
|
|
||||||
:warning_folder_already_locked: "Эта папка уже заблокирована"
|
warning_folder_already_locked: "Эта папка уже заблокирована"
|
||||||
:notice_folder_locked: "Папка была успешно заблокирована"
|
notice_folder_locked: "Папка была успешно заблокирована"
|
||||||
:warning_folder_not_locked: "К сожалению, папка не может быть заблокирована"
|
warning_folder_not_locked: "К сожалению, папка не может быть заблокирована"
|
||||||
:notice_folder_unlocked: "Папка была успешно разблокирована"
|
notice_folder_unlocked: "Папка была успешно разблокирована"
|
||||||
:error_only_user_that_locked_folder_can_unlock_it: "Только пользователь, который заблокировал папку, может её разблокировать"
|
error_only_user_that_locked_folder_can_unlock_it: "Только пользователь, который заблокировал папку, может её разблокировать"
|
||||||
:title_folder_parent_locked: "Родительская папка %{name} заблокирована"
|
title_folder_parent_locked: "Родительская папка %{name} заблокирована"
|
||||||
:title_file_parent_locked: "Родительская папка %{name} заблокирована"
|
title_file_parent_locked: "Родительская папка %{name} заблокирована"
|
||||||
:title_unlock_folder: "Разблокируйте папку, чтобы разрешить изменение её другими участниками"
|
title_unlock_folder: "Разблокируйте папку, чтобы разрешить изменение её другими участниками"
|
||||||
:title_lock_folder: "Заблокируйте папку, чтобы запретить ёё изменение другими участниками"
|
title_lock_folder: "Заблокируйте папку, чтобы запретить ёё изменение другими участниками"
|
||||||
|
|
||||||
:select_option_webdav_readonly: "Только для чтения"
|
select_option_webdav_readonly: "Только для чтения"
|
||||||
:select_option_webdav_readwrite: "Чтение/Запись"
|
select_option_webdav_readwrite: "Чтение/Запись"
|
||||||
:label_webdav_strategy: "Стратегия WebDAV"
|
label_webdav_strategy: "Стратегия WebDAV"
|
||||||
:note_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
|
# Chinese translation for DMSF
|
||||||
zh:
|
zh:
|
||||||
:dmsf: "文档管家"
|
dmsf: 文档管家
|
||||||
:label_dmsf_file_plural: "Dmsf files"
|
label_dmsf_file_plural: Dmsf files
|
||||||
:warning_no_entries_selected: "未选择任何条目"
|
warning_no_entries_selected: 未选择任何条目
|
||||||
:error_email_to_must_be_entered: "请输入电子邮件"
|
error_email_to_must_be_entered: 请输入电子邮件
|
||||||
:notice_email_sent: "邮件已发送"
|
warning_file_already_locked: 文件已经锁定
|
||||||
:warning_file_already_locked: "文件已经锁定"
|
notice_file_locked: 文件锁定
|
||||||
:notice_file_locked: "文件锁定"
|
warning_file_not_locked: 文件未锁定
|
||||||
:warning_file_not_locked: "文件未锁定"
|
notice_file_unlocked: 文件解锁
|
||||||
:notice_file_unlocked: "文件解锁"
|
error_only_user_that_locked_file_can_unlock_it: 只有锁定文件的用户才能解锁该文件
|
||||||
:error_only_user_that_locked_file_can_unlock_it: "只有锁定文件的用户才能解锁该文件"
|
question_do_you_really_want_to_delete_this_entry: 您确定删除此条目?
|
||||||
:question_do_you_really_want_to_delete_this_entry: "您确定删除此条目?"
|
error_max_files_exceeded: "超出同时下载%{number}个文件数量限制"
|
||||||
:error_max_files_exceeded: "超出同时下载%{number}个文件数量限制"
|
question_do_you_really_want_to_delete_this_revision: 您确定删除此修订版本吗?
|
||||||
:question_do_you_really_want_to_delete_this_revision: "您确定删除此修订版本吗?"
|
error_entry_project_does_not_match_current_project: 入口项目与当前项目不匹配
|
||||||
:error_entry_project_does_not_match_current_project: "入口项目与当前项目不匹配"
|
notice_folder_created: 文件夹创建完毕
|
||||||
:notice_folder_created: "文件夹创建完毕"
|
error_folder_creation_failed: 文件夹创建失败
|
||||||
:error_folder_creation_failed: "文件夹创建失败"
|
error_folder_title_must_be_entered: 请输入主题
|
||||||
:error_folder_title_must_be_entered: "请输入主题"
|
notice_folder_deleted: 文件夹已删除
|
||||||
:notice_folder_deleted: "文件夹已删除"
|
error_folder_is_not_empty: 非空文件夹
|
||||||
:error_folder_is_not_empty: "非空文件夹"
|
error_folder_title_is_already_used: 标题已经被使用
|
||||||
:error_folder_title_is_already_used: "标题已经被使用"
|
notice_folder_details_were_saved: 文件夹详细信息已保存
|
||||||
:notice_folder_details_were_saved: "文件夹详细信息已保存"
|
error_file_is_locked: 文件被锁定
|
||||||
:error_file_is_locked: "文件被锁定"
|
notice_file_deleted: 文件已删除
|
||||||
:notice_file_deleted: "文件已删除"
|
error_at_least_one_revision_must_be_present: 至少一个修订版本必须存在
|
||||||
:error_at_least_one_revision_must_be_present: "至少一个修订版本必须存在"
|
notice_revision_deleted: 修订版本已删除
|
||||||
:notice_revision_deleted: "修订版本已删除"
|
warning_one_of_files_locked: 其中一个文件被锁定
|
||||||
:warning_one_of_files_locked: "其中一个文件被锁定"
|
notice_file_unlocked: 文件解锁
|
||||||
:notice_file_unlocked: "文件解锁"
|
notice_file_revision_created: 文件修订版本已创建
|
||||||
:notice_file_revision_created: "文件修订版本已创建"
|
notice_your_preferences_were_saved: 您的偏好设定已保存
|
||||||
:notice_your_preferences_were_saved: "您的偏好设定已保存"
|
warning_folder_notifications_already_activated: 文件夹通知已激活
|
||||||
:warning_folder_notifications_already_activated: "文件夹通知已激活"
|
notice_folder_notifications_activated: 文件夹通知激活
|
||||||
:notice_folder_notifications_activated: "文件夹通知激活"
|
warning_folder_notifications_already_deactivated: 文件夹通知已注销
|
||||||
:warning_folder_notifications_already_deactivated: "文件夹通知已注销"
|
notice_folder_notifications_deactivated: 文件夹通知注销
|
||||||
:notice_folder_notifications_deactivated: "文件夹通知注销"
|
warning_file_notifications_already_activated: 文件通知已激活
|
||||||
:warning_file_notifications_already_activated: "文件通知已激活"
|
notice_file_notifications_activated: 文件通知激活
|
||||||
:notice_file_notifications_activated: "文件通知激活"
|
warning_file_notifications_already_deactivated: 文件通知已注销
|
||||||
:warning_file_notifications_already_deactivated: "文件通知已注销"
|
notice_file_notifications_deactivated: 文件通知注销
|
||||||
:notice_file_notifications_deactivated: "文件通知注销"
|
link_details: "%{title} 详情"
|
||||||
:link_details: "%{title} 详情"
|
link_edit: "编辑 %{title}"
|
||||||
:link_edit: "编辑 %{title}"
|
submit_create: 创建
|
||||||
:submit_create: "创建"
|
link_create_folder: 创建文件夹
|
||||||
:link_create_folder: "创建文件夹"
|
title_check_uncheck_all_for_zip_download_or_email: 全选/全不选(zip下载或邮件发送)
|
||||||
:title_check_uncheck_all_for_zip_download_or_email: "全选/全不选(zip下载或邮件发送)"
|
link_title: 主题
|
||||||
:link_title: "主题"
|
link_size: 大小
|
||||||
:link_size: "大小"
|
link_modified: 修改日期
|
||||||
:link_modified: "修改日期"
|
link_ver: 版本.
|
||||||
:link_ver: "版本."
|
link_author: 作者
|
||||||
:link_author: "作者"
|
title_check_for_zip_download_or_email: 选中用于Zip下载或邮件发送
|
||||||
:title_check_for_zip_download_or_email: "选中用于Zip下载或邮件发送"
|
title_delete: 删除
|
||||||
:title_delete: "删除"
|
title_notifications_active_deactivate: "通知有效:点击注销通知"
|
||||||
:title_notifications_active_deactivate: "通知有效:点击注销通知"
|
title_notifications_not_active_activate: "通知无效:点击激活通知"
|
||||||
:title_notifications_not_active_activate: "通知无效:点击激活通知"
|
title_title_version_version_download: " 下载‘%{title}’版本‘%{version}’"
|
||||||
:title_title_version_version_download: " 下载‘%{title}’版本‘%{version}’"
|
title_locked_by_user: "%{user}锁定"
|
||||||
:title_locked_by_user: "%{user}锁定"
|
title_locked_by_you: 您锁定
|
||||||
:title_locked_by_you: "您锁定"
|
title_waiting_for_approval: 待批准
|
||||||
:title_waiting_for_approval: "待批准"
|
title_approved: 已批准
|
||||||
:title_approved: "已批准"
|
title_unlock_file: 解除锁定允许其他成员修改
|
||||||
:title_unlock_file: "解除锁定允许其他成员修改"
|
title_lock_file: 锁定以防其他成员修改
|
||||||
:title_lock_file: "锁定以防其他成员修改"
|
submit_download: 下载
|
||||||
:submit_download: "下载"
|
title_download_checked: zip归档下载所选
|
||||||
:title_download_checked: "zip归档下载所选"
|
submit_email: 电子邮件
|
||||||
:submit_email: "电子邮件"
|
title_send_checked_by_email: 电子邮件发送所选
|
||||||
:title_send_checked_by_email: "电子邮件发送所选"
|
link_user_preferences: 您的文档管理系统项目偏好设定
|
||||||
:link_user_preferences: "您的文档管理系统项目偏好设定"
|
heading_send_documents_by_email: 电子邮件发送文档
|
||||||
:heading_send_documents_by_email: "电子邮件发送文档"
|
label_email_from: 发件人
|
||||||
:label_email_from: "发件人"
|
label_email_to: 收件人
|
||||||
:label_email_to: "收件人"
|
label_email_cc: 抄送
|
||||||
:label_email_cc: "抄送"
|
label_email_subject: 主题
|
||||||
:label_email_subject: "主题"
|
label_email_documents: 文档
|
||||||
:label_email_documents: "文档"
|
label_email_body: 正文
|
||||||
:label_email_body: "正文"
|
label_email_send: 发送
|
||||||
:label_email_send: "发送"
|
title_notifications_active: 通知处于有效状态
|
||||||
:title_notifications_active: "通知处于有效状态"
|
label_file_size: 文件大小
|
||||||
:label_file_size: "文件大小"
|
heading_file_upload: 上传
|
||||||
:heading_file_upload: "上传"
|
note_uploaded_maximum_files_at_once: "一次最多上传%{number}个文件."
|
||||||
:note_uploaded_maximum_files_at_once: "一次最多上传%{number}个文件."
|
note_upload_files_greater_than_two_gb: 为了上传大于2GB文件,您需要64位版本的浏览器.
|
||||||
:note_upload_files_greater_than_two_gb: "为了上传大于2GB文件,您需要64位版本的浏览器."
|
submit_upload_files: 上传
|
||||||
:submit_upload_files: "上传"
|
heading_new_folder: 新建文件夹
|
||||||
:heading_new_folder: "新建文件夹"
|
label_title: 标题
|
||||||
:label_title: "标题"
|
label_description: 描述
|
||||||
:label_description: "描述"
|
submit_save: 保存
|
||||||
:submit_save: "保存"
|
info_file_locked: 文件已被锁定!
|
||||||
:info_file_locked: "文件已被锁定!"
|
label_notifications: 通知功能
|
||||||
:label_notifications: "通知功能"
|
select_option_default: 默认
|
||||||
:select_option_default: "默认"
|
select_option_deactivated: 注销
|
||||||
:select_option_deactivated: "注销"
|
select_option_activated: 激活
|
||||||
:select_option_activated: "激活"
|
title_save_preferences: 保存偏好设定
|
||||||
:title_save_preferences: "保存偏好设定"
|
heading_revisions: 修订版本
|
||||||
:heading_revisions: "修订版本"
|
title_download: 下载
|
||||||
:title_download: "下载"
|
title_delete_revision: 删除此修订
|
||||||
:title_delete_revision: "删除此修订"
|
label_created: 创建
|
||||||
:label_created: "创建"
|
label_changed: 修改
|
||||||
:label_changed: "修改"
|
info_changed_by_user: "%{changed} by %{user}"
|
||||||
:info_changed_by_user: "%{changed} by %{user}"
|
label_filename: 文件名
|
||||||
:label_filename: "文件名"
|
label_version: 版本
|
||||||
:label_version: "版本"
|
label_workflow: 工作流程
|
||||||
:label_workflow: "工作流程"
|
label_mime: Mime
|
||||||
:option_workflow_waiting_for_approval: "待批准"
|
label_size: 大小
|
||||||
:option_workflow_approved: "已批准"
|
label_comment: 注释
|
||||||
:option_workflow_none: "无"
|
heading_new_revision: 新修订
|
||||||
:label_mime: "Mime"
|
option_version_same: Same
|
||||||
:label_size: "大小"
|
option_version_minor: Minor
|
||||||
:label_comment: "注释"
|
option_version_major: Major
|
||||||
:heading_new_revision: "新修订"
|
label_new_content: 新内容
|
||||||
:option_version_same: "Same"
|
label_maximum_files_upload: 最大上传文件数
|
||||||
:option_version_minor: "Minor"
|
note_maximum_number_of_files_uploaded: 一次上传的最大文件数量. 0表示无限制.
|
||||||
:option_version_major: "Major"
|
label_maximum_files_download: 最大下载文件数
|
||||||
:label_new_content: "新内容"
|
note_maximum_number_of_files_downloaded: 最大文件下载数量(zip或发送电子邮件方式). 0表示无限制.
|
||||||
:label_maximum_files_upload: "最大上传文件数"
|
label_file_storage_directory: 文件存储目录
|
||||||
:note_maximum_number_of_files_uploaded: "一次上传的最大文件数量. 0表示无限制."
|
label_index_database: Index database
|
||||||
:label_maximum_files_download: "最大下载文件数"
|
label_stemming_language: Stemming Language
|
||||||
:note_maximum_number_of_files_downloaded: "最大文件下载数量(zip或发送电子邮件方式). 0表示无限制."
|
note_possible_values: Possible values
|
||||||
:label_file_storage_directory: "文件存储目录"
|
note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
|
||||||
:label_index_database: "Index database"
|
label_stem_strategy: Stem strategy
|
||||||
:label_stemming_language: "Stemming Language"
|
option_stem_none: Stem none (default)
|
||||||
:note_possible_values: "Possible values"
|
option_stem_some: Stem some
|
||||||
:note_pass_none_to_disable_stemming: "pass 'none' to disable stemming"
|
option_stem_all: Stem all
|
||||||
:label_stem_strategy: "Stem strategy"
|
label_stemming_description: This controls how the query parser will apply the stemming algorithm. The default value is STEM_NONE. The possible values are
|
||||||
:option_stem_none: "Stem none (default)"
|
note_do_not_stem: "Don't perform any stemming."
|
||||||
:option_stem_some: "Stem some"
|
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'."
|
||||||
:option_stem_all: "Stem all"
|
note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
|
||||||
: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_stemming_applied: Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed.
|
||||||
:note_do_not_stem: "Don't perform any stemming."
|
label_default_notifications: 文件默认通知
|
||||||
: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'."
|
heading_uploaded_files: 上传文件
|
||||||
:note_stem_all: "Search for stemmed forms of all words (note: no 'Z' prefix is added)."
|
submit_commit: 提交
|
||||||
:note_stemming_applied: "Note that the stemming algorithm is only applied to words in probabilistic fields - boolean filter terms are never stemmed."
|
link_documents: 文档
|
||||||
:label_default_notifications: "文件默认通知"
|
permission_view_dmsf_folders: 浏览文档
|
||||||
:heading_uploaded_files: "上传文件"
|
permission_user_preferences: 用户偏好设定
|
||||||
:submit_commit: "提交"
|
permission_view_dmsf_files: 查看文档
|
||||||
:link_documents: "文档"
|
permission_folder_manipulation: 文件夹操作
|
||||||
:permission_view_dmsf_folders: "浏览文档"
|
permission_file_manipulation: 文件操作
|
||||||
:permission_user_preferences: "用户偏好设定"
|
permission_file_approval: 批准文件
|
||||||
:permission_view_dmsf_files: "查看文档"
|
permission_force_file_unlock: 强制文件解锁
|
||||||
:permission_folder_manipulation: "文件夹操作"
|
label_file: 文件
|
||||||
:permission_file_manipulation: "文件操作"
|
field_folder: 件夹
|
||||||
:permission_file_approval: "批准文件"
|
error_create_cycle_in_folder_dependency: create cycle in folder dependency
|
||||||
:permission_force_file_unlock: "强制文件解锁"
|
error_contains_invalid_character: 含有无效字符
|
||||||
:label_file: "文件"
|
error_file_commit_require_uploaded_file: 文件提交要求上传文件
|
||||||
:field_folder: "文件夹"
|
warning_some_files_were_not_commited: "某些文件因验证错误未能被提交: %{files}"
|
||||||
:error_create_cycle_in_folder_dependency: "create cycle in folder dependency"
|
error_user_has_not_right_delete_folder: 用户没有权限删除文件夹
|
||||||
:error_contains_invalid_character: "含有无效字符"
|
error_user_has_not_right_delete_file: 用户没有权限删除文件
|
||||||
:error_file_commit_require_uploaded_file: "文件提交要求上传文件"
|
notice_entries_deleted: 条目已删除
|
||||||
:warning_some_files_were_not_commited: "某些文件因验证错误未能被提交: %{files}"
|
warning_some_entries_were_not_deleted: "某些条目未被删除: %{entries}"
|
||||||
:error_user_has_not_right_delete_folder: "用户没有权限删除文件夹"
|
question_do_you_really_want_to_delete_entries: 您确定删除所选的条目吗?
|
||||||
:error_user_has_not_right_delete_file: "用户没有权限删除文件"
|
title_delete_checked: 删除选中
|
||||||
:notice_entries_deleted: "条目已删除"
|
title_number_of_files_in_directory: 目录总文件个数
|
||||||
:warning_some_entries_were_not_deleted: "某些条目未被删除: %{entries}"
|
title_filename_for_download: 用于下载或zip归档的文件名
|
||||||
:question_do_you_really_want_to_delete_entries: "您确定删除所选的条目吗?"
|
label_number_of_folders: Folders
|
||||||
:title_delete_checked: "删除选中"
|
label_number_of_documents: Documents
|
||||||
:title_number_of_files_in_directory: "目录总文件个数"
|
label_zip_names_encoding: Zip文件名编码
|
||||||
:title_filename_for_download: "用于下载或zip归档的文件名"
|
note_zip_names_encoding_iconv: Iconv is used for charset conversion from utf-8 to target encoding
|
||||||
:label_number_of_folders: "Folders"
|
error_file_storage_directory_does_not_exist: 文件存储目录不存在或不能创建
|
||||||
:label_number_of_documents: "Documents"
|
error_file_can_not_be_created: 文件未能在存储目录中创建
|
||||||
:label_zip_names_encoding: "Zip文件名编码"
|
error_wrong_zip_encoding: 不正确的Zip编码
|
||||||
:note_zip_names_encoding_iconv: "Iconv is used for charset conversion from utf-8 to target encoding"
|
warning_xapian_not_available: Xapian not available
|
||||||
:error_file_storage_directory_does_not_exist: "文件存储目录不存在或不能创建"
|
menu_dmsf: 文档管家
|
||||||
:error_file_can_not_be_created: "文件未能在存储目录中创建"
|
label_physical_file_delete: 物理删除文件
|
||||||
:error_wrong_zip_encoding: "不正确的Zip编码"
|
user_is_not_project_member: 您不是该项目的成员
|
||||||
:warning_xapian_not_available: "Xapian not available"
|
heading_access_downloads_emails: 存取次数
|
||||||
:menu_dmsf: "文档管家"
|
heading_access_first: 首次
|
||||||
:label_physical_file_delete: "物理删除文件"
|
heading_access_last: 末次
|
||||||
:user_is_not_project_member: "您不是该项目的成员"
|
label_dmsf_updated: DMSF updated
|
||||||
:heading_access_downloads_emails: "存取次数"
|
title_total_size_of_all_files: 文件夹所有文件总大小
|
||||||
:heading_access_first: "首次"
|
project_module_dmsf: 文档管家
|
||||||
: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"
|
warning_no_project_to_copy_file_to: No project to copy file to
|
||||||
:comment_copied_from: "Copied from %{source}"
|
comment_copied_from: "Copied from %{source}"
|
||||||
:notice_file_copied: "File copied"
|
notice_file_copied: File copied
|
||||||
:notice_file_moved: "File moved"
|
notice_file_moved: File moved
|
||||||
:label_target_project: "Target project"
|
label_target_project: Target project
|
||||||
:label_target_folder: "Target folder"
|
label_target_folder: Target folder
|
||||||
:title_copy_or_move: "Copy/Move"
|
title_copy_or_move: Copy/Move
|
||||||
:label_dmsf_folder_plural: "Dmsf folders"
|
label_dmsf_folder_plural: Dmsf folders
|
||||||
:comment_moved_from: "Moved from %{source}"
|
comment_moved_from: "Moved from %{source}"
|
||||||
:error_target_folder_same: "Target folder and project are the same as current"
|
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_moved: "File can't be moved"
|
||||||
:error_file_cannot_be_copied: "File can't be copied"
|
error_file_cannot_be_copied: "File can't be copied"
|
||||||
:warning_no_project_to_copy_folder_to: "No project to copy folder to"
|
warning_no_project_to_copy_folder_to: No project to copy folder to
|
||||||
:title_copy: "Copy"
|
title_copy: Copy
|
||||||
:error_folder_cannot_be_copied: "Folder can't be copied"
|
error_folder_cannot_be_copied: "Folder can't be copied"
|
||||||
:notice_folder_copied: "Folder copied"
|
notice_folder_copied: Folder copied
|
||||||
|
|
||||||
:error_max_email_filesize_exceeded: "You've exceeded the maximum filesize for sending via email. (%{number} MB)"
|
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."
|
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"
|
label_maximum_email_filesize: Maximum email attachment size
|
||||||
:header_minimum_filesize: "File Error."
|
header_minimum_filesize: File Error.
|
||||||
:error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
|
error_minimum_filesize: "The file %{file} is 0 bytes and will not be attached."
|
||||||
:parent_directory: "Parent Directory"
|
parent_directory: Parent Directory
|
||||||
:note_webdav: "Webdav once enabled can be found at http://.../dmsf/webdav/"
|
note_webdav: Webdav once enabled can be found at http://.../dmsf/webdav/
|
||||||
:label_webdav: "Webdav functionality"
|
label_webdav: Webdav functionality
|
||||||
:label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
|
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
|
||||||
|
|
||||||
:warning_folder_already_locked: "This folder is already locked"
|
warning_folder_already_locked: This folder is already locked
|
||||||
:notice_folder_locked: "The folder was successfully locked"
|
notice_folder_locked: The folder was successfully locked
|
||||||
:warning_folder_not_locked: "Unfortunately, the folder could not be locked"
|
warning_folder_not_locked: Unfortunately, the folder could not be locked
|
||||||
:notice_folder_unlocked: "The folder was successfully unlocked"
|
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"
|
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_folder_parent_locked: "Parent folder %{name} is locked"
|
||||||
:title_file_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_unlock_folder: Unlock to allow changes for other members
|
||||||
:title_lock_folder: "Lock to prevent changes for other members"
|
title_lock_folder: Lock to prevent changes for other members
|
||||||
|
|
||||||
:select_option_webdav_readonly: "Read-only"
|
select_option_webdav_readonly: Read-only
|
||||||
:select_option_webdav_readwrite: "Read/Write"
|
select_option_webdav_readwrite: Read/Write
|
||||||
:label_webdav_strategy: "Webdav strategy"
|
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."
|
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
|
# Just to keep backward compatibility of external url links
|
||||||
get '/dmsf_files/:id', :controller => 'dmsf_files', :action => 'show'
|
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
|
# files_copy controller
|
||||||
# /dmsf/files/<file id>/copy
|
# /dmsf/files/<file id>/copy
|
||||||
@ -97,4 +100,21 @@ RedmineApp::Application.routes.draw do
|
|||||||
:resource_class => RedmineDmsf::Webdav::ResourceProxy,
|
:resource_class => RedmineDmsf::Webdav::ResourceProxy,
|
||||||
:controller_class => RedmineDmsf::Webdav::Controller
|
:controller_class => RedmineDmsf::Webdav::Controller
|
||||||
), :at => "/dmsf/webdav"
|
), :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
|
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
|
||||||