External URL links improvements

This commit is contained in:
Karel Pičman 2015-03-24 15:49:17 +01:00
parent 0881cd661c
commit fde9b16bd4
14 changed files with 61 additions and 37 deletions

View File

@ -36,7 +36,7 @@ class DmsfLinksController < ApplicationController
@dmsf_link.dmsf_folder_id = params[:dmsf_link][:dmsf_folder_id] # TODO: Add stuff in here for external links so that if error occurs, repopulate the same
@dmsf_file_id = params[:dmsf_link][:dmsf_file_id]
@type = params[:dmsf_link][:type]
@link_external = (params[:external_link] == 'true')
@link_external = (@type == 'link_from') && (params[:external_link] == 'true')
@dmsf_link.target_project_id = params[:dmsf_link][:target_project_id]
@target_folder_id = params[:dmsf_link][:target_folder_id].to_i if params[:reload].blank? && DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id])
if @type == 'link_to'

View File

@ -1,3 +1,5 @@
# encode: utf-8
#
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011-15 Karel Pičman <karel.picman@kontron.com>
@ -18,6 +20,7 @@
class DmsfLink < ActiveRecord::Base
unloadable
include ActiveModel::Validations
belongs_to :project
belongs_to :dmsf_folder
@ -26,6 +29,16 @@ class DmsfLink < ActiveRecord::Base
validates :name, :presence => true
validates_length_of :name, :maximum => 255
validates_length_of :external_url, :maximum => 255
validate :validate_url
def validate_url
begin
URI.parse self.external_url
rescue URI::InvalidURIError
errors.add :external_url, :invalid
end
end
if (Redmine::VERSION::MAJOR >= 3)
scope :visible, -> { where(deleted: false) }

View File

@ -1,6 +1,6 @@
<%# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011-14 Karel Pičman <karel.picman@lbcfree.net>
# Copyright (C) 2011-15 Karel Pičman <karel.picman@lbcfree.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -16,15 +16,14 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%>
<% html_title(l(:dmsf)) %>
<% html_title l(:dmsf) %>
<div class="contextual">
</div>
<% if @dmsf_file_id %>
<% file = DmsfFile.find_by_id @dmsf_file_id%>
<% title = file.title if file %>
<% title = file.title if file %>
<% title = file.title if file %>
<% end %>
<%= render(:partial => '/dmsf/path', :locals => {:folder => @dmsf_link.folder, :filename => title}) %>
@ -36,31 +35,33 @@
<%= f.hidden_field :type, :value => @type %>
<%= f.hidden_field :dmsf_file_id, :value => @dmsf_file_id %>
<div class="box dmsf_detail">
<% if @type == 'link_from' %>
<p>
<%= radio_button_tag(:external_link,'false',@link_external == false) %> Internal</br>
<%= radio_button_tag(:external_link,'true',@link_external) %> External
</p>
<div id="link_internal" style="<%= @link_external ? 'display:none' : '' %>">
<p>
<% if @type == 'link_from' %>
<%= label_tag('dmsf_link[target_project_id]', l(:label_source_project), :class => 'required') %>
<% else %>
<%= label_tag('dmsf_link[target_project_id]', l(:label_target_project), :class => 'required') %>
<% end %>
<%= select_tag('dmsf_link[target_project_id]',
project_tree_options_for_select(DmsfFile.allowed_target_projects_on_copy,
:selected => @dmsf_link.target_project)) %>
</p>
<p>
<% if @type == 'link_from' %>
<%= label_tag('dmsf_link[target_folder_id]', l(:label_source_folder)) %>
<% else %>
<%= label_tag('dmsf_link[target_folder_id]', l(:label_target_folder)) %>
<% end %>
<%= select_tag('dmsf_link[target_folder_id]',
folder_tree_options_for_select(DmsfFolder.directory_tree(@dmsf_link.target_project),
:selected => @target_folder_id)) %>
</p>
<%= radio_button_tag(:external_link, 'false', @link_external == false) %> <%= l(:label_internal) %></br>
<%= radio_button_tag(:external_link, 'true', @link_external) %> <%= l(:label_external) %>
</p>
<% end %>
<div id="link_internal" style="<%= @link_external ? 'display:none' : '' %>">
<p>
<% if @type == 'link_from' %>
<%= label_tag('dmsf_link[target_project_id]', l(:label_source_project), :class => 'required') %>
<% else %>
<%= label_tag('dmsf_link[target_project_id]', l(:label_target_project), :class => 'required') %>
<% end %>
<%= select_tag('dmsf_link[target_project_id]',
project_tree_options_for_select(DmsfFile.allowed_target_projects_on_copy,
:selected => @dmsf_link.target_project)) %>
</p>
<p>
<% if @type == 'link_from' %>
<%= label_tag('dmsf_link[target_folder_id]', l(:label_source_folder)) %>
<% else %>
<%= label_tag('dmsf_link[target_folder_id]', l(:label_target_folder)) %>
<% end %>
<%= select_tag('dmsf_link[target_folder_id]',
folder_tree_options_for_select(DmsfFolder.directory_tree(@dmsf_link.target_project),
:selected => @target_folder_id)) %>
</p>
<% if @type == 'link_from' %>
<p>
<% if @target_folder_id %>
@ -74,12 +75,11 @@
</p>
<% end %>
<p>
</div>
<div id="link_external" style="<%= @link_external ? '' : 'display:none' %>">
</div>
<div id="link_external" style="<%= @link_external ? '' : 'display:none' %>">
<%= label_tag('dmsf_link[external_url]', l(:label_link_external_url), :class => 'required') %>
<%= text_field_tag 'dmsf_link[external_url]', @dmsf_link.external_url, :size => 40, :maxlength => 255 %>
</div>
</div>
<%= label_tag('dmsf_link[name]', l(:label_link_name), :class => 'required') %>
<%= text_field_tag 'dmsf_link[name]', @dmsf_link.name, :size => 40, :maxlength => 255 %>
</p>

View File

@ -296,13 +296,14 @@ cs:
label_source_folder: Zdrojový adresář
label_target_project: Cílový projekt
label_source_project: Zdrojový projekt
label_external: Externí
text_email_doc_updated_subject: "Dokumenty projektu %{project} aktualizovány"
text_email_doc_updated: právě aktualizoval dokumenty projektu
text_email_doc_follows: takto
text_email_doc_deleted_subject: "Dokumenty projektu %{project} smazány"
text_email_doc_deleted: právě smazal dokumety projektu
label_links_only: pouze odkazy
label_links_only: pouze odkazy
label_display_notified_recipients: Zobrazit příjemce notifikací
note_display_notified_recipients: Uživatel bude informován o příjemcích právě odeslané emailové notifikace.

View File

@ -293,13 +293,14 @@ de:
label_source_folder: Quellordner
label_target_project: Zielprojekt
label_source_project: Quellprojekt
label_external: Außen
text_email_doc_updated_subject: "Dokumente im Projekt %{project} wurden aktualisiert"
text_email_doc_updated: hat folgende Dokumente bearbeitet
text_email_doc_follows: wie folgt
text_email_doc_deleted_subject: "Dokumente im Projekt %{project} wurden gelöscht"
text_email_doc_deleted: hat folgende Dokumente gelöscht
label_links_only: nur Verknüpfungen
label_links_only: nur Verknüpfungen
label_display_notified_recipients: Zeige benachrichtigte Empfänger
note_display_notified_recipients: Der User wird über alle Empfänger der Emailbenachrichtigung informiert.

View File

@ -288,6 +288,7 @@ en:
label_notifications_off: Notifications off
field_target_file: Source file
title_download_entries: Download entries
label_external: External
label_link_name: Link name
label_link_external_url: URL
@ -301,7 +302,7 @@ en:
text_email_doc_follows: as follows
text_email_doc_deleted_subject: "Documents of %{project} deleted"
text_email_doc_deleted: has just deleted documents of
label_links_only: links only
label_links_only: links only
label_display_notified_recipients: Display notified recipients
note_display_notified_recipients: The user will be informed about all recipients of just sent the email notification.

View File

@ -296,6 +296,7 @@ es:
label_source_folder: Directorio fuente
label_target_project: Proyecto destino
label_source_project: Proyecto fuente
label_external: External
text_email_doc_updated_subject: "Documentos de %{project} actualizados"
text_email_doc_updated: acaba de actualizar los ducumentos de

View File

@ -293,13 +293,14 @@ fr:
label_source_folder: Dossier source
label_target_project: Projet cible
label_source_project: Projet source
label_external: External
text_email_doc_updated_subject: "Documents de %{project} mis à jour"
text_email_doc_updated: a mis à jour des documents de
text_email_doc_follows: comme suit
text_email_doc_deleted_subject: "Documents de %{project} supprimés"
text_email_doc_deleted: a supprimé des documents de
label_links_only: liens seulement
label_links_only: liens seulement
label_display_notified_recipients: Afficher les destinataires notifiés
note_display_notified_recipients: "L'utilisateur sera informé de tous les destinataires à qui un email de notifcation a été envoyé"

View File

@ -296,6 +296,7 @@ ja:
label_source_folder: Source folder
label_target_project: Target project
label_source_project: Source project
label_external: External
text_email_doc_updated_subject: "Documents of %{project} updated"
text_email_doc_updated: has just actualized documents of

View File

@ -296,6 +296,7 @@ pl:
label_source_folder: Folder źródłowy
label_target_project: Projekt docelowy
label_source_project: Projekt źródłowy
label_external: External
text_email_doc_updated_subject: "Dokumenty projektu %{project} zostały zaktualizowane"
text_email_doc_updated: dokumenty zostały zaktualizowane

View File

@ -296,6 +296,7 @@ ru:
label_source_folder: Source folder
label_target_project: Target project
label_source_project: Source project
label_external: External
text_email_doc_updated_subject: "Documents of %{project} updated"
text_email_doc_updated: has just actualized documents of

View File

@ -296,6 +296,7 @@ sl:
label_source_folder: Source folder
label_target_project: Target project
label_source_project: Source project
label_external: External
text_email_doc_updated_subject: "Documents of %{project} updated"
text_email_doc_updated: has just actualized documents of

View File

@ -297,6 +297,7 @@ zh-TW:
label_source_folder: Source folder
label_target_project: Target project
label_source_project: Source project
label_external: External
text_email_doc_updated_subject: "Documents of %{project} updated"
text_email_doc_updated: has just actualized documents of

View File

@ -296,6 +296,7 @@ zh:
label_source_folder: Source folder
label_target_project: Target project
label_source_project: Source project
label_external: External
text_email_doc_updated_subject: "Documents of %{project} updated"
text_email_doc_updated: has just actualized documents of