/*+*********************************************************************************** * 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_List_Js("Rss_List_Js",{}, { /** * Function get the height of the document * @return height */ getDocumentHeight : function() { return jQuery(document).height(); }, registerRssAddButtonClickEvent : function() { var thisInstance = this; jQuery(document).on('click', '.rssAddButton',function(e) { thisInstance.showRssAddForm(); }) }, /** * Function show rssAddForm model */ showRssAddForm : function() { var thisInstance = this; var progressInstance = jQuery.progressIndicator(); thisInstance.getRssAddFormUi().then(function(data) { var resetPasswordUi = jQuery('.rssAddFormContainer').find('#rssAddFormUi'); if(resetPasswordUi.length > 0){ resetPasswordUi = resetPasswordUi.clone(true,true); progressInstance.hide(); var callBackFunction = function(data) { var params = app.validationEngineOptions; var form = data.find('#rssAddForm'); params.onValidationComplete = function(form, valid){ if(valid) { thisInstance.rssFeedSave(form); } return false; } form.validationEngine(params); } var modalWindowParams = { data : resetPasswordUi, cb : callBackFunction } app.showModalWindow(modalWindowParams); } }); }, /** * Function to get the rss add form * @param url */ getRssAddFormUi : function(url) { var aDeferred = jQuery.Deferred(); var resetPasswordContainer = jQuery('.rssAddFormContainer'); var resetPasswordUi = resetPasswordContainer.find('#rssAddFormUi'); if(resetPasswordUi.length == 0) { var actionParams = { 'module' : app.getModuleName(), 'view' : 'ViewTypes', 'mode' : 'getRssAddForm' }; AppConnector.request(actionParams).then( function(data){ resetPasswordContainer.html(data); aDeferred.resolve(data); }, function(textStatus, errorThrown){ aDeferred.reject(textStatus, errorThrown); } ); } else { aDeferred.resolve(); } return aDeferred.promise(); }, /** * Function to save rss feed * @parm form */ rssFeedSave : function(form) { var thisInstance = this; var data = form.serializeFormData(); var progressIndicatorElement = jQuery.progressIndicator({ 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var params = { 'module': app.getModuleName(), 'action' : 'Save', 'feedurl' : data.feedurl } AppConnector.request(params).then( function(result) { progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }); if(result.result.success){ app.hideModalWindow(); thisInstance.getRssFeeds(result.result.id).then(function() { thisInstance.loadRssWidget().then(function() { var params = { title : app.vtranslate('JS_MESSAGE'), text: app.vtranslate(result.result.message), animation: 'show', type: 'info' }; Vtiger_Helper_Js.showPnotify(params); }); }); } else { var params = { title : app.vtranslate('JS_MESSAGE'), text: app.vtranslate(result.result.message), animation: 'show' }; Vtiger_Helper_Js.showPnotify(params); } } ); }, /** * Function to register click on the rss sidebar link */ registerRssUrlClickEvent : function() { var thisInstance = this; jQuery('.quickWidgetContainer').on('click','.rssLink', function(e) { var element = jQuery(e.currentTarget); var id = element.data('id'); thisInstance.getRssFeeds(id); }); }, /** * Function to get the feeds for specific id * @param id */ getRssFeeds : function(id) { var thisInstance = this; var aDeferred = jQuery.Deferred(); var container = thisInstance.getListViewContainer(); var progressIndicatorElement = jQuery.progressIndicator({ 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var params = { 'module' : app.getModuleName(), 'view' : 'List', 'id' : id } AppConnector.requestPjax(params).then(function(data) { aDeferred.resolve(data); container.find('#listViewContents').html(data); thisInstance.setFeedContainerHeight(container); progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) }); return aDeferred.promise(); }, /** * Function to get the height of the Feed Container * @param container */ setFeedContainerHeight : function(container) { var height = this.getDocumentHeight()/4; container.find('.feedListContainer').height(height); }, /** * Function to register the click of feeds * @param container */ registerFeedClickEvent : function(container) { var thisInstance = this; container.on('click' , '.feedLink', function(e) { var element = jQuery(e.currentTarget); var url = element.data('url'); var frameElement = thisInstance.getFrameElement(url) container.find('.feedFrame').html(frameElement); }); }, /** * Function to get the iframe element * @param url * @retrun frameElement */ getFrameElement : function(url) { var progressIndicatorElement = jQuery.progressIndicator({ 'position' : 'html', 'blockInfo' : { 'enabled' : true } }); var frameElement = jQuery('