Revision 1451:e52de09132b1

View differences:

config/routes.rb
336 336

  
337 337
  match 'sys/projects', :to => 'sys#projects', :via => :get
338 338
  match 'sys/projects/:id/repository', :to => 'sys#create_project_repository', :via => :post
339
  match 'sys/projects/:id/repository_cache.:format', :controller => 'sys', :action => 'clear_repository_cache', :conditions => { :method => :post }
339 340
  match 'sys/projects/:id/embedded.:format', :controller => 'sys', :action => 'set_embedded_active', :conditions => { :method => :post }
340 341
  match 'sys/fetch_changesets', :to => 'sys#fetch_changesets', :via => :get
341 342

  
extra/soundsoftware/convert-external-repos.rb
146 146
  if project.identifier.empty?
147 147
    log("\tno identifier for project #{project.name}")
148 148
    next
149
  elsif not project.identifier.match(/^[a-z0-9\-]+$/)
149
  elsif not project.identifier.match(/^[a-z0-9_\-]+$/)
150 150
    log("\tinvalid identifier for project #{project.name} : #{project.identifier}");
151 151
    next
152 152
  end
extra/soundsoftware/reposman-soundsoftware.rb
263 263
  if project.identifier.empty?
264 264
    log("\tno identifier for project #{project.name}!")
265 265
    next
266
  elsif not project.identifier.match(/^[a-z0-9\-_]+$/)
266
  elsif not project.identifier.match(/^[a-z0-9_\-]+$/)
267 267
    log("\tinvalid identifier for project #{project.name} : #{project.identifier}!");
268 268
    next;
269 269
  end
plugins/redmine_bibliography/app/views/projects/show.html.erb
58 58
		<%= textilizable @project.description %>
59 59
	</div>	
60 60
  <% end %>
61
	<ul>
62
	<% unless @project.homepage.blank? %><li><%=l(:field_homepage)%>: <%= link_to h(@project.homepage), @project.homepage %></li><% end %>
61
  <div class="overviewfields">
62
	<% unless @project.homepage.blank? %><h4><%=l(:field_homepage)%>:</h4><ul><li><%= link_to h(@project.homepage), @project.homepage %></li></ul><% end %>
63 63
  <% if @subprojects.any? %>
64
 	<li><%=l(:label_subproject_plural)%>:
65
	    <%= @subprojects.collect{|p| link_to(h(p), :action => 'show', :id => p)}.join(", ").html_safe %></li>
64
 	<h4><%=l(:label_subproject_plural)%>:</h4>
65
          <ul>
66
	    <li><%= @subprojects.collect{|p| link_to(h(p), :action => 'show', :id => p)}.join("</li><li>").html_safe %></li>
67
          </ul>
66 68
  <% end %>
67 69
	<% @project.visible_custom_field_values.each do |custom_value| %>
68 70
	<% if !custom_value.value.blank? %>
69
	   <li><%= custom_value.custom_field.name%>: <%=h show_value(custom_value) %></li>
71
	   <h4><%= custom_value.custom_field.name%>:</h4><ul><li><%=h show_value(custom_value) %></li></ul>
70 72
	<% end %>
71 73
	<% end %>
72
	</ul>	
73

  
74
  </div>
74 75
  <% if User.current.allowed_to?(:view_issues, @project) and @open_issues_by_tracker.values.any? %>
75 76
  <div class="issues box">    
76 77
    <h3><%=l(:label_issue_tracking)%></h3>
public/stylesheets/application.css
762 762

  
763 763
#roadmap table.progress td { height: 1.2em; }
764 764
/***** Tabs *****/
765
#content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
766
#content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
767
#content .tabs ul li {
765
#content .tabs, #content .tabs2 {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
766
#content .tabs ul, #content .tabs2 ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
767
#content .tabs ul li, #content .tabs2 ul li {
768 768
  float:left;
769 769
  list-style-type:none;
770 770
  white-space:nowrap;
......
773 773
  position:relative;
774 774
  margin-bottom:-1px;
775 775
}
776
#content .tabs ul li a{
776
#content .tabs ul li a, #content .tabs2 ul li a {
777 777
  display:block;
778 778
  font-size: 0.9em;
779 779
  text-decoration:none;
......
788 788
  border-top-right-radius:3px;
789 789
}
790 790

  
791
#content .tabs ul li a:hover {
791
#content .tabs ul li a:hover, #content .tabs2 ul li a:hover {
792 792
  background-color: #ffffdd;
793 793
  text-decoration:none;
794 794
}
795 795

  
796
#content .tabs ul li a.selected {
796
#content .tabs ul li a.selected, #content .tabs2 ul li a.selected {
797 797
  background-color: #fff;
798 798
  border: 1px solid #bbbbbb;
799 799
  border-bottom: 1px solid #fff;
800 800
  color:#444;
801 801
}
802 802

  
803
#content .tabs ul li a.selected:hover {background-color: #fff;}
803
#content .tabs ul li a.selected:hover, #content .tabs2 ul li a.selected:hover {background-color: #fff;}
804 804

  
805 805
div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
806 806

  
public/themes/soundsoftware/stylesheets/application.css
158 158

  
159 159
.wiki p, .wiki li { margin-left: 30px; margin-right: 3em; }
160 160

  
161
.overviewfields h4 { margin-left: 30px; margin-bottom: 0; }
162
.overviewfields ul { margin-top: 0; }
163

  
161 164
.repository-info .wiki p { margin-left: 0 }
162 165

  
163 166
div.issue { background: #fdfaf0; border: 1px solid #a9b680; border-left: 4px solid #a9b680; }
......
231 234
.TableRowColor td { background-color: #fdfbf5; color: #000000; border: 0; }
232 235
.NavBarCell1 { background-color: #ffe69b; color:#000000 }
233 236

  
234
.embedded table { border: 0px solid #fff; }
235
.embedded h3 { margin-top: 0.5em; }
236
.embedded hr { color: #a9b680; background-color: #a9b680 }
237
.embedded center { text-align: left; } /* haha */
237
.controller-redmine_embedded table { border: 0px solid #fff; }
238
.controller-redmine_embedded h3 { margin-top: 0.5em; }
239
.controller-redmine_embedded hr { color: #a9b680; background-color: #a9b680 }
240
.controller-redmine_embedded center { text-align: left; } /* haha */
241
.controller-redmine_embedded th { font-weight: normal; text-align: left; }
242
.controller-redmine_embedded caption { text-align: left; font-weight: bold; font-size: 14px; margin-top: 1em; }
243
.controller-redmine_embedded li.blockList { list-style-type: none; }
244

  
245
.controller-redmine_embedded .summary { font-style: normal; margin-bottom: 1.5em; }
238 246

  
239 247
/* Special hack to hide the FRAMES | NO FRAMES links -- they don't
240 248
   work in this context -- and right-align the All Classes and Detail links */
241
.embedded .NavBarCell2 a[target=_top] { width: 0px; visibility: hidden; }
242
.embedded .NavBarCell2 + .NavBarCell2 { text-align: right; }
243
.embedded .NavBarCell3 + .NavBarCell3 { text-align: right; }
249
.controller-redmine_embedded .NavBarCell2 a[target=_top] { width: 0px; visibility: hidden; }
250
.controller-redmine_embedded .NavBarCell2 + .NavBarCell2 { text-align: right; }
251
.controller-redmine_embedded .NavBarCell3 + .NavBarCell3 { text-align: right; }
252

  
253
.topNav, .bottomNav { position: relative; overflow: hidden; }
254
.topNav ul li, .bottomNav ul li { float: left; list-style-type: none; margin-right: 14px; position: relative; font-weight: bold; }
255
.controller-redmine_embedded .subNav .navList { display: none; }
244 256

  
245 257
/* For Doxygen in Embedded context (though note some of the Javadoc
246 258
   rules will also apply to Doxygen): */
......
251 263
.memTemplItemLeft,
252 264
.memTemplItemRight,
253 265
.indexkey,
254
.indexvalue,
255 266
.memproto,
256 267
.memproto td,
257
.memdoc a,
258
.embedded li .el,
259
.embedded a.el { font-family: monospace; }
268
.memdoc a { font-family: 'SourceCodePro-Regular', monospace; font-size: 0.9em; font-weight: normal; }
260 269

  
261
.embedded .memTemplParams { font-style: italic; }
270
.controller-redmine_embedded .memTemplParams { font-style: italic; }
262 271

  
263
.embedded .memItemRight a:first-child,
264
.embedded .memTemplItemRight a:first-child,
265
.embedded .indexkey a:first-child,
266
.embedded a.el,
267
.embedded .memdoc a { font-weight: bold; } /* function names, etc */
272
.controller-redmine_embedded #projectname,
273
.controller-redmine_embedded .title { font-weight: bold; font-size: 14px; }
268 274

  
269
.embedded .memitem { border-bottom: 1px solid #a9b680; padding-top: 0.5em; } 
270
.embedded .memitem:last-child { border-bottom: 0px; } 
275
.controller-redmine_embedded h2 { font-size: 16px; } 
271 276

  
272
.embedded .contents { margin-top: 0.5em; }
273
.embedded .contents td { padding: 0px; }
277
.controller-redmine_embedded .memitem { border-bottom: 1px solid #a9b680; padding-top: 0.5em; } 
278
.controller-redmine_embedded .memitem:last-child { border-bottom: 0px; } 
274 279

  
275
.embedded .contents h1,
276
.embedded .contents h2,
277
.embedded .navigation h1,
278
.embedded .navigation h2 { padding-top: 0.5em; padding-bottom: 0.25em; }
280
.controller-redmine_embedded .contents { margin-top: 0.5em; }
281
.controller-redmine_embedded .contents td { padding: 0px; }
279 282

  
280
.embedded .contents .center { text-align: center; } /* undo javadoc hack above */
283
.controller-redmine_embedded .contents h1,
284
.controller-redmine_embedded .contents h2,
285
.controller-redmine_embedded .navigation h1,
286
.controller-redmine_embedded .navigation h2 { padding-top: 1em; padding-bottom: 0; }
287

  
288
.controller-redmine_embedded .contents .center { text-align: center; } /* undo javadoc hack above */
281 289

  
282 290
/* For MATLAB documentation */
283 291

  
284
.embedded #matlabdoc th { text-align: left; }
292
.controller-redmine_embedded #matlabdoc th { text-align: left; }
285 293

  
286 294
/* autocomplete positioning fix */
287 295
div.autocomplete {

Also available in: Unified diff