Actualiza el código con personalizaciones

Archivos que se modifican para personalizar su funcionamiento según los
requerimientos de SuitePro.
This commit is contained in:
Manuel Cillero 2020-12-02 20:03:09 +01:00
parent bb4beba114
commit 7750f183e7
12 changed files with 326 additions and 66 deletions

View file

@ -44,6 +44,8 @@ class WikiController < ApplicationController
helper :watchers helper :watchers
include Redmine::Export::PDF include Redmine::Export::PDF
include ActionView::Helpers::SanitizeHelper
# List of pages, sorted alphabetically and by parent (hierarchy) # List of pages, sorted alphabetically and by parent (hierarchy)
def index def index
load_pages_for_index load_pages_for_index
@ -109,7 +111,7 @@ class WikiController < ApplicationController
send_data(export, :type => 'text/html', :filename => filename_for_content_disposition("#{@page.title}.html")) send_data(export, :type => 'text/html', :filename => filename_for_content_disposition("#{@page.title}.html"))
return return
elsif params[:format] == 'txt' elsif params[:format] == 'txt'
send_data(@content.text, :type => 'text/plain', :filename => filename_for_content_disposition("#{@page.title}.txt")) send_data(strip_tags(@content.text), :type => 'text/plain', :filename => filename_for_content_disposition("#{@page.title}.txt"))
return return
end end
end end

View file

@ -18,11 +18,14 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module SearchHelper module SearchHelper
include ActionView::Helpers::SanitizeHelper
def highlight_tokens(text, tokens) def highlight_tokens(text, tokens)
return text unless text && tokens && !tokens.empty? return text unless text && tokens && !tokens.empty?
re_tokens = tokens.collect {|t| Regexp.escape(t)} re_tokens = tokens.collect {|t| Regexp.escape(t)}
regexp = Regexp.new "(#{re_tokens.join('|')})", Regexp::IGNORECASE regexp = Regexp.new "(#{re_tokens.join('|')})", Regexp::IGNORECASE
result = +'' result = +''
text = strip_tags(text)
text.split(regexp).each_with_index do |words, i| text.split(regexp).each_with_index do |words, i|
if result.length > 1200 if result.length > 1200
# maximum length of the preview reached # maximum length of the preview reached

View file

@ -1,27 +1,28 @@
<%= call_hook :view_account_login_top %> <%= call_hook :view_account_login_top %>
<div id="login-form"> <div id="login-form">
<h2><%= l(:label_login) %></h2>
<%= form_tag(signin_path, onsubmit: 'return keepAnchorOnSignIn(this);') do %> <%= form_tag(signin_path, onsubmit: 'return keepAnchorOnSignIn(this);') do %>
<%= back_url_hidden_field_tag %> <%= back_url_hidden_field_tag %>
<label for="username"><%=l(:field_login)%></label> <label for="username"><%=l(:field_login)%></label>
<%= text_field_tag 'username', params[:username], :tabindex => '1' %> <%= text_field_tag 'username', params[:username], :tabindex => '1' %>
<label for="password"> <label for="password">
<%=l(:field_password)%> <%=l(:field_password)%>
<%= link_to l(:label_password_lost), lost_password_path, :class => "lost_password" if Setting.lost_password? %> <%= link_to l(:label_password_lost), lost_password_path, :class => "lost_password" if Setting.lost_password? %>
</label> </label>
<%= password_field_tag 'password', nil, :tabindex => '2' %> <%= password_field_tag 'password', nil, :tabindex => '2' %>
<% if Setting.openid? %> <% if Setting.openid? %>
<label for="openid_url"><%=l(:field_identity_url)%></label> <label for="openid_url"><%=l(:field_identity_url)%></label>
<%= text_field_tag "openid_url", nil, :tabindex => '3' %> <%= text_field_tag "openid_url", nil, :tabindex => '3' %>
<% end %> <% end %>
<% if Setting.autologin? %> <% if Setting.autologin? %>
<label for="autologin"><%= check_box_tag 'autologin', 1, false, :tabindex => 4 %> <%= l(:label_stay_logged_in) %></label> <label for="autologin"><%= check_box_tag 'autologin', 1, false, :tabindex => 4 %> <%= l(:label_stay_logged_in) %></label>
<% end %> <% end %>
<input type="submit" name="login" value="<%=l(:button_login)%>" tabindex="5" id="login-submit" /> <input type="submit" name="login" value="<%=l(:button_login)%>" tabindex="5" id="login-submit" />
<% end %> <% end %>
</div> </div>

View file

@ -16,9 +16,7 @@
:rev => changeset.identifier) %>) :rev => changeset.identifier) %>)
<% end %></p> <% end %></p>
<div class="wiki changeset-comments"> <div class="wiki changeset-comments"><%= format_changeset_comments changeset %></div>
<%= format_changeset_comments changeset %>
</div>
</div> </div>
<%= call_hook(:view_issues_history_changeset_bottom, { :changeset => changeset }) %> <%= call_hook(:view_issues_history_changeset_bottom, { :changeset => changeset }) %>
<% end %> <% end %>

View file

@ -2,22 +2,27 @@
<html lang="<%= current_language %>"> <html lang="<%= current_language %>">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title><%= html_title %></title> <title><%= html_title %></title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<meta name="description" content="<%= Redmine::Info.app_name %>" /> <meta name="description" content="<%= Redmine::Info.app_name %>" />
<meta name="keywords" content="issue,bug,tracker" /> <meta name="keywords" content="issue,bug,tracker" />
<%= csrf_meta_tag %> <%= csrf_meta_tag %>
<%= favicon %> <%= favicon %>
<%= stylesheet_link_tag 'jquery/jquery-ui-1.11.0', 'tribute-3.7.3', 'application', 'responsive', :media => 'all' %> <%= stylesheet_link_tag 'jquery/jquery-ui-1.11.0', 'cookieconsent.min', 'tribute-3.7.3', 'application', 'responsive', :media => 'all' %>
<%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
<% is_welcome = !User.current.logged? && current_page?(:controller => 'welcome', :action => 'index') %>
<%= stylesheet_link_tag 'frontpage', :media => 'all' if is_welcome %>
<%= javascript_heads %> <%= javascript_heads %>
<script src="/themes/circlepro/javascripts/cookieconsent.min.js"></script>
<%= heads_for_theme %> <%= heads_for_theme %>
<%= call_hook :view_layouts_base_html_head %> <%= call_hook :view_layouts_base_html_head %>
<!-- page specific tags --> <!-- page specific tags -->
<%= yield :header_tags -%> <%= yield :header_tags -%>
</head> </head>
<body class="<%= body_css_classes %>"> <body class="<%= body_css_classes %><%= ' is-preload' if is_welcome %>">
<%= call_hook :view_layouts_base_body_top %> <%= call_hook :view_layouts_base_body_top %>
<div id="wrapper"> <div id="wrapper">
@ -60,20 +65,32 @@
<div id="wrapper2"> <div id="wrapper2">
<div id="wrapper3"> <div id="wrapper3">
<div id="top-menu"> <div id="top-menu">
<div id="wrapper-top-menu">
<ul class="social-menu">
<li class="social-link-blog"><a href="https://manuel.cillero.es" title="<%= l(:link_my_blog) %>" class="icon-blog"><span><%= l(:link_my_blog) %></span></a></li>
<li class="social-link-twitter"><a href="https://twitter.com/manuelcillero" title="Twitter" target="_blank" class="icon-twitter"><span>Twitter</span></a></li>
<li class="social-link-facebook"><a href="https://facebook.com/manuelcillero" title="Facebook" target="_blank" class="icon-facebook"><span>Facebook</span></a></li>
<li class="social-link-linkedin"><a href="https://es.linkedin.com/in/manuelcillero" title="Linkedin" target="_blank" class="icon-linkedin"><span>Linkedin</span></a></li>
<li class="social-link-gitlab"><a href="https://gitlab.com/manuelcillero" title="Gitlab" target="_blank" class="icon-gitlab"><span>Gitlab</span></a></li>
<li class="social-link-mail"><a href="https://manuel.cillero.es/contacto/#suitepro" title="Mail" class="icon-mail"><span>Mail</span></a></li>
</ul>
<div id="account"> <div id="account">
<%= render_menu :account_menu -%> <%= render_menu :account_menu -%>
</div> </div>
<%= content_tag('div', "#{l(:label_logged_as)} #{link_to_user(User.current, :format => :username)}".html_safe, :id => 'loggedas') if User.current.logged? %> <%= content_tag('div', "#{l(:label_logged_as)} #{link_to_user(User.current, :format => :username)}".html_safe, :id => 'loggedas') if User.current.logged? %>
<%= render_menu :top_menu if User.current.logged? || !Setting.login_required? -%> <%= render_menu :top_menu if User.current.logged? || !Setting.login_required? -%>
</div>
</div> </div>
<div id="header"> <div id="header">
<a href="#" class="mobile-toggle-button js-flyout-menu-toggle-button"></a> <a href="#" class="mobile-toggle-button js-flyout-menu-toggle-button"></a>
<div id="wrapper-header">
<% if User.current.logged? || !Setting.login_required? %> <% if User.current.logged? || !Setting.login_required? %>
<div id="quick-search"> <div id="quick-search" class="hide-when-print">
<%= form_tag({:controller => 'search', :action => 'index', :id => @project}, :method => :get ) do %> <%= form_tag({:controller => 'search', :action => 'index', :id => @project}, :method => :get ) do %>
<%= hidden_field_tag 'scope', default_search_project_scope, :id => nil %> <%= hidden_field_tag 'scope', default_search_project_scope, :id => nil %>
<%= hidden_field_tag(controller.default_search_scope, 1, :id => nil) if controller.default_search_scope %> <%= hidden_field_tag(controller.default_search_scope, 1, :id => nil) if controller.default_search_scope %>
@ -91,14 +108,17 @@
<% end %> <% end %>
<h1><%= page_header_title %></h1> <h1><%= page_header_title %></h1>
</div>
<% if display_main_menu?(@project) %> <% if display_main_menu?(@project) %>
<div id="main-menu" class="tabs"> <div id="main-menu" class="tabs">
<div id="wrapper-main-menu">
<%= render_main_menu(@project) %> <%= render_main_menu(@project) %>
<div class="tabs-buttons" style="display:none;"> <div class="tabs-buttons" style="display:none;">
<button class="tab-left" onclick="moveTabLeft(this); return false;"></button> <button class="tab-left" onclick="moveTabLeft(this); return false;"></button>
<button class="tab-right" onclick="moveTabRight(this); return false;"></button> <button class="tab-right" onclick="moveTabRight(this); return false;"></button>
</div> </div>
</div>
</div> </div>
<% end %> <% end %>
</div> </div>
@ -116,16 +136,55 @@
<div style="clear:both;"></div> <div style="clear:both;"></div>
</div> </div>
</div> </div>
<div id="footer">
Powered by <%= link_to Redmine::Info.app_name, Redmine::Info.url %> &copy; 2006-2020 Jean-Philippe Lang </div> <!-- #wrapper3 -->
</div>
</div> <a href="#" id="scrollup" class="hide-when-print" style="display: none;"><%=l(:label_sort_higher)%></a><%= javascript_tag "$('#scrollup').click(function(){$('html,body').animate({scrollTop:0},600);return false;});" %>
<div id="ajax-indicator" style="display:none;"><span><%= l(:label_loading) %></span></div> <div id="ajax-indicator" style="display:none;"><span><%= l(:label_loading) %></span></div>
<div id="ajax-modal" style="display:none;"></div> <div id="ajax-modal" style="display:none;"></div>
<div id="footer">
<div id="wrapper-footer">
<ul class="social-menu">
<li class="social-link-blog"><a href="https://manuel.cillero.es" title="<%= l(:link_my_blog) %>" class="icon-blog"><span><%= l(:link_my_blog) %></span></a></li>
<li class="social-link-twitter"><a href="https://twitter.com/manuelcillero" title="Twitter" target="_blank" class="icon-twitter"><span>Twitter</span></a></li>
<li class="social-link-facebook"><a href="https://facebook.com/manuelcillero" title="Facebook" target="_blank" class="icon-facebook"><span>Facebook</span></a></li>
<li class="social-link-linkedin"><a href="https://es.linkedin.com/in/manuelcillero" title="Linkedin" target="_blank" class="icon-linkedin"><span>Linkedin</span></a></li>
<li class="social-link-gitlab"><a href="https://gitlab.com/manuelcillero" title="Gitlab" target="_blank" class="icon-gitlab"><span>Gitlab</span></a></li>
<li class="social-link-mail"><a href="https://manuel.cillero.es/contacto/#suitepro" title="Mail" class="icon-mail"><span>Mail</span></a></li>
</ul>
<div class="bgl"><div class="bgr">
<%= Time.current.year %> &copy; SuitePro (powered by <%= link_to Redmine::Info.app_name, Redmine::Info.url %>)
<div id="legal">
<span class="legal-legal"><a href="/projects/suitepro/wiki/Legal"><%= l(:label_legal) %></a></span>
<span class="legal-terms"> &nbsp;|&nbsp; <a href="/projects/suitepro/wiki/Condiciones_de_uso"><%= l(:label_legal_terms) %></a></span>
<span class="legal-privacy"> &nbsp;|&nbsp; <a href="/projects/suitepro/wiki/Política_de_privacidad"><%= l(:label_legal_privacy) %></a></span>
<span class="legal-cookies"> &nbsp;|&nbsp; <a href="/projects/suitepro/wiki/Política_de_cookies"><%= l(:label_legal_cookies) %></a></span>
</div>
</div></div>
</div> </div>
</div> </div>
</div> <!-- #wrapper2 -->
</div> <!-- #wrapper -->
<%= call_hook :view_layouts_base_body_bottom %> <%= call_hook :view_layouts_base_body_bottom %>
<script>
//<![CDATA[
window.addEventListener("load", function(){
window.cookieconsent.initialise({
"palette": { "popup": { "background": "rgba(20,20,20,0.8)" }, "button": { "background": "#fff" } },
"theme": "classic",
"position": "bottom-left",
"content": { "message": "<a href='https://suitepro.cillero.es'>SuitePro</a> requiere el uso de cookies para ofrecer la mejor experiencia de acceso a sus contenidos. Puedes aceptar su uso o abandonar la página si lo deseas.", "dismiss": "ACEPTO SU USO", "link": "Más información", "href": "/projects/suitepro/wiki/Pol%C3%ADtica_de_cookies", "target": "_self" }
})});
//]]>
</script>
</body> </body>
</html> </html>

View file

@ -33,9 +33,7 @@
</div> </div>
<div class="wiki changeset-comments"> <div class="wiki changeset-comments"><%= format_changeset_comments @changeset %></div>
<%= format_changeset_comments @changeset %>
</div>
<% if @changeset.issues.visible.any? || User.current.allowed_to?(:manage_related_issues, @repository.project) %> <% if @changeset.issues.visible.any? || User.current.allowed_to?(:manage_related_issues, @repository.project) %>
<%= render :partial => 'related_issues' %> <%= render :partial => 'related_issues' %>

View file

@ -61,7 +61,8 @@
<%= render(:partial => "wiki/content", :locals => {:content => @content}) %> <%= render(:partial => "wiki/content", :locals => {:content => @content}) %>
<fieldset class="collapsible collapsed hide-when-print"> <% if @page.attachments.length > 0 || (@editable && authorize_for('wiki', 'add_attachment')) %>
<fieldset class="collapsible collapsed<% if @page.attachments.length == 0 %> hide-when-print<% end %>">
<legend onclick="toggleFieldset(this);" class="icon icon-collapsed"><%= l(:label_attachment_plural) %> (<%= @page.attachments.length %>)</legend> <legend onclick="toggleFieldset(this);" class="icon icon-collapsed"><%= l(:label_attachment_plural) %> (<%= @page.attachments.length %>)</legend>
<div style="display: none;"> <div style="display: none;">
@ -81,6 +82,7 @@
<% end %> <% end %>
</div> </div>
</fieldset> </fieldset>
<% end %>
<p class="wiki-update-info"> <p class="wiki-update-info">
<% if User.current.allowed_to?(:view_wiki_edits, @project) %> <% if User.current.allowed_to?(:view_wiki_edits, @project) %>

View file

@ -1284,3 +1284,11 @@ en:
text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_non_member: Public projects and their contents are available to all logged-in users.
text_project_is_public_anonymous: Public projects and their contents are openly available on the network. text_project_is_public_anonymous: Public projects and their contents are openly available on the network.
label_import_time_entries: Import time entries label_import_time_entries: Import time entries
link_my_blog: My Blog
label_legal: Legal notice
label_legal_terms: Terms of use
label_legal_privacy: Privacy policy
label_legal_cookies: Cookies policy

View file

@ -507,7 +507,7 @@ es:
label_loading: Cargando... label_loading: Cargando...
label_logged_as: Conectado como label_logged_as: Conectado como
label_login: Iniciar sesión label_login: Iniciar sesión
label_logout: Terminar sesión label_logout: Cerrar sesión
label_max_size: Tamaño máximo label_max_size: Tamaño máximo
label_me: yo mismo label_me: yo mismo
label_member: Miembro label_member: Miembro
@ -546,7 +546,7 @@ es:
label_optional_description: Descripción opcional label_optional_description: Descripción opcional
label_options: Opciones label_options: Opciones
label_overall_activity: Actividad global label_overall_activity: Actividad global
label_overview: Vistazo label_overview: Resumen
label_password_lost: ¿Olvidaste la contraseña? label_password_lost: ¿Olvidaste la contraseña?
label_permissions: Permisos label_permissions: Permisos
label_permissions_report: Informe de permisos label_permissions_report: Informe de permisos
@ -1216,7 +1216,7 @@ es:
mail_body_security_notification_notify_disabled: Se han desactivado las notificaciones para el correo electrónico %{value} mail_body_security_notification_notify_disabled: Se han desactivado las notificaciones para el correo electrónico %{value}
mail_body_settings_updated: ! 'Las siguientes opciones han sido actualizadas:' mail_body_settings_updated: ! 'Las siguientes opciones han sido actualizadas:'
field_remote_ip: Dirección IP field_remote_ip: Dirección IP
label_wiki_page_new: Nueva pagina wiki label_wiki_page_new: Nueva página
label_relations: Relaciones label_relations: Relaciones
button_filter: Filtro button_filter: Filtro
mail_body_password_updated: Su contraseña se ha cambiado. mail_body_password_updated: Su contraseña se ha cambiado.
@ -1232,7 +1232,7 @@ es:
label_font_monospace: Fuente Monospaced label_font_monospace: Fuente Monospaced
label_font_proportional: Fuente Proportional label_font_proportional: Fuente Proportional
setting_timespan_format: Time span format setting_timespan_format: Time span format
label_table_of_contents: Table of contents label_table_of_contents: Tabla de contenidos
setting_commit_logs_formatting: Apply text formatting to commit messages setting_commit_logs_formatting: Apply text formatting to commit messages
setting_mail_handler_enable_regex: Enable regular expressions setting_mail_handler_enable_regex: Enable regular expressions
error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new
@ -1261,10 +1261,10 @@ es:
setting_time_entry_list_defaults: Timelog list defaults setting_time_entry_list_defaults: Timelog list defaults
setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_accept_0_hours: Accept time logs with 0 hours
setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user
label_x_revisions: "%{count} revisions" label_x_revisions: "Revisiones: %{count}"
error_can_not_delete_auth_source: This authentication mode is in use and cannot be error_can_not_delete_auth_source: This authentication mode is in use and cannot be
deleted. deleted.
button_actions: Actions button_actions: Acciones
mail_body_lost_password_validity: Please be aware that you may change the password mail_body_lost_password_validity: Please be aware that you may change the password
only once using this link. only once using this link.
text_login_required_html: When not requiring authentication, public projects and their text_login_required_html: When not requiring authentication, public projects and their
@ -1315,11 +1315,11 @@ es:
label_import_notifications: Send email notifications during the import label_import_notifications: Send email notifications during the import
text_gs_available: ImageMagick PDF support available (optional) text_gs_available: ImageMagick PDF support available (optional)
field_recently_used_projects: Number of recently used projects in jump box field_recently_used_projects: Number of recently used projects in jump box
label_optgroup_bookmarks: Bookmarks label_optgroup_bookmarks: Marcadores
label_optgroup_others: Other projects label_optgroup_others: Otros proyectos
label_optgroup_recents: Recently used label_optgroup_recents: Accesos recientes
button_project_bookmark: Add bookmark button_project_bookmark: Añadir marcador
button_project_bookmark_delete: Remove bookmark button_project_bookmark_delete: Quitar marcador
field_history_default_tab: Issue's history default tab field_history_default_tab: Issue's history default tab
label_issue_history_properties: Property changes label_issue_history_properties: Property changes
label_issue_history_notes: Notes label_issue_history_notes: Notes
@ -1341,3 +1341,11 @@ es:
label_display_type_board: Board label_display_type_board: Board
label_my_bookmarks: My bookmarks label_my_bookmarks: My bookmarks
label_import_time_entries: Import time entries label_import_time_entries: Import time entries
link_my_blog: Mi blog personal
label_legal: Aviso legal
label_legal_terms: Condiciones de uso
label_legal_privacy: Política de privacidad
label_legal_cookies: Uso de cookies

View file

@ -26,29 +26,148 @@
= call_hook :view_welcome_show_actions_dropdown = call_hook :view_welcome_show_actions_dropdown
h2 = welcome_overview_name @dashboard - if User.current.logged?
= call_hook :view_welcome_index_top h2 = welcome_overview_name @dashboard
= render partial: 'common/dashboard', locals: { dashboard: @dashboard } = call_hook :view_welcome_index_top
= call_hook :view_welcome_index_bottom = render partial: 'common/dashboard', locals: { dashboard: @dashboard }
- if @dashboard_sidebar = call_hook :view_welcome_index_bottom
- content_for :sidebar do
= render partial: 'sidebar'
= call_hook :view_welcome_show_sidebar_bottom
- content_for :header_tags do - if @dashboard_sidebar
= auto_discovery_link_tag :atom, - content_for :sidebar do
{ controller: 'news', = render partial: 'sidebar'
action: 'index', = call_hook :view_welcome_show_sidebar_bottom
key: User.current.rss_key,
format: 'atom' }, - content_for :header_tags do
title: "#{Setting.app_title}: #{l :label_news_latest}" = auto_discovery_link_tag :atom,
= auto_discovery_link_tag :atom, { controller: 'news',
{ controller: 'activities', action: 'index',
action: 'index', key: User.current.rss_key,
key: User.current.rss_key, format: 'atom' },
format: 'atom' }, title: "#{Setting.app_title}: #{l :label_news_latest}"
title: "#{Setting.app_title}: #{l :label_activity}" = auto_discovery_link_tag :atom,
{ controller: 'activities',
action: 'index',
key: User.current.rss_key,
format: 'atom' },
title: "#{Setting.app_title}: #{l :label_activity}"
- else
div id="fp"
= text_field_tag 'forcetop', nil, :style => 'display: none;'
<!-- Banner -->
section id="fp-banner"
div class="inner"
h2 SuitePro
p #{l :welcome_suitepro}
ul class="actions special"
li
<a href="#fp-login" class="button primary scrolly">#{l :label_login}</a>
<a href="#one" class="more scrolly">#{l :welcome_discover}</a>
<!-- One -->
section id="one" class="frapper style1 special"
div class="inner"
header class="major"
h2 A SIMPLE WAY TO GET WORK DONE&nbsp;&nbsp;;)
p #{raw l :welcome_suitepro_is_redmine, :suitepro => '<strong>SuitePro</strong>', :redmine => '<a href="https://www.redmine.org"><strong>Redmine</strong></a>'}
ul class="icons major"
<li><span class="fp-icon fp-icon_1 major style1"><span class="label">Ruby</span></span></li>
<li><span class="fp-icon fp-icon_2 major style2"><span class="label">Project</span></span></li>
<li><span class="fp-icon fp-icon_3 major style3"><span class="label">Workflow</span></span></li>
<!-- Two -->
section id="two" class="frapper alt style2"
section class="spotlight"
div class="image"
= image_tag '/themes/circlepro/images/pic01.jpg'
div class="content"
h2 #{raw l :welcome_spotlight_1_title}
p #{l :welcome_spotlight_1_text}
section class="spotlight"
div class="image"
= image_tag '/themes/circlepro/images/pic02.jpg'
div class="content"
h2 #{raw l :welcome_spotlight_2_title}
p #{l :welcome_spotlight_2_text}
section class="spotlight"
div class="image"
= image_tag '/themes/circlepro/images/pic03.jpg'
div class="content"
h2 #{raw l :welcome_spotlight_3_title}
p #{l :welcome_spotlight_3_text}
<!-- Three -->
section id="three" class="frapper style3 special"
div class="inner"
header class="major"
h2 #{l :welcome_other_features}
ul class="features"
li class="fp-icon fp-icon_4"
h3 #{l :welcome_feature_1_title}
p #{l :welcome_feature_1_text}
li class="fp-icon fp-icon_5"
h3 #{l :welcome_feature_2_title}
p #{l :welcome_feature_2_text}
li class="fp-icon fp-icon_6"
h3 #{l :welcome_feature_3_title}
p #{l :welcome_feature_3_text}
li class="fp-icon fp-icon_7"
h3 #{l :welcome_feature_4_title}
p #{l :welcome_feature_4_text}
li class="fp-icon fp-icon_8"
h3 #{l :welcome_feature_5_title}
p #{l :welcome_feature_5_text}
li class="fp-icon fp-icon_9"
h3 #{l :welcome_feature_6_title}
p #{l :welcome_feature_6_text}
<!-- Login -->
section id="fp-login" class="frapper style4"
div class="inner"
div id="login-form"
h2 #{l :label_login}
= form_tag signin_path, onsubmit: 'return keepAnchorOnSignIn(this);' do
= back_url_hidden_field_tag
label for="username" #{l :field_login}
= text_field_tag 'username', params[:username], :tabindex => '1'
<label for="password">#{l :field_password}
= link_to l(:label_password_lost), lost_password_path, :class => "lost_password" if Setting.lost_password?
</label>
= password_field_tag 'password', nil, :tabindex => '2'
- if Setting.openid?
label for="openid_url" #{l :field_identity_url}
= text_field_tag "openid_url", nil, :tabindex => '3'
- if Setting.autologin?
label for="autologin" #{l :label_stay_logged_in}
= check_box_tag 'autologin', 1, false, :tabindex => 4
<input type="submit" name="login" value="#{l :button_login}" tabindex="5" id="login-submit" />
<!-- CTA -->
section id="fp-cta" class="frapper style4"
div class="inner"
header
h2 #{l :welcome_any_questions}
p #{l :welcome_please_contact}
ul class="actions stacked"
li
<a href="https://manuel.cillero.es/contacto/#suitepro" class="button fit primary">#{l :welcome_contact}</a>
li
<a href="https://manuel.cillero.es/sobre-mi" class="button fit">#{l :welcome_about_me}</a>
<script src="/themes/circlepro/javascripts/frontpage/jquery.scrolly.min.js"></script>
<script src="/themes/circlepro/javascripts/frontpage/browser.min.js"></script>
<script src="/themes/circlepro/javascripts/frontpage/breakpoints.min.js"></script>
<script src="/themes/circlepro/javascripts/frontpage/util.js"></script>
<script src="/themes/circlepro/javascripts/frontpage/main.js"></script>

View file

@ -189,3 +189,34 @@ en:
wiki_pdf_remove_title_info: "When active the Wiki title info will not be displayed in PDF view." wiki_pdf_remove_title_info: "When active the Wiki title info will not be displayed in PDF view."
label_copied_to_clipboard: Copied! label_copied_to_clipboard: Copied!
label_copy_to_clipboard: Copy to clipboard label_copy_to_clipboard: Copy to clipboard
welcome_suitepro: Planning, knowledge sharing, clients support and personal productivity, with both powerful and simplicity in mind.
welcome_discover: Discover
welcome_suitepro_is_redmine: "%{suitepro} is powered by %{redmine}, the popular project management and issue tracking solution based on the Ruby on Rails framework. Redmine lets us have a powerful workflow for getting tasks done and keep information in one place."
welcome_spotlight_1_title: "The Basics: Projects,<br /> Tasks, Issue Tracking"
welcome_spotlight_1_text: Keep track of everything, with visual indicators to monitorize tasks and subtasks in order to stay up to date with milestones, track of time, workflows and all that requires attention.
welcome_spotlight_2_title: "Documents, Wikis,<br /> File Management"
welcome_spotlight_2_text: Keep documents and files availables wherever you are. Use the wiki project to save project requeriments, attached files, install and user guides, or meeting minutes at your fingertips.
welcome_spotlight_3_title: "Flexible control<br /> of user access"
welcome_spotlight_3_text: Using a role-based approach, roles are a collection of permissions outlining how users can operate with the projects. Each member of a project can have one or more roles assigned by administrators.
welcome_other_features: Other Features
welcome_feature_1_title: Gantt Chart And Calendar
welcome_feature_1_text: The gantt chart displays issues that have a start date and a due date. The calendar provides an overview of a project as a monthly view.
welcome_feature_2_title: News And Forums
welcome_feature_2_text: News to show information about the status of projects or any other subjects. The forums allow users from a project to communicate with each others.
welcome_feature_3_title: Email notifications And Feeds
welcome_feature_3_text: SuitePro can be configured to receive notifications via email. It also provides web feeds to use with external readers or aggregators.
welcome_feature_4_title: Code Repositories
welcome_feature_4_text: Version Control Systems like Git or Subversion can be used as code repositories and also keep track of changes made to the code.
welcome_feature_5_title: Responsive Design
welcome_feature_5_text: SuitePro is optimized to look great on mobile devices thanks to its responsive design. All pages adapt automatically to the screen size on a mobile phone, tablet or desktop computer.
welcome_feature_6_title: Is Open Source Software
welcome_feature_6_text: It means you are not locked into using a particular vendors system, and its continually evolving in real time as developers add to it and modify it.
welcome_any_questions: Any Questions?
welcome_please_contact: Please feel free to contact me if you need any further information.
welcome_contact: Contact
welcome_about_me: More About Me

View file

@ -29,8 +29,8 @@ es:
alert_only_visible_by_admins: "Sólo puede ser visto por usuarios con permisos de administrador" alert_only_visible_by_admins: "Sólo puede ser visto por usuarios con permisos de administrador"
alert_only_visible_by_yourself: "Sólo puede ser visto por ti" alert_only_visible_by_yourself: "Sólo puede ser visto por ti"
button_assign_to_me: Asignar a mi mismo button_assign_to_me: Asignar a mi mismo
button_dashboard_delete: "Borrar el dashboard" button_dashboard_delete: "Borrar el tablero"
button_dashboard_edit: "Editar el dashboard" button_dashboard_edit: "Editar el tablero"
disabled_modules_info: "Módulos que no estarán disponibles para ser utilizados en los proyectos. Si estos módulos están actualmente activos en proyectos existentes, deberá modificar y guardar esos proyectos primero." disabled_modules_info: "Módulos que no estarán disponibles para ser utilizados en los proyectos. Si estos módulos están actualmente activos en proyectos existentes, deberá modificar y guardar esos proyectos primero."
error_issue_status_could_not_changed: El estado de la petición no puede ser modificado error_issue_status_could_not_changed: El estado de la petición no puede ser modificado
error_issues_could_not_be_assigned_to_me: La petición no puede ser asignada a mi mismo error_issues_could_not_be_assigned_to_me: La petición no puede ser asignada a mi mismo
@ -60,7 +60,7 @@ es:
info_hidden_roles_html: Los roles ocultos sólo se pueden utilizar junto con la visibilidad del usuario "Miembros de proyectos visibles". Si el usuario no está en una función que sea visible para el usuario actual, esta función, que incluye al usuario, se oculta en la página de resumen del proyecto y en las listas de consulta. info_hidden_roles_html: Los roles ocultos sólo se pueden utilizar junto con la visibilidad del usuario "Miembros de proyectos visibles". Si el usuario no está en una función que sea visible para el usuario actual, esta función, que incluye al usuario, se oculta en la página de resumen del proyecto y en las listas de consulta.
invisible_captcha_info_html: En caso de que esta opción se encuentre activa se activará un sistema de protección de SPAM <a href="https://github.com/markets/invisible_captcha" target="_blank">invisible_captcha</a> para la página de registro de usuarios. Esta función solo está disponible si activa el autoregistro. invisible_captcha_info_html: En caso de que esta opción se encuentre activa se activará un sistema de protección de SPAM <a href="https://github.com/markets/invisible_captcha" target="_blank">invisible_captcha</a> para la página de registro de usuarios. Esta función solo está disponible si activa el autoregistro.
label_account_login_bottom: "Texto para la página de inicio de sesión" label_account_login_bottom: "Texto para la página de inicio de sesión"
label_active_dashboard: "Dashboard activo" label_active_dashboard: "Tablero activo"
label_add_dashboard_block: "Añadir bloque" label_add_dashboard_block: "Añadir bloque"
label_add_go_to_top: 'Agregar "Volver al inicio"' label_add_go_to_top: 'Agregar "Volver al inicio"'
label_add_tags: Agregar etiquetas label_add_tags: Agregar etiquetas
@ -69,7 +69,7 @@ es:
label_additionals: Additionals label_additionals: Additionals
label_app_menu: Menú de aplicación label_app_menu: Menú de aplicación
label_change_is_private: Cambiar privado/no-privado label_change_is_private: Cambiar privado/no-privado
label_change_to_dashboard: "Cambiar a Dashboard" label_change_to_dashboard: "Cambiar a Tablero"
label_chart_color_schema: Charts color scheme label_chart_color_schema: Charts color scheme
label_chart_with_name: "Chart: %{value}" label_chart_with_name: "Chart: %{value}"
label_chartjs_colorscheme_info: "Lista de colores" label_chartjs_colorscheme_info: "Lista de colores"
@ -77,11 +77,11 @@ es:
label_custom_fields_distribution: "Campos customizados para la distribución" label_custom_fields_distribution: "Campos customizados para la distribución"
label_custom_menu_items: Entradas de menú personalizadas label_custom_menu_items: Entradas de menú personalizadas
label_daily: diario label_daily: diario
label_dashboard_author: "Author: %{name}" label_dashboard_author: "Autor: %{name}"
label_dashboard_legacy_left: "Contenido estándar a la izquierda" label_dashboard_legacy_left: "Contenido estándar a la izquierda"
label_dashboard_legacy_right: "Contenido estándar correcto" label_dashboard_legacy_right: "Contenido estándar correcto"
label_dashboard_plural: Dashboards label_dashboard_plural: Tableros
label_dashboard: Dashboard label_dashboard: Tablero
label_day: día label_day: día
label_disable_sidebar: "Deshabilitar la barra lateral" label_disable_sidebar: "Deshabilitar la barra lateral"
label_disabled_modules: "Módulos desactivados" label_disabled_modules: "Módulos desactivados"
@ -117,10 +117,10 @@ es:
label_menu_entry: "Menu item" label_menu_entry: "Menu item"
label_monthly: mensual label_monthly: mensual
label_my_activity: "Mi actividad" label_my_activity: "Mi actividad"
label_my_dashboard_plural: "Mis dashboards" label_my_dashboard_plural: "Mis tableros"
label_my_spent_time: My spent time label_my_spent_time: Mi tiempo dedicado
label_new_additional_dashboard: "Nuevo dashboard" label_new_additional_dashboard: "Nuevo tablero"
label_new_dashboard: "Nuevo dashboard" label_new_dashboard: "Nuevo tablero"
label_new_issue_on_profile: Nueva petición en el perfil de usuario label_new_issue_on_profile: Nueva petición en el perfil de usuario
label_new_ticket_message: "Nota para nuevas peticiones" label_new_ticket_message: "Nota para nuevas peticiones"
label_no_permission: "Sin permiso" label_no_permission: "Sin permiso"
@ -135,7 +135,7 @@ es:
label_query_delete: Eliminar consulta label_query_delete: Eliminar consulta
label_query_edit: Editar Consulta label_query_edit: Editar Consulta
label_query_name_search: Buscar por nombre label_query_name_search: Buscar por nombre
label_query_with_name: "Query: %{value}" label_query_with_name: "Consulta: %{value}"
label_reddit_subject: Tema de Reddit label_reddit_subject: Tema de Reddit
label_reddit_user_account: Cuenta de usuario de Reddit label_reddit_user_account: Cuenta de usuario de Reddit
label_redmine_org_issue: Peticion de Redmine.org label_redmine_org_issue: Peticion de Redmine.org
@ -189,3 +189,34 @@ es:
wiki_pdf_remove_title_info: "Cuando está activa, el título de la Wiki no será mostrado en los PDF." wiki_pdf_remove_title_info: "Cuando está activa, el título de la Wiki no será mostrado en los PDF."
label_copied_to_clipboard: "¡Copiado!" label_copied_to_clipboard: "¡Copiado!"
label_copy_to_clipboard: "Copia al portapapeles" label_copy_to_clipboard: "Copia al portapapeles"
welcome_suitepro: Potencia y sencillez para planificar, compartir conocimiento, prestar soporte a clientes y acelerar la productividad.
welcome_discover: Descubre
welcome_suitepro_is_redmine: "%{suitepro} es %{redmine}, la conocida herramienta para la gestión de proyectos y el seguimiento de peticiones basada en Ruby on Rails. Redmine apremia la finalización de las tareas y mantiene la información en un único sitio."
welcome_spotlight_1_title: "Lo Básico: Proyectos,<br /> Tareas, Peticiones"
welcome_spotlight_1_text: Podrás hacer un seguimiento completo de todo, monitorizar tareas y subtareas para estar al día de los hitos de proyecto, controlar los tiempos, los flujos de trabajo o cualquier elemento que requiera atención.
welcome_spotlight_2_title: "Documentos, Wikis,<br /> Gestión de Archivos"
welcome_spotlight_2_text: Organizados para disponer de los documentos y los archivos allá donde se esté. Y el wiki de proyecto para estructurar los requerimientos, las guías de instalación y de usuario, o las actas de trabajo.
welcome_spotlight_3_title: "Control de accesos<br /> flexible"
welcome_spotlight_3_text: Usando permisos agrupados en roles para establecer cómo pueden operar los usuarios en los proyectos. Cada miembro de un proyecto podrá tener uno o más roles asignados por los administradores.
welcome_other_features: Otras Características
welcome_feature_1_title: Diagrama de Gantt y Calendario
welcome_feature_1_text: El diagrama de Gantt muestra las tareas que tienen fecha de inicio y vencimiento. Y el calendario da una visión general de los proyectos en una vista mensual.
welcome_feature_2_title: Noticias y Foros
welcome_feature_2_text: Las noticias muestran información sobre novedades en los proyectos u otros temas de interés. Y los foros permiten que los usuarios de un proyecto se comuniquen entre sí.
welcome_feature_3_title: Notificaciones y Sindicación
welcome_feature_3_text: SuitePro se puede configurar para recibir notificaciones por correo electrónico. Y también proporciona sindicaciones para utilizar con agregadores externos.
welcome_feature_4_title: Repositorios de Código
welcome_feature_4_text: Sistemas de Control de Versiones como Git o Subversion pueden usarse como repositorios de código y seguir desde SuitePro los cambios realizados en el código.
welcome_feature_5_title: Responsive Design
welcome_feature_5_text: SuitePro está optimizado para visualizarse en dispositivos móviles. Las páginas se adaptan automáticamente al tamaño de la pantalla, ya sea un teléfono móvil, una tableta o un ordenador.
welcome_feature_6_title: Es Software de Código Abierto
welcome_feature_6_text: Esto supone no estar limitado por ningún proveedor, y seguir en permanente evolución con desarrolladores que se involucran continuamente.
welcome_any_questions: ¿Alguna Pregunta?
welcome_please_contact: No dudar en contactar conmigo para obtener más información.
welcome_contact: Contactar
welcome_about_me: Más Sobre Mí