Changeset 18348

Show
Ignore:
Timestamp:
11/13/08 12:35:59 (2 months ago)
Author:
nilesh
Message:

Bug fixes for project dashboard, working time calendar :-
- Milestones are not displayed in the new dashboard page while deleting Phases
- The radio buttons on Calculation method and Project Visibility are not properly aligned .
- Unnecessary horizontal scroll bar displayed from project dashboard blog it window
- The heading on Team info can be changed to Project info in the My Profile page.
- Other participants image can be edited and deleted.
- The icon representing the Add another button in the Work Date field is not displayed properly.
{bug426, bug345, bug405, bug273, bug294, bug231}

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/core/db/oracle/create-scripts/versions/8.5.0/update_system_properties.sql

    r18342 r18348  
    11891189      p.property = 'prm.business.modifybusiness.channel.address.title';       
    11901190 
     1191insert into pn_property (CONTEXT_ID, LANGUAGE, PROPERTY_TYPE, PROPERTY, PROPERTY_VALUE, RECORD_STATUS, IS_SYSTEM_PROPERTY, IS_TRANSLATABLE_PROPERTY, PROPERTY_VALUE_CLOB) 
     1192values (2000, 'en', 'text', 'prm.directory.memberview.changepersonimage.errormessage', 'Other participants image cannot be modified.', 'A', 0, 1, null); 
     1193 
     1194insert into pn_property (CONTEXT_ID, LANGUAGE, PROPERTY_TYPE, PROPERTY, PROPERTY_VALUE, RECORD_STATUS, IS_SYSTEM_PROPERTY, IS_TRANSLATABLE_PROPERTY, PROPERTY_VALUE_CLOB) 
     1195values (2000, 'en', 'text', 'prm.directory.memberview.removeimage.errormessage', 'Other participants image cannot be deleted.', 'A', 0, 1, null); 
     1196 
     1197update pn_property p set 
     1198      p.property_value = 'Project Info' 
     1199where 
     1200      p.context_id = 2000 and 
     1201      p.language = 'en' and 
     1202      p.property = 'prm.personal.profile.teaminfo.header'; 
     1203 
    11911204commit; 
    11921205prompt 0 records loaded 
  • trunk/core/src/net/project/view/pages/project/Dashboard.java

    r18325 r18348  
    1414import net.project.base.Module; 
    1515import net.project.base.PnetException; 
     16import net.project.base.finder.NumberComparator; 
     17import net.project.base.finder.NumberFilter; 
    1618import net.project.base.property.PropertyProvider; 
    1719import net.project.calendar.CalendarBean; 
     
    2628import net.project.hibernate.constants.WeblogConstants; 
    2729import net.project.hibernate.model.PnPersonProperty; 
    28 import net.project.hibernate.model.PnTask; 
    2930import net.project.hibernate.model.PnWeblog; 
    3031import net.project.hibernate.model.PnWeblogEntry; 
     
    4748import net.project.project.ProjectSpaceBean; 
    4849import net.project.resource.PersonProperty; 
     50import net.project.schedule.Schedule; 
     51import net.project.schedule.ScheduleEntry; 
     52import net.project.schedule.TaskFinder; 
     53import net.project.schedule.TaskType; 
    4954import net.project.security.SessionManager; 
    5055import net.project.security.User; 
     
    448453                        User user = SessionManager.getUser(); 
    449454                        DateFormat userDateFormatter = user.getDateFormatter(); 
    450  
    451455                        projectId = requestGlobals.getHTTPServletRequest().getParameter("id"); 
    452456                        projectSpace = new ProjectSpaceBean(); 
     
    589593                        } 
    590594                                 
    591                         // load milestones 
    592                         List<PnTask> milestonesAux = ServiceFactory.getInstance().getPnTaskService().getProjectMilestones(Integer.parseInt(projectSpace.getID()), true); 
    593                         if ((milestonesAux != null) && (milestonesAux.size() > 0)) { 
     595                        // loading milestone 
     596                        milestones = new ArrayList<PnTaskWrapper>(); 
     597                        Schedule schedule = milestoneValues(); 
     598                        if (schedule != null) { 
    594599                                hasMilestones = true; 
    595                                 milestones = new ArrayList<PnTaskWrapper>(); 
    596                                 Iterator<PnTask> iMilestones = milestonesAux.iterator(); 
    597                                 while (iMilestones.hasNext()) { 
    598                                         if(!milestoneLimits.equals(0)){ 
    599                                                 PnTaskWrapper taskWrapper = new PnTaskWrapper(iMilestones.next()); 
    600                                                 if(taskWrapper.getTask().getTaskName().length() > 40){ 
    601                                                         taskWrapper.getTask().setTaskName(taskWrapper.getTask().getTaskName().substring(0, 40).concat("...")); 
     600                                Iterator<ScheduleEntry> taskIterator = schedule.getTaskList() 
     601                                                .iterator(); 
     602                                if (taskIterator == null) { 
     603                                        taskIterator = schedule.getTaskList().iterator(); 
     604                                } 
     605                                if(taskIterator != null){ 
     606                                        while (taskIterator.hasNext()) { 
     607                                                PnTaskWrapper taskWrapper = new PnTaskWrapper(taskIterator 
     608                                                                .next()); 
     609                                                if (!milestoneLimits.equals(0)) { 
     610                                                        if (taskWrapper.getScheduleEntry().getName().length() > 40) { 
     611                                                                taskWrapper.getScheduleEntry().setName( 
     612                                                                                taskWrapper.getScheduleEntry().getName() 
     613                                                                                                .substring(0, 40).concat("...")); 
     614                                                        } 
     615                                                        milestones.add(taskWrapper); 
     616                                                        milestoneLimits--; 
     617                                                } else { 
     618                                                        break; 
    602619                                                } 
    603                                                 milestones.add(taskWrapper); 
    604                                                 milestoneLimits--; 
    605                                         }else{ 
    606                                                 break; 
    607620                                        } 
    608621                                } 
    609622                        } 
    610  
     623                         
    611624                        MyMeetings myMeetings = new MyMeetings(); 
    612625                        myMeetings.setUser(user); 
     
    790803        } 
    791804         
     805        /**  
     806         * Method to load Schedule for milestone 
     807         * @return Schedule 
     808         */ 
     809        private Schedule milestoneValues(){ 
     810                Schedule schedule = new Schedule(); 
     811                try{ 
     812                        schedule.clearFinderFilterList(); 
     813                    schedule.setSpace(SessionManager.getUser().getCurrentSpace()); 
     814                    schedule.setHierarchyView(Schedule.HIERARCHY_VIEW_EXPANDED); 
     815                    schedule.load(); 
     816                     
     817                    // sort column by start_date 
     818                    schedule.setOrder("5"); 
     819                    schedule.setOrderDirection(0); 
     820                     
     821                    // Load all entries 
     822                    schedule.setMaximumEntries(-1); 
     823                    
     824                    // schedule.setStartDateFilter(cal.getMidnight()); 
     825                    NumberFilter percentCompleteFilter = new NumberFilter("percentComplete", TaskFinder.PERCENT_COMPLETE_COLUMN, false); 
     826                    percentCompleteFilter.setSelected(true); 
     827                    percentCompleteFilter.setComparator(NumberComparator.LESS_THAN); 
     828                    percentCompleteFilter.setNumber(100); 
     829                    schedule.addFinderFilter((percentCompleteFilter)); 
     830                     
     831                    // load Milestone entries 
     832                    // We avoid loading dependencies and assignments to improve 
     833                    // performance; we don't care about those 
     834                    schedule.setHierarchyView(Schedule.HIERARCHY_VIEW_EXPANDED); 
     835                    schedule.loadEntries(new TaskType[] {TaskType.MILESTONE}, false, false); 
     836                     
     837                    // Reset settings 
     838                    schedule.clearFinderFilterList(); 
     839                    schedule.setMaximumEntries(-1); 
     840                    schedule.setOrder("0"); 
     841            }catch(Exception e){ 
     842                log.error("Error occured while loading schedule entries" + e.getMessage()); 
     843            } 
     844                return schedule; 
     845        } 
     846         
    792847        public String getJspRootURL() { 
    793848                return jspRootURL; 
  • trunk/core/src/net/project/view/pages/project/PnTaskWrapper.java

    r18250 r18348  
    44 
    55import net.project.hibernate.model.PnTask; 
     6import net.project.schedule.ScheduleEntry; 
    67import net.project.security.SessionManager; 
    78 
    89public class PnTaskWrapper implements Serializable { 
    910 
    10     private PnTask task
     11       private ScheduleEntry scheduleEntry
    1112 
    12     public PnTaskWrapper() { 
     13        public PnTaskWrapper(ScheduleEntry scheduleEntry) { 
     14                this.scheduleEntry = scheduleEntry; 
     15        } 
    1316 
    14     } 
     17        public String getMilestoneUrl() { 
     18                return "/servlet/ScheduleController/TaskView?module=60&action=1&id=" 
     19                                + scheduleEntry.getID(); 
     20        } 
    1521 
    16     public PnTaskWrapper(PnTask task) { 
    17         this.task = task
    18    
     22       public String getName() { 
     23               return scheduleEntry.getName()
     24       
    1925 
    20     public PnTask getTask() { 
    21         return task; 
    22     } 
     26        public String getDate() { 
     27                String taskDate = ""; 
     28                if (scheduleEntry.getEndTime() != null) { 
     29                        taskDate = SessionManager.getUser().getDateFormatter().formatDate( 
     30                                        scheduleEntry.getEndTime(), "dd/MM/yyyy"); 
     31                } 
     32                return taskDate; 
     33        } 
    2334 
    24     public void setTask(PnTask task) { 
    25         this.task = task; 
    26     } 
     35        public String getPercentComplete() { 
     36                return Double.toString(scheduleEntry.getPercentComplete()) != null ? Double 
     37                                .toString(scheduleEntry.getPercentComplete()).toString() 
     38                                : "0"; 
     39        } 
    2740 
    28     public String getUrl() { 
    29         return "/servlet/ScheduleController/TaskView?module=60&action=1&id=" 
    30                 + task.getTaskId(); 
    31     } 
     41        public ScheduleEntry getScheduleEntry() { 
     42                return scheduleEntry; 
     43        } 
    3244 
    33     public String getName() { 
    34                 return task.getTaskName(); 
    35     } 
    36  
    37     public String getDate() { 
    38         String taskDate = ""; 
    39         if (task.getDateFinish() != null) { 
    40             taskDate = SessionManager.getUser().getDateFormatter().formatDate( 
    41                     task.getDateFinish(), "dd/MM/yyyy"); 
    42         } 
    43         return taskDate; 
    44     } 
    45  
    46     public String getPercentComplete() { 
    47         return (task.getPercentComplete() != null) ? task.getPercentComplete() 
    48                 .toString() : "0"; 
    49     } 
     45        public void setScheduleEntry(ScheduleEntry scheduleEntry) { 
     46                this.scheduleEntry = scheduleEntry; 
     47        } 
    5048 
    5149} 
  • trunk/core/src/net/project/view/pages/project/ProjectPhaseWrapper.java

    r17865 r18348  
    1717    private ProjectPhase phase; 
    1818 
    19     private List<PnTaskWrapper> milestones; 
    20  
    2119    public ProjectPhaseWrapper() { 
    2220 
     
    2523    public ProjectPhaseWrapper(ProjectPhase phase) { 
    2624        this.phase = phase; 
    27  
    2825        List<PnTask> milestonesAux = phase.getMilestones(); 
    29         milestones = new ArrayList<PnTaskWrapper>(); 
    30         if ((milestonesAux != null) && (milestonesAux.size() > 0)) { 
    31             Iterator<PnTask> i = milestonesAux.iterator(); 
    32             while (i.hasNext()) { 
    33                 milestones.add(new PnTaskWrapper(i.next())); 
    34             } 
    35         } 
    3626    } 
    3727 
     
    6959        return phase.getPercentComplete().toString(); 
    7060    } 
    71  
    72     public List<PnTaskWrapper> getMilestones() { 
    73         return milestones; 
    74     } 
    75  
    76     public void setMilestones(List<PnTaskWrapper> milestones) { 
    77         this.milestones = milestones; 
    78     } 
    79  
    8061} 
  • trunk/core/web/html/personal/workcalendar/WorkDateModify.html

    r18325 r18348  
    270270                        <td class="actionBar" align="right">&nbsp; 
    271271                                <nobr>&nbsp;&nbsp;&nbsp;<a href="javascript:submit();" class="channelNoUnderline"><t:Message value="all.global.toolbar.action.submit" /> &nbsp; <img src="${jSPRootURL}/images/icons/actionbar-submit_off.gif" width="27" height="27" alt="Submit" title="Submit" border="0" align="absmiddle"/></a></nobr> 
    272                                 <nobr>&nbsp;&nbsp;&nbsp;<a href="javascript:add();" class="channelNoUnderline"><t:Message value="prm.workcalendar.workweekmodify.addanother.lable" />&nbsp;<img src="/pnet/images/icons/actionbar-add_off.gif" width="27" height="27" alt="Add Another" title="Add Another" border="0" align="absmiddle"/></a></nobr> 
     272                                <nobr>&nbsp;&nbsp;&nbsp;<a href="javascript:add();" class="channelNoUnderline"><t:Message value="prm.workcalendar.workweekmodify.addanother.lable" />&nbsp;<img src="${jSPRootURL}/images/icons/actionbar-add_off.gif" width="27" height="27" alt="Add Another" title="Add Another" border="0" align="absmiddle"/></a></nobr> 
    273273                        </td> 
    274                         <td width="1%" align="right" class="actionBar"><img src="/pnet/images/icons/actionbar-right_end.gif" width="8" height="27" alt="" border="0"/></td> 
     274                        <td width="1%" align="right" class="actionBar"><img src="${jSPRootURL}/images/icons/actionbar-right_end.gif" width="8" height="27" alt="" border="0"/></td> 
    275275                </tr> 
    276276        </table> 
  • trunk/core/web/html/project/Dashboard.html

    r18309 r18348  
    397397                                                                                                                        </td> 
    398398                                                                                                                    </tr> 
    399                                                                                                                     <t:loop source="phase.milestones" value="milestone"> 
    400                                                                                                                         <tr class="tableLine"> 
    401                                                                                                                             <td colspan="4" class="tableLine"><img src="${jspRootURL}/images/spacers/trans.gif" width="1" height="2" border="0" /></td> 
    402                                                                                                                         </tr> 
    403                                                                                                                         <tr> 
    404                                                                                                                             <td class="tableContent">&nbsp;&nbsp;<img src="${jspRootURL}/images/milestone.gif" /> <a href="${jspRootURL}${milestone.url}">${milestone.name}</a>&nbsp;</td> 
    405                                                                                                                             <td class="tableContent" colspan="2">&nbsp;${milestone.date}</td> 
    406                                                                                                                             <td class="tableContent">${milestone.percentComplete}%&nbsp;</td> 
    407                                                                                                                         </tr> 
    408                                                                                                                     </t:loop> 
    409399                                                                                                                </t:loop> 
    410400                                                                                                                <t:if test="hasMilestones"> 
     
    414404                                                                                                                        </tr> 
    415405                                                                                                                        <tr> 
    416                                                                                                                             <td class="tableContent"><img src="${jspRootURL}/images/milestone.gif" /> <a href="${milestone.url}">${milestone.name}</a>&nbsp;</td> 
     406                                                                                                                            <td class="tableContent"><img src="${jspRootURL}/images/milestone.gif" /> <a href="${jspRootURL}${milestone.milestoneUrl}">${milestone.name}</a>&nbsp;</td> 
    417407                                                                                                                            <td class="tableContent" colspan="2">&nbsp;${milestone.date}</td> 
    418408                                                                                                                            <td class="tableContent">${milestone.percentComplete}%&nbsp;</td> 
  • trunk/core/web/jsp/project/PropertiesEdit.jsp

    r18047 r18348  
    520520<input type="radio" name="percentCalculationMethod" value="<%=PercentCalculationMethod.SCHEDULE.getID()%>" onChange="changeProgressMethod(this.value);">&nbsp; 
    521521</td> 
    522 <td class="tableContent"
     522<td class="tableContent" valign="top"
    523523 <span id="project.schedule.percentComplete"><display:get name="prm.project.propertiesedit.completion.schedule.label"/> </span> 
    524524</td> 
     
    537537<input type="radio" name="percentCalculationMethod" value="<%=PercentCalculationMethod.MANUAL.getID()%>" onChange="changeProgressMethod(this.value);">&nbsp; 
    538538</td> 
    539 <td class="tableContent"><span id="project.manual.percentComplete"><display:get name="prm.project.propertiesedit.completion.label" /></span> 
     539<td class="tableContent" valign="top"><span id="project.manual.percentComplete"><display:get name="prm.project.propertiesedit.completion.label" /></span> 
    540540<% 
    541541    NumberFormat formatter = NumberFormat.getInstance(); 
     
    578578<input type="radio" name="visibilityID" checked="checked" value="<%=ProjectVisibility.PROJECT_PARTICIPANTS.getID()%>"  >&nbsp; 
    579579</td> 
    580 <td class="tableContent"
     580<td class="tableContent" valign="top"
    581581                    <%=ProjectVisibility.PROJECT_PARTICIPANTS.getName()%> 
    582582                    </td> 
     
    588588                    </td> 
    589589                    </tr> 
     590                    <tr><td colspan="4">&nbsp;</td></tr> 
    590591                    <tr> 
    591592                    <td class="tableContent" width="1%"> 
    592593                    <input type="radio" name="visibilityID" value="<%=ProjectVisibility.OWNING_BUSINESS_PARTICIPANTS.getID()%>">&nbsp; 
    593594                    </td> 
    594                     <td class="tableContent"
     595                    <td class="tableContent" valign="top"
    595596                    <%=ProjectVisibility.OWNING_BUSINESS_PARTICIPANTS.getName()%> <br> 
    596597                    </td> 
     
    602603                    </td> 
    603604                    </tr> 
     605                    <tr><td colspan="4">&nbsp;</td></tr> 
    604606                    <% if (PropertyProvider.getBoolean("prm.global.globalvisibility.isenabled")) { %> 
    605607                    <tr> 
     
    607609                    <input type="radio" name="visibilityID" value="<%=ProjectVisibility.GLOBAL.getID()%>">&nbsp; 
    608610                    </td> 
    609                     <td class="tableContent"
     611                    <td class="tableContent" valign="top"
    610612                    <%=ProjectVisibility.GLOBAL.getName()%> 
    611613                    </td> 
  • trunk/core/web/jsp/roster/MemberView.jsp

    r18047 r18348  
    7474        var isLoaded = false; 
    7575        var JSPRootURL = '<%= SessionManager.getJSPRootURL() %>'; 
     76        var loginUserId = '<%=user.getID()%>'; 
     77        var selectedUserId='<%=rosterPerson.getID()%>'; 
    7678 
    7779function setup() { 
     
    100102 
    101103function addImage() { 
    102         openwin_small("logo_win","AddPersonalImage.jsp?module=140&action=2&id=<c:out value="${rosterPerson.ID}"/>"); 
     104        if(loginUserId == selectedUserId){ 
     105                openwin_small("logo_win","AddPersonalImage.jsp?module=140&action=2&id=<c:out value="${rosterPerson.ID}"/>"); 
     106        } else { 
     107                extAlert('error','<display:get name="prm.directory.memberview.changepersonimage.errormessage" />',Ext.MessageBox.ERROR); 
     108        } 
    103109} 
    104110 
     
    107113         
    108114        // Ajax DWR call 
    109         LogoRemover.removePersonalImage(<c:out value="${rosterPerson.ID}"/>); 
    110  
    111         document.getElementById("personalImage").src = ''; 
    112         document.getElementById("personalImage").width = '0'; 
    113         document.getElementById("personalImage").height = '0'; 
     115        if(loginUserId == selectedUserId){ 
     116                LogoRemover.removePersonalImage(<c:out value="${rosterPerson.ID}"/>); 
     117                document.getElementById("personalImage").src = ''; 
     118                document.getElementById("personalImage").width = '0'; 
     119                document.getElementById("personalImage").height = '0'; 
     120        } else { 
     121                extAlert('error','<display:get name="prm.directory.memberview.removeimage.errormessage" />',Ext.MessageBox.ERROR); 
     122        } 
    114123} 
    115124 
  • trunk/core/web/src/blogit.js

    r18347 r18348  
    11951195                title: 'Blog-it', 
    11961196                closable: true, 
    1197                 width: 820, 
     1197                width: 840, 
    11981198                height: blogItWinHeight, 
    11991199                plain: true,