2009-02-04 7 views
1

J'essaie de modifier l'interface utilisateur d'une installation de Redmine (Redmine 0.7.3.devel.2093 (MySQL)).Modification du comportement de link_to dans une installation de Redmine (ruby on rails)

Lorsque vous affichez un projet dans Redmine, il génère une liste de tous les sous-projets du projet.

Par exemple, app/vues/projets/index.rhtml appelle le link_to fonction:

<% if @project_tree[project].any? %> 
    <p><%= l(:label_subproject_plural) %>: 
    <%= @project_tree[project].sort.collect {|subproject| 
     link_to(h(subproject.name), {:action => 'show', :id => subproject}, :class => (User.current.member_of?(subproject) ? "subp fav" : "subp"))}.join(', ') %></p> 
<% end %> 

qui délivre le code HTML suivant:

<p>Subprojects: 
<a href="/projects/show/foo" class="subp fav">Foo Subproject</a>, <a href="/projects/show/bar" class="subp">Bar Subproject</a>, <a href="/projects/show/baz" class="subp fav">Baz Subproject</a></p> 

Nous trouvons qu'une virgule La liste des sous-projets est très difficile à analyser visuellement. Nous aimerions que chaque sous-projet soit listé sur sa propre ligne. (Tout balisage est correct - les balises UL, OL ou P sur chaque lien seraient idéales, mais un BR au lieu d'une virgule serait totalement correct.)

Quelle est la meilleure façon d'apporter cette modification? Je ne peux pas trouver où link_to est défini dans l'application; grepping pour def link_to( et similaires ne rien. Je suis un type d'interface utilisateur, donc je ne comprends pas vraiment comment Rails traite ce genre de choses - il ne semble pas être défini dans les modèles de vue.

Répondre

1

Vous pouvez le faire directement dans le code que vous avez fourni. Il suffit de changer

join(', ') 

à

join('<br />') 

Cela devrait le faire.

1

link_to est fourni par le framework Rails - il ne génère pas les liens sous forme de liste - il crée simplement un seul lien. La question est la sort.collect et le bloc générant les appels à LINK_TO

Cela devrait fonctionner, mettre les sous-projets dans les éléments de liste

<% @project_tree[project].sort.collect do |subproject| %> 
    <li>   
    <%= link_to(h(subproject.name), {:action => 'show', :id => subproject}, :class => (User.current.member_of?(subproject) ? "subp fav" : "subp")) %> 
    </li> 
<% end %> 
0

Je voulais souligner que la dernière version du tronc Redmine a changé la liste de projets pour utiliser les listes HTML (ul et li).