## This file is subject to the terms and conditions defined in ## file 'LICENSE', which is part of this source code package. ## Copyright (c) 2009 SKR Farms (P) LTD. <%inherit file="/base/basic1.html"/> <%namespace name="elements" file="/component/elements.html"/> <%namespace name="forms" file="/component/forms.html"/> <%namespace name="charts" file="/component/charts.html"/> <%! page_tooltips = [ [ 'Help', """Use the Roadmap page to view project's progress and achievements. Milestones are grouped into catagories closed and opened, and chronologically sorted.
Background color coding : open milestones closed milestones cancelled milestones

Milestone-id is displayed along with the milestone name in paranthesis, use this where ever the milestone needs to be referenced. Report Card gives a visual segmentation of milestone tickets in terms of 'ticket-types', 'ticket-status', 'ticket-severity'. """ ], [ 'Project homepage', """Home page can be constructed using wiki markup. To change home page content edit project's 'homepage' wiki document. """ ], [ 'Mountpoints', """Repository directories can be mounted on-to site's url path, so that contents of its directory, including its sub-directory can be viewed as html pages""" ], [ 'Favorites', """Registered users can pick project(s) as their favorite, provided the user has 'PROJECT_VIEW' permission""" ], [ 'Downloads', """Downloable files for this project.""" ], [ 'Attachments', """Add summary and tags to project attachments.""" ], [ 'Tags', """Tag a project by clicking on the iconized title. Delete tags by clicking on the cross-wire. Tag names should be 2 or more characters. """ ], [ 'Timeline', """Timeline for project, shows all updates done in the context of a project except project-administrative logs, which is available under admin/timeline.""" ], ] %> <%def name="hd_script()"> ${parent.hd_script()} <%def name="mstnchart( m )"> ${charts.chart13( m.id, *c.mstnresolved[m.id] )} <%def name="show_mstnrow( m )"> <% pname = c.project.projectname crdt = h.timezone( c.authuser.timezone ).localize( m.created_on ) dudt = '' strike = '' flash_schedule = '' fgflash = '' if m.due_date : dudt = m.due_date.astimezone( h.timezone(c.authuser.timezone)) daysleft = m.due_date.astimezone( h.timezone('UTC') ) - \ h.timezone('UTC').localize( h.dt.datetime.utcnow() ) if (m.completed==False) and (m.cancelled==False) : if ( daysleft < h.dt.timedelta(0) ) : flash_schedule = "( overun by %s days )" % daysleft.days fgflash = 'fgred' else : flash_schedule = " %s days left " % daysleft.days fgflash = 'fggreen' if m.completed : mstatus = 'Completed' fgcolor = 'fggreen' bgcolor = 'bggrn2' elif m.cancelled : mstatus = 'Cancelled' fgcolor = 'fggray' bgcolor = 'bggray1' strike = 'strike' else : mstatus = 'Open' fgcolor = 'fgblue' bgcolor = 'bgblue1' %>

${m.milestone_name} (${m.id})

${dudt and dudt.strftime('%a, %b %d, %Y')}
${flash_schedule}
[ ${m.created_on.strftime('%a, %b %d, %Y')} ]
Status : ${mstatus}
Desciption :  
${m.descriptionhtml | n}
% if m.closing_remark :
Closing-Remark :  
${m.closing_remarkhtml | n}
% endif
Report Card
${mstnchart( m )}
<%def name="show_milestones()"> <% # milestones without due-date are moved to the end of the list milestones = [] trail = [] for m in c.project.milestones : if m.due_date : milestones.append( m ) else : trail.append( m ) milestones = sorted( milestones, key=lambda m : m.due_date ) milestones = milestones + trail finishedmsnts = [] openmstns = [] for m in milestones : if m.completed or m.cancelled : finishedmsnts.append( m ) else : openmstns.append( m ) %>

Open Milestones

% for m in openmstns : ${show_mstnrow( m )} % endfor

Closed Milestones

% for m in finishedmsnts : ${show_mstnrow( m )} % endfor
<%def name="bd_body()"> <% fav = capture( elements.favoriteicon, 'favproj' ) searchbox = capture( forms.form_searchbox, c.authuser, 'searchproject', 'Search-project', h.suburl_search, c.searchfaces ) attachs = '' + \ ( ' \ Attachments' % h.url_projattachs ) downlds = '' + \ ( ' \ Downloads' % h.url_projdownloads ) mountpt = '' + \ ( ' \ Mountpoints' % h.url_projmounts ) charts = capture( elements.iconlink, h.url_projectcharts, 'barchart', title="Project analytics" ) tline = capture( elements.iconlink, h.url_projtimeline, 'timeline', title="Project timeline" ) %> ${elements.mainnav()} ${elements.contextnav( [ fav, searchbox, mountpt, attachs, downlds, ], rspans=[ charts, tline ], tooltips=page_tooltips )}
% if c.authusername == 'anonymous' or not c.userpanes :
% else :
% endif % if c.authorized : ${forms.form_projfav( c.authuser, c.project, h.suburl_projfav, c.project in c.authuser.favoriteprojects and \ 'delfavuser' or 'addfavuser' )} % endif
${show_milestones()}
% if c.authusername != 'anonymous' and c.userpanes :
${elements.user_panes( c.userpanes )}
% endif
<%def name="bd_script()"> ${parent.bd_script()}