Changeset 18355
- Timestamp:
- 11/14/08 11:05:33 (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/resource/AssignmentStoreDataFactory.java (modified) (1 diff)
- trunk/core/src/net/project/resource/Roster.java (modified) (2 diffs)
- trunk/core/src/net/project/view/pages/assignments/MyAssignments.java (modified) (9 diffs)
- trunk/core/src/net/project/view/pages/resource/management/Directory.java (modified) (3 diffs)
- trunk/core/web/html/assignments/MyAssignments.html (modified) (1 diff)
- trunk/core/web/jsp/calendar/MeetingManager.jsp (modified) (1 diff)
- trunk/core/web/jsp/form/FormList.jsp (modified) (3 diffs)
- trunk/core/web/jsp/form/FormListProcessing.jsp (modified) (1 diff)
- trunk/core/web/src/components/myAssignments-dashboardPanel.js (modified) (1 diff)
- trunk/core/web/src/components/myAssignments-filterForm.js (modified) (2 diffs)
- trunk/core/web/src/components/myAssignments-taskAssignWindow.js (modified) (9 diffs)
- trunk/core/web/src/components/myAssignments-timeline.js (modified) (2 diffs)
- trunk/core/web/src/directory-Panel.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/core/db/oracle/create-scripts/versions/8.5.0/update_system_properties.sql
r18353 r18355 1205 1205 values (2000, 'en', 'text', 'prm.project.process.deletedeliverable.label', '{@all.global.toolbar.channel.remove} Deliverable', 'A', 0, 1, null); 1206 1206 1207 1207 insert into pn_property (CONTEXT_ID, LANGUAGE, PROPERTY_TYPE, PROPERTY, PROPERTY_VALUE, PROPERTY_VALUE_CLOB,RECORD_STATUS,IS_SYSTEM_PROPERTY,IS_TRANSLATABLE_PROPERTY) 1208 values (2000,'en','text','prm.directory.resource.roster.removeperson.projectspaceadmingroup.message','You can not remove the last remaining member of the workspace administrator role. The project may only be disabled.','','A',0,1); 1209 1210 insert into pn_property (CONTEXT_ID, LANGUAGE, PROPERTY_TYPE, PROPERTY, PROPERTY_VALUE, PROPERTY_VALUE_CLOB,RECORD_STATUS,IS_SYSTEM_PROPERTY,IS_TRANSLATABLE_PROPERTY) 1211 values (2000,'en','text','prm.directory.resource.roster.removeperson.businessspaceadmingroup.message','You can not remove the last remaining member of the workspace administrator role. The business may only be disabled.','','A',0,1); 1208 1212 1209 1213 commit; trunk/core/src/net/project/resource/AssignmentStoreDataFactory.java
r18319 r18355 244 244 // +"','image': '"+ 245 245 // +"','link': '"+ 246 + "','spaceId': '"+ assignment.getSpaceId() 246 247 + "','workSpace': '"+ assignment.getSpaceName().replaceAll("'", "´") 247 248 + "','objectId': '"+ assignment.getPnObjectName().getObjectId() trunk/core/src/net/project/resource/Roster.java
r18057 r18355 27 27 28 28 import net.project.base.DefaultDirectory; 29 import net.project.base.ObjectType; 29 30 import net.project.base.property.PropertyProvider; 30 31 import net.project.database.DBBean; … … 669 670 if (spaceAdmin.isMember(personID) && 670 671 spaceAdmin.getPersonMembers().size() == 1) { 671 672 throw new PersistenceException(PropertyProvider.get("prm.directory.resource.roster.removeperson.spaceadmingroup.message")); 672 if(space.getType().equals(ObjectType.PROJECT)){ 673 throw new PersistenceException(PropertyProvider.get("prm.directory.resource.roster.removeperson.projectspaceadmingroup.message")); 674 }else{ 675 throw new PersistenceException(PropertyProvider.get("prm.directory.resource.roster.removeperson.businessspaceadmingroup.message")); 676 } 673 677 674 678 } trunk/core/src/net/project/view/pages/assignments/MyAssignments.java
r18321 r18355 188 188 private List<PnAssignment> assignments; 189 189 190 private String userDateFor amtString;190 private String userDateFormatString; 191 191 192 192 private String startDisplayFrom; … … 266 266 //Some user properties 267 267 userDateFormat = SessionManager.getUser().getDateFormatter(); 268 userDateFor amtString = SessionManager.getUser().getDateFormatter().getDateFormatExample();268 userDateFormatString = SessionManager.getUser().getDateFormatter().getDateFormatExample(); 269 269 userId = SessionManager.getUser().getID(); 270 270 userDisplayName = SessionManager.getUser().getDisplayName().replaceAll("'", "´"); … … 314 314 setAssignmentViewParameter(StringUtils.isNotEmpty(request.getParameter("view")) ? request 315 315 .getParameter("view") : "indent"); 316 return new TextStreamResponse("text", ""); 316 317 } else if (action.equalsIgnoreCase(AssignmentsAction.SETFILTERPARAMETER.toString())) { 317 318 setAllFilterParameter(request); … … 335 336 + request.getParameter("column"), PROPERTY, request.getParameter("value")); 336 337 } 338 return new TextStreamResponse("text", ""); 337 339 } else if (action.equalsIgnoreCase(AssignmentsAction.SETGROUPINGPARAMETER.toString())){ 338 340 initializeGroupingParameter(request); 341 return new TextStreamResponse("text", ""); 339 342 } else if (action.equalsIgnoreCase(AssignmentsAction.GETRESOURCESTOASSIGN.toString())){ 340 343 return getResourceAssignGridData(request); … … 343 346 } else if (action.equalsIgnoreCase(AssignmentsAction.REPLACEMYASSIGNMENTSPANELSTATE.toString())) { 344 347 replaceMyAssignmentsPanelPropetry(PANELCOLLAPSED_PROPERTY_CONTEXT, PROPERTY, request.getParameter("value")); 348 return new TextStreamResponse("text", ""); 345 349 } else if (action.equalsIgnoreCase(AssignmentsAction.REPLACEMYASSIGNMENTSPANELRESIZESTATE.toString())) { 346 350 replaceMyAssignmentsPanelPropetry(PANELWIDTH_PROPERTY_CONTEXT, PROPERTY, request.getParameter("value")); 351 return new TextStreamResponse("text", ""); 347 352 } else if (action.equalsIgnoreCase(AssignmentsAction.REPLACEMYASSIGNMENTSCOLUMNSIZE.toString())) { 348 353 replaceMyAssignmentsColumnSize(request); 354 return new TextStreamResponse("text", ""); 349 355 } else if (action.equalsIgnoreCase(AssignmentsAction.GETTIMELINEDATA.toString())){ 350 356 return getTimeLineData(); … … 685 691 scheduleEntry.setName(request.getParameter("taskName")); 686 692 scheduleEntry.setDescription(request.getParameter("taskDescription")); 687 scheduleEntry.store( false, schedule);693 scheduleEntry.store(schedule.isAutocalculateTaskEndpoints(), schedule); 688 694 schedule.loadAll(); 689 695 ServiceFactory.getInstance().getAssignResourceService().assignResourcesToSingleTask(scheduleEntry, … … 761 767 } 762 768 JSONStringer jsonStringer = new JSONStringer(); 763 //creaing and calculating schedule entry764 //IAddTaskService addTaskService = ServiceFactory.getInstance().getAddTaskService();765 769 try { 766 Date date = userDateFormat.parseDateString(dateString);767 scheduleEntry = addTaskService.reCalculateScheduleEntry(schedule, scheduleEntry, work, workUnit, date, calculateBy, SessionManager.getUser());768 770 jsonStringer.object(); 769 jsonStringer = populateJsonObjectForScheduleEntry(jsonStringer, scheduleEntry); 771 try { 772 Date date = userDateFormat.parseDateString(dateString); 773 scheduleEntry = addTaskService.reCalculateScheduleEntry(schedule, scheduleEntry, work, workUnit, date, calculateBy, SessionManager.getUser()); 774 jsonStringer.key("error").value(""); 775 jsonStringer = populateJsonObjectForScheduleEntry(jsonStringer, scheduleEntry); 776 } catch (ParseException pnetEx) { 777 jsonStringer.key("error").value(pnetEx.getMessage()); 778 log.error("Parsing error occured while reCalculating shedule entry: " + pnetEx.getMessage()); 779 } catch (InvalidDateException pnetEx) { 780 jsonStringer.key("error").value(pnetEx.getMessage()); 781 log.error("Error occured while parsing date string to date type: " + pnetEx.getMessage()); 782 } catch (IllegalArgumentException pnetEx) { 783 jsonStringer.key("error").value(pnetEx.getMessage()); 784 log.error("Error occured while calculating task: " + pnetEx.getMessage()); 785 } 770 786 jsonStringer.endObject(); 771 787 } catch (JSONException pnetEx) { 772 log.error("Json error occured while settng value Json Stringer: "+ pnetEx.getMessage()); 773 } catch (ParseException pnetEx) { 774 log.error("Parsing error occured while reCalculating shedule entry: "+ pnetEx.getMessage()); 775 } catch (InvalidDateException pnetEx) { 776 log.error("Error occured while parsing date string to date type: "+ pnetEx.getMessage()); 777 } 788 log.error("Json error occured while settng value Json Stringer: " + pnetEx.getMessage()); 789 } 778 790 return new TextStreamResponse("text/json", jsonStringer.toString()); 779 791 } … … 1223 1235 * @return the userDateForamtString 1224 1236 */ 1225 public String getUserDateFor amtString() {1226 return userDateFor amtString;1237 public String getUserDateFormatString() { 1238 return userDateFormatString; 1227 1239 } 1228 1240 … … 1230 1242 * @param userDateForamtString the userDateForamtString to set 1231 1243 */ 1232 public void setUserDateFor amtString(String userDateForamtString) {1233 this.userDateFor amtString = userDateForamtString;1244 public void setUserDateFormatString(String userDateFormatString) { 1245 this.userDateFormatString = userDateFormatString; 1234 1246 } 1235 1247 /** trunk/core/src/net/project/view/pages/resource/management/Directory.java
r18341 r18355 35 35 import net.project.util.Version; 36 36 37 import org.apache.commons.collections.CollectionUtils; 37 38 import org.apache.commons.lang.StringUtils; 38 39 import org.apache.log4j.Logger; … … 775 776 +"', spaceName : '"+ spaceName.replaceAll("'", "´"); 776 777 777 if(personBusinessesList!= null && personProjectList!=null 778 && (personBusinessesList.indexOf(new BusinessSpace(spaceId)) != -1 779 || personProjectList.indexOf(new PnProjectSpace(Integer.parseInt(spaceId), spaceName))!= -1)){ 778 if(personIsMemberOfThisSpace(spaceId)){ 780 779 configString += "', role : '"+ getPersonRolesBySpaceID(spaceId) 781 780 +"', checked : true"; … … 908 907 return ((string == null || string.equals("null")) ? returnString : string); 909 908 } 909 910 private boolean personIsMemberOfThisSpace(String spaceId){ 911 boolean personInSpace = false; 912 if (CollectionUtils.isNotEmpty(personBusinessesList)) { 913 for(BusinessSpace business : personBusinessesList){ 914 personInSpace = business.getID().equals(spaceId); 915 if(personInSpace) break; 916 } 917 } 918 if(!personInSpace && CollectionUtils.isNotEmpty(personProjectList)){ 919 for(PnProjectSpace project : personProjectList){ 920 personInSpace = project.getProjectId() == Integer.parseInt(spaceId); 921 if(personInSpace) break; 922 } 923 } 924 return personInSpace; 925 } 910 926 911 927 @CleanupRender trunk/core/web/html/assignments/MyAssignments.html
r18310 r18355 86 86 var isAgileWorkRemainingEnabled = ${isAgileWorkRemainingEnabled}; 87 87 var actionsIconEnabled = ${actionsIconEnabled}; 88 var userDateFor amtString = '${userDateForamtString}';88 var userDateFormatString = '${userDateFormatString}'; 89 89 var userDisplayName = '${userDisplayName}'; 90 90 trunk/core/web/jsp/calendar/MeetingManager.jsp
r18047 r18355 297 297 <tb:band name="action"> 298 298 299 < tb:button type="cancel" show="<%=showCancelButton%>" />299 <!-- tb:button type="cancel" show="<%=showCancelButton%>" /--> 300 300 <tb:button type="submit" show="<%=showSubmitButton%>" /> 301 301 </tb:band> trunk/core/web/jsp/form/FormList.jsp
r18322 r18355 25 25 net.project.persistence.*, 26 26 net.project.base.*, 27 java.net.URLEncoder" 27 java.net.URLEncoder, 28 net.project.space.*" 28 29 %> 29 30 <%@ include file="/base/taglibInclude.jsp" %> … … 35 36 <title><display:get name="prm.global.application.title" /></title> 36 37 <% 38 boolean isPersonalSpace=user.getCurrentSpace().isTypeOf(Space.PERSONAL_SPACE); 37 39 form.setUser(user); 38 40 form.setSpace(user.getCurrentSpace()); … … 307 309 <a href="javascript:notify();"><%= PropertyProvider.get("all.global.toolbar.standard.notify") %></a> 308 310 </span> 309 <br/> 311 <br/><%if(!isPersonalSpace) {%> 310 312 <span> 311 313 <a href="javascript:workflow();"><%= PropertyProvider.get("all.global.toolbar.standard.workflow") %></a> 312 314 </span> 313 <br/> 315 <br/><%}%> 314 316 <span> 315 317 <a href="javascript:search();"><%= PropertyProvider.get("prm.form.list.search.button.tooltip") %></a> trunk/core/web/jsp/form/FormListProcessing.jsp
r17700 r18355 97 97 } else if ((request.getParameter("theAction") != null) && request.getParameter("theAction").equals("workflow")) 98 98 { 99 pageContext.forward( SessionManager.getJSPRootURL() +"/workflow/envelope/EnvelopeWizardStart.jsp?id=" + request.getParameter("selected"));99 pageContext.forward("/workflow/envelope/EnvelopeWizardStart.jsp?id=" + request.getParameter("selected")); 100 100 } 101 101 %> trunk/core/web/src/components/myAssignments-dashboardPanel.js
r18341 r18355 509 509 window.location.href = JSPRootURL+'/form/FormEdit.jsp?id='+assignmentTreeNodeId+'&module=30&action=1&redirectedFromSpace=true'; 510 510 } else if(objectType.toString() == 'meeting' || objectType.toString() == 'activity'){ 511 window.location.href = JSPRootURL+'/servlet/AssignmentController/View?module='+moduleId+'&objectID='+assignmentTreeNodeId+'&personID='+userId +'&returnTo=/assignments/My?module='+moduleId+'&refLink=/assignments/My?module='+moduleId;511 window.location.href=JSPRootURL+'/calendar/MeetingManager.jsp?id='+assignmentTreeNodeId+'&action=1&module=70'; 512 512 } else { 513 513 extAlert('Error', 'Details are not available for this object.', Ext.MessageBox.ERROR); trunk/core/web/src/components/myAssignments-filterForm.js
r18314 r18355 102 102 labelWidth:30, 103 103 value : startDateValue, 104 emptyText : 'Start Date', 104 105 format:'m/d/Y', 105 106 invalidText:'Current date is not a valid date. It must be in the format mm/dd/yyyy', … … 140 141 toDate = new Ext.form.DateField({ 141 142 hideLabel : true, 143 emptyText : 'Due Date', 142 144 value : endDateValue, 143 145 format:'m/d/Y', trunk/core/web/src/components/myAssignments-taskAssignWindow.js
r18341 r18355 8 8 var dueDate; 9 9 10 if(userDateForamtString.indexOf('yy') > 0){ 11 userDateForamtString = userDateForamtString.replace('yy', 'y'); 12 } 13 userDateForamtString = userDateForamtString.toLowerCase(); 10 11 if(userDateFormatString.indexOf('yy') > 0){ 12 userDateFormatString = userDateFormatString.replace('yy', 'y'); 13 } 14 userDateFormatString = userDateFormatString.toLowerCase(); 14 15 15 16 String.prototype.trim = function(){ … … 199 200 name : 'startDate', 200 201 labelWidth:30, 201 format: userDateFor amtString,202 format: userDateFormatString, 202 203 width : 100, 204 invalidText:'Current date is not a valid date. It must be in the format '+ getDateFormatExample(userDateFormatString), 203 205 labelSeparator : ':', 204 206 listeners : {'change':calculateTask} … … 209 211 name : 'End Date', 210 212 labelWidth:30, 211 format: userDateFor amtString,213 format: userDateFormatString, 212 214 width : 100, 215 invalidText:'Current date is not a valid date. It must be in the format '+ getDateFormatExample(userDateFormatString), 213 216 labelSeparator : ':', 214 217 listeners : {'change':calculateTask} … … 219 222 buttons:[{ 220 223 text:'Submit', 221 handler: submitAssignResouceForm 224 handler: function (){ 225 if(taskCalculated) 226 submitAssignResouceForm(); 227 } 222 228 }, 223 229 { text: 'Close', … … 297 303 298 304 function calculateTask(thisField, newValue, oldValue) { 305 taskCalculated = false 299 306 if(!taskWork.isValid(false)){ 300 307 extAlert('Error', 'Please enter valid work.', Ext.MessageBox.ERROR); … … 302 309 } 303 310 var startDateString = ''; 304 if(startDate.value != ''){ 305 date = startDate.getValue();//new Date(startDate) 306 startDateString = date.dateFormat(userDateForamtString); 307 } 308 if(dueDate.value != ''){ 311 var dueDateString = ''; 312 if(startDate.getValue() != ''){ 313 date = startDate.getValue(); 314 startDateString = date.dateFormat(userDateFormatString); 315 } 316 if(dueDate.getValue() != ''){ 309 317 date = dueDate.getValue(); 310 dueDateString = date.dateFormat(userDateForamtString); 318 dueDateString = date.dateFormat(userDateFormatString); 319 } 320 if(startDateString == '' || dueDateString == ''){ 321 extAlert('Error', 'Please enter valid Date.', Ext.MessageBox.ERROR); 322 return; 311 323 } 312 324 … … 323 335 success: function(result, request){ 324 336 var responseObject = eval("(" +result.responseText +")" ); 325 taskWork.setValue(responseObject.work); 326 taskWorkUnit.setValue(responseObject.workUnit); 327 startDate.setValue(getDateInExtDateFieldFormat(responseObject.startDate)); 328 dueDate.setValue(getDateInExtDateFieldFormat(responseObject.dueDate)); 337 if(responseObject.error == ''){ 338 taskWork.setValue(responseObject.work); 339 taskWorkUnit.setValue(responseObject.workUnit); 340 startDate.setValue(getDateInExtDateFieldFormat(responseObject.startDate)); 341 dueDate.setValue(getDateInExtDateFieldFormat(responseObject.dueDate)); 342 } else{ 343 extAlert('Error', responseObject.error, Ext.MessageBox.ERROR); 344 taskWork.setValue(''); 345 } 346 taskCalculated = true; 329 347 }, 330 348 failure: function(result, response){ 349 taskCalculated = true; 331 350 extAlert('Error', 'Server request failed please try again...', Ext.MessageBox.ERROR); 332 351 } … … 360 379 } 361 380 return splitedDate[0]+'/'+splitedDate[1]+'/'+splitedDate[2]; 381 } 382 383 function getDateFormatExample(dateFormatString){ 384 var splitedDateFormat = dateFormatString.split('/'); 385 if(splitedDateFormat[0].length == 1){ 386 splitedDateFormat[0] = splitedDateFormat[0] + splitedDateFormat[0]; 387 } 388 if(splitedDateFormat[1].length == 1){ 389 splitedDateFormat[1] = splitedDateFormat[1] + splitedDateFormat[1]; 390 } 391 if(splitedDateFormat[2].length == 1){ 392 splitedDateFormat[2] = splitedDateFormat[2] + splitedDateFormat[2]; 393 } 394 return splitedDateFormat[0]+'/'+splitedDateFormat[1]+'/'+splitedDateFormat[2]; 362 395 } 363 396 … … 373 406 374 407 function create(){ 408 //If no data in assignment grid 409 if (assignmentTreeGrid.getStore().getCount() == 0){ 410 extAlert('Error', 'No any project or task avilable to create new assignment.', Ext.MessageBox.ERROR); 411 return; 412 } 375 413 if(assignmentTreeNodeId != 0 && (objectType == 'task' || objectType == 'summary' || objectType == 'project')){ 414 taskCalculated = true; 376 415 selectedTaskId = assignmentTreeNodeId; 377 416 if(objectType == 'project'){ trunk/core/web/src/components/myAssignments-timeline.js
r18319 r18355 42 42 Timeline.DurationEventPainter.prototype._onClickDurationEvent = function(domEvt,evt,target){ 43 43 assignmentTreeNodeId = childTaskList = evt.getProperty("objectId"); 44 taskSpaceId = evt.getProperty("spaceId"); 44 45 objectType = evt.getProperty("objectType"); 45 46 objectName = evt.getProperty("title"); … … 47 48 loadBlogEntriesForAssignment(); 48 49 loadWikiForAssignment( objectName, assignmentTreeNodeId); 49 taskSpaceId = assignmentTreeNodeId; //set taskSpaceId for wikiPanel Cancel button50 //taskSpaceId = assignmentTreeNodeId; //set taskSpaceId for wikiPanel Cancel button 50 51 51 52 domEvt.cancelBubble=true; trunk/core/web/src/directory-Panel.js
r18341 r18355 911 911 return false; 912 912 } 913 if((gridStore.getAt(3).get('value').search(/[a-zA-Z]+/))> -1) { 914 extAlert('Error', 'Invalid office phone number', Ext.MessageBox.ERROR); 915 return false; 916 } 917 918 if((gridStore.getAt(4).get('value').search(/[a-zA-Z]+/))> -1 ) { 919 extAlert('Error', 'Invalid Mobile numbers', Ext.MessageBox.ERROR); 920 return false; 921 } 913 922 var resourceProperty = '[{ "displayName" : "'+ gridStore.getAt(0).get('value') 914 923 +'", "firstName" : "'+ gridStore.getAt(1).get('value') … … 918 927 +'", "fax" : "'+ gridStore.getAt(5).get('value') 919 928 +'", "email" : "'+ gridStore.getAt(6).get('value')+'"}]'; 929 920 930 //Updating Resource 921 931 document.getElementById('messageDiv').innerHTML … … 1023 1033 function(btn){ 1024 1034 if(btn=='yes'){ 1025 saveSpaceChange (spaceChanges);1035 saveSpaceChanges(spaceChanges); 1026 1036 }else{ 1027 1037 return false;
