Changeset 18348
- Timestamp:
- 11/13/08 12:35:59 (2 months ago)
- Files:
-
- trunk/core/db/oracle/create-scripts/versions/8.5.0/update_system_properties.sql (modified) (1 diff)
- trunk/core/src/net/project/view/pages/project/Dashboard.java (modified) (6 diffs)
- trunk/core/src/net/project/view/pages/project/PnTaskWrapper.java (modified) (1 diff)
- trunk/core/src/net/project/view/pages/project/ProjectPhaseWrapper.java (modified) (3 diffs)
- trunk/core/web/html/personal/workcalendar/WorkDateModify.html (modified) (1 diff)
- trunk/core/web/html/project/Dashboard.html (modified) (2 diffs)
- trunk/core/web/jsp/project/PropertiesEdit.jsp (modified) (6 diffs)
- trunk/core/web/jsp/roster/MemberView.jsp (modified) (3 diffs)
- trunk/core/web/src/blogit.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/core/db/oracle/create-scripts/versions/8.5.0/update_system_properties.sql
r18342 r18348 1189 1189 p.property = 'prm.business.modifybusiness.channel.address.title'; 1190 1190 1191 insert into pn_property (CONTEXT_ID, LANGUAGE, PROPERTY_TYPE, PROPERTY, PROPERTY_VALUE, RECORD_STATUS, IS_SYSTEM_PROPERTY, IS_TRANSLATABLE_PROPERTY, PROPERTY_VALUE_CLOB) 1192 values (2000, 'en', 'text', 'prm.directory.memberview.changepersonimage.errormessage', 'Other participants image cannot be modified.', 'A', 0, 1, null); 1193 1194 insert into pn_property (CONTEXT_ID, LANGUAGE, PROPERTY_TYPE, PROPERTY, PROPERTY_VALUE, RECORD_STATUS, IS_SYSTEM_PROPERTY, IS_TRANSLATABLE_PROPERTY, PROPERTY_VALUE_CLOB) 1195 values (2000, 'en', 'text', 'prm.directory.memberview.removeimage.errormessage', 'Other participants image cannot be deleted.', 'A', 0, 1, null); 1196 1197 update pn_property p set 1198 p.property_value = 'Project Info' 1199 where 1200 p.context_id = 2000 and 1201 p.language = 'en' and 1202 p.property = 'prm.personal.profile.teaminfo.header'; 1203 1191 1204 commit; 1192 1205 prompt 0 records loaded trunk/core/src/net/project/view/pages/project/Dashboard.java
r18325 r18348 14 14 import net.project.base.Module; 15 15 import net.project.base.PnetException; 16 import net.project.base.finder.NumberComparator; 17 import net.project.base.finder.NumberFilter; 16 18 import net.project.base.property.PropertyProvider; 17 19 import net.project.calendar.CalendarBean; … … 26 28 import net.project.hibernate.constants.WeblogConstants; 27 29 import net.project.hibernate.model.PnPersonProperty; 28 import net.project.hibernate.model.PnTask;29 30 import net.project.hibernate.model.PnWeblog; 30 31 import net.project.hibernate.model.PnWeblogEntry; … … 47 48 import net.project.project.ProjectSpaceBean; 48 49 import net.project.resource.PersonProperty; 50 import net.project.schedule.Schedule; 51 import net.project.schedule.ScheduleEntry; 52 import net.project.schedule.TaskFinder; 53 import net.project.schedule.TaskType; 49 54 import net.project.security.SessionManager; 50 55 import net.project.security.User; … … 448 453 User user = SessionManager.getUser(); 449 454 DateFormat userDateFormatter = user.getDateFormatter(); 450 451 455 projectId = requestGlobals.getHTTPServletRequest().getParameter("id"); 452 456 projectSpace = new ProjectSpaceBean(); … … 589 593 } 590 594 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) { 594 599 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; 602 619 } 603 milestones.add(taskWrapper);604 milestoneLimits--;605 }else{606 break;607 620 } 608 621 } 609 622 } 610 623 611 624 MyMeetings myMeetings = new MyMeetings(); 612 625 myMeetings.setUser(user); … … 790 803 } 791 804 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 792 847 public String getJspRootURL() { 793 848 return jspRootURL; trunk/core/src/net/project/view/pages/project/PnTaskWrapper.java
r18250 r18348 4 4 5 5 import net.project.hibernate.model.PnTask; 6 import net.project.schedule.ScheduleEntry; 6 7 import net.project.security.SessionManager; 7 8 8 9 public class PnTaskWrapper implements Serializable { 9 10 10 private PnTask task;11 private ScheduleEntry scheduleEntry; 11 12 12 public PnTaskWrapper() { 13 public PnTaskWrapper(ScheduleEntry scheduleEntry) { 14 this.scheduleEntry = scheduleEntry; 15 } 13 16 14 } 17 public String getMilestoneUrl() { 18 return "/servlet/ScheduleController/TaskView?module=60&action=1&id=" 19 + scheduleEntry.getID(); 20 } 15 21 16 public PnTaskWrapper(PnTask task) {17 this.task = task;18 }22 public String getName() { 23 return scheduleEntry.getName(); 24 } 19 25 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 } 23 34 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 } 27 40 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 } 32 44 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 } 50 48 51 49 } trunk/core/src/net/project/view/pages/project/ProjectPhaseWrapper.java
r17865 r18348 17 17 private ProjectPhase phase; 18 18 19 private List<PnTaskWrapper> milestones;20 21 19 public ProjectPhaseWrapper() { 22 20 … … 25 23 public ProjectPhaseWrapper(ProjectPhase phase) { 26 24 this.phase = phase; 27 28 25 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 }36 26 } 37 27 … … 69 59 return phase.getPercentComplete().toString(); 70 60 } 71 72 public List<PnTaskWrapper> getMilestones() {73 return milestones;74 }75 76 public void setMilestones(List<PnTaskWrapper> milestones) {77 this.milestones = milestones;78 }79 80 61 } trunk/core/web/html/personal/workcalendar/WorkDateModify.html
r18325 r18348 270 270 <td class="actionBar" align="right"> 271 271 <nobr> <a href="javascript:submit();" class="channelNoUnderline"><t:Message value="all.global.toolbar.action.submit" /> <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> <a href="javascript:add();" class="channelNoUnderline"><t:Message value="prm.workcalendar.workweekmodify.addanother.lable" /> <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> <a href="javascript:add();" class="channelNoUnderline"><t:Message value="prm.workcalendar.workweekmodify.addanother.lable" /> <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> 273 273 </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> 275 275 </tr> 276 276 </table> trunk/core/web/html/project/Dashboard.html
r18309 r18348 397 397 </td> 398 398 </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"> <img src="${jspRootURL}/images/milestone.gif" /> <a href="${jspRootURL}${milestone.url}">${milestone.name}</a> </td>405 <td class="tableContent" colspan="2"> ${milestone.date}</td>406 <td class="tableContent">${milestone.percentComplete}% </td>407 </tr>408 </t:loop>409 399 </t:loop> 410 400 <t:if test="hasMilestones"> … … 414 404 </tr> 415 405 <tr> 416 <td class="tableContent"><img src="${jspRootURL}/images/milestone.gif" /> <a href="${ milestone.url}">${milestone.name}</a> </td>406 <td class="tableContent"><img src="${jspRootURL}/images/milestone.gif" /> <a href="${jspRootURL}${milestone.milestoneUrl}">${milestone.name}</a> </td> 417 407 <td class="tableContent" colspan="2"> ${milestone.date}</td> 418 408 <td class="tableContent">${milestone.percentComplete}% </td> trunk/core/web/jsp/project/PropertiesEdit.jsp
r18047 r18348 520 520 <input type="radio" name="percentCalculationMethod" value="<%=PercentCalculationMethod.SCHEDULE.getID()%>" onChange="changeProgressMethod(this.value);"> 521 521 </td> 522 <td class="tableContent" >522 <td class="tableContent" valign="top"> 523 523 <span id="project.schedule.percentComplete"><display:get name="prm.project.propertiesedit.completion.schedule.label"/> </span> 524 524 </td> … … 537 537 <input type="radio" name="percentCalculationMethod" value="<%=PercentCalculationMethod.MANUAL.getID()%>" onChange="changeProgressMethod(this.value);"> 538 538 </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> 540 540 <% 541 541 NumberFormat formatter = NumberFormat.getInstance(); … … 578 578 <input type="radio" name="visibilityID" checked="checked" value="<%=ProjectVisibility.PROJECT_PARTICIPANTS.getID()%>" > 579 579 </td> 580 <td class="tableContent" >580 <td class="tableContent" valign="top"> 581 581 <%=ProjectVisibility.PROJECT_PARTICIPANTS.getName()%> 582 582 </td> … … 588 588 </td> 589 589 </tr> 590 <tr><td colspan="4"> </td></tr> 590 591 <tr> 591 592 <td class="tableContent" width="1%"> 592 593 <input type="radio" name="visibilityID" value="<%=ProjectVisibility.OWNING_BUSINESS_PARTICIPANTS.getID()%>"> 593 594 </td> 594 <td class="tableContent" >595 <td class="tableContent" valign="top"> 595 596 <%=ProjectVisibility.OWNING_BUSINESS_PARTICIPANTS.getName()%> <br> 596 597 </td> … … 602 603 </td> 603 604 </tr> 605 <tr><td colspan="4"> </td></tr> 604 606 <% if (PropertyProvider.getBoolean("prm.global.globalvisibility.isenabled")) { %> 605 607 <tr> … … 607 609 <input type="radio" name="visibilityID" value="<%=ProjectVisibility.GLOBAL.getID()%>"> 608 610 </td> 609 <td class="tableContent" >611 <td class="tableContent" valign="top"> 610 612 <%=ProjectVisibility.GLOBAL.getName()%> 611 613 </td> trunk/core/web/jsp/roster/MemberView.jsp
r18047 r18348 74 74 var isLoaded = false; 75 75 var JSPRootURL = '<%= SessionManager.getJSPRootURL() %>'; 76 var loginUserId = '<%=user.getID()%>'; 77 var selectedUserId='<%=rosterPerson.getID()%>'; 76 78 77 79 function setup() { … … 100 102 101 103 function 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 } 103 109 } 104 110 … … 107 113 108 114 // 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 } 114 123 } 115 124 trunk/core/web/src/blogit.js
r18347 r18348 1195 1195 title: 'Blog-it', 1196 1196 closable: true, 1197 width: 8 20,1197 width: 840, 1198 1198 height: blogItWinHeight, 1199 1199 plain: true,
