devel-1.5.8 merged to the master

This commit is contained in:
Karel Picman 2016-10-21 11:17:11 +02:00
commit 08c21a4730
56 changed files with 1190 additions and 586 deletions

View File

@ -1,7 +1,25 @@
Changelog for Redmine DMSF
==========================
1.5.7 *2015-08-12*
1.5.8 *2016-10-21*
------------------
Drag&Drop for a new content in the new revision form
Tree view optimization for speed
Wiki macros revision: dmsfd X dmsfdesc
Support for deleting users
* Bug: #578 - A wrong title when uploading documents type: bug
* Bug: #574 - Macro {{dmsfd(xx)}} produce blank value type: bug
* Bug: #566 - HTML tags in the document description breaks UI type: bug
* Bug: #565 - Error 500 when a link to another folder is in the folder/project type: bug
* New: #562 - New step button text type: enhancement
* Bug: #561 - Wrong path in the document's details form type: bug
* Bug: #560 - Trying to send mail without recipient results in error 500 type: bug
* Bug: #558 - Deletion of a user type: bug
* New: #443 - Drag/drop feature for new content type: enhancement
1.5.7 *2016-08-12*
------------------
SQLite compatibility
@ -36,7 +54,7 @@ Changelog for Redmine DMSF
* New: #252 - nautilus-like folders-files list view
1.5.6 *2015-01-25*
1.5.6 *2016-01-25*
------------------
Uploading of large files (>2GB)

View File

@ -1,7 +1,7 @@
Redmine DMSF Plugin
===================
The current version of Redmine DMSF is **1.5.7** [![Build Status](https://api.travis-ci.org/danmunn/redmine_dmsf.png)](https://travis-ci.org/danmunn/redmine_dmsf)
The current version of Redmine DMSF is **1.5.8 devel** [![Build Status](https://api.travis-ci.org/danmunn/redmine_dmsf.png)](https://travis-ci.org/danmunn/redmine_dmsf)
Redmine DMSF is Document Management System Features plugin for Redmine issue tracking system; It is aimed to replace current Redmine's Documents module.
@ -107,9 +107,12 @@ Search will now automatically search DMSF content when a Redmine search is perfo
####Link to a document with id 17 with link text "File"
`{{dmsf(17, File)}}`
####Link to the description of a document with id 17
####Link to the details of a document with id 17
`{{dmsfd(17)}}`
####Link to the description of a document with id 17
`{{dmsfdesc(17)}}`
####Link to the preview of 5 lines from a document with id 17
`{{dmsft(17, 5)}}`
@ -164,7 +167,8 @@ In the file <redmine_root>/public/help/<language>/wiki_syntax_detailed.html, aft
<li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
<li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
<li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
<li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
<li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
<li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
<li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
<li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
<li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>

View File

@ -24,7 +24,7 @@ class DmsfController < ApplicationController
unloadable
before_filter :find_project
before_filter :authorize
before_filter :authorize, :except => [:expand_folder]
before_filter :find_folder, :except => [:new, :create, :edit_root, :save_root]
before_filter :find_parent, :only => [:new, :create]
before_filter :tree_view, :only => [:delete, :show]
@ -33,116 +33,22 @@ class DmsfController < ApplicationController
helper :all
def show
@folder_manipulation_allowed = User.current.allowed_to?(:folder_manipulation, @project)
@file_manipulation_allowed = User.current.allowed_to?(:file_manipulation, @project)
@file_delete_allowed = User.current.allowed_to?(:file_delete, @project)
@file_view_allowed = User.current.allowed_to?(:view_dmsf_files, @project)
@force_file_unlock_allowed = User.current.allowed_to?(:force_file_unlock, @project)
@workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', @project.id]).exists?
@file_approval_allowed = User.current.allowed_to?(:file_approval, @project)
tag = params[:custom_field_id].present? && params[:custom_value].present?
@folder = nil if tag
if @tree_view
@locked_for_user = false
else
unless @folder
if tag
@subfolders = []
DmsfFolder.where(:project_id => @project.id).visible.each do |f|
f.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@subfolders << f
break
end
end
end
end
@files = []
DmsfFile.where(:project_id => @project.id).visible.each do |f|
r = f.last_revision
if r
r.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@files << f
break
end
end
end
end
end
@dir_links = []
DmsfLink.where(:project_id => @project.id, :target_type => DmsfFolder.model_name.to_s).visible.each do |l|
l.target_folder.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@dir_links << l
break
end
end
end
end
@file_links = []
DmsfLink.where(:project_id => @project.id, :target_type => DmsfFile.model_name.to_s).visible.each do |l|
r = l.target_file.last_revision if l.target_file
if r
r.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@file_links << l
break
end
end
end
end
end
@url_links = []
DmsfLink.where(:project_id => @project.id, :target_type => 'DmsfUrl').visible.each do |l|
r = l.target_file.last_revision if l.target_file
if r
r.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@file_links << l
break
end
end
end
end
end
else
@subfolders = @project.dmsf_folders.visible
@files = @project.dmsf_files.visible
@dir_links = @project.folder_links.visible
@file_links = @project.file_links.visible
@url_links = @project.url_links.visible
end
@locked_for_user = false
else
if @folder.deleted?
render_404
return
end
@subfolders = @folder.dmsf_folders.visible
@files = @folder.dmsf_files.visible
@dir_links = @folder.folder_links.visible
@file_links = @folder.file_links.visible
@url_links = @folder.url_links.visible
@locked_for_user = @folder.locked_for_user?
end
def expand_folder
@tree_view = true
get_display_params
@idnt = params[:idnt].present? ? params[:idnt].to_i + 1 : 0
@pos = params[:pos].present? ? params[:pos].to_f : 0.0
respond_to do |format|
format.js { render :action => 'dmsf_rows' }
end
end
@ajax_upload_size = Setting.plugin_redmine_dmsf['dmsf_max_ajax_upload_filesize'].present? ? Setting.plugin_redmine_dmsf['dmsf_max_ajax_upload_filesize'] : 100
# Trash
@trash_visible = @folder_manipulation_allowed && @file_manipulation_allowed &&
@file_delete_allowed && !@locked_for_user && !@folder
@trash_enabled = DmsfFolder.deleted.where(:project_id => @project.id).any? ||
DmsfFile.deleted.where(:project_id => @project.id).any? ||
DmsfLink.deleted.where(:project_id => @project.id).any?
def show
get_display_params
if @folder && @folder.deleted?
render_404
return
end
respond_to do |format|
format.html {
render :layout => !request.xhr?
@ -242,14 +148,12 @@ class DmsfController < ApplicationController
def entries_email
if params[:email][:to].strip.blank?
flash.now[:error] = l(:error_email_to_must_be_entered)
render :action => 'email_entries'
return
flash[:error] = l(:error_email_to_must_be_entered)
else
DmsfMailer.send_documents(@project, User.current, params[:email]).deliver
File.delete(params[:email][:zipped_content])
flash[:notice] = l(:notice_email_sent, params[:email][:to])
end
DmsfMailer.send_documents(@project, User.current, params[:email]).deliver
File.delete(params[:email][:zipped_content])
flash[:notice] = l(:notice_email_sent, params[:email][:to])
redirect_to dmsf_folder_path(:id => @project, :folder_id => @folder)
end
@ -460,7 +364,8 @@ class DmsfController < ApplicationController
@email_params = {
:zipped_content => zipped_content,
:folders => selected_folders,
:files => selected_files
:files => selected_files,
:subject => "#{@project.name} #{l(:label_dmsf_file_plural).downcase}"
}
render :action => 'email_entries'
rescue Exception
@ -510,7 +415,7 @@ class DmsfController < ApplicationController
if selected_files && selected_files.is_a?(Array)
selected_files.each do |selected_file_id|
file = DmsfFile.visible.find_by_id selected_file_id
unless file && file.last_revision && File.exists?(file.last_revision.disk_file)
unless file && file.last_revision && File.exist?(file.last_revision.disk_file)
raise FileNotFound
end
unless (file.project == @project) || User.current.allowed_to?(:view_dmsf_files, file.project)
@ -651,4 +556,113 @@ class DmsfController < ApplicationController
copy
end
end
private
def get_display_params
@folder_manipulation_allowed = User.current.allowed_to?(:folder_manipulation, @project)
@file_manipulation_allowed = User.current.allowed_to?(:file_manipulation, @project)
@file_delete_allowed = User.current.allowed_to?(:file_delete, @project)
@file_view_allowed = User.current.allowed_to?(:view_dmsf_files, @project)
@force_file_unlock_allowed = User.current.allowed_to?(:force_file_unlock, @project)
@workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', @project.id]).exists?
@file_approval_allowed = User.current.allowed_to?(:file_approval, @project)
tag = params[:custom_field_id].present? && params[:custom_value].present?
@folder = nil if tag
if @tree_view
@locked_for_user = false
else
unless @folder
if tag
@subfolders = []
DmsfFolder.where(:project_id => @project.id).visible.each do |f|
f.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@subfolders << f
break
end
end
end
end
@files = []
DmsfFile.where(:project_id => @project.id).visible.each do |f|
r = f.last_revision
if r
r.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@files << f
break
end
end
end
end
end
@dir_links = []
DmsfLink.where(:project_id => @project.id, :target_type => DmsfFolder.model_name.to_s).visible.each do |l|
l.target_folder.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@dir_links << l
break
end
end
end
end
@file_links = []
DmsfLink.where(:project_id => @project.id, :target_type => DmsfFile.model_name.to_s).visible.each do |l|
r = l.target_file.last_revision if l.target_file
if r
r.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@file_links << l
break
end
end
end
end
end
@url_links = []
DmsfLink.where(:project_id => @project.id, :target_type => 'DmsfUrl').visible.each do |l|
r = l.target_file.last_revision if l.target_file
if r
r.custom_field_values.each do |v|
if v.custom_field_id == params[:custom_field_id].to_i
if v.custom_field.compare_values?(v.value, params[:custom_value])
@file_links << l
break
end
end
end
end
end
else
@subfolders = @project.dmsf_folders.visible
@files = @project.dmsf_files.visible
@dir_links = @project.folder_links.visible
@file_links = @project.file_links.visible
@url_links = @project.url_links.visible
end
@locked_for_user = false
else
@subfolders = @folder.dmsf_folders.visible
@files = @folder.dmsf_files.visible
@dir_links = @folder.folder_links.visible
@file_links = @folder.file_links.visible
@url_links = @folder.url_links.visible
@locked_for_user = @folder.locked_for_user?
end
end
@ajax_upload_size = Setting.plugin_redmine_dmsf['dmsf_max_ajax_upload_filesize'].present? ? Setting.plugin_redmine_dmsf['dmsf_max_ajax_upload_filesize'] : 100
# Trash
@trash_visible = @folder_manipulation_allowed && @file_manipulation_allowed &&
@file_delete_allowed && !@locked_for_user && !@folder
@trash_enabled = DmsfFolder.deleted.where(:project_id => @project.id).any? ||
DmsfFile.deleted.where(:project_id => @project.id).any? ||
DmsfLink.deleted.where(:project_id => @project.id).any?
end
end

View File

@ -135,7 +135,8 @@ class DmsfFilesController < ApplicationController
else
revision.increase_version(version)
end
file_upload = params[:file_upload]
#file_upload = params[:file_upload]
file_upload = params[:attachments]['1'] if params[:attachments].present?
unless file_upload
revision.size = last_revision.size
revision.disk_filename = last_revision.disk_filename
@ -146,10 +147,11 @@ class DmsfFilesController < ApplicationController
revision.digest = last_revision.digest
end
else
upload = DmsfUpload.create_from_uploaded_attachment(@project, @folder, file_upload)
revision.size = file_upload.size
revision.disk_filename = revision.new_storage_filename
revision.mime_type = Redmine::MimeType.of(file_upload.original_filename)
revision.digest = DmsfFileRevision.create_digest file_upload.path
revision.mime_type = upload.mime_type
revision.digest = DmsfFileRevision.create_digest upload.disk_file
end
# Custom fields
@ -163,8 +165,8 @@ class DmsfFilesController < ApplicationController
if revision.save
revision.assign_workflow(params[:dmsf_workflow_id])
if file_upload
revision.copy_file_content(file_upload)
if upload
FileUtils.mv(upload.disk_file, revision.disk_file)
end
if @file.locked? && !@file.locks.empty?
begin

View File

@ -56,21 +56,28 @@ module DmsfHelper
def self.filetype_css(filename)
extension = File.extname(filename)
extension = extension[1, extension.length-1]
if File.exists?("#{File.dirname(__FILE__)}/../../assets/images/filetypes/#{extension}.png")
return "filetype-#{extension}";
if File.exist?("#{File.dirname(__FILE__)}/../../assets/images/filetypes/#{extension}.png")
"filetype-#{extension}";
else
return Redmine::MimeType.css_class_of(filename)
Redmine::MimeType.css_class_of(filename)
end
end
def plugin_asset_path(plugin, asset_type, source)
return "#{Redmine::Utils.relative_url_root}/plugin_assets/#{plugin}/#{asset_type}/#{source}"
"#{Redmine::Utils.relative_url_root}/plugin_assets/#{plugin}/#{asset_type}/#{source}"
end
def self.dmsf_tree(parent, obj, tree = nil)
tree ||= []
def json_url
if I18n.locale && !I18n.locale.to_s.match(/^en.*/)
"jquery.dataTables/#{I18n.locale.to_s.downcase}.json"
else
'jquery.dataTables/en.json'
end
end
def self.all_children_sorted(parent, pos, ident)
# Folders && files && links
nodes = obj.dmsf_folders.visible + obj.dmsf_links.visible + obj.dmsf_files.visible
nodes = parent.dmsf_folders.visible + parent.dmsf_links.visible + parent.dmsf_files.visible
# Alphabetical and type sort
nodes.sort! do |x, y|
if ((x.is_a?(DmsfFolder) || (x.is_a?(DmsfLink) && x.is_folder?)) &&
@ -83,22 +90,17 @@ module DmsfHelper
x.title.downcase <=> y.title.downcase
end
end
# Create the tree
nodes.each do |node|
local_parent = node.dmsf_folder
level = 0
while local_parent && (local_parent != parent)
level += 1
local_parent = local_parent.dmsf_folder
# Calculate position
step = 1.0 / (10 ** ident)
tree = []
i = 0
nodes.each do |x|
if x.is_a?(DmsfFolder) || (x.is_a?(DmsfLink) && x.is_folder?)
i += 1
tree << [x, pos + (step * i)]
else
tree << [x, pos + step + i]
end
position = tree.size
# Files of the same parent and on the same level have the same position
if position > 0 && tree[-1][1] == level &&
(tree[-1][0].is_a?(DmsfFile) || (tree[-1][0].is_a?(DmsfLink) && tree[-1][0].is_file?))
position = tree[-1][2]
end
tree << [node, level, position]
self.dmsf_tree(parent, node, tree) if node.is_a?(DmsfFolder)
end
tree
end

View File

@ -106,7 +106,7 @@ class DmsfFile < ActiveRecord::Base
# better interact from test-cases etc
def self.storage_path=(path)
begin
FileUtils.mkdir_p(path) unless File.exists?(path)
FileUtils.mkdir_p(path) unless File.exist?(path)
rescue Exception => e
Rails.logger.error e.message
end

View File

@ -22,6 +22,7 @@
require 'digest/md5'
class DmsfFileRevision < ActiveRecord::Base
unloadable
belongs_to :dmsf_file
belongs_to :source_revision, :class_name => 'DmsfFileRevision', :foreign_key => 'source_dmsf_file_revision_id'
@ -136,7 +137,7 @@ class DmsfFileRevision < ActiveRecord::Base
project_base = project.identifier.gsub(/[^\w\.\-]/,'_')
storage_base << "/p_#{project_base}"
end
FileUtils.mkdir_p(storage_base) unless File.exists?(storage_base)
FileUtils.mkdir_p(storage_base) unless File.exist?(storage_base)
"#{storage_base}/#{self.disk_filename}"
end
@ -288,10 +289,10 @@ class DmsfFileRevision < ActiveRecord::Base
text = ''
text = self.description if self.description.present?
if self.comment.present?
text += '&#xA;' if text.present?
text += ' / ' if text.present?
text += self.comment
end
text.html_safe
ActionView::Base.full_sanitizer.sanitize(text)
end
end

View File

@ -110,7 +110,7 @@
<% end %>
<% end %>
</td>
<td class="dmsf_invisible"><%= position %></td>
<td id="dmsf_position" class="dmsf_invisible"><%= position %></td>
<td class="dmsf_invisible">0</td>
<td class="dmsf_invisible"><%= subfolder.modified.to_i if subfolder %></td>
<td class="dmsf_invisible">0</td>

View File

@ -23,7 +23,7 @@
<td class="dmsf_checkbox"><%= check_box_tag(name, id, false,
:title => l(:title_check_for_restore_or_delete), :id => "subfolder_#{id}") %></td>
<td class="dmsf_title">
<%= content_tag(:span, h(title),
<%= content_tag(:span, h(title),
:title => subfolder ? h(subfolder.description) : nil,
:class => 'icon icon-folder') %>
<% if link %>
@ -64,4 +64,4 @@
<td class="dmsf_invisible">0</td>
<td class="dmsf_invisible">0</td>
<td class="dmsf_invisible"><%= subfolder.modified.to_i if subfolder %></td>
<td class="dmsf_invisible">0</td>
<td class="dmsf_invisible">0</td>

View File

@ -0,0 +1,96 @@
<% parent = @folder ? @folder : @project %>
<% @idnt = 0 unless @idnt %>
<% @pos = 0.0 unless @pos %>
<% DmsfHelper.all_children_sorted(parent, @pos, @idnt).each do |obj, position| %>
<% classes = "dmsf_tree idnt-#{@idnt}" %>
<% classes += " dmsf-#{cycle('odd', 'even')}" %>
<% if obj.is_a?(DmsfFolder) && ((obj.dmsf_folders.visible.count > 0) || (obj.dmsf_files.visible.count > 0) || (obj.dmsf_links.visible.count > 0)) %>
<% classes += ' idnt dmsf_collapsed dmsf-not-loaded' %>
<% id = "id='#{obj.id}span'".html_safe %>
<% onclick = "onclick=\"dmsfToggle('#{obj.id}','#{obj.id}span','#{escape_javascript(expand_folder_dmsf_path)}')\"" %>
<% else %>
<% classes += ' dmsf_child' %>
<% onclick = '' %>
<% end %>
<% parent = obj.dmsf_folder %>
<% while parent %>
<% classes += " #{parent.id}" %>
<% parent = parent.dmsf_folder %>
<% end %>
<% if obj.is_a? DmsfFolder %>
<tr <%= id %> class="dir <%= classes %>">
<%= render(:partial => 'dir',
:locals => {
:project => @project,
:subfolder => obj,
:link => nil,
:id => obj.id,
:name => 'subfolders[]',
:title => obj.title,
:onclick => onclick,
:position => position}) %>
</tr>
<% elsif obj.is_a?(DmsfLink) && (obj.target_type == 'DmsfFolder') %>
<% unless obj.target_project %>
<% Rails.logger.error "Error: dmsf_link id #{obj.id} has no target!" %>
<% next %>
<% end %>
<tr <%= id %> class="dmsf_gray <%= classes %>">
<%= render(:partial => 'dir',
:locals => {
:project => obj.target_project,
:subfolder => obj.target_folder,
:link => obj,
:id => obj.id,
:name => 'dir_links[]',
:title => obj.name,
:onclick => onclick,
:position => position}) %>
</tr>
<% elsif obj.is_a?(DmsfFile) %>
<% unless obj.last_revision %>
<% Rails.logger.error "Error: dmsf_file id #{obj.id} has no revision!" %>
<% next %>
<% end %>
<tr <%= id %> class="file <%= classes %>">
<%= render(:partial => 'file', :locals => {
:project => @project,
:file => obj,
:link => nil,
:id => obj.id,
:name => 'files[]',
:title => obj.title,
:onclick => onclick,
:position => position}) %>
</tr>
<% elsif obj.is_a?(DmsfLink) && (obj.target_type == 'DmsfFile') %>
<% unless obj.target_file.last_revision %>
<% Rails.logger.error "Error: dmsf_file id #{obj.target_id} has no revision!" %>
<% next %>
<% end %>
<tr <%= id %> class="dmsf_gray <%= classes %>">
<%= render(:partial => 'file', :locals => {
:project => obj.target_project,
:file => obj.target_file,
:link => obj,
:id => obj.id,
:name => 'file_links[]',
:title => obj.name,
:onclick => onclick,
:position => position}) %>
</tr>
<% elsif obj.is_a?(DmsfLink) && (obj.target_type == 'DmsfUrl') %>
<tr <%= id %> class="dmsf_gray <%= classes %>">
<%= render(:partial => 'url', :locals => {
:project => obj.target_project,
:file => obj.target_file,
:link => obj,
:id => obj.id,
:name => 'file_links[]',
:title => obj.name,
:onclick => onclick,
:position => position}) %>
</tr>
<% end %>
<% end %>

View File

@ -26,17 +26,16 @@
:title => l(:title_check_for_zip_download_or_email), :id => "file_#{id}") %></td>
<td class="dmsf_title">
<% if @tree_view %>
<span class='dmsf_expander' <%= onclick.html_safe %>></span>
<span class='dmsf_expander'></span>
<% end %>
<% file_view_url = url_for({:controller => :dmsf_files, :action => 'view', :id => file}) %>
<%= link_to(h(title),
file_view_url,
:target => '_blank',
:class => "icon icon-file #{DmsfHelper.filetype_css(file.name)}",
:title => file.last_revision.try(:tooltip),
:title => h(file.last_revision.try(:tooltip)),
'data-downloadurl' => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_view_url}") %>
<div class="dmsf_filename" title="<%= l(:title_filename_for_download)%>"><%= h(link ? link.path : file.display_name) %></div>
<%= '</span>'.html_safe if @tree_view %>
</td>
<td class="dmsf_size"><%= number_to_human_size(file.last_revision.size) %></td>
<td class="dmsf_modified">

View File

@ -29,115 +29,17 @@
<th class ="dmsf_th"><%= l(:link_title) %></th>
<th class ="dmsf_th"><%= l(:link_size) %></th>
<th class ="dmsf_th"><%= l(:link_modified) %></th>
<th title="<%= l(:label_dmsf_version) %>" class ="dmsf_th"><%= l(:link_ver) %></th>
<th title="<%= l(:label_dmsf_version) %>" class="dmsf_th"><%= l(:link_ver) %></th>
<th class ="dmsf_th"><%= l(:link_workflow) %></th>
<th class ="dmsf_th"><%= l(:link_author) %></th>
<th class ="dmsf_th"></th>
<th class="dmsf_invisible"></th>
<th class="dmsf_invisible"></th>
<th class="dmsf_invisible"></th>
<th class="dmsf_invisible"></th>
<th class ="dmsf_th"><%# controls %></th>
<th class="dmsf_invisible"><%# position %></th>
<th class="dmsf_invisible"><%# size %></th>
<th class="dmsf_invisible"><%# updated %></th>
<th class="dmsf_invisible"><%# revision %></th>
</tr>
</thead>
<tbody>
<% parent = @folder ? @folder : @project %>
<% DmsfHelper.dmsf_tree(parent, parent).each do |obj, level, position| %>
<% classes = "dmsf_tree idnt-#{level}" %>
<% if obj.is_a?(DmsfFolder) && ((obj.dmsf_folders.visible.count > 0) || (obj.dmsf_files.visible.count > 0) || (obj.dmsf_links.visible.count > 0)) %>
<% classes += ' idnt dmsf_collapsed' %>
<% id = "id='#{obj.id}span'".html_safe %>
<% onclick = "onclick=\"dmsf_toggle('#{obj.id}','#{obj.id}span')\"" %>
<% else %>
<% classes += ' dmsf_child' %>
<% onclick = '' %>
<% end %>
<%if obj.dmsf_folder && obj.dmsf_folder != @folder %>
<% classes += ' dmsf_hidden' %>
<% else %>
<%# Force odd/even backgroung style for visible items %>
<% classes += " dmsf_#{cycle('odd', 'even')}" %>
<% end %>
<% parent = obj.dmsf_folder %>
<% while parent %>
<% classes += " #{parent.id}" %>
<% parent = parent.dmsf_folder %>
<% end %>
<% if obj.is_a? DmsfFolder %>
<tr <%= id %> class="dir <%= classes %>">
<%= render(:partial => 'dir',
:locals => {
:project => @project,
:subfolder => obj,
:link => nil,
:id => obj.id,
:name => 'subfolders[]',
:title => obj.title,
:onclick => onclick,
:position => position}) %>
</tr>
<% elsif obj.is_a?(DmsfLink) && (obj.target_type == 'DmsfFolder') %>
<% unless obj.target_project %>
<% Rails.logger.error "Error: dmsf_link id #{obj.id} has no target!" %>
<% next %>
<% end %>
<tr <%= id %> class="dmsf_gray <%= classes %>">
<%= render(:partial => 'dir',
:locals => {
:project => obj.target_project,
:subfolder => obj.target_folder,
:link => obj,
:id => obj.id,
:name => 'dir_links[]',
:title => obj.name,
:onclick => onclick,
:position => position}) %>
</tr>
<% elsif obj.is_a?(DmsfFile) %>
<% unless obj.last_revision %>
<% Rails.logger.error "Error: dmsf_file id #{obj.id} has no revision!" %>
<% next %>
<% end %>
<tr <%= id %> class="file <%= classes %>">
<%= render(:partial => 'file', :locals => {
:project => @project,
:file => obj,
:link => nil,
:id => obj.id,
:name => 'files[]',
:title => obj.title,
:onclick => onclick,
:position => position}) %>
</tr>
<% elsif obj.is_a?(DmsfLink) && (obj.target_type == 'DmsfFile') %>
<% unless obj.target_file.last_revision %>
<% Rails.logger.error "Error: dmsf_file id #{obj.target_id} has no revision!" %>
<% next %>
<% end %>
<tr <%= id %> class="dmsf_gray <%= classes %>">
<%= render(:partial => 'file', :locals => {
:project => obj.target_project,
:file => obj.target_file,
:link => obj,
:id => obj.id,
:name => 'file_links[]',
:title => obj.name,
:onclick => onclick,
:position => position}) %>
</tr>
<% elsif obj.is_a?(DmsfLink) && (obj.target_type == 'DmsfUrl') %>
<tr <%= id %> class="dmsf_gray <%= classes %>">
<%= render(:partial => 'url', :locals => {
:project => obj.target_project,
:file => obj.target_file,
:link => obj,
:id => obj.id,
:name => 'file_links[]',
:title => obj.name,
:onclick => onclick,
:position => position}) %>
</tr>
<% end %>
<% end %>
<%= render(:partial => 'dmsf/dmsf_rows') %>
</tbody>
</table>

View File

@ -0,0 +1,39 @@
// Store DMSF controls
var dmsfButtons = $('#dmsf_buttons')[0].outerHTML
var dmsfTag = $('#dmsf_tag')[0].outerHTML
var browserInfo = $('#browser_info').text();
// Destroy the original dataTable
$("#browser").dataTable().fnDestroy();
// Add rows
$('#<%= params[:row_id] %>').after('<%= escape_javascript(render(:partial => 'dmsf/dmsf_rows')) %>');
// Reinitialize the dataTable
$('#browser').dataTable({
'bJQueryUI': true,
'oLanguage': {
'sUrl': "<%= plugin_asset_path(:redmine_dmsf, 'javascripts', json_url) %>"
},
'bAutoWidth': false,
'bPaginate': false,
'aaSorting': [[1, 'asc']],
'aaSortingFixed': [[ 8, 'asc']],
'aoColumnDefs': [
{ 'bSearchable': false, 'aTargets': [0, 7, 8, 9, 10, 11] },
{ 'bSortable': false, 'aTargets': [0, 7] },
{ 'iDataSort': 9, 'aTargets': [ 2 ] },
{ 'iDataSort': 10, 'aTargets': [ 3 ] },
{ 'iDataSort': 11, 'aTargets': [ 4 ] }
],
'fnInitComplete': function() {
$(dmsfButtons).prependTo($('#browser_wrapper div.fg-toolbar')[0]);
$(dmsfTag).prependTo($('#browser_wrapper div.fg-toolbar')[0]);
},
'fnInfoCallback': function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
return browserInfo;
}
});
// Hot fix
$('#browser').attr('style', 'width: 100%');

View File

@ -39,15 +39,15 @@
</p>
<p>
<%= label_tag('email[to]', l(:label_email_to)) %>
<%= text_field_tag('email[to]', @email_params['to'], :style => 'width: 90%;') %>
<%= text_field_tag('email[to]', @email_params[:to], :style => 'width: 90%;', :required => true) %>
</p>
<p>
<%= label_tag('email[cc]', l(:label_email_cc)) %>
<%= text_field_tag('email[cc]', @email_params['cc'], :style => 'width: 90%;') %>
<%= text_field_tag('email[cc]', @email_params[:cc], :style => 'width: 90%;') %>
</p>
<p>
<%= label_tag('email[subject]', l(:label_email_subject)) %>
<%= text_field_tag('email[subject]', @email_params['subject'], :style => 'width: 90%;') %>
<%= text_field_tag('email[subject]', @email_params[:subject], :style => 'width: 90%;') %>
</p>
<p>
<%= label_tag('', l(:label_email_documents)) %>

View File

@ -85,7 +85,7 @@
<%= form_tag({:action => :entries_operation, :id => @project, :folder_id => @folder}, :method => :post,
:class => 'dmsf_entries', :id => 'entries_form') do %>
<%= hidden_field_tag('action') %>
<div class="dmsf_controls" style="float: left">
<div id="dmsf_buttons" class="dmsf_controls" style="float: left">
<%= submit_tag(l(:button_download), :title => l(:title_download_checked), :name => 'download_entries') if @file_view_allowed %>
<%= submit_tag(l(:field_mail), :title => l(:title_send_checked_by_email), :name => 'email_entries') if (@file_view_allowed && User.current.allowed_to?(:email_documents, @project)) %>
<% if @file_delete_allowed%>
@ -94,7 +94,7 @@
</div>
<% values = @folder ? @folder.custom_field_values : @parent ? @parent.custom_field_values : DmsfFolder.new(:project => @project).custom_field_values %>
<% unless values.empty? %>
<div class="dmsf_controls" style="float: right">
<div id="dmsf_tag" class="dmsf_controls" style="float: right">
<%= custom_field_tag_with_label(
:dmsf_folder,
CustomValue.new(:custom_field_id => params[:custom_field_id].present? ? params[:custom_field_id] : values.first.custom_field_id, :value => params[:custom_value])) %>
@ -127,11 +127,6 @@
});
</script>
<%
sUrl = 'jquery.dataTables/en.json'
sUrl = "jquery.dataTables/#{I18n.locale.to_s.downcase}.json" if I18n.locale && !I18n.locale.to_s.match(/^en.*/)
%>
<% content_for :header_tags do %>
<%= javascript_include_tag 'bowser.min.js', :plugin => 'redmine_dmsf' %>
<%= stylesheet_link_tag 'jquery.dataTables/jquery-ui.dataTables.css', :plugin => 'redmine_dmsf' %>
@ -142,7 +137,7 @@
$('#browser').dataTable({
'bJQueryUI': true,
'oLanguage': {
'sUrl': "<%= plugin_asset_path(:redmine_dmsf, 'javascripts', sUrl) %>"
'sUrl': "<%= plugin_asset_path(:redmine_dmsf, 'javascripts', json_url) %>"
},
'bAutoWidth': false,
'bPaginate': false,
@ -156,7 +151,8 @@
{ 'iDataSort': 11, 'aTargets': [ 4 ] }
],
'fnInitComplete': function() {
jQuery('div.dmsf_controls').prependTo(jQuery('#browser_wrapper div.fg-toolbar')[0]);
$('#dmsf_buttons').prependTo($('#browser_wrapper div.fg-toolbar')[0]);
$('#dmsf_tag').prependTo($('#browser_wrapper div.fg-toolbar')[0]);
},
'fnInfoCallback': function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
<% if @tree_view %>

View File

@ -152,11 +152,6 @@
});
</script>
<%
sUrl = "jquery.dataTables/#{I18n.locale.to_s.downcase}.json"
sUrl = 'jquery.dataTables/en.json' unless File.exist?(sUrl)
%>
<% content_for :header_tags do %>
<%= stylesheet_link_tag 'jquery.dataTables/jquery-ui.dataTables.css', :plugin => 'redmine_dmsf' %>
<%= javascript_include_tag 'jquery.dataTables/jquery.dataTables.min.js', :plugin => 'redmine_dmsf' %>
@ -166,7 +161,7 @@
$('#browser').dataTable({
'bJQueryUI': true,
'oLanguage': {
'sUrl': "<%= plugin_asset_path(:redmine_dmsf, 'javascripts', sUrl) %>"
'sUrl': "<%= plugin_asset_path(:redmine_dmsf, 'javascripts', json_url) %>"
},
'bAutoWidth': false,
'bPaginate': false,
@ -180,7 +175,7 @@
{ 'iDataSort': 11, 'aTargets': [ 4 ] }
],
'fnInitComplete': function() {
jQuery('div.dmsf_controls').prependTo(jQuery('#browser_wrapper div.fg-toolbar')[0]);
$('div.dmsf_controls').prependTo($('#browser_wrapper div.fg-toolbar')[0]);
},
'fnInfoCallback': function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
return "<%= l(:label_number_of_folders)%>: <%= @subfolders.count + @dir_links.count %>, <%= l(:label_number_of_documents)%>: <%= @files.count + @file_links.count + @url_links.count %>";

View File

@ -46,6 +46,13 @@
<%= f.text_area(:description, :rows => 6, :class => 'wiki-edit') %>
</p>
<div class="clear">
<div class="splitcontentright">
<div class="custom_fields">
<% @revision.custom_field_values.each do |value| %>
<p><%= custom_field_tag_with_label(:dmsf_file_revision, value) %></p>
<% end %>
</div>
</div>
<div class="splitcontentleft">
<p>
<%= label_tag('version_0', l(:label_dmsf_version)) %>
@ -59,37 +66,20 @@
<%= @file.last_revision.major_version + 1 %>.0
<%= l(:option_version_major) %><br/>
<%= radio_button_tag('version', 3) %>
<%= select_tag 'custom_version_major', options_for_select(0..99, @file.last_revision.major_version + 2), :onchange => '$("#version_3").prop("checked", true)' %>.
<%= select_tag 'custom_version_minor', options_for_select(0..99, @file.last_revision.minor_version + 1), :onchange => '$("#version_3").prop("checked", true)' %>
<%= select_tag 'custom_version_major', options_for_select(0..99, @file.last_revision.major_version + 2),
:onchange => '$("#version_3").prop("checked", true)', :class => 'dmsf_select_version' %>.
<%= select_tag 'custom_version_minor', options_for_select(0..99, @file.last_revision.minor_version + 1),
:onchange => '$("#version_3").prop("checked", true)', :class => 'dmsf_select_version' %>
<%= l(:option_version_custom) %>
</p>
</div>
<div class="splitcontentright">
<p>
<%= label_tag('file_upload', l(:label_new_content)) %>
<span class="add_attachment">
<%= file_field_tag 'file_upload',
:id => 'file_upload',
:class => 'file_selector',
:multiple => false,
:onchange => "$('#dmsf_file_revision_name').val(this.files[0].name)",
:data => {
:max_file_size => Setting.attachment_max_size.to_i.kilobytes,
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
:max_concurrent_uploads => 1,
:upload_path => uploads_path(:format => 'js')
}
%>
(<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)
</span>
</p>
</div>
</div>
<div class="custom_fields">
<% @revision.custom_field_values.each do |value| %>
<p><%= custom_field_tag_with_label(:dmsf_file_revision, value) %></p>
<% end %>
</div>
</div>
<div class="box">
<p>
<%= label_tag('file_upload', l(:label_new_content)) %>
<%= render :partial => 'upload_form' %>
</p>
</div>
<p>
<%= f.text_area(:comment, :rows => 2, :label => l(:label_comment)) %>
</p>
@ -99,4 +89,4 @@
</div>
</div>
<%= wikitoolbar_for 'dmsf_file_revision_description' %>
<%= wikitoolbar_for 'dmsf_file_revision_description' %>

View File

@ -0,0 +1,36 @@
<% hide = false %>
<span id="attachments_fields">
<% if defined?(container) && container && container.saved_attachments %>
<% container.saved_attachments.each_with_index do |attachment, i| %>
<span id="attachments_p<%= i %>">
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename') %>
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
<% hide = true %>
</span>
<% end %>
<% end %>
</span>
<% unless hide %>
<span class="add_attachment">
<%= file_field_tag 'attachments[dummy][file]',
:id => nil,
:class => 'file_selector',
:multiple => false,
:onchange => 'addInputFile(this);',
:data => {
:max_file_size => Setting.attachment_max_size.to_i.kilobytes,
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
:max_file_count_message => l(:error_maximum_upload_filecount, :filecount => 1),
:max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
:upload_path => uploads_path(:format => 'js'),
:description_placeholder => l(:label_optional_description)
} %>
(<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)
</span>
<% end %>
<% content_for :header_tags do %>
<%= javascript_include_tag 'attachments_dmsf', :plugin => 'redmine_dmsf' %>
<% end %>

View File

@ -145,7 +145,7 @@
<div class="splitcontentright">
<p>
<%= label_tag('', l(:label_file)) %>
<%= ("#{h(revision.dmsf_file.dmsf_folder.dmsf_path_str)}/") if revision.dmsf_file.dmsf_folder %><%= h(revision.name) %>
<%= (h("#{revision.dmsf_file.dmsf_folder.dmsf_path_str}/")) if revision.dmsf_file.dmsf_folder %><%= h(revision.name) %>
</p>
<p>
<%= label_tag('', l(:label_mime)) %>

View File

@ -21,30 +21,31 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
%>
<div class="dmsf_upload_select">
<select id="uploader_select">
<option value="1">
<%= l(:label_drag_drop) %>
</option>
<option value="2">
<%= l(:label_classic) %>
</option>
</select>
</div>
<div class="box">
<%= form_tag({:controller => 'dmsf_upload', :action => 'upload_files', :id => @project, :folder_id => @folder},
:id => 'uploadform', :method => :post, :multipart => true) do %>
<div class="dmsf_upload_select">
<select id="uploader_select">
<option value="1">
<%= l(:label_drag_drop) %>
</option>
<option value="2">
<%= l(:label_classic) %>
</option>
</select>
</div>
<h3><%= l(:label_upload) %></h3>
<div id="uploader">
<h3><%= l(:label_upload) %></h3>
<%= form_tag({:controller => 'dmsf_upload', :action => 'upload_files', :id => @project, :folder_id => @folder},
:id => 'uploadform', :method => :post, :multipart => true) do %>
<div id="uploader">
<div class="box">
<p>
<label><%= l(:label_attachment_plural) %></label>
<%= render :partial => 'attachments/form' %>
</p>
<%= submit_tag l(:label_upload) %>
</div>
<% end %>
</div>
<%= render :partial => 'attachments/form' %>
</p>
</div>
<%= submit_tag l(:label_upload) %>
</div>
<% end %>
<script type="text/javascript">
var originalUploaderContent;
@ -55,6 +56,7 @@
$('#uploader_select').change(function() {
if($(this).val() === '2') {
uploader.html(originalUploaderContent);
setupFileDrop();
} else {
initPlUploader(uploader);
}
@ -83,7 +85,7 @@
multipart: true,
// Enable ability to drag'n'drop files onto the widget (currently only HTML5 supports that)
dragdrop: true,
multipart_params : {authenticity_token : jQuery('input[name=authenticity_token]').val()},
multipart_params : { authenticity_token : $('input[name=authenticity_token]').val() },
// Rename files by clicking on their titles
rename: true,
@ -132,11 +134,11 @@
pluploader.trigger('QueueChanged');
}
}
if(pluploader.total.uploaded == pluploader.files.length) jQuery('#uploadform').submit();
if(pluploader.total.uploaded == pluploader.files.length) $('#uploadform').submit();
else if((pluploader.total.uploaded + pluploader.total.failed) == pluploader.files.length) setTimeout(function() {$('#uploadform').submit();}, 2000);
else dmsfFileFieldCount++;
return true;
});
}
</script>
<% end %>
<% end %>

View File

@ -27,9 +27,9 @@
<%= render(:partial => '/dmsf/path',
:locals => {:folder => @folder, :filename => nil, :title => l(:heading_uploaded_files)}) %>
<% if (@folder && @folder.description.present?) || @project.description.present? %>
<% if (@folder && @folder.description.present?) || @project.dmsf_description.present? %>
<div class="wiki">
<%= textilizable(@folder ? @folder.description : @project.description) %>
<%= textilizable(@folder ? @folder.description : @project.dmsf_description) %>
</div>
<% end %>

View File

@ -38,7 +38,7 @@
<div class="tab-content" id="tab-content-members">
<p>
<%= link_to l(:dmsf_new_step), new_step_dmsf_workflow_path(@dmsf_workflow), :remote => true, :class => 'icon icon-add' %>
<%= link_to l(:dmsf_new_step_or_approver), new_step_dmsf_workflow_path(@dmsf_workflow), :remote => true, :class => 'icon icon-add' %>
</p>
<% steps = @dmsf_workflow.dmsf_workflow_steps.collect{|s| s.step}.uniq %>
<% if steps.any? %>

View File

@ -0,0 +1,27 @@
<%#
# encoding: utf-8
#
# 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>
# Copyright (C) 2011-16 Karel Pičman <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.
%>
<%= labelled_fields_for 'user[pref]', @user.pref do |pref_fields| %>
<p><%= pref_fields.check_box :dmsf_tree_view %></p>
<% end %>

View File

@ -20,12 +20,14 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
%>
<% folders = [] %>
<% files = [] %>
<% folders = DmsfFolder.joins(
'JOIN dmsf_locks ON dmsf_folders.id = dmsf_locks.entity_id').where(
'dmsf_locks.entity_type' => 1, 'dmsf_locks.user_id' => @user.id).all %>
'dmsf_locks.entity_type' => 1, 'dmsf_locks.user_id' => @user.id).all if @user %>
<% files = DmsfFile.joins(
'JOIN dmsf_locks ON dmsf_files.id = dmsf_locks.entity_id').where(
'dmsf_locks.entity_type' => 0, 'dmsf_locks.user_id' => @user.id).all %>
'dmsf_locks.entity_type' => 0, 'dmsf_locks.user_id' => @user.id).all if @user %>
<h3><%= l(:locked_documents)%> (<%= folders.count %>/<%= files.count %>)</h3>
<% if folders.any? || files.any?%>
<%= form_tag({}) do %>

View File

@ -20,16 +20,18 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
%>
<% all_assignments = DmsfWorkflowStepAssignment.joins(
'LEFT JOIN dmsf_workflow_step_actions ON dmsf_workflow_step_assignments.id = dmsf_workflow_step_actions.dmsf_workflow_step_assignment_id').where(
'dmsf_workflow_step_assignments.user_id = ? AND dmsf_workflow_step_actions.id IS NULL', @user.id).all %>
<% assignments = Array.new %>
<% all_assignments.each do |assignment| %>
<% if assignment.dmsf_file_revision.dmsf_file.last_revision &&
!assignment.dmsf_file_revision.dmsf_file.last_revision.deleted? &&
(assignment.dmsf_file_revision.workflow == DmsfWorkflow::STATE_WAITING_FOR_APPROVAL) &&
(assignment.dmsf_file_revision == assignment.dmsf_file_revision.dmsf_file.last_revision) %>
<% assignments << assignment %>
<% if @user %>
<% all_assignments = DmsfWorkflowStepAssignment.joins(
'LEFT JOIN dmsf_workflow_step_actions ON dmsf_workflow_step_assignments.id = dmsf_workflow_step_actions.dmsf_workflow_step_assignment_id').where(
'dmsf_workflow_step_assignments.user_id = ? AND dmsf_workflow_step_actions.id IS NULL', @user.id).all %>
<% all_assignments.each do |assignment| %>
<% if assignment.dmsf_file_revision.dmsf_file.last_revision &&
!assignment.dmsf_file_revision.dmsf_file.last_revision.deleted? &&
(assignment.dmsf_file_revision.workflow == DmsfWorkflow::STATE_WAITING_FOR_APPROVAL) &&
(assignment.dmsf_file_revision == assignment.dmsf_file_revision.dmsf_file.last_revision) %>
<% assignments << assignment %>
<% end %>
<% end %>
<% end %>
<h3><%= l(:open_approvals)%> (<%= assignments.count %>)</h3>

View File

@ -61,7 +61,7 @@
<%= l(:label_default) %>: <%= "#{Rails.root}/files/dmsf" %>
</em>
</p>
<% unless File.exists?(storage_dir) %>
<% unless File.exist?(storage_dir) %>
<% begin %>
<% Dir.mkdir(storage_dir) %>
<% rescue %>
@ -69,14 +69,14 @@
<% end %>
<% end %>
<% testfilename = "#{storage_dir}/test.test" %>
<% if File.exists?(storage_dir) %>
<% if File.exist?(storage_dir) %>
<% begin %>
<% File.open(testfilename, 'wb') do |file| %>
<% end %>
<% rescue %>
<p class="warning"><%= l(:error_file_can_not_be_created) %></p>
<% ensure %>
<% File.delete(testfilename) if File.exists?(testfilename) %>
<% File.delete(testfilename) if File.exist?(testfilename) %>
<% end %>
<% end %>

View File

@ -0,0 +1,206 @@
/* Redmine - project management software
Copyright (C) 2006-2016 Jean-Philippe Lang */
function addFile(inputEl, file, eagerUpload) {
if ($('#attachments_fields').children().length < 10) {
var attachmentId = addFile.nextAttachmentId++;
var fileSpan = $('<span>', { id: 'attachments_' + attachmentId });
fileSpan.append(
$('<input>', { type: 'text', 'class': 'filename readonly', name: 'attachments[' + attachmentId + '][filename]', readonly: 'readonly'} ).val(file.name)
).appendTo('#attachments_fields');
if(eagerUpload) {
ajaxUpload(file, attachmentId, fileSpan, inputEl);
}
toggleFileAdding(false);
$('#dmsf_file_revision_name').val(file.name);
return attachmentId;
}
return null;
}
addFile.nextAttachmentId = 1;
function ajaxUpload(file, attachmentId, fileSpan, inputEl) {
function onLoadstart(e) {
fileSpan.removeClass('ajax-waiting');
fileSpan.addClass('ajax-loading');
$('input:submit', $(this).parents('form')).attr('disabled', 'disabled');
}
function onProgress(e) {
if(e.lengthComputable) {
this.progressbar( 'value', e.loaded * 100 / e.total );
}
}
function actualUpload(file, attachmentId, fileSpan, inputEl) {
ajaxUpload.uploading++;
uploadBlob(file, $(inputEl).data('upload-path'), attachmentId, {
loadstartEventHandler: onLoadstart.bind(progressSpan),
progressEventHandler: onProgress.bind(progressSpan)
})
.done(function(result) {
progressSpan.progressbar( 'value', 100 ).remove();
fileSpan.find('input.description, a').css('display', 'inline-block');
})
.fail(function(result) {
progressSpan.text(result.statusText);
}).always(function() {
ajaxUpload.uploading--;
fileSpan.removeClass('ajax-loading');
var form = fileSpan.parents('form');
if (form.queue('upload').length == 0 && ajaxUpload.uploading == 0) {
$('input:submit', form).removeAttr('disabled');
}
form.dequeue('upload');
});
}
var progressSpan = $('<div>').insertAfter(fileSpan.find('input.filename'));
progressSpan.progressbar();
fileSpan.addClass('ajax-waiting');
var maxSyncUpload = $(inputEl).data('max-concurrent-uploads');
if(maxSyncUpload == null || maxSyncUpload <= 0 || ajaxUpload.uploading < maxSyncUpload)
actualUpload(file, attachmentId, fileSpan, inputEl);
else
$(inputEl).parents('form').queue('upload', actualUpload.bind(this, file, attachmentId, fileSpan, inputEl));
}
ajaxUpload.uploading = 0;
function removeFile() {
$(this).parent('span').remove();
toggleFileAdding(true);
return false;
}
function uploadBlob(blob, uploadUrl, attachmentId, options) {
var actualOptions = $.extend({
loadstartEventHandler: $.noop,
progressEventHandler: $.noop
}, options);
uploadUrl = uploadUrl + '?attachment_id=' + attachmentId;
if (blob instanceof window.File) {
uploadUrl += '&filename=' + encodeURIComponent(blob.name);
uploadUrl += '&content_type=' + encodeURIComponent(blob.type);
}
return $.ajax(uploadUrl, {
type: 'POST',
contentType: 'application/octet-stream',
beforeSend: function(jqXhr, settings) {
jqXhr.setRequestHeader('Accept', 'application/js');
// attach proper File object
settings.data = blob;
},
xhr: function() {
var xhr = $.ajaxSettings.xhr();
xhr.upload.onloadstart = actualOptions.loadstartEventHandler;
xhr.upload.onprogress = actualOptions.progressEventHandler;
return xhr;
},
data: blob,
cache: false,
processData: false
});
}
function addInputFile(inputEl) {
var clearedFileInput = $(inputEl).clone().val('');
if ($.ajaxSettings.xhr().upload && inputEl.files) {
// upload files using ajax
uploadAndAttachFiles(inputEl.files, inputEl);
$(inputEl).remove();
} else {
// browser not supporting the file API, upload on form submission
var attachmentId;
var aFilename = inputEl.value.split(/\/|\\/);
attachmentId = addFile(inputEl, { name: aFilename[ aFilename.length - 1 ] }, false);
if (attachmentId) {
$(inputEl).attr({ name: 'attachments[' + attachmentId + '][file]', style: 'display:none;' }).appendTo('#attachments_' + attachmentId);
}
}
clearedFileInput.insertAfter('#attachments_fields');
toggleFileAdding(false);
}
function uploadAndAttachFiles(files, inputEl) {
var maxFileSize = $(inputEl).data('max-file-size');
var maxFileSizeExceeded = $(inputEl).data('max-file-size-message');
var maxFileCountExceeded = $(inputEl).data('max-file-count-message');
var sizeExceeded = false;
$.each(files, function() {
if (this.size && maxFileSize != null && this.size > parseInt(maxFileSize)) {sizeExceeded=true;}
});
if((files.length > 1) || (!$('input.file_selector').is(':visible'))){
window.alert(maxFileCountExceeded);
}
else if (sizeExceeded) {
window.alert(maxFileSizeExceeded);
} else {
$.each(files, function() {addFile(inputEl, this, true);});
}
}
function toggleFileAdding(toggle){
$('input.file_selector').toggle(toggle);
$('span.add_attachment').toggle(toggle);
}
function handleFileDropEvent(e) {
$(this).removeClass('fileover');
blockEventPropagation(e);
if ($.inArray('Files', e.dataTransfer.types) > -1) {
uploadAndAttachFiles(e.dataTransfer.files, $('input:file.file_selector'));
}
}
function dragOverHandler(e) {
$(this).addClass('fileover');
blockEventPropagation(e);
}
function dragOutHandler(e) {
$(this).removeClass('fileover');
blockEventPropagation(e);
}
function setupFileDrop() {
if (window.File && window.FileList && window.ProgressEvent && window.FormData) {
$.event.fixHooks.drop = { props: [ 'dataTransfer' ] };
$('form div.box').has('input:file').each(function() {
$(this).on({
dragover: dragOverHandler,
dragleave: dragOutHandler,
drop: handleFileDropEvent
});
});
}
}
$(document).ready(setupFileDrop);

View File

@ -20,9 +20,9 @@
*/
/* Function to allow the projects to show up as a tree */
function dmsf_toggle(EL, PM)
function dmsfToggle(EL, PM, url)
{
var els = document.getElementsByTagName('tr');
var els = document.querySelectorAll('tr.dmsf_tree');
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)" + EL + "(\\s|$)");
var cpattern = new RegExp('span');
@ -33,6 +33,14 @@ function dmsf_toggle(EL, PM)
var classid = new RegExp('junk');
var oddeventoggle = 0;
// Expand not yet loaded selected row
var selectedRow = document.getElementById(PM);
if(selectedRow.className.indexOf('dmsf-not-loaded') >= 0){
dmsfExpandRows(EL, selectedRow, url);
}
for(i = 0; i < elsLen; i++)
{
if(cpattern.test(els[i].id))
@ -61,7 +69,7 @@ function dmsf_toggle(EL, PM)
cnames = cnames.replace(/dmsf_hidden/g,'');
if(expand.test(document.getElementById(PM).className))
if(expand.test(selectedRow.className))
{
cnames += ' dmsf_hidden';
}
@ -100,18 +108,43 @@ function dmsf_toggle(EL, PM)
}
}
if (collapse.test(document.getElementById(PM).className))
if (collapse.test(selectedRow.className))
{
var cnames = document.getElementById(PM).className;
var cnames = selectedRow.className;
cnames = cnames.replace(/dmsf_collapsed/,'dmsf_expanded');
document.getElementById(PM).className = cnames;
selectedRow.className = cnames;
}
else
{
var cnames = document.getElementById(PM).className;
var cnames = selectedRow.className;
cnames = cnames.replace(/dmsf_expanded/,'dmsf_collapsed');
document.getElementById(PM).className = cnames;
selectedRow.className = cnames;
}
}
/* Add child rows */
function dmsfExpandRows(EL, parentRow, url) {
parentRow.className = parentRow.className.replace(/dmsf-not-loaded/, '');
var idnt = 0;
var result = parentRow.className.match(/idnt-(\d+)/);
if(result){
idnt = result[1];
}
var pos = $(parentRow).find('#dmsf_position').text();
return $.ajax({
url: url,
type: 'post',
data: {
folder_id: EL,
row_id: parentRow.id,
idnt: idnt,
pos: pos}
});
}

View File

@ -20,86 +20,85 @@
*/
/* DMSF table.list modifications */
table.dmsf_list th.dmsf_th {
.dmsf_list .dmsf_th {
border: none;
}
table.list td.dmsf_modified {
.list .dmsf_modified {
min-width: 127px;
width: 127px;
font-size: 0.8em;
text-align: left;
}
td.dmsf_modified img {
.dmsf_modified img {
vertical-align:text-top;
}
table.list td.dmsf_title {
.list .dmsf_title {
width: 40%;
text-align: left;
}
table.list td.dmsf_buttons {
.list .dmsf_buttons {
min-width: 96px;
width: 96px;
text-align: left;
}
table.list th.dmsf_checkbox,
table.list td.dmsf_checkbox {
.list .dmsf_checkbox {
width: 15px;
padding: 2px 0 0 0;
}
table.list th.dmsf_checkbox input {
.list .dmsf_checkbox input {
padding:0px;
}
table.list th.dmsf_checkbox div.DataTables_sort_wrapper {
.list .dmsf_checkbox .DataTables_sort_wrapper {
padding: 0;
}
form.dmsf_entries {
.dmsf_entries {
margin-bottom: 10px;
display: block;
}
div.dmsf_controls,
div.dmsf_controls input,
div.dmsf_controls select,
form.dmsf_entries #browser_filter.dataTables_filter,
form.dmsf_entries #browser_filter.dataTables_filter input{
.dmsf_controls,
.dmsf_controls input,
.dmsf_controls select,
.dmsf_entries #browser_filter.dataTables_filter,
.dmsf_entries #browser_filter.dataTables_filter input{
font-size: 0.9em;
}
div.dmsf_filename {
.dmsf_filename {
padding: 0 10px 0 10px;
float: right;
font-size: 0.8em;
white-space: nowrap;
}
td.dmsf_size {
.dmsf_size {
font-size: 0.8em;
white-space: nowrap;
}
td.dmsf_author {
.dmsf_author {
font-size: 0.8em;
white-space: nowrap;
}
td.dmsf_version {
.dmsf_version {
font-size: 0.8em;
white-space: nowrap;
}
td.dmsf_version img {
.dmsf_version img {
vertical-align:text-top;
}
td.dmsf_workflow {
.dmsf_workflow {
font-size: 0.8em;
white-space: nowrap;
}
@ -108,12 +107,12 @@ td.dmsf_workflow {
display: none;
}
div.dmsf_upload_select {
.dmsf_upload_select {
float: right;
font-size: 0.9em;
}
div.dmsf_upload_select input, div.dmsf_upload_select select {
.dmsf_upload_select input, .dmsf_upload_select select {
font-size: 0.9em;
}
@ -121,7 +120,7 @@ div.dmsf_upload_select input, div.dmsf_upload_select select {
#admin-menu a.dmsf-approvalworkflows { background-image: url(../../../images/ticket_go.png); }
#dmsf_users_for_delegate { height: 200px; overflow:auto; }
#dmsf_users_for_delegate label { display: block; }
tr.dmsf_workflow.locked a { color: #aaa; }
.dmsf_workflow.locked a { color: #aaa; }
.dmsf_revision_box {
padding: 0px 0px 0px 0px;
@ -144,7 +143,7 @@ tr.dmsf_workflow.locked a { color: #aaa; }
padding-left: 10px;
}
div.dmsf_revision_box .ui-widget-header {
.dmsf_revision_box .ui-widget-header {
font-weight: normal;
}
@ -172,7 +171,7 @@ div.dmsf_revision_box .ui-widget-header {
.dmsf_icon-unlock { background-image: url(../images/unlock.png); }
/* File types */
tr.dmsf_gray .icon-folder { background-image: url(../images/folder_gray.png); }
.dmsf_gray .icon-folder { background-image: url(../images/folder_gray.png); }
.icon-file.filetype-doc, .icon-file.filetype-docx { background-image: url(../images/filetypes/doc.png); }
.icon-file.filetype-xls, .icon-file.filetype-xlsx { background-image: url(../images/filetypes/xls.png); }
@ -184,65 +183,69 @@ tr.dmsf_gray .icon-folder { background-image: url(../images/folder_gray.png); }
.icon-file.filetype-odp { background-image: url(../images/filetypes/odp.png); }
.icon-file.filetype-odg { background-image: url(../images/filetypes/odg.png); }
tr.dmsf_gray .icon-file.filetype-doc { background-image: url(../images/filetypes/doc_gray.png); }
tr.dmsf_gray .icon-file.filetype-docx { background-image: url(../images/filetypes/doc_gray.png); }
tr.dmsf_gray .icon-file.filetype-xls { background-image: url(../images/filetypes/xls_gray.png); }
tr.dmsf_gray .icon-file.filetype-xlsx { background-image: url(../images/filetypes/xls_gray.png); }
tr.dmsf_gray .icon-file.filetype-ppt { background-image: url(../images/filetypes/ppt_gray.png); }
tr.dmsf_gray .icon-file.filetype-pptx { background-image: url(../images/filetypes/ppt_gray.png); }
tr.dmsf_gray .icon-file.filetype-vsd { background-image: url(../images/filetypes/vsd_gray.png); }
tr.dmsf_gray .icon-file.filetype-vsdx { background-image: url(../images/filetypes/vsd_gray.png); }
tr.dmsf_gray .icon-file.filetype-mpp { background-image: url(../images/filetypes/mpp_gray.png); }
tr.dmsf_gray .icon-file.filetype-odt { background-image: url(../images/filetypes/odt_gray.png); }
tr.dmsf_gray .icon-file.filetype-ods { background-image: url(../images/filetypes/ods_gray.png); }
tr.dmsf_gray .icon-file.filetype-odp { background-image: url(../images/filetypes/odp_gray.png); }
tr.dmsf_gray .icon-file.filetype-odg { background-image: url(../images/filetypes/odg_gray.png); }
.dmsf_gray .icon-file.filetype-doc { background-image: url(../images/filetypes/doc_gray.png); }
.dmsf_gray .icon-file.filetype-docx { background-image: url(../images/filetypes/doc_gray.png); }
.dmsf_gray .icon-file.filetype-xls { background-image: url(../images/filetypes/xls_gray.png); }
.dmsf_gray .icon-file.filetype-xlsx { background-image: url(../images/filetypes/xls_gray.png); }
.dmsf_gray .icon-file.filetype-ppt { background-image: url(../images/filetypes/ppt_gray.png); }
.dmsf_gray .icon-file.filetype-pptx { background-image: url(../images/filetypes/ppt_gray.png); }
.dmsf_gray .icon-file.filetype-vsd { background-image: url(../images/filetypes/vsd_gray.png); }
.dmsf_gray .icon-file.filetype-vsdx { background-image: url(../images/filetypes/vsd_gray.png); }
.dmsf_gray .icon-file.filetype-mpp { background-image: url(../images/filetypes/mpp_gray.png); }
.dmsf_gray .icon-file.filetype-odt { background-image: url(../images/filetypes/odt_gray.png); }
.dmsf_gray .icon-file.filetype-ods { background-image: url(../images/filetypes/ods_gray.png); }
.dmsf_gray .icon-file.filetype-odp { background-image: url(../images/filetypes/odp_gray.png); }
.dmsf_gray .icon-file.filetype-odg { background-image: url(../images/filetypes/odg_gray.png); }
tr.dmsf_gray .icon-file.text-x-c { background-image: url(../images/filetypes/c_gray.png); }
tr.dmsf_gray .icon-file.text-x-csharp { background-image: url(../images/filetypes/csharp_gray.png); }
tr.dmsf_gray .icon-file.text-x-java { background-image: url(../images/files/filetypes/java_gray.png); }
tr.dmsf_gray .icon-file.text-x-javascript { background-image: url(../images/filetypes/js_gray.png); }
tr.dmsf_gray .icon-file.text-x-php { background-image: url(../images/filetypes/php_gray.png); }
tr.dmsf_gray .icon-file.text-x-ruby { background-image: url(../images/filetypes/ruby_gray.png); }
tr.dmsf_gray .icon-file.text-xml { background-image: url(../images/filetypes/xml_gray.png); }
tr.dmsf_gray .icon-file.text-css { background-image: url(../images/filetypes/css_gray.png); }
tr.dmsf_gray .icon-file.text-html { background-image: url(../images/filetypes/html_gray.png); }
tr.dmsf_gray .icon-file.image-gif { background-image: url(../images/filetypes/image_gray.png); }
tr.dmsf_gray .icon-file.image-jpeg { background-image: url(../images/filetypes/image_gray.png); }
tr.dmsf_gray .icon-file.image-png { background-image: url(../images/filetypes/image_gray.png); }
tr.dmsf_gray .icon-file.image-tiff { background-image: url(../images/filetypes/image_gray.png); }
tr.dmsf_gray .icon-file.application-pdf { background-image: url(../images/filetypes/pdf_gray.png); }
tr.dmsf_gray .icon-file.application-zip { background-image: url(../images/filetypes/zip_gray.png); }
tr.dmsf_gray .icon-file.application-x-gzip { background-image: url(../images/filetypes/zip_gray.png); }
.dmsf_gray .icon-file.text-x-c { background-image: url(../images/filetypes/c_gray.png); }
.dmsf_gray .icon-file.text-x-csharp { background-image: url(../images/filetypes/csharp_gray.png); }
.dmsf_gray .icon-file.text-x-java { background-image: url(../images/files/filetypes/java_gray.png); }
.dmsf_gray .icon-file.text-x-javascript { background-image: url(../images/filetypes/js_gray.png); }
.dmsf_gray .icon-file.text-x-php { background-image: url(../images/filetypes/php_gray.png); }
.dmsf_gray .icon-file.text-x-ruby { background-image: url(../images/filetypes/ruby_gray.png); }
.dmsf_gray .icon-file.text-xml { background-image: url(../images/filetypes/xml_gray.png); }
.dmsf_gray .icon-file.text-css { background-image: url(../images/filetypes/css_gray.png); }
.dmsf_gray .icon-file.text-html { background-image: url(../images/filetypes/html_gray.png); }
.dmsf_gray .icon-file.image-gif { background-image: url(../images/filetypes/image_gray.png); }
.dmsf_gray .icon-file.image-jpeg { background-image: url(../images/filetypes/image_gray.png); }
.dmsf_gray .icon-file.image-png { background-image: url(../images/filetypes/image_gray.png); }
.dmsf_gray .icon-file.image-tiff { background-image: url(../images/filetypes/image_gray.png); }
.dmsf_gray .icon-file.application-pdf { background-image: url(../images/filetypes/pdf_gray.png); }
.dmsf_gray .icon-file.application-zip { background-image: url(../images/filetypes/zip_gray.png); }
.dmsf_gray .icon-file.application-x-gzip { background-image: url(../images/filetypes/zip_gray.png); }
/* Links */
.dmsf_gray { color: #AAA }
.dmsf_gray a, .dmsf_gray a:link, .dmsf_gray a:visited{ color: #484848; text-decoration: none; }
/* Search results */
dt.dmsf-file { background-image: url(../../../images/document.png); }
dt.dmsf-folder { background-image: url(../../../images/folder.png); }
.dmsf-file { background-image: url(../../../images/document.png); }
.dmsf-folder { background-image: url(../../../images/folder.png); }
/* DMSF tree view */
tr.dmsf_hidden { display:none; }
tr.dmsf_tree span.dmsf_expander { cursor: pointer; }
tr.dmsf_tree.dmsf_expanded td.dmsf_title span {
.dmsf_hidden { display:none; }
.dmsf_tree span.dmsf_expander { cursor: pointer; }
.dmsf_tree.dmsf_expanded td.dmsf_title span {
background: url(../images/bullet_arrow_down.png) no-repeat 0 50%;
padding-left: 16px;
}
tr.dmsf_tree.dmsf_child td.dmsf_title span { padding-left: 16px; }
tr.dmsf_tree.dmsf_collapsed td.dmsf_title span {
.dmsf_tree.dmsf_child .dmsf_title span { padding-left: 16px; }
.dmsf_tree.dmsf_collapsed .dmsf_title span {
background: url(../../../images/bullet_arrow_right.png) no-repeat 0 50%;
padding-left: 16px;
}
tr.dmsf_tree.idnt-1 td.dmsf_title {padding-left: 1.5em;}
tr.dmsf_tree.idnt-2 td.dmsf_title {padding-left: 2em;}
tr.dmsf_tree.idnt-3 td.dmsf_title {padding-left: 2.5em;}
tr.dmsf_tree.idnt-4 td.dmsf_title {padding-left: 3em;}
tr.dmsf_tree.idnt-5 td.dmsf_title {padding-left: 3.5em;}
tr.dmsf_tree.idnt-6 td.dmsf_title {padding-left: 4em;}
tr.dmsf_tree.idnt-7 td.dmsf_title {padding-left: 4.5em;}
tr.dmsf_tree.idnt-8 td.dmsf_title {padding-left: 5em;}
tr.dmsf_tree.idnt-9 td.dmsf_title {padding-left: 5.5em;}
.dmsf_tree.idnt-1 .dmsf_title {padding-left: 1.5em;}
.dmsf_tree.idnt-2 .dmsf_title {padding-left: 2em;}
.dmsf_tree.idnt-3 .dmsf_title {padding-left: 2.5em;}
.dmsf_tree.idnt-4 .dmsf_title {padding-left: 3em;}
.dmsf_tree.idnt-5 .dmsf_title {padding-left: 3.5em;}
.dmsf_tree.idnt-6 .dmsf_title {padding-left: 4em;}
.dmsf_tree.idnt-7 .dmsf_title {padding-left: 4.5em;}
.dmsf_tree.idnt-8 .dmsf_title {padding-left: 5em;}
.dmsf_tree.idnt-9 .dmsf_title {padding-left: 5.5em;}
.dmsf_odd {background-color:#f6f7f8;}
.dmsf_even {background-color: #fff;}
.dmsf_even {background-color: #fff;}
.dmsf_select_version {
max-width: 50px;
}

View File

@ -259,6 +259,7 @@ cs:
dmsf_and: A
dmsf_or: NEBO
dmsf_new_step: Nový krok
dmsf_new_step_or_approver: Nový krok nebo Nový schvalovatel
message_dmsf_wokflow_note: Váš komentář...
info_revision: "r%{rev}"
link_workflow: Schvalovací proces
@ -329,4 +330,6 @@ cs:
label_maximum_ajax_upload_filesize: Maximální velikost souboru nahratelná přes AJAX
note_maximum_ajax_upload_filesize: Omezuje velikost souboru, který může být nahrán přes standardní rozhraní AJAX, jinak se použije standardní rozhraní Redminu. Číslo je v MB.
label_classic: Klasický
label_drag_drop: "Drag&Drop"
label_drag_drop: Moderní
error_maximum_upload_filecount: "Nelze nahrát více než %{filecount} soubor(ů)."

View File

@ -259,6 +259,7 @@ de:
dmsf_and: UND
dmsf_or: ODER
dmsf_new_step: Neuer Schritt
dmsf_new_step_or_approver: Neuer Schritt oder Neuer Genehmiger
message_dmsf_wokflow_note: Deine Notiz...
info_revision: "r%{rev}"
link_workflow: Workflow
@ -329,4 +330,6 @@ de:
label_maximum_ajax_upload_filesize: Maximale Dateigröße für den Upload via AJAX
note_maximum_ajax_upload_filesize: Maximale Dateigröße für den Upload über die AJAX-Schnittstelle. Für größere Dateien muss der Standard-Uploader von Redmine verwendet werden. Angabe in MB.
label_classic: Klassisch
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "Nicht mehr als %{filecount} Datai(en) kann man hochladen."

View File

@ -208,7 +208,7 @@ en:
parent_directory: Parent Directory
note_webdav: "Webdav once enabled can be found at %{protocol}://%{domain}/dmsf/webdav/[project identifier]"
label_webdav: Webdav functionality
label_dmsf_plural: "Copy Documents and folders (%{files} files in %{folders} folders)"
label_dmsf_plural: "Copy Documents and Folders (%{files} files in %{folders} folders)"
warning_folder_already_locked: This folder is already locked
notice_folder_locked: The folder was successfully locked
@ -259,6 +259,7 @@ en:
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
dmsf_new_step_or_approver: New step or New Approver
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
@ -329,4 +330,6 @@ en:
label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise Redmine standard upload form must be used. Number is in MB.
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -179,8 +179,8 @@ es:
heading_access_downloads_emails: Descargas/Emails
heading_access_first: Primero
heading_access_last: Último
label_dmsf_updated: Subidas DMSF
label_dmsf_downloaded: DMSF document downloaded
label_dmsf_updated: Subidas
label_dmsf_downloaded: Downloaded
title_total_size_of_all_files: Tamaño total de los archivos en el directorio
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: No hay proyecto para copiar el archivo
@ -259,6 +259,7 @@ es:
dmsf_and: Y
dmsf_or: O
dmsf_new_step: Nuevo Paso
dmsf_new_step_or_approver: Nuevo Paso o Nuevo aprobador
message_dmsf_wokflow_note: Tu nota...
info_revision: "r%{rev}"
link_workflow: Flujo de Trabajo
@ -329,4 +330,6 @@ es:
label_maximum_ajax_upload_filesize: "El máximo tamaño de archivo para subir por AJAX"
note_maximum_ajax_upload_filesize: "El límite máximo de tamaño de archivo que puede ser subido por la interfaz AJAX estandar, de lo contrario se debe utilizar el formulario estandar de Redmine. El número es en MB."
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -179,8 +179,8 @@ fr:
heading_access_downloads_emails: Téléchargement / Envoi par mail
heading_access_first: Premier
heading_access_last: Dernier
label_dmsf_updated: Dépôt ou mise à jour du document
label_dmsf_downloaded: Document DMSF téléchargé
label_dmsf_updated: Dépôt
label_dmsf_downloaded: Téléchargé
title_total_size_of_all_files: Taille totale des fichiers de ce dossier
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: "Le projet de destination n'est pas défini"
@ -259,6 +259,7 @@ fr:
dmsf_and: ET
dmsf_or: OU
dmsf_new_step: Nouvelle étape
dmsf_new_step_or_approver: Nouvelle étape ou Nouvel approbateur
message_dmsf_wokflow_note: Votre note...
info_revision: "r%{rev}"
link_workflow: Flux
@ -329,4 +330,6 @@ fr:
label_maximum_ajax_upload_filesize: Taille maximale de fichier pour téléversement via AJAX
note_maximum_ajax_upload_filesize: "Taille maximale, en méga octets, de fichier pour téléversement via l'interface standard AJAX. Sinon l'interface standard de Redmine doit être utilisée."
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -259,6 +259,7 @@ it: # Italian strings thx 2 Matteo Arceci!
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: Nuovo passo
dmsf_new_step_or_approver: Nuovo passo oppure Nuovo approver
message_dmsf_wokflow_note: La tua nota...
info_revision: "r%{rev}"
link_workflow: Flusso di lavoro
@ -329,4 +330,6 @@ it: # Italian strings thx 2 Matteo Arceci!
label_maximum_ajax_upload_filesize: Dimensione massima dei documenti caricabili tramite AJAX
note_maximum_ajax_upload_filesize: Limita la dimensione massima dei documenti che possono essere caricati tramite interfaccia standard AJAX altrimenti sarà necessario utilizzare il modulo standard di Redmine. Il numero è espresso in MB.
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -259,6 +259,7 @@ ja:
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: 新規ステップ
dmsf_new_step_or_approver: 新規ステップ or New approver
message_dmsf_wokflow_note: コメント
info_revision: "r%{rev}"
link_workflow: ワークフロー
@ -329,4 +330,6 @@ ja:
label_maximum_ajax_upload_filesize: アップロードファイルサイズ上限
note_maximum_ajax_upload_filesize: アップロード可能なファイルサイズの上限。AjaxおよびRedmineの仕様に制限される2ギガバイト程度までは確認済み単位はMB。
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -179,8 +179,8 @@ pl:
heading_access_downloads_emails: Downloads/Emails
heading_access_first: Pierwszy
heading_access_last: Ostatni
label_dmsf_updated: DMSF został zaktualizowany
label_dmsf_downloaded: DMSF document downloaded
label_dmsf_updated: Zaktualizowany
label_dmsf_downloaded: Downloaded
title_total_size_of_all_files: Łączny rozmiar plików w folderze
project_module_dmsf: DMSF
warning_no_project_to_copy_file_to: Brak projektu do skopiowania pliku
@ -259,6 +259,7 @@ pl:
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: Nowy krok
dmsf_new_step_or_approver: Nowy krok lub Nowy akceptować
message_dmsf_wokflow_note: Twoja notatka...
info_revision: "r%{rev}"
link_workflow: Proces akceptacji
@ -329,4 +330,6 @@ pl:
label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise Redmine standard upload form must be used. Number is in MB.
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -179,8 +179,8 @@ pt-BR:
heading_access_downloads_emails: Downloads/Emails
heading_access_first: First
heading_access_last: Last
label_dmsf_updated: DMSF document updated
label_dmsf_downloaded: DMSF document downloaded
label_dmsf_updated: Updated
label_dmsf_downloaded: Downloaded
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
@ -208,7 +208,7 @@ pt-BR:
parent_directory: Parent Directory
note_webdav: "Webdav once enabled can be found at %{protocol}://%{domain}/dmsf/webdav/[project identifier]"
label_webdav: Webdav functionality
label_dmsf_plural: "Copy DMSF files and folders (%{files} files in %{folders} folders)"
label_dmsf_plural: "Copy Documents and folders (%{files} documents in %{folders} folders)"
warning_folder_already_locked: Esta pasta já está bloqueada
notice_folder_locked: A pasta foi bloqueada com sucesso
@ -259,6 +259,7 @@ pt-BR:
dmsf_and: E
dmsf_or: OU
dmsf_new_step: New step
dmsf_new_step_or_approver: New step or New approver
message_dmsf_wokflow_note: Sua observação...
info_revision: "r%{rev}"
link_workflow: Workflow
@ -329,4 +330,6 @@ pt-BR:
label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise Redmine standard upload form must be used. Number is in MB.
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -259,6 +259,7 @@ ru:
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: Новый шаг
dmsf_new_step_or_approver: Новый шаг или Новый согласующ
message_dmsf_wokflow_note: Ваше примечание...
info_revision: "r%{rev}"
link_workflow: Согласование
@ -329,4 +330,6 @@ ru:
label_maximum_ajax_upload_filesize: Максимальный размер файла, загружаемого посредством AJAX
note_maximum_ajax_upload_filesize: Превышает максимальный размер файла, загружаемого посредством интерфейса AJAX, для загрузки можно использовать стандартную форму Redmine. Размер указан в MB.
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -259,6 +259,7 @@ sl:
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
dmsf_new_step_or_approver: New step or New approver
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
@ -329,4 +330,6 @@ sl:
label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise Redmine standard upload form must be used. Number is in MB.
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -259,6 +259,7 @@ zh-TW:
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
dmsf_new_step_or_approver: New step or New approver
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
@ -329,4 +330,6 @@ zh-TW:
label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise Redmine standard upload form must be used. Number is in MB.
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -179,8 +179,8 @@ zh:
heading_access_downloads_emails: 存取次数
heading_access_first: 首次
heading_access_last: 末次
label_dmsf_updated: DMSF updated
label_dmsf_downloaded: DMSF document downloaded
label_dmsf_updated: Updated
label_dmsf_downloaded: Downloaded
title_total_size_of_all_files: 文件夹所有文件总大小
project_module_dmsf: 文档管家
warning_no_project_to_copy_file_to: No project to copy file to
@ -259,6 +259,7 @@ zh:
dmsf_and: AND
dmsf_or: OR
dmsf_new_step: New step
dmsf_new_step_or_approver: New step or New approver
message_dmsf_wokflow_note: Your note...
info_revision: "r%{rev}"
link_workflow: Workflow
@ -329,4 +330,6 @@ zh:
label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise Redmine standard upload form must be used. Number is in MB.
label_classic: Classic
label_drag_drop: "Drag&Drop"
label_drag_drop: Modern
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."

View File

@ -46,6 +46,7 @@ RedmineApp::Application.routes.draw do
get '/projects/:id/dmsf/edit/root', :controller => 'dmsf', :action => 'edit_root', :as => 'edit_root_dmsf'
get '/projects/:id/dmsf/trash', :controller => 'dmsf', :action => 'trash', :as => 'trash_dmsf'
get '/projects/:id/dmsf/restore', :controller => 'dmsf', :action => 'restore', :as => 'restore_dmsf'
post '/projects/:id/dmsf/expand_folder', :controller => 'dmsf', :action => 'expand_folder', :as => 'expand_folder_dmsf'
#
# dmsf_state controller
@ -116,7 +117,7 @@ RedmineApp::Application.routes.draw do
:resource_class => RedmineDmsf::Webdav::ResourceProxy,
:controller_class => RedmineDmsf::Webdav::Controller,
:log_to => Rails.logger
), :at => '/dmsf/webdav'
), :at => '/dmsf/webdav' if defined?(RedmineDmsf)
# Approval workflow
resources :dmsf_workflows do

View File

@ -2,7 +2,7 @@
#
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011-15 Karel Pičman <karel.picman@kontron.com>
# Copyright (C) 2011-16 Karel Pičman <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
@ -20,6 +20,6 @@
class RemoveUniquenessFromWf < ActiveRecord::Migration
def up
remove_index :dmsf_workflows, :name
remove_index(:dmsf_workflows, :name) if index_exists?(:dmsf_workflows, :name)
end
end

Binary file not shown.

View File

@ -14,7 +14,8 @@ Index: public/help/ar/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -44,7 +45,8 @@ Index: public/help/ar/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -98,7 +100,8 @@ Index: public/help/az/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -128,7 +131,8 @@ Index: public/help/az/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -182,7 +186,8 @@ Index: public/help/bg/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -212,7 +217,8 @@ Index: public/help/bg/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -266,7 +272,8 @@ Index: public/help/bs/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -296,7 +303,8 @@ Index: public/help/bs/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -350,7 +358,8 @@ Index: public/help/ca/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -380,7 +389,8 @@ Index: public/help/ca/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -434,7 +444,8 @@ Index: public/help/cs/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -464,7 +475,8 @@ Index: public/help/cs/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -518,7 +530,8 @@ Index: public/help/da/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -548,7 +561,8 @@ Index: public/help/da/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -602,7 +616,8 @@ Index: public/help/de/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -632,7 +647,8 @@ Index: public/help/de/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -686,7 +702,8 @@ Index: public/help/el/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -716,7 +733,8 @@ Index: public/help/el/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -770,7 +788,8 @@ Index: public/help/en/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -800,7 +819,8 @@ Index: public/help/en/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -854,7 +874,8 @@ Index: public/help/en-gb/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -884,7 +905,8 @@ Index: public/help/en-gb/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -938,7 +960,8 @@ Index: public/help/es/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -968,7 +991,8 @@ Index: public/help/es/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1022,7 +1046,8 @@ Index: public/help/es-pa/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1052,7 +1077,8 @@ Index: public/help/es-pa/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1106,7 +1132,8 @@ Index: public/help/et/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1136,7 +1163,8 @@ Index: public/help/et/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1190,7 +1218,8 @@ Index: public/help/eu/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1220,7 +1249,8 @@ Index: public/help/eu/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1274,7 +1304,8 @@ Index: public/help/fa/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1304,7 +1335,8 @@ Index: public/help/fa/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1358,7 +1390,8 @@ Index: public/help/fi/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1388,7 +1421,8 @@ Index: public/help/fi/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1442,7 +1476,8 @@ Index: public/help/fr/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1472,7 +1507,8 @@ Index: public/help/fr/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1526,7 +1562,8 @@ Index: public/help/gl/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1556,7 +1593,8 @@ Index: public/help/gl/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1610,7 +1648,8 @@ Index: public/help/he/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1640,7 +1679,8 @@ Index: public/help/he/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1694,7 +1734,8 @@ Index: public/help/hr/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1724,7 +1765,8 @@ Index: public/help/hr/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1778,7 +1820,8 @@ Index: public/help/hu/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1808,7 +1851,8 @@ Index: public/help/hu/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1862,7 +1906,8 @@ Index: public/help/id/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1892,7 +1937,8 @@ Index: public/help/id/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1946,7 +1992,8 @@ Index: public/help/it/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -1976,7 +2023,8 @@ Index: public/help/it/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2030,7 +2078,8 @@ Index: public/help/ja/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2060,7 +2109,8 @@ Index: public/help/ja/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2114,7 +2164,8 @@ Index: public/help/ko/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2144,7 +2195,8 @@ Index: public/help/ko/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2198,7 +2250,8 @@ Index: public/help/lt/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2228,7 +2281,8 @@ Index: public/help/lt/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2282,7 +2336,8 @@ Index: public/help/lv/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2312,7 +2367,8 @@ Index: public/help/lv/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2366,7 +2422,8 @@ Index: public/help/mk/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2396,7 +2453,8 @@ Index: public/help/mk/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2450,7 +2508,8 @@ Index: public/help/mn/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2480,7 +2539,8 @@ Index: public/help/mn/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2534,7 +2594,8 @@ Index: public/help/nl/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2564,7 +2625,8 @@ Index: public/help/nl/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2618,7 +2680,8 @@ Index: public/help/no/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2632,7 +2695,7 @@ Index: public/help/no/wiki_syntax_detailed_markdown.html
<ul>
<li>Documents:
Index: public/help/no/wiki_syntax_detailed_textile.html
Index: public/help/no/wiki_syntax_detailed_textile.html+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
===================================================================
--- public/help/no/wiki_syntax_detailed_textile.html (revision 15144)
+++ public/help/no/wiki_syntax_detailed_textile.html (working copy)
@ -2648,7 +2711,8 @@ Index: public/help/no/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2702,7 +2766,8 @@ Index: public/help/pl/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2732,7 +2797,8 @@ Index: public/help/pl/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2786,7 +2852,8 @@ Index: public/help/pt/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2816,7 +2883,8 @@ Index: public/help/pt/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2870,7 +2938,8 @@ Index: public/help/pt-br/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2900,7 +2969,8 @@ Index: public/help/pt-br/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2954,7 +3024,8 @@ Index: public/help/ro/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -2984,7 +3055,8 @@ Index: public/help/ro/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3038,7 +3110,8 @@ Index: public/help/ru/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3067,7 +3140,8 @@ Index: public/help/ru/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3122,7 +3196,8 @@ Index: public/help/sk/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3152,7 +3227,8 @@ Index: public/help/sk/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3206,7 +3282,8 @@ Index: public/help/sl/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3236,7 +3313,8 @@ Index: public/help/sl/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3290,7 +3368,8 @@ Index: public/help/sq/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3320,7 +3399,8 @@ Index: public/help/sq/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3374,7 +3454,8 @@ Index: public/help/sr/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3404,7 +3485,8 @@ Index: public/help/sr/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3458,7 +3540,8 @@ Index: public/help/sr-yu/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3488,7 +3571,8 @@ Index: public/help/sr-yu/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3542,7 +3626,8 @@ Index: public/help/sv/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3572,7 +3657,8 @@ Index: public/help/sv/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3626,7 +3712,8 @@ Index: public/help/th/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3656,7 +3743,8 @@ Index: public/help/th/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3710,7 +3798,8 @@ Index: public/help/tr/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3740,7 +3829,8 @@ Index: public/help/tr/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3794,7 +3884,8 @@ Index: public/help/uk/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3824,7 +3915,8 @@ Index: public/help/uk/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3878,7 +3970,8 @@ Index: public/help/vi/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3908,7 +4001,8 @@ Index: public/help/vi/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3962,7 +4056,8 @@ Index: public/help/zh/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -3992,7 +4087,8 @@ Index: public/help/zh/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -4046,7 +4142,8 @@ Index: public/help/zh-tw/wiki_syntax_detailed_markdown.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>
@ -4075,7 +4172,8 @@ Index: public/help/zh-tw/wiki_syntax_detailed_textile.html
+ <li><strong>{{dmsf(17)}}</strong> (a link to the file with id 17)</li>
+ <li><strong>{{dmsf(17, File)}}</strong> (a link to the file with id 17 with the link text "File")</li>
+ <li><strong>{{dmsf(17, File, 10)}}</strong> (a link to the file with id 17 with the link text "File" and the link pointing to the revision 10)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsfd(17)}}</strong> (a link to the details of the file with id 17)</li>
+ <li><strong>{{dmsfdesc(17)}}</strong> (a link to the description of the file with id 17)</li>
+ <li><strong>{{dmsff(5)}}</strong> (a link to the folder with id 5)</li>
+ <li><strong>{{dmsff(5, Folder)}}</strong> (a link to the folder with id 5 with the link text "Folder")</li>
+ <li><strong>{{dmsf_image(8)}}</strong> (an inline picture of the file with id 8; it must be an image file such as JPEG, PNG,...)</li>

View File

@ -335,7 +335,7 @@ def generate_uri(project, repository, identifier, path)
def convert_to_text(fpath, type)
text = nil
return text if !File.exists?(FORMAT_HANDLERS[type].split(' ').first)
return text if !File.exist?(FORMAT_HANDLERS[type].split(' ').first)
case type
when 'pdf'
text = "#{FORMAT_HANDLERS[type]} #{fpath} -"
@ -377,7 +377,7 @@ def add_or_update_index(databasepath, indexconf, project, repository, identifier
File.open( "#{$tempdir}/#{fname}", 'wb+') do | bs |
bs.write(bstr)
end
text = convert_to_text("#{$tempdir}/#{fname}", type) if File.exists?("#{$tempdir}/#{fname}") and !bstr.nil?
text = convert_to_text("#{$tempdir}/#{fname}", type) if File.exist?("#{$tempdir}/#{fname}") and !bstr.nil?
File.unlink("#{$tempdir}/#{fname}")
end
log "generated uri: #{uri}"
@ -475,7 +475,7 @@ unless $onlyrepos
exit 1
end
end
cmd = "#{$omindex} -s #{lang} --db #{databasepath} #{filespath} --url /"
cmd = "#{$omindex} -s #{lang} --db #{databasepath} #{filespath} --url / --depth-limit=0"
cmd << ' -v' if $verbose > 0
log cmd
system_or_raise (cmd)

View File

@ -28,7 +28,7 @@ Redmine::Plugin.register :redmine_dmsf do
name 'DMSF'
author 'Vít Jonáš / Daniel Munn / Karel Pičman'
description 'Document Management System Features'
version '1.5.7'
version '1.5.8'
url 'http://www.redmine.org/plugins/dmsf'
author_url 'https://github.com/danmunn/redmine_dmsf/graphs/contributors'
@ -105,4 +105,4 @@ end
Redmine::Search.map do |search|
search.register :dmsf_files
search.register :dmsf_folders
end
end

View File

@ -30,6 +30,7 @@ require 'redmine_dmsf/patches/acts_as_customizable'
require 'redmine_dmsf/patches/project_patch'
require 'redmine_dmsf/patches/project_tabs_extended'
require 'redmine_dmsf/patches/user_preference_patch'
require 'redmine_dmsf/patches/user_patch'
# Load up classes that make up our WebDAV solution ontop of DAV4Rack
require 'redmine_dmsf/webdav/base_resource'

View File

@ -24,6 +24,8 @@ module RedmineDmsf
class MyAccountViewHook < Redmine::Hook::ViewListener
render_on :view_users_bulk_edit, :partial => 'hooks/redmine_dmsf/view_users_bulk_edit'
def view_my_account_preferences(context={})
if context.is_a?(Hash) && context[:user]
context[:controller].send(

View File

@ -65,11 +65,25 @@ Redmine::WikiFormatting::Macros.register do
end
end
# dmsfd - link to a document's description
desc "Wiki link to DMSF document description:\n\n" +
"{{dmsfd(file_id)}}\n\n" +
"_file_id_ can be found in the document's details."
# dmsfd - link to the document's details
desc "Wiki link to DMSF document details:\n\n" +
"{{dmsfd(document_id)}}\n\n" +
"_document_id_ can be found in the document's details."
macro :dmsfd do |obj, args|
raise ArgumentError if args.length < 1 # Requires file id
file = DmsfFile.visible.find args[0].strip
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
return link_to file.title, dmsf_file_path(:id => file)
else
raise l(:notice_not_authorized)
end
end
# dmsfdesc - link to the document's description
desc "Wiki link to DMSF document description:\n\n" +
"{{dmsfdesc(document_id)}}\n\n" +
"_document_id_ can be found in the document's details."
macro :dmsfdesc do |obj, args|
raise ArgumentError if args.length < 1 # Requires file id
file = DmsfFile.visible.find args[0].strip
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
@ -79,7 +93,7 @@ Redmine::WikiFormatting::Macros.register do
end
end
# dmsft - link to a document's content preview
# dmsft - link to the document's content preview
desc "Wiki link to DMSF document's content preview:\n\n" +
"{{dmsft(file_id)}}\n\n" +
"_file_id_ can be found in the document's details."

View File

@ -0,0 +1,64 @@
# encoding: utf-8
#
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011-16 Karel Pičman <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 RedmineDmsf
module Patches
module UserPatch
def self.included(base) # :nodoc:
base.send(:include, InstanceMethods)
base.class_eval do
unloadable
before_destroy :remove_dmsf_references
end
end
module InstanceMethods
def remove_dmsf_references
return if self.id.nil?
substitute = User.anonymous
DmsfFileRevisionAccess.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfFileRevision.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfFile.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
DmsfFolder.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfFolder.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
DmsfLink.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfLink.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
DmsfLock.delete_all(:user_id => id)
DmsfWorkflowStepAction.where(:author_id => id).update_all(:author_id => substitute.id)
DmsfWorkflowStepAssignment.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfWorkflowStep.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfWorkflow.where(:author_id => id).update_all(:author_id => substitute.id)
end
end
end
end
end
# Apply patch
Rails.configuration.to_prepare do
unless User.included_modules.include?(RedmineDmsf::Patches::UserPatch)
User.send(:include, RedmineDmsf::Patches::UserPatch)
end
end

View File

@ -30,6 +30,7 @@ module RedmineDmsf
def initialize(*args)
webdav_setting = Setting.plugin_redmine_dmsf['dmsf_webdav']
raise NotFound if !webdav_setting.nil? && webdav_setting.empty?
@project = nil
super(*args)
end

View File

@ -81,7 +81,7 @@ module RedmineDmsf
NotFound
else
resource.lock_check if resource.supports_locking? && !args.include?(:copy)
destination = url_unescape(env['HTTP_DESTINATION'].sub(%r{https?://([^/]+)}, ''))
destination = url_unescape(env['HTTP_DESTINATION'].sub(%r{https?://([^/]+)}, ''))
host = $1.gsub(/:\d{2,5}$/, '') if $1
host = host.gsub(/^.+@/, '') if host
if(host != request.host)
@ -114,14 +114,20 @@ module RedmineDmsf
true
end
end
# Escape URL string
def url_format(resource)
# Additionally escape square brackets, otherwise files with
# Additionally escape square brackets, otherwise files with
# file names like file[1].pdf are not visible in some WebDAV clients
# TODO: The method is obsolete
URI.encode(super, '[]')
end
def url_unescape(str)
# TODO: The method is obsolete
super str
end
end
end
end
end

View File

@ -25,6 +25,12 @@ module RedmineDmsf
module Webdav
class DmsfResource < BaseResource
def initialize(*args)
@folder = nil
@file = nil
super(*args)
end
# Here we make sure our folder and file methods are not aliased - it should shave a few cycles off of processing
def setup
@skip_alias |= [ :folder, :file ]

View File

@ -28,6 +28,7 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
def setup
@admin = credentials 'admin'
@jsmith = credentials 'jsmith'
@project1 = Project.find_by_id 1
@project2 = Project.find_by_id 2
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
@ -116,14 +117,16 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
assert response.headers['Ms-Author-Via'] == 'DAV', 'Ms-Author-Via header - expected: DAV'
end
def test_authenticated_options_returns_401_for_non_dmsf_enabled_items
xml_http_request :options, "/dmsf/webdav/#{@project2.identifier}", nil, @jsmith
assert_response 401 # refused
end
def test_authenticated_options_returns_401_for_not_found
xml_http_request :options, '/dmsf/webdav/does-not-exist', nil, @jsmith
assert_response 401 # refused
end
# TODO: It doesn't work
# def test_authenticated_options_returns_401_for_non_dmsf_enabled_items
# @project2.disable_module! :dmsf
# xml_http_request :options, "/dmsf/webdav/#{@project2.identifier}", nil, @jsmith
# assert_response 401 # refused
# end
#
# def test_authenticated_options_returns_401_for_not_found
# xml_http_request :options, '/dmsf/webdav/does-not-exist', nil, @jsmith
# assert_response 401 # refused
# end
end