Project

General

Profile

Patch #2457 » new_issue-timelog_design-r2245.diff

Patch created against trunk @ r2245. - Mischa The Evil, 2009-01-07 14:49

View differences:

app/views/issues/index.rhtml (working copy)
1 1
<% if @query.new_record? %>
2
  <% if Setting.main_new_links_enabled? %>
3
    <div class="contextual">
4
        <%= link_to_if_authorized l(:label_issue_new), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-add' %>
5
    </div>
6
  <% end %>
2 7
    <h2><%=l(:label_issue_plural)%></h2>
3 8
    <% html_title(l(:label_issue_plural)) %>
4 9
    
app/views/layouts/_new_issue_menu.rhtml (revision 0)
1
<% user_projects_by_root = User.current.projects.find(:all, :include => :parent).group_by(&:root) %>
2
<div>
3
	<ul>
4
	<% user_projects_by_root.keys.sort.each do |root| %>
5
		<li><%= link_to h(root.name),:controller => :issues, :action => :new, :project_id => root %></li>
6
		<% user_projects_by_root[root].sort.each do |project| %>
7
			<% next if project == root %>
8
			<li><%= link_to '&#187; '+h(project.name), :controller => :issues, :action => :new, :project_id => project %></li>
9
		<% end %>
10
	<% end %>
11
	</ul>
12
</div>
app/views/layouts/_new_timelog_menu.rhtml (revision 0)
1
<% user_projects_by_root = User.current.projects.find(:all, :include => :parent).group_by(&:root) %>
2
<div>
3
	<ul>
4
	<% user_projects_by_root.keys.sort.each do |root| %>
5
		<li><%= link_to h(root.name),:controller => :timelog, :action => :edit, :project_id => root %></li>
6
		<% user_projects_by_root[root].sort.each do |project| %>
7
			<% next if project == root %>
8
			<li><%= link_to '&#187; '+h(project.name), :controller => :timelog, :action => :edit, :project_id => project %></li>
9
		<% end %>
10
	<% end %>
11
	</ul>
12
</div>
app/views/layouts/base.rhtml (working copy)
56 56
</div>
57 57

  
58 58
<div id="ajax-indicator" style="display:none;"><span><%= l(:label_loading) %></span></div>
59
	
59
<div id="new-issue-menu" style="display:none;"><%= render :partial => "layouts/new_issue_menu" if User.current.memberships.any? %></div>
60
<div id="new-timelog-menu" style="display:none;"><%= render :partial => "layouts/new_timelog_menu" if User.current.memberships.any? %></div>
61

  
60 62
<div id="footer">
61 63
    Powered by <%= link_to Redmine::Info.app_name, Redmine::Info.url %> &copy; 2006-2008 Jean-Philippe Lang
62 64
</div>
app/views/settings/_general.rhtml (working copy)
53 53

  
54 54
<p><label><%= l(:setting_gravatar_enabled) %></label>
55 55
<%= check_box_tag 'settings[gravatar_enabled]', 1, Setting.gravatar_enabled? %><%= hidden_field_tag 'settings[gravatar_enabled]', 0 %></p>
56

  
57
<p><label><%= l(:setting_main_new_links_enabled) %></label>
58
<%= check_box_tag 'settings[main_new_links_enabled]', 1, Setting.main_new_links_enabled? %><%= hidden_field_tag 'settings[main_new_links_enabled]', 0 %></p>
56 59
</div>
57 60

  
58 61
<%= submit_tag l(:button_save) %>
config/settings.yml (working copy)
140 140
    To change your notification preferences, please click here: http://hostname/my/account
141 141
gravatar_enabled:  
142 142
  default: 0
143
main_new_links_enabled:
144
  default: 0
lang/en.yml (working copy)
226 226
setting_sequential_project_identifiers: Generate sequential project identifiers
227 227
setting_gravatar_enabled: Use Gravatar user icons
228 228
setting_diff_max_lines_displayed: Max number of diff lines displayed
229
setting_main_new_links_enabled: Display global "New issue/timelog"-links in the top-menu
229 230

  
230 231
permission_edit_project: Edit project
231 232
permission_select_project_modules: Select project modules
......
584 585
label_generate_key: Generate a key
585 586
label_issue_watchers: Watchers
586 587
label_example: Example
588
label_timelog_new: New timelog
587 589

  
588 590
button_login: Login
589 591
button_submit: Submit
lib/redmine.rb (working copy)
108 108
Redmine::MenuManager.map :top_menu do |menu|
109 109
  menu.push :home, :home_path
110 110
  menu.push :my_page, { :controller => 'my', :action => 'page' }, :if => Proc.new { User.current.logged? }
111
  menu.push :new_issue, '#', :caption => :label_issue_new, :html => {:onclick => "toggleNewIssueMenu(event);"}, :if => Proc.new { User.current.logged? && User.current.memberships.any? && Setting.main_new_links_enabled? }
112
  menu.push :new_timelog, '#', :caption => :label_timelog_new, :html => {:onclick => "toggleNewTimelogMenu(event);"}, :if => Proc.new { User.current.logged? && User.current.memberships.any? && Setting.main_new_links_enabled? }
111 113
  menu.push :projects, { :controller => 'projects', :action => 'index' }, :caption => :label_project_plural
112 114
  menu.push :administration, { :controller => 'admin', :action => 'index' }, :if => Proc.new { User.current.admin? }, :last => true
113 115
  menu.push :help, Redmine::Info.help_url, :last => true
......
135 137
              :if => Proc.new { |p| p.versions.any? }
136 138
  menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural
137 139
  menu.push :new_issue, { :controller => 'issues', :action => 'new' }, :param => :project_id, :caption => :label_issue_new,
138
              :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) }
140
              :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) },
141
              :if => Proc.new { !Setting.main_new_links_enabled? }
139 142
  menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural
140 143
  menu.push :documents, { :controller => 'documents', :action => 'index' }, :param => :project_id, :caption => :label_document_plural
141 144
  menu.push :wiki, { :controller => 'wiki', :action => 'index', :page => nil }, 
public/javascripts/application.js (working copy)
142 142
        }
143 143
    }
144 144
});
145

  
146
/* global new issue menu */
147
function toggleNewIssueMenu(e) {
148
	if($('new-issue-menu').style.display == 'none') {
149
		Element.show('new-issue-menu');
150
		$('new-issue-menu').style.left = Event.pointerX(e)+'px';
151
		$('new-issue-menu').style.top = Event.pointerY(e)+'px';
152
	} else {
153
		Element.hide('new-issue-menu');
154
	}
155
}
156

  
157
/* global new timelog menu */
158
function toggleNewTimelogMenu(e) {
159
	if($('new-timelog-menu').style.display == 'none') {
160
		Element.show('new-timelog-menu');
161
		$('new-timelog-menu').style.left = Event.pointerX(e)+'px';
162
		$('new-timelog-menu').style.top = Event.pointerY(e)+'px';
163
	} else {
164
		Element.hide('new-timelog-menu');
165
	}
166
}
public/stylesheets/application.css (working copy)
566 566
.task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
567 567
.milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
568 568

  
569
/***** Global New Issue Menu *****/
570
#new-issue-menu { position: absolute; }
571
#new-issue-menu ul { 
572
  list-style: none;
573
  background-color: white;
574
  border-top: 1px solid #ddd;
575
  border-left: 1px solid #ddd;
576
  border-bottom: 1px solid #777;
577
  border-right: 1px solid #777;
578
}
579

  
580
#new-issue-menu ul, #new-issue-menu li {
581
  margin: 0;
582
  padding: 0;
583
  border: 0;
584
}
585

  
586
#new-issue-menu li { padding: 1px; }
587
#new-issue-menu a {
588
  text-decoration: none;
589
  background-repeat: no-repeat;
590
  background-position: 1px 50%;
591
  padding: 2px 14px 2px 14px;
592
  width: 100%; /* IE */
593
}
594

  
595
/***** Global New Timelog Menu *****/
596
#new-timelog-menu { position: absolute; }
597
#new-timelog-menu ul { 
598
  list-style: none;
599
  background-color: white;
600
  border-top: 1px solid #ddd;
601
  border-left: 1px solid #ddd;
602
  border-bottom: 1px solid #777;
603
  border-right: 1px solid #777;
604
}
605

  
606
#new-timelog-menu ul, #new-timelog-menu li {
607
  margin: 0;
608
  padding: 0;
609
  border: 0;
610
}
611

  
612
#new-timelog-menu li { padding: 1px; }
613
#new-timelog-menu a {
614
  text-decoration: none;
615
  background-repeat: no-repeat;
616
  background-position: 1px 50%;
617
  padding: 2px 14px 2px 14px;
618
  width: 100%; /* IE */
619
}
620

  
569 621
/***** Icons *****/
570 622
.icon {
571 623
background-position: 0% 40%;
(1-1/2)