PATH:
home
/
letacommog
/
crmleta
/
layouts
/
v7
/
modules
/
Documents
/
resources
/*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************/ Vtiger.Class('Documents_Index_Js', { fileObj : false, referenceCreateMode : false, referenceFieldName : '', getInstance : function() { return new Documents_Index_Js(); }, uploadTo : function(service,parentId,relatedModule,referenceFieldName) { var instance = Documents_Index_Js.getInstance(); instance.detectReferenceCreateMode(referenceFieldName); instance.uploadTo(service,parentId,relatedModule); }, createDocument : function(type,parentId,relatedModule,referenceFieldName) { var instance = Documents_Index_Js.getInstance(); instance.detectReferenceCreateMode(referenceFieldName); instance.createDocument(type,parentId,relatedModule); }, }, { detectReferenceCreateMode : function(referenceFieldName) { if(typeof referenceFieldName !== 'undefined') { Documents_Index_Js.referenceCreateMode = true; Documents_Index_Js.referenceFieldName = referenceFieldName; } else { Documents_Index_Js.referenceCreateMode = false; Documents_Index_Js.referenceFieldName = ''; } }, getFile : function() { return Documents_Index_Js.fileObj; }, setFile : function(file) { Documents_Index_Js.fileObj = file; }, isRelatedList : function() { var relatedModuleNameContainer = jQuery('.relatedContainer').find('.relatedModuleName'); return relatedModuleNameContainer.length && relatedModuleNameContainer.val() === 'Documents'; }, reloadListView : function() { var activeFolderEle = jQuery("#folders-list").find('li.documentFolder.active'); var params = {}; if(activeFolderEle.length) { var activeFolderName = activeFolderEle.find('.filterName').data('folderName'); params ={ "folder_id" : 'folderid', "folder_value" : activeFolderName }; } var list = Vtiger_List_Js.getInstance(); list.loadListViewRecords(params); }, reloadRelatedListView : function() { var parentId = jQuery('#recordId').val(); var parentModule = app.getModuleName(); var relatedModuleName = jQuery('.relatedModuleName').val(); var selectedRelatedTabElement = jQuery('div.related-tabs').find('li').filter('.active'); var relatedList = Vtiger_RelatedList_Js.getInstance(parentId, parentModule, selectedRelatedTabElement, relatedModuleName); relatedList.loadRelatedList(); }, isDocumentsSummaryWidgetAvailable : function() { return jQuery('.widgetContainer_documents').length; }, reloadSummaryWidget : function() { var detailInstance = Vtiger_Detail_Js.getInstance(); detailInstance.loadWidget(jQuery('.widgetContainer_documents')); }, reloadList : function() { if(app.getModuleName() === 'Documents' && app.view() === 'List') { this.reloadListView(); } else if(this.isRelatedList()) { this.reloadRelatedListView(); } else if(this.isDocumentsSummaryWidgetAvailable()) { this.reloadSummaryWidget(); } }, _upload : function(form,extraData) { var aDeferred = jQuery.Deferred(); var formData = new FormData(form[0]); var file = this.getFile(); if(file) { if(typeof extraData === 'object') { jQuery.each(extraData, function(name,value) { formData.append(name,value); }); } //append file var fileName = form.find('input[type="file"]').attr('name'); formData.append(fileName,file); var params = { url: "index.php", type: "POST", data: formData, processData: false, contentType: false }; app.helper.showProgress(); app.request.post(params).then(function(e,res) { app.helper.hideProgress(); if(!e) { aDeferred.resolve(res); } else { aDeferred.reject(e); } }); } else { aDeferred.reject(); } return aDeferred.promise(); }, uploadFileToVtiger : function(container) { var self = this; var file = this.getFile(); if(!file) { app.helper.showErrorNotification({ 'message' : app.vtranslate('JS_PLEASE_SELECT_A_FILE') }); return; } var extraData = { 'filelocationtype' : 'I' }; if(file) { extraData['notes_title'] = container.find('form').find('[name="notes_title"]').val(); } this._upload(container.find('form'),extraData).then(function(data) { app.helper.showSuccessNotification({ 'message' : app.vtranslate('JS_UPLOAD_SUCCESSFUL') }); app.helper.hideModal(); self.reloadList(); var form = container.find('form'); var folderid = form.find('[name="folderid"]').val(); app.event.trigger('post.documents.save', {'folderid' : folderid}); //reference create handling if(Documents_Index_Js.referenceCreateMode === true && Documents_Index_Js.referenceFieldName !== '') { self.postQuickCreateSave(data); } }, function(e) { app.helper.showErrorNotification({'message' : app.vtranslate('JS_UPLOAD_FAILED')}); }); }, postQuickCreateSave: function (data) { var vtigerInstance = Vtiger_Index_Js.getInstance(); var container = vtigerInstance.getParentElement(jQuery('[name="'+Documents_Index_Js.referenceFieldName+'"]')); var module = vtigerInstance.getReferencedModuleName(container); var params = {}; params.name = data._recordLabel; params.id = data._recordId; params.module = module; vtigerInstance.setReferenceFieldValue(container, params); var tdElement = vtigerInstance.getParentElement(container.find('[value="' + module + '"]')); var sourceField = tdElement.find('input[class="sourceField"]').attr('name'); var fieldElement = tdElement.find('input[name="' + sourceField + '"]'); vtigerInstance.autoFillElement = fieldElement; var parentModule = jQuery('.editViewContents [name=module]').val(); if (parentModule != "Events") { vtigerInstance.postRefrenceSearch(params, container); } tdElement.find('input[class="sourceField"]').trigger(Vtiger_Edit_Js.postReferenceQuickCreateSave, {'data': data}); }, showFileDetails : function(container) { var fileObj = this.getFile(); if(fileObj) { var fileName = fileObj.name; var fileSize = fileObj.size; fileSize = vtUtils.convertFileSizeInToDisplayFormat(fileSize); container.find('.fileDetails').text(fileName + ' (' + fileSize + ')'); var fileParts = fileName.split('.'); var fileType = fileParts[fileParts.length - 1]; container.find('[name="notes_title"]').val(fileName.replace('.'+fileType, '')); } }, registerFileDragDropEvent : function(container) { var self = this; var dragDropElement = container.find("#dragandrophandler"); dragDropElement.on('dragenter', function(e) { e.stopPropagation(); e.preventDefault(); jQuery(this).addClass('dragdrop-solid'); }).on('dragover', function(e) { e.stopPropagation(); e.preventDefault(); }); jQuery(document).on('dragenter', function(e) { e.stopPropagation(); e.preventDefault(); }).on('dragover', function(e) { e.stopPropagation(); e.preventDefault(); dragDropElement.removeClass('dragdrop-solid'); }).on('drop', function(e) { e.stopPropagation(); e.preventDefault(); }); dragDropElement.on('drop', function(e) { e.preventDefault(); jQuery(this).removeClass('dragdrop-solid'); jQuery(this).addClass('dragdrop-dotted'); var fileObj = e.originalEvent.dataTransfer.files; var file = fileObj[0]; if(self.fileSizeCheck(container, file)) { self.setFile(file); container.find('input[name="filename"]').val(null); self.showFileDetails(container); } else { app.helper.showAlertNotification({ 'message' : app.vtranslate('JS_EXCEEDS_MAX_UPLOAD_SIZE') }); } }); }, getMaxUploadLimit : function(container) { return container.find('input[name="max_upload_limit"]').val() || 0; }, fileSizeCheck : function(container, file) { var maxUploadLimitInBytes = this.getMaxUploadLimit(container); return file.size <= maxUploadLimitInBytes; }, registerFileChangeEvent : function(container) { var self = this; jQuery('input[type="file"]',container).on('change', function(e) { var file = e.target.files[0]; if(self.fileSizeCheck(container, file)) { self.setFile(file); self.showFileDetails(container); } else { app.helper.showAlertNotification({ 'message' : app.vtranslate('JS_EXCEEDS_MAX_UPLOAD_SIZE') }); } }); }, registerFileHandlingEvents : function(container) { this.registerFileChangeEvent(container); this.registerFileDragDropEvent(container); container.find('input[type="file"]').addClass('ignore-validation'); vtUtils.enableTooltips(); }, updateDirectoryMeta : function(folderId,tab,backwardNavigation) { backwardNavigation = (typeof backwardNavigation == "undefined") ? false : true; var currentDirElement = jQuery('input[name="currentDir"]',tab); var parentDirElement = jQuery('input[name="parentDir"]',tab); var currentDir = currentDirElement.val(); var parentDir = parentDirElement.val(); if(!backwardNavigation) { parentDirElement.val(currentDir); currentDirElement.val(folderId); jQuery('.browseBack',tab).removeAttr('disabled'); jQuery('.gotoRoot',tab).removeAttr('disabled'); } else { currentDirElement.val(folderId); parentDirElement.val(parentDir); } }, loadTab : function(tab) { var self = this; var url = tab.data('url'); app.helper.showProgress(); app.request.get({'url':url}).then(function(e,resp) { app.helper.hideProgress(); if(!e) { tab.html(resp); vtUtils.applyFieldElementsView(tab); } else { console.log("error while loading tab : ",e); } }); tab.data('tabLoaded',true); }, registerActiveTabEvent : function(container) { var self = this; jQuery('.tab-pane',container).on('Documents.Upload.Tab.Active', function() { var currentTab = jQuery(this); if(!currentTab.data('tabLoaded')) { self.loadTab(currentTab); } }); }, registerUploadDocumentEvents : function(container) { var self = this; container.find('form').vtValidate({ 'submitHandler' : function() { self.uploadFileToVtiger(container); return false; } }); self.registerQuickCreateEvents(container); this.registerFileHandlingEvents(container); }, showUploadToVtigerModal : function(parentId,relatedModule) { var self = this; var url = 'index.php?module=Documents&view=QuickCreateAjax&service=Vtiger&operation=UploadToVtiger&type=I'; if(typeof parentId !== 'undefined' && typeof relatedModule !== 'undefined') { url += '&relationOperation=true&sourceModule='+relatedModule+'&sourceRecord='+parentId; } var relationField = jQuery('div.related-tabs').find('li').filter('.active').data('relatedfield'); if (relationField && parentId) { url += '&'+relationField+"="+parentId; } app.helper.showProgress(); app.request.get({'url':url}).then(function(e,resp) { app.helper.hideProgress(); if(!e) { app.helper.showModal(resp, { 'cb' : function(modalContainer) { self.registerUploadDocumentEvents(modalContainer); self.applyScrollToModal(modalContainer); self.registerQuickCreateEvents(modalContainer); } }); } }); }, applyScrollToModal : function(modalContainer) { app.helper.showVerticalScroll(modalContainer.find('.modal-body').css('max-height', '415px'), {'autoHideScrollbar': true}); }, uploadTo : function(service,parentId,relatedModule) { this.setFile(false); this.showUploadToVtigerModal(parentId,relatedModule); }, registerFileSelectionHandler : function(container) { jQuery('.file', container).on('click',function() { if(typeof prevSelection !== 'undefined') { prevSelection.removeClass('selectedFile'); } jQuery(this).addClass('selectedFile'); prevSelection = jQuery(this); }); }, _createDocument : function(form) { var self = this; var noteContentElement = form.find('#Documents_editView_fieldName_notecontent_popup'); if(noteContentElement.length) { var noteContent = CKEDITOR.instances.Documents_editView_fieldName_notecontent_popup.getData() noteContentElement.val(noteContent); } var formData = form.serialize(); app.helper.showProgress(); app.request.post({'data':formData}).then(function(e,res) { app.helper.hideProgress(); if (e === null) { jQuery('.vt-notification').remove(); app.helper.hideModal(); app.helper.showSuccessNotification({ 'message' : app.vtranslate('JS_DOCUMENT_CREATED') }); self.reloadList(); var folderid = form.find('[name="folderid"]').val(); app.event.trigger('post.documents.save', {'folderid' : folderid}); //reference create handling if (Documents_Index_Js.referenceCreateMode === true && Documents_Index_Js.referenceFieldName !== '') { self.postQuickCreateSave(res); } } else { app.event.trigger('post.save.failed', e); } }); }, registerCreateDocumentEvent : function(container) { var self = this; jQuery('#js-create-document', container).on('click', function() { var form = container.find('form'); if(form.valid()) { self._createDocument(form); } }); }, applyEditor : function(element) { var cke = new Vtiger_CkEditor_Js(); cke.loadCkEditor(element, {'height' : 200}); }, registerCreateDocumentModalEvents : function(container) { container.find('form').vtValidate(); if(container.find('input[name="type"]').val() === 'W') { container.find('.modelContainer').css('width','750px'); //change id of text area to workaround multiple instances of ckeditor on same element this.applyEditor( container.find('#Documents_editView_fieldName_notecontent') .attr('id','Documents_editView_fieldName_notecontent_popup') ); } this.registerCreateDocumentEvent(container); }, createDocument : function(type,parentId,relatedModule) { var self = this; var url = 'index.php?module=Documents&view=QuickCreateAjax&operation=CreateDocument&type='+type; if(typeof parentId !== 'undefined' && typeof relatedModule !== 'undefined') { url += '&relationOperation=true&sourceModule='+relatedModule+'&sourceRecord='+parentId; } var relationField = jQuery('div.related-tabs').find('li').filter('.active').data('relatedfield'); if (relationField && parentId) { url += '&'+relationField+"="+parentId; } app.helper.showProgress(); app.request.get({'url':url}).then(function(e,resp) { app.helper.hideProgress(); if(!e) { app.helper.showModal(resp, { 'cb' : function(modalContainer) { self.registerCreateDocumentModalEvents(modalContainer); self.registerQuickCreateEvents(modalContainer); self.applyScrollToModal(modalContainer); } }); } }); }, registerQuickCreateEvents : function(container) { var vtigerInstance = Vtiger_Index_Js.getInstance(); vtigerInstance.registerReferenceCreate(container); vtigerInstance.registerPostReferenceEvent(container); vtigerInstance.referenceModulePopupRegisterEvent(container); vtigerInstance.registerClearReferenceSelectionEvent(container); vtigerInstance.registerAutoCompleteFields(container); app.helper.registerModalDismissWithoutSubmit(container.find('form')); var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName('Documents'); moduleInstance.registerEventForPicklistDependencySetup(container); app.event.on('post.documents.save', function(event, data){ var relatedTabs = jQuery('div.related-tabs'); if(relatedTabs.length > 0){ var tabElement = jQuery('div.related-tabs').find('li.active'); var relatedModuleName = jQuery('.relatedModuleName').val(); var relatedInstance = new Vtiger_RelatedList_Js(app.getRecordId(), app.getModuleName(), tabElement, relatedModuleName); var relatedTab = relatedInstance.selectedRelatedTabElement; relatedInstance.updateRelatedRecordsCount(relatedTab.data('relation-id')); } }); } });
[+]
..
[-] Detail.js
[edit]
[-] List.js
[edit]
[-] Edit.js
[edit]
[-] Documents.js
[edit]