/** * [ONEMAP.M.gcmsCollect] * @return {[object]} */ define(['html!templates/gcms/gcmsCollect', 'css!styles/gcms/gcmsCollect', 'kindeditor'], function(tplLayout){ /** * 模块数据 用于数据存储和外部调用 * @type {Object} * 数据存放 */ var modValue = { formType:'note', inFileName:null, tmpPath:null, tmpfile:null, uploadimage:null, uploadvideo:null, uploadaudio:null, }; /** * 模块界面样式 例如:宽,高 * @type {Object} */ var styles = {}; /** * 模块状态,用于存储模块的状态 例如:收起,关闭 * @type {Object} */ var status = { initialized:false }; /** * 查询参数 * @type {Object} */ var options = {}; /** * 初始化并订阅事件 * @return {[type]} [description] */ function init(){ if(!status.initialized){ setLayout(); subscribe(); bindEvent(); status.initialized = true; } } /** * 设置界面 */ function setLayout(){ $('body').append($(tplLayout)); if(modValue.formType != 'note'){ $("#inportContent").show(); }else{ $("#inportContent").hide(); } } /** * 界面事件绑定 * @return {[type]} [description] */ function bindEvent(){ //类型选择 $("#gcmsCollect .typeList input").bind('click',function(){ var type = $(this).val(); modValue.formType = type; if(modValue.formType != 'note'){ $("#inportContent").show(); if(!modValue["upload"+type]){ buildkindeditor(modValue.formType); } }else{ $("#inportContent").hide(); } }) //提交 $("#gcmsCollect .besure").bind('click',function(){ buildTmpToServer(); }) //取消 $("#gcmsCollect .cancell").bind('click',function(){ remove(); }) $("#gcmsCollect .close-btn").bind('click',function(){ remove(); }) $("#FileLoad").on('change',function(){ modValue.inFileName = document.getElementById('FileLoad').files[0].name; $("#inport_name_info p").html(modValue.inFileName); }) } function buildkindeditor(type){ var tmpPath = buildTmpPath(); modValue.tmpPath = tmpPath; tmpPath = onemapUrlConfig.gcmsServiceUrl + "/file/upload/tmp?path="+modValue.tmpPath if(modValue.formType == 'image'){ modValue.uploadimage = KindEditor.editor({ uploadJson: tmpPath, allowFileUpload:true, afterUpload:function(data){ if(data.code == 0){ sucessLoad('image',data); }else { } } }); window.uploadimage = modValue.uploadimage; KindEditor('.inport_name_info_btn').click(function(){ if(modValue.formType == 'image'){ modValue.uploadimage.loadPlugin('uploadpicture',function(){ modValue.uploadimage.plugin.pictureDialog(); }); } }); }else if(modValue.formType == 'audio'){ modValue.uploadaudio = KindEditor.editor({ uploadJson: tmpPath, allowFileUpload:true, afterUpload:function(data){ if(data.code == 0){ sucessLoad('audio',data); }else { } } }); KindEditor('.inport_name_info_btn').click(function(){ if(modValue.formType == 'audio'){ modValue.uploadaudio.loadPlugin('uploadaudio',function(){ modValue.uploadaudio.plugin.audioDialog(); }); } }); }else if(modValue.formType == 'video'){ modValue.uploadvideo = KindEditor.editor({ uploadJson: tmpPath, allowFileUpload:true, afterUpload:function(data){ if(data.code == 0){ sucessLoad('video',data); }else { } } }); KindEditor('.inport_name_info_btn').click(function(){ if(modValue.formType == 'video'){ modValue.uploadvideo.loadPlugin('uploadvideo',function(){ modValue.uploadvideo.plugin.videoDialog(); }); } }); } } function sucessLoad(type,data){ modValue['upload'+type].hideDialog(); modValue.tmpfile = data['files'][0]; } /** * [buildTmpToServer description] * 在服务器上创建临时文件 * @return {[type]} [description] */ function buildTmpToServer(){ /*var tmpPath = buildTmpPath(); modValue.tmpPath = tmpPath; $.ajax({ type: "post", dataTpe: "json", url: onemapUrlConfig.gcmsServiceUrl + "/file/upload/tmp?path="+modValue.tmpPath }) .done(function(data) { if (data.code == 0) { addDataToServer(data); } else { alert(data.message) } }) .fail(function() { alert("无效的用户"); });*/ addDataToServer(); } /** * [addDataToServer description] * 将文件上传到服务器上 */ function addDataToServer(data){ var urlType; if(modValue.formType == 'image'){ urlType="picture" }else{ urlType = modValue.formType; } var ajaxData = JSON.stringify(buildFormData()); var ajaxData = buildFormData(); $.ajax({ type: "post", dataTpe: "json", url: onemapUrlConfig.gcmsServiceUrl + '/content/record_'+urlType+'?uploadpath='+modValue.tmpPath, data:ajaxData }) .done(function(data) { if (data.code == 0) { console.log(data); remove(); } else { alert(data.message) } }) .fail(function() { alert("无效的用户"); }); } /** * 构建表单数据 */ function buildFormData(){ var buildFormData = { gcms_title:$("#noteContent .gcmsFormTitle").val(), gcms_secret_level:$("#noteContent .gcmsFormLevel").val(), description:$("#noteContent .gcmsFormDescription").val(), updatetime:Date.parse(new Date()) } var lon = $("#noteContent .gcmsFormLon").val(); var lat = $("#noteContent .gcmsFormLat").val(); if(modValue.formType == 'note'){ buildFormData.lon = lon; buildFormData.lat = lat; }else{ var location = "location_"+modValue.formType; buildFormData[location]= buidGeojson(lon,lat); } return buildFormData; } function buidGeojson(lon,lat){ var geojson = { type:"FeatureCollection", features:[{ geometry:{ coordinates:[lon,lat], type:"point" }, properties:{ file:modValue.tmpfile, name:modValue.tmpfile, type:"PictureLocation" }, type:"Feature" }] }; return JSON.stringify(geojson); } /** * [buildTmpPath description] * 创建临时文件夹名称 * @return {[type]} [description] */ function buildTmpPath(){ var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0; i < 10; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return (new Date()).getTime().toString() + text; } /** * 界面重置 * @return {[type]} [description] */ function layoutResize(){ } /** * 注册订阅 * @type {Function} * 推送:ONEMAP.C.publisher.publish(options,'moduleName::type'); * 订阅:ONEMAP.C.publisher.subscribe(layoutResize,'sideBarLayoutChange'); */ function subscribe(){} /** * 取消订阅 * @type {Function} * 取消订阅:ONEMAP.C.publisher.unSubscribe(layoutResize,'sideBarLayoutChange'); */ function unSubscribe(){} /** * 模块移除 * @return {[type]} [description] */ function remove(){ $("#gcmsCollect").remove(); $("#coverBody").remove(); unSubscribe(); status.initialized = false; } /** * 获取数据 * @return {[type]} [description] */ function getValue(name){ if(modValue.hasOwnProperty(name)){ return modValue[name] }else { return null; } } /** * 设置数据 默认合并 */ function setValue(name,value,rewrite){ if(rewrite){ modValue = value; return modValue; }else { _.merge(modValue, value); return modValue; } } return ONEMAP.M.gcmsCollect = { init:init } });