ProjectSetting.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. MWF.xApplication.TeamWork = MWF.xApplication.TeamWork || {};
  2. MWF.xApplication.TeamWork.ProjectSetting = new Class({
  3. Extends: MWF.xApplication.TeamWork.Common.Popup,
  4. options:{
  5. "closeByClickMask" : false
  6. },
  7. open: function (e) {
  8. //设置css 和 lp等
  9. var css = this.css;
  10. this.cssPath = "/x_component_TeamWork/$ProjectSetting/"+this.options.style+"/css.wcss";
  11. this._loadCss();
  12. if(css) this.css = Object.merge( css, this.css );
  13. this.lp = this.app.lp.projectSetting;
  14. this.fireEvent("queryOpen");
  15. this.isNew = false;
  16. this.isEdited = false;
  17. this._open();
  18. this.fireEvent("postOpen");
  19. },
  20. _createTableContent: function () {
  21. this.projectInfor(function(rs){
  22. this.groups = rs.groups;
  23. this.groupsArr = [];
  24. this.projectSettingTop = new Element("div.projectSettingTop",{styles:this.css.projectSettingTop}).inject(this.formTableArea);
  25. this.projectSettingTopText = new Element("div.projectSettingTopText",{styles:this.css.projectSettingTopText,text:this.lp.title}).inject(this.projectSettingTop);
  26. this.projectSettingTopClose = new Element("div.projectSettingTopClose",{styles:this.css.projectSettingTopClose}).inject(this.projectSettingTop);
  27. this.projectSettingTopClose.addEvents({
  28. click:function(){this.close()}.bind(this)
  29. });
  30. this.projectSettingBgText = new Element("div.projectSettingBgText",{styles:this.css.projectSettingBgText,"text":this.lp.projectSettingBgText}).inject(this.formTableArea);
  31. this.projectSettingBgContainer = new Element("div.projectSettingBgContainer",{styles:this.css.projectSettingBgContainer}).inject(this.formTableArea);
  32. this.projectSettingBgImg = new Element("div.projectSettingBgImg",{styles:this.css.projectSettingBgImg}).inject(this.projectSettingBgContainer);
  33. if(this.data.icon && this.data.icon!=""){
  34. this.projectSettingBgImg.setStyles({
  35. "background-image":"url('"+MWF.xDesktop.getImageSrc( this.data.icon )+"')"
  36. });
  37. }
  38. this.projectSettingBgUpload = new Element("div.projectSettingBgUpload",{styles:this.css.projectSettingBgUpload,text:this.lp.upload}).inject(this.projectSettingBgContainer);
  39. this.projectSettingBgUpload.addEvents({
  40. click:function(){
  41. var data = {};
  42. // var value ;
  43. // MWF.xDesktop.requireApp("Template", "widget.ImageClipper",null,false);
  44. // this.clipper = new MWF.xApplication.Template.widget.ImageClipper(this.app, {
  45. // "imageUrl": value ? MWF.xDesktop.getImageSrc( value ) : "",
  46. // "aspectRatio": this.options.aspectRatio || 0,
  47. // "ratioAdjustedEnable" : this.options.ratioAdjustedEnable || false,
  48. // "reference": this.options.reference,
  49. // "referenceType": this.options.referenceType,
  50. // "onChange": function () {
  51. // if( this.image )this.image.destroy();
  52. // if(this.imageWrap)this.imageWrap.destroy();
  53. // if( styles.imageWrapStyle ){
  54. // this.imageWrap = new Element("div", { styles : styles.imageWrapStyle}).inject( parent, "top" )
  55. // }
  56. // this.image = new Element("img", {
  57. // "src" : this.clipper.imageSrc
  58. // }).inject( this.imageWrap || parent, "top" );
  59. // if( styles.imageStyle )this.image.setStyles( styles.imageStyle );
  60. // this.image.addEvent("click",function(){
  61. // window.open( MWF.xDesktop.getImageSrc( this.imageId ), "_blank" );
  62. // }.bind(this));
  63. // this.imageId = this.module.imageId = this.clipper.imageId;
  64. // if( this.options.validImmediately ){
  65. // this.module.verify( true )
  66. // }
  67. // }.bind(this)
  68. // });
  69. // this.clipper.load();
  70. MWF.xDesktop.requireApp("TeamWork", "UploadImage", function(){
  71. var ui = new MWF.xApplication.TeamWork.UploadImage(this, data, {
  72. documentId : this.data.id ||"",
  73. onPostOk : function( id ){
  74. this.data.icon = id;
  75. this.projectSettingBgImg.setStyles({
  76. "background-image":"url('"+MWF.xDesktop.getImageSrc( id )+"')"
  77. });
  78. //window.open( MWF.xDesktop.getImageSrc( id ), "_blank" );
  79. }.bind(this)
  80. });
  81. ui.open()
  82. }.bind(this));
  83. }.bind(this)
  84. });
  85. this.projectSettingContainer = new Element("div.projectSettingContainer",{styles:this.css.projectSettingContainer}).inject(this.formTableArea);
  86. this.projectSettingTitleContainer = new Element("div.projectSettingTitleContainer",{styles:this.css.projectSettingTitleContainer}).inject(this.projectSettingContainer);
  87. this.projectSettingTitleText = new Element("div.projectSettingTitleText",{styles:this.css.projectSettingTitleText,text:this.lp.projectTitle}).inject(this.projectSettingTitleContainer);
  88. this.projectSettingTitleDiv = new Element("div.projectSettingTitleDiv",{styles:this.css.projectSettingTitleDiv}).inject(this.projectSettingTitleContainer);
  89. this.projectSettingTitleIn = new Element("input.projectSettingTitleIn",{styles:this.css.projectSettingTitleIn,value:rs.title || ""}).inject(this.projectSettingTitleDiv);
  90. // this.projectSettingContainer = new Element("div.projectSettingContainer",{styles:this.css.projectSettingContainer}).inject(this.formTableArea);
  91. this.projectSettingGroupContainer = new Element("div.projectSettingGroupContainer",{styles:this.css.projectSettingGroupContainer}).inject(this.projectSettingContainer);
  92. this.projectSettingGroupText = new Element("div.projectSettingGroupText",{styles:this.css.projectSettingGroupText,text:this.lp.projectGroup}).inject(this.projectSettingGroupContainer);
  93. this.projectSettingGroupDiv = new Element("div.projectSettingGroupDiv",{styles:this.css.projectSettingGroupDiv}).inject(this.projectSettingGroupContainer);
  94. this.projectSettingGroupDiv.addEvents({
  95. click:function(){
  96. var data = {groups:this.groups};
  97. MWF.xDesktop.requireApp("TeamWork", "GroupSelect", function(){
  98. var gs = new MWF.xApplication.TeamWork.GroupSelect(this.container, this.projectSettingGroupDiv, this.app, data, {
  99. axis : "y",
  100. nodeStyles : {
  101. "z-index" : "102"
  102. },
  103. onClose:function(d){
  104. if(d){
  105. this.actions.groupWithIds({ids:d},function(json){
  106. this.groups = json.data;
  107. var tmp = [];
  108. json.data.each(function(ddd){
  109. tmp.push(ddd.name);
  110. });
  111. this.projectSettingGroupValue.set("text",tmp.join())
  112. }.bind(this));
  113. }else{
  114. this.groups = [];
  115. }
  116. //this.newProjectGroupValue.set("text",d)
  117. }.bind(this)
  118. });
  119. gs.load()
  120. }.bind(this));
  121. }.bind(this)
  122. });
  123. this.projectSettingGroupValue = new Element("div.projectSettingGroupValue",{styles:this.css.projectSettingGroupValue}).inject(this.projectSettingGroupDiv);
  124. this.projectSettingGroupIcon = new Element("div.projectSettingGroupIcon",{styles:this.css.projectSettingGroupIcon}).inject(this.projectSettingGroupDiv);
  125. if(this.groups){
  126. this.groups.each(function(data){
  127. this.groupsArr.push(data.name);
  128. }.bind(this));
  129. }
  130. this.projectSettingGroupValue.set("text",this.groupsArr.join());
  131. this.projectSettingContainer = new Element("div.projectSettingContainer",{styles:this.css.projectSettingContainer}).inject(this.formTableArea);
  132. this.projectSettingContainer.setStyles({"height":"120px"});
  133. this.projectSettingDesText = new Element("div.projectSettingDesText",{styles:this.css.projectSettingDesText,text:this.lp.projectDes}).inject(this.projectSettingContainer);
  134. this.projectSettingDesContainer = new Element("div.projectSettingDesContainer",{styles:this.css.projectSettingDesContainer}).inject(this.projectSettingContainer);
  135. this.projectSettingDesIn = new Element("textarea.projectSettingDesIn",{styles:this.css.projectSettingDesIn,value:rs.projectDetail.description||""}).inject(this.projectSettingDesContainer);
  136. this.projectSettingContainer = new Element("div.projectSettingContainer",{styles:this.css.projectSettingContainer}).inject(this.formTableArea);
  137. this.projectSettingConfirm = new Element("div.projectSettingConfirm",{styles:this.css.projectSettingConfirm,text:this.lp.confirm}).inject(this.projectSettingContainer);
  138. this.projectSettingConfirm.addEvents({
  139. click:function(){
  140. if(this.projectSettingTitleIn.get("value").trim()=="") return;
  141. var groups = [];
  142. if(this.groups){
  143. this.groups.each(function(d){
  144. groups.push(d.id);
  145. });
  146. }
  147. var data = {
  148. "id":this.data.id,
  149. "icon":this.data.icon || "",
  150. "title":this.projectSettingTitleIn.get("value").trim(),
  151. "description":this.projectSettingDesIn.get("value"),
  152. "groups":groups
  153. };
  154. this.actions.projectSave(data,function(json){
  155. this.close();
  156. }.bind(this));
  157. }.bind(this)
  158. });
  159. this.projectSettingClose = new Element("div.projectSettingClose",{styles:this.css.projectSettingClose,text:this.lp.close}).inject(this.projectSettingContainer);
  160. this.projectSettingClose.addEvents({
  161. click:function(){
  162. this.close();
  163. }.bind(this)
  164. });
  165. //this.projectSettingAction = new Element("div.projectSettingAction",{styles:this.css.projectSettingAction,text:this.lp.confirm}).inject(this.formTableArea);
  166. }.bind(this));
  167. },
  168. projectInfor:function(callback){
  169. if(this.data.id){
  170. this.actions.projectGet(this.data.id,function(json){
  171. if(callback)callback(json.data)
  172. }.bind(this));
  173. }
  174. },
  175. groupInfor:function(ids){
  176. if(!ids) return;
  177. var resGroups = [];
  178. ids.each(function(data){
  179. this.actions.groupGet(data,function(json){
  180. }.bind(this))
  181. }.bind(this))
  182. }
  183. });