2019-02-19 09:52:13 +00:00
/ *
| -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| SkyCaiji ( 蓝天采集器 )
| -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
2019-06-23 02:20:58 +00:00
| Copyright ( c ) 2018 https : //www.skycaiji.com All rights reserved.
2019-02-19 09:52:13 +00:00
| -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
2019-06-23 02:20:58 +00:00
| 使用协议 https : //www.skycaiji.com/licenses
2019-02-19 09:52:13 +00:00
| -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /
2023-09-27 14:35:43 +00:00
'use strict' ; var admincpOp = { init : function ( ) { var bodyWidth = $ ( document . body ) . width ( ) ; var cpConfig = window . site _config . admincp ; cpConfig = cpConfig ? cpConfig : { } ; if ( cpConfig . skin ) { $ ( 'body' ) . removeClass ( 'skin-blue' ) . addClass ( cpConfig . skin ) }
var menuOpts = { } ; if ( bodyWidth > 767 ) { if ( cpConfig . mini == 1 ) { $ ( 'body' ) . addClass ( 'sidebar-collapse' ) . addClass ( 'sidebar-mini' ) }
if ( cpConfig . narrow == 1 ) { $ ( 'body' ) . addClass ( 'layout-boxed' ) }
menuOpts = { } ; if ( window . navigator . userAgent . indexOf ( 'MSIE' ) > - 1 ) { menuOpts = { animationSpeed : 0 } } } else { menuOpts = { animationSpeed : 0 } }
$ ( '.sidebar-menu' ) . tree ( menuOpts ) ; $ ( document ) . ready ( function ( ) { $ ( '#treeview_skins' ) . bind ( 'click' , function ( ) { if ( $ ( '#sidebar_skins' ) . html ( ) . length <= 0 ) { admincpOp . skins ( ) } } ) ; if ( bodyWidth > 767 ) { if ( cpConfig . mini == 1 ) { $ ( '#chk_sidebar_mini' ) . prop ( 'checked' , 'checked' ) }
$ ( '#chk_sidebar_mini' ) . bind ( 'click' , function ( ) { var setMini = $ ( this ) . is ( ':checked' ) ? 1 : 0 ; admincpOp . config ( 'mini' , setMini , function ( ) { if ( setMini ) { $ ( 'body' ) . addClass ( 'sidebar-collapse' ) . addClass ( 'sidebar-mini' ) } else { $ ( 'body' ) . removeClass ( 'sidebar-collapse' ) . removeClass ( 'sidebar-mini' ) } } ) } ) ; $ ( '.sidebar-toggle[data-toggle="push-menu"]' ) . bind ( 'click' , function ( ) { $ ( 'body' ) . addClass ( 'sidebar-mini' ) } ) ; if ( cpConfig . narrow == 1 ) { $ ( '#chk_sidebar_narrow' ) . prop ( 'checked' , 'checked' ) }
$ ( '#chk_sidebar_narrow' ) . bind ( 'click' , function ( ) { var setNarrow = $ ( this ) . is ( ':checked' ) ? 1 : 0 ; admincpOp . config ( 'narrow' , setNarrow , function ( ) { if ( setNarrow ) { $ ( 'body' ) . addClass ( 'layout-boxed' ) } else { $ ( 'body' ) . removeClass ( 'layout-boxed' ) } } ) } ) } else { $ ( '#chk_sidebar_mini' ) . parents ( 'li' ) . eq ( 0 ) . hide ( ) ; $ ( '#chk_sidebar_narrow' ) . parents ( 'li' ) . eq ( 0 ) . hide ( ) }
if ( $ ( '#menu_backstage_task' ) . length > 0 ) { $ ( '#menu_backstage_task' ) . bind ( 'click' , function ( ) { windowModal ( '采集任务' , ulink ( 'admin/backstage/backstageTask' ) , { lg : 1 } ) } ) ; winBackstageTask . count ( ) } } ) } , config : function ( op , val , successFunc ) { ajaxOpen ( { type : 'post' , url : ulink ( 'backstage/admincp' ) , data : { op : op , val : val } , success : function ( data ) { if ( successFunc && typeof ( successFunc ) == 'function' ) { successFunc ( ) } } } ) } , skins : function ( ) { var skinList = { 'blue' : { 'name' : window . tpl _lang . skin _blue , 'top_l_style' : 'background:#367fa9' , 'top_r_class' : 'bg-light-blue' , 'left_style' : 'background: #222d32' , 'right_style' : 'background: #f4f5f7' } , 'black' : { 'name' : window . tpl _lang . skin _black , 'top_style' : 'box-shadow: 0 0 2px rgba(0,0,0,0.1)' , 'top_l_style' : 'background: #fefefe' , 'top_r_style' : 'background: #fefefe' , 'left_style' : 'background: #222' , 'right_style' : 'background: #f4f5f7' } , 'purple' : { 'name' : window . tpl _lang . skin _purple , 'top_l_class' : 'bg-purple-active' , 'top_r_class' : 'bg-purple' , 'left_style' : 'background: #222d32' , 'right_style' : 'background: #f4f5f7' } , 'green' : { 'name' : window . tpl _lang . skin _green , 'top_l_class' : 'bg-green-active' , 'top_r_class' : 'bg-green' , 'left_style' : 'background: #222d32' , 'right_style' : 'background: #f4f5f7' } , 'red' : { 'name' : window . tpl _lang . skin _red , 'top_l_class' : 'bg-red-active' , 'top_r_class' : 'bg-red' , 'left_style' : 'background: #222d32' , 'right_style' : 'background: #f4f5f7' } , 'yellow' : { 'name' : window . tpl _lang . skin _yellow , 'top_l_class' : 'bg-yellow-active' , 'top_r_class' : 'bg-yellow' , 'left_style' : 'background: #222d32' , 'right_style' : 'background: #f4f5f7' } , 'blue-light' : { 'name' : window . tpl _lang . skin _blue _light , 'top_l_style' : 'background: #367fa9' , 'top_r_class' : 'bg-light-blue' , 'left_style' : 'background: #f9fafc"' , 'right_style' : 'background: #f4f5f7' } , 'black-light' : { 'name' : window . tpl _lang . skin _black _light , 'top_style' : 'box-shadow: 0 0 2px rgba(0,0,0,0.1)' , 'top_l_style' : 'background: #fefefe' , 'top_r_style' : 'background: #fefefe' , 'left_style' : 'background: #f9fafc' , 'right_style' : 'background: #f4f5f7' } , 'purple-light' : { 'name' : window . tpl _lang . skin _purple _light , 'top_l_class' : 'bg-purple-active' , 'top_r_class' : 'bg-purple' , 'left_style' : 'background: #f9fafc' , 'right_style' : 'background: #f4f5f7' } , 'green-light' : { 'name' : window . tpl _lang . skin _green _light , 'top_l_class' : 'bg-green-active' , 'top_r_class' : 'bg-green' , 'left_style' : 'background: #f9fafc' , 'right_style' : 'background: #f4f5f7' } , 'red-light' : { 'name' : window . tpl _lang . skin _red _light , 'top_l_class' : 'bg-red-active' , 'top_r_class' : 'bg-red' , 'left_style' : 'background: #f9fafc' , 'right_style' : 'background: #f4f5f7' } , 'yellow-light' : { 'name' : window . tpl _lang . skin _yellow _light , 'top_l_class' : 'bg-yellow-active' , 'top_r_class' : 'bg-yellow' , 'left_style' : 'background: #f9fafc' , 'right_style' : 'background: #f4f5f7' } , } ; var html = '<ul class="list-unstyled clearfix">' ; for ( var skin in skinList ) { var skinSet = skinList [ skin ] ; html += '<li style="float:left; width: 33.33333%; padding: 5px;">' + '<a href="javascript:void(0)" data-skin="skin-' + skin + '" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div style="' + ( skinSet . top _style ? skinSet . top _style : '' ) + '">' + '<span style="display:block; width: 20%; float: left; height: 7px; ' + ( skinSet . top _l _style ? skinSet . top _l _style : '' ) + '" class="' + ( skinSet . top _l _class ? skinSet . top _l _class : '' ) + '"></span>' + '<span class="' + ( skinSet . top _r _class ? skinSet . top _r _class : '' ) + '" style="display:block; width: 80%; float: left; height: 7px; ' + ( skinSet . top _r _style ? skinSet . top _r _style : '' ) + '"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; ' + ( skinSet . left _style ? skinSet . left _style : '' ) + '"></span><span style="display:block; width: 80%; float: left; height: 20px; ' + ( skinSet . right _style ? skinSet . right _style : '' ) + '"></span>' + '</div>' + '</a>' + '<p class="text-center no-margin">' + skinSet . name + '</p>' ; + '</li>' }
html += '</ul>' ; $ ( '#sidebar_skins' ) . html ( html ) ; $ ( '#sidebar_skins li a[data-skin]' ) . bind ( 'click' , function ( ) { var skin = $ ( this ) . attr ( 'data-skin' ) ; admincpOp . config ( 'skin' , skin , function ( ) { for ( var i in skinList ) { i = 'skin-' + i ; $ ( 'body' ) . removeClass ( i ) }
$ ( 'body' ) . addClass ( skin ) } ) } ) } } ; function insertAtCaret ( myField , myValue ) { myField = $ ( myField ) ; var curObj = myField [ 0 ] ; if ( document . selection ) { myField . focus ( ) ; var sel = document . selection . createRange ( ) ; sel . text = myValue ; sel . select ( ) } else if ( curObj . selectionStart || curObj . selectionStart == '0' ) { var startPos = curObj . selectionStart ; var endPos = curObj . selectionEnd ; var restoreTop = curObj . scrollTop ; var value = myField . val ( ) ; value = value . substring ( 0 , startPos ) + myValue + value . substring ( endPos , value . length ) ; myField . val ( value ) ; myField . focus ( ) ; curObj . selectionStart = startPos + myValue . length ; curObj . selectionEnd = startPos + myValue . length } else { myField . val ( myField . val ( ) + myValue ) ; myField . focus ( ) } }
2021-09-10 03:28:01 +00:00
function urlUsertoken ( ) { return '_usertoken_=' + encodeURIComponent ( window . site _config . usertoken ) }
function openStoreUrl ( url ) { if ( url . indexOf ( 'clientinfo=' ) < 0 && window . site _config . clientinfo ) { url += ( url . indexOf ( '?' ) > - 1 ? '&' : '?' ) + 'clientinfo=' + encodeURIComponent ( window . site _config . clientinfo ) }
window . open ( url , '_blank' ) }
2022-09-09 08:36:08 +00:00
function eleExchange ( box , move , ele ) { if ( ! window . ele _exchange _is _touch ) { window . ele _exchange _is _touch = 1 ; if ( 'ontouchstart' in window || navigator . maxTouchPoints ) { window . ele _exchange _is _touch = 2 } }
if ( window . ele _exchange _is _touch == 2 ) { $ ( box ) . on ( 'click' , move , function ( ) { var obj = $ ( this ) . parents ( ele ) . eq ( 0 ) ; var next = obj . next ( ele ) ; if ( next . length > 0 ) { next . after ( obj ) } } ) } else { $ ( box ) . sortable ( { items : ele , handle : move , axis : 'y' } ) } }
2021-09-10 03:28:01 +00:00
function showPanelCollapse ( id ) { $ ( id ) . parent ( ) . find ( 'a[data-toggle][href="' + id + '"]' ) . attr ( 'aria-expanded' , ! 0 ) . removeClass ( 'collapsed' ) ; $ ( id ) . addClass ( 'in' ) . attr ( 'aria-expanded' , ! 0 ) . attr ( 'style' , '' ) }
2022-12-08 02:47:39 +00:00
function inputSelectCustom ( sltObj , iptName , onOptions , customName , changeFunc ) { customName = customName ? customName : 'custom' ; var onChangeFunc = function ( curObj , iptEle ) { var ipt = $ ( curObj ) . parents ( '.input-select-custom' ) . eq ( 0 ) . find ( iptEle ) ; if ( $ ( curObj ) . val ( ) == customName ) { ipt . show ( ) } else { ipt . hide ( ) }
if ( changeFunc && typeof ( changeFunc ) == 'function' ) { changeFunc ( ) } } ; if ( sltObj && iptName ) { $ ( sltObj ) . bind ( 'change' , function ( ) { onChangeFunc ( this , '[name="' + iptName + '"]' ) } ) } else if ( onOptions && typeof ( onOptions ) == 'object' ) { $ ( onOptions . box ) . on ( 'change' , onOptions . slt , function ( ) { onChangeFunc ( this , onOptions . ipt ) } ) } }
2022-09-09 08:36:08 +00:00
function visualizeData ( data ) { var cacheData = data ; data = isNull ( data ) ? '' : data ; var options = { lg : 1 , hidden _func : function ( ) { window . win _visualize _data = null } } ; if ( dataIsJson ( data ) ) { var jsonId = 'json_' + generateUUID ( ) ; modal ( 'JSON解析' , '<div id="' + jsonId + '"></div>' , options ) ; var jsonTreeFunc = function ( ) { window . tool _json _tree . treeId = '#' + jsonId ; window . tool _json _tree . load ( data ) } ; if ( window . tool _json _tree ) { jsonTreeFunc ( ) } else { $ . getScript ( window . site _config . pub + '/static/js/admin/tool_json_tree.js' , jsonTreeFunc ) } } else { options . loaded _func = function ( ) { data = data . replace ( /<script[^<>]*>[\s\S]*?<\/script>/ig , '' ) ; data = data . replace ( /<meta[^<>]*charset[^<>]*>/i , '' ) ; var ifrId = '#myModalIframe' ; $ ( ifrId ) . bind ( 'load' , function ( ) { if ( $ ( ifrId ) . contents ( ) . find ( 'body' ) . html ( ) . length <= 0 ) { $ ( ifrId ) . contents ( ) . find ( 'body' ) . html ( data ) } } ) ; $ ( ifrId ) . contents ( ) . find ( 'body' ) . html ( data ) } ; var title = 'HTML预览' ; if ( data && data . indexOf ( '<pre>' ) === 0 ) { title = 'HTML代码' }
windowIframe ( title , '' , options ) } ( function ( data ) { if ( data ) { $ ( '#myModal .modal-footer .close' ) . addClass ( 'btn btn-default' ) . removeClass ( 'close' ) ; $ ( '#myModal .modal-footer' ) . prepend ( '<button type="button" class="btn btn-info btn-back" data-dismiss="modal">返回</button>' ) ; $ ( '#myModal .modal-footer .btn-back' ) . bind ( 'click' , function ( ) { visualizeData ( data ) } ) } } ) ( window . win _visualize _data ) ; window . win _visualize _data = cacheData }
2021-09-10 03:28:01 +00:00
function cpEasyBrowser ( url , pageSource , inputUrls ) { pageSource = pageSource ? pageSource : '' ; inputUrls = inputUrls ? inputUrls : { } ; var data = { type : 'browser_url' , page _source : pageSource , test _url : url , input _urls : inputUrls } ; data = JSON . stringify ( data ) ; window . top . postMessage ( data , '*' ) }
function cpBrowserUrl ( collId , pageSource , testUrl , inputedUrls ) { inputedUrls = inputedUrls ? inputedUrls : { } ; var url = 'cpattern_test/browser?coll_id=_collid_&page_source=_source_&test_url=_url_' ; if ( inputedUrls ) { for ( var i in inputedUrls ) { url += '&' + i + '=' + encodeURIComponent ( inputedUrls [ i ] ) } }
url = ulink ( url , { '_collid_' : collId , '_source_' : pageSource , '_url_' : testUrl } ) ; return url }
2023-09-27 14:35:43 +00:00
var pluginFuncOp = { load : function ( params ) { params = params ? params : { } ; var boxObj = $ ( params . boxObj ) ; var funcObj = boxObj . find ( params . funcObj ) ; var paramObj = params . paramObj ? boxObj . find ( params . paramObj ) : null ; var funcVal = params . funcVal ? params . funcVal : '' ; var winCacheName = 'win_cache_plugin_func_' + params . module ; if ( paramObj && paramObj . length > 0 ) { if ( ! funcObj . attr ( 'data-change-pla' ) ) { funcObj . attr ( 'data-change-pla' , 1 ) ; funcObj . bind ( 'change' , function ( ) { var reStrFunc = function ( str ) { if ( str ) { var regLineR = new RegExp ( "\\\\r" , 'g' ) ; var regLineN = new RegExp ( "\\\\n" , 'g' ) ; str = str . replace ( regLineR , "\r" ) . replace ( regLineN , "\n" ) } else { str = '' }
2021-09-10 03:28:01 +00:00
return str } ; paramObj = boxObj . find ( params . paramObj ) ; var placeholder = paramObj . attr ( 'data-placeholder' ) ; placeholder = reStrFunc ( placeholder ) ; if ( $ ( this ) . val ( ) ) { var sltOption = $ ( this ) . find ( 'option:selected' ) ; var funcPrams = sltOption . attr ( 'data-params' ) ; funcPrams = funcPrams ? funcPrams : '' ; var funcComment = sltOption . attr ( 'data-comment' ) ; funcComment = funcComment ? funcComment : '' ; if ( funcPrams || funcComment ) { if ( funcPrams ) { placeholder += "\r\n函数参数: " + reStrFunc ( funcPrams ) }
if ( funcComment ) { placeholder += "\r\n函数注释: " + reStrFunc ( funcComment ) } } }
2023-09-27 14:35:43 +00:00
var rows = 3 ; if ( placeholder ) { var regLine = new RegExp ( "[\\r\\n]+" , 'g' ) ; var matchLine = placeholder . split ( regLine ) ; if ( matchLine && typeof ( matchLine ) == 'object' ) { rows = parseInt ( matchLine . length ) + 1 } }
2021-09-10 03:28:01 +00:00
if ( rows > 8 ) { rows = 8 }
2023-09-27 14:35:43 +00:00
if ( rows < 3 ) { rows = 3 }
2021-09-10 03:28:01 +00:00
paramObj . attr ( 'placeholder' , placeholder ) . attr ( 'rows' , rows ) } ) } }
2023-07-29 10:04:44 +00:00
var setFuncVal = function ( ) { funcObj . val ( funcVal ) . trigger ( 'change' ) } ; if ( funcObj . attr ( 'data-is-loaded' ) ) { setFuncVal ( ) } else { if ( params . cache && window [ winCacheName ] ) { funcObj . attr ( 'data-is-loaded' , 1 ) . append ( window [ winCacheName ] ) ; setFuncVal ( ) } else { var funcUrl = ulink ( 'collector/plugin_func?module=_module_' , { '_module_' : params . module } ) ; ajaxOpen ( { type : 'GET' , dataType : 'json' , url : funcUrl , async : params . cache ? false : ! 0 , success : function ( data ) { if ( funcObj . attr ( 'data-is-loaded' ) ) { setFuncVal ( ) } else { funcObj . attr ( 'data-is-loaded' , 1 ) ; if ( data . code == 1 ) { var html = '' ; var apps = data . data ; if ( apps && typeof ( apps ) == 'object' ) { for ( var app in apps ) { var appData = apps [ app ] ; appData = appData ? appData : { } ; var methods = appData . methods ; if ( methods ) { html += '<optgroup label="' + htmlspecialchars ( appData . name + '( ' + app + ') ' ) + '">' ; for ( var m in methods ) { var mMethod = methods [ m ] ; mMethod = mMethod ? mMethod : { } ; html += '<option value="' + app + ':' + m + '" data-params="' + ( mMethod . params ? mMethod . params : '' ) + '" data-comment="' + ( mMethod . comment ? mMethod . comment : '' ) + '">' + m + ': ' + ( mMethod . comment _cut ? mMethod . comment _cut : '' ) + '</option>' }
2021-09-10 03:28:01 +00:00
html += '</optgroup>' } } }
2023-09-27 14:35:43 +00:00
funcObj . append ( html ) ; if ( params . cache ) { window [ winCacheName ] = html } } } } , error : function ( xhr , status , error ) { funcObj . removeAttr ( 'data-is-loaded' ) ; toastr . error ( '函数插件载入失败:' + status + ' ' + error + ' <a href="' + funcUrl + '" target="_blank" style="color:#ddd;">查看详细</a>' ) } , complete : function ( xhr , status ) { setFuncVal ( ) } } ) } } } , addHtml : function ( params , loadParams ) { if ( ! isObject ( params ) ) { params = { } }
var funcData = isObject ( params . funcData ) ? params . funcData : { } ; var funcName = params . funcName ? params . funcName : '' ; var funcParamName = params . funcParamName ? params . funcParamName : '' ; var tplId = params . tplId ? params . tplId : '' ; tplId = '#' + tplId ; var listId = params . listId ? params . listId : '' ; listId = '#' + listId ; var funcId = params . funcId ? params . funcId : '' ; var html = $ ( tplId ) . html ( ) ; html = $ ( html ) ; var randId = generateUUID ( ) ; funcName = funcName . replace ( '{id}' , randId ) ; funcParamName = funcParamName . replace ( '{id}' , randId ) ; funcId = funcId . replace ( '{id}' , randId ) ; html . find ( '[data-func-a]' ) . attr ( 'href' , '#' + funcId ) . html ( '使用函数' + ( funcData . func ? ( ': ' + funcData . func ) : '' ) ) ; html . find ( '[data-func-panel]' ) . attr ( 'id' , funcId ) ; html . find ( '[data-func-func]' ) . attr ( 'name' , funcName ) ; html . find ( '[data-func-func-param]' ) . attr ( 'name' , funcParamName ) . val ( funcData . func _param ? funcData . func _param : '' ) ; $ ( listId ) . append ( html ) ; if ( ! isObject ( loadParams ) ) { loadParams = { } }
loadParams . funcObj = '[name="' + funcName + '"]' ; loadParams . paramObj = '[name="' + funcParamName + '"]' ; loadParams . funcVal = funcData . func ; pluginFuncOp . load ( loadParams ) } , initHtml : function ( listObj ) { $ ( listObj ) . on ( 'click' , 'a[data-func-insert]' , function ( ) { var val = $ ( this ) . attr ( 'data-func-insert' ) ; if ( val ) { var obj = $ ( this ) . parents ( '[data-func-box]' ) . eq ( 0 ) . find ( 'textarea[data-func-func-param]' ) ; insertAtCaret ( obj , obj . val ( ) ? ( "\r\n" + val ) : val ) } } ) ; $ ( listObj ) . on ( 'click' , 'a[data-func-remove]' , function ( ) { var curObj = $ ( this ) ; confirmRight ( '确定删除?' , function ( ) { curObj . parents ( '[data-func-box]' ) . eq ( 0 ) . remove ( ) } ) } ) ; eleExchange ( listObj , 'a[data-func-move]' , '[data-func-box]' ) } , tips : function ( module ) { var tips = '' ; if ( module == 'process' ) { tips = '<p>如需扩展系统函数,请在根目录/data/config.php中添加配置: </p>' + "<p>'EXTEND_PROCESS_FUNC'=>array('PHP函数名'=>'描述')</p>" + '<p>如需扩展插件函数,可创建<a href="' + ulink ( 'develop/func?module=process' ) + '" target="_blank">函数插件</a></p>' } else if ( module == 'processIf' ) { tips = '<p>选择函数,取反可获取函数结果的相反值</p>' + '<p>默认将当前字段作为参数传入,如需传入多个参数,一行一个值,可输入任何内容或调用字段</p>' + '<p>请按函数传参,否则运行出错!</p>' + '<p>如需扩展系统函数,请在根目录/data/config.php中添加配置: </p>' + "<p>'EXTEND_PROCESS_IF'=>array('PHP函数名'=>'描述')</p>" + '<p>如需扩展插件函数,可创建<a href="' + ulink ( 'develop/func?module=processIf' ) + '" target="_blank">函数插件</a></p>' } else if ( module == 'downloadImg' || module == 'downloadFile' || module == 'contentSign' ) { window . open ( ulink ( 'develop/func?module=' + module ) ) ; return ! 1 }
confirmRight ( { msg : tips , yes : '确定' , width : 500 , textAlign : 'left' } ) } } ; function tipsCurlPost ( ) { var tips = '<p>表单数据: 模拟form表单输入的数据</p><p>表单上传: 模拟form表单输入并上传的数据</p>' + '<p>JSON数组: 以json格式发送数据, 可在“发送数据”的“值”中直接输入json字符串。在“名称”中填入json数组键名, 根节点名称使用###表示,子节点名称使用.分隔, 例如: a.b.c</p>' ; confirmRight ( { msg : tips , yes : '确定' , width : 500 , textAlign : 'left' } ) }
2022-09-09 08:36:08 +00:00
function collectorWindow ( title , uri , uriVals , options ) { options = options ? options : { } ; options . backdrop _static = 1 ; title = isNull ( title ) ? '' : title ; title += '<div class="loading-sm" style="margin-left:5px;"></div>' ; window . win _collector _window _params = { title : title , uri : uri , uriVals : uriVals , options : options } ; windowModal ( title , ulink ( 'admin/collector/echo_msg?op=run' ) , { lg : options . lg } ) }
var collectorEchoMsg = { config : { } , processes : { } , close _non _stop : ! 1 , end _set _timeout : null , run : function ( config ) { collectorEchoMsg . config = isObject ( config ) ? config : { } ; collectorEchoMsg . processes = { } ; collectorEchoMsg . close _non _stop = ! 1 ; var winParams = window . win _collector _window _params ; winParams = isObject ( winParams ) ? winParams : { } ; var uri = winParams . uri ? winParams . uri : '' ; var uriVals = isObject ( winParams . uriVals ) ? winParams . uriVals : { } ; var options = isObject ( winParams . options ) ? winParams . options : { } ; var winProcessBox = $ ( '#myModal #win_cem_process_box' ) . clone ( ) ; if ( uri ) { var title = winParams . title + '<small style="margin-left:10px;">日志读取间隔<input type="number" class="form-control input-sm" style="display:inline;width:40px;height:20px;padding:1px 2px 1px 2px;margin:0px 3px 0px 3px;" id="win_cem_interval" value="' + collectorEchoMsg . get _interval ( ) + '" />秒<button type="button" class="btn btn-default btn-xs" id="win_cem_interval_btn" style="margin-left:3px;">保存</button>' ; var closeFuncs = new Array ( ) ; if ( ! isNull ( options . close _func ) ) { if ( isObject ( options . close _func ) ) { closeFuncs = options . close _func } else { closeFuncs . push ( options . close _func ) } }
closeFuncs . push ( function ( ) { if ( ! collectorEchoMsg . close _non _stop ) { collectorEchoMsg . stop _all ( ) } } ) ; options . close _func = closeFuncs ; windowIframe ( title , '' , options ) ; $ ( '#myModal #myModalIframe' ) . hide ( ) ; $ ( '#myModal #win_cem_interval_btn' ) . bind ( 'click' , function ( ) { collectorEchoMsg . set _interval ( $ ( '#win_cem_interval' ) . val ( ) ) } ) ; var runUrl = ulink ( uri , uriVals ) ; ajaxOpen ( { type : 'get' , url : runUrl , dataType : 'json' , async : ! 0 , success : function ( data ) { if ( data . code == 1 ) { var processes = data . data ? data . data : { } ; var collectorKey = processes . collector _key ? processes . collector _key : '' ; var processKeys = isObject ( processes . process _keys ) ? processes . process _keys : [ ] ; var processNum = processKeys . length ; if ( ! collectorKey || processNum <= 0 ) { return }
$ ( '#myModal .modal-body' ) . append ( winProcessBox ) ; if ( processNum > 1 ) { $ ( '#myModal .modal-body' ) . addClass ( 'win-cem-process-body' ) }
var processNavHtml = '' ; for ( var i = 0 ; i < processNum ; i ++ ) { processNavHtml += '<li><a href="javascript:;" data-collector-process="' + collectorKey + '-' + processKeys [ i ] + '">进程' + processKeys [ i ] + '</a></li>' }
$ ( '#win_cem_process_nav' ) . html ( processNavHtml ) ; $ ( '#win_cem_process_nav [data-collector-process]' ) . bind ( 'click' , function ( ) { collectorEchoMsg . process ( $ ( this ) . attr ( 'data-collector-process' ) ) } ) ; runUrl += ( runUrl . indexOf ( '?' ) > - 1 ? '&' : '?' ) + 'collector_key=' + collectorKey ; $ ( '#myModal #myModalIframe' ) . attr ( 'src' , runUrl ) ; window . setTimeout ( function ( ) { collectorEchoMsg . process ( collectorKey + '-' + processKeys [ 0 ] ) } , 200 ) } else { ajaxDataMsg ( data ) ; $ ( '#myModal' ) . modal ( 'hide' ) } } } ) } } , process : function ( collectorProcess ) { if ( ! collectorProcess ) { return }
if ( ! collectorEchoMsg . processes [ collectorProcess ] ) { collectorEchoMsg . processes [ collectorProcess ] = { } }
$ ( '#win_cem_process_nav li' ) . removeClass ( 'active' ) ; $ ( '#win_cem_process_nav' ) . find ( '[data-collector-process="' + collectorProcess + '"]' ) . parents ( 'li' ) . eq ( 0 ) . addClass ( 'active' ) ; $ ( '#myModal .win-cem-ifr-box' ) . hide ( ) ; var ifrId = 'win_cem_ifr_' + collectorProcess ; var ifr = document . getElementById ( ifrId ) ; if ( ! ifr ) { ifr = document . createElement ( 'iframe' ) ; $ ( ifr ) . attr ( 'id' , ifrId ) ; $ ( ifr ) . attr ( 'frameborder' , '0' ) ; $ ( ifr ) . attr ( 'scrolling' , 'yes' ) ; $ ( ifr ) . bind ( 'load' , function ( ) { collectorEchoMsg . processes [ collectorProcess ] . line = 0 ; collectorEchoMsg . processes [ collectorProcess ] . html = '' ; collectorEchoMsg . read ( collectorProcess ) } ) ; var box = document . createElement ( 'div' ) ; $ ( box ) . addClass ( 'win-cem-ifr-box' ) ; $ ( box ) . append ( ifr ) ; $ ( '#myModal .modal-body' ) . append ( box ) } else { collectorEchoMsg . read ( collectorProcess ) }
$ ( ifr ) . parents ( '.win-cem-ifr-box' ) . eq ( 0 ) . show ( ) } , read : function ( collectorProcess ) { if ( ! collectorProcess ) { return }
if ( ! collectorEchoMsg . processes [ collectorProcess ] ) { return }
var interval = collectorEchoMsg . get _interval ( ) ; var ifrId = 'win_cem_ifr_' + collectorProcess ; if ( collectorEchoMsg . processes [ collectorProcess ] . read _timeout ) { window . clearTimeout ( collectorEchoMsg . processes [ collectorProcess ] . read _timeout ) }
var readFunc = function ( ) { collectorEchoMsg . processes [ collectorProcess ] . read _ajax = ajaxOpen ( { type : 'get' , dataType : 'json' , async : ! 0 , url : ulink ( 'admin/collector/echo_msg?op=read&collector_process=_c_p_&line=_line_' , { '_c_p_' : collectorProcess , '_line_' : collectorEchoMsg . processes [ collectorProcess ] . line } ) , success : function ( data ) { if ( data . code == 1 && data . data ) { var line = toInt ( data . data . line ) ; if ( line > 0 ) { collectorEchoMsg . processes [ collectorProcess ] . line = line ; collectorEchoMsg . ifr _html ( collectorProcess , data . data . html ) ; if ( data . data . js ) { $ ( '#' + ifrId ) . contents ( ) . find ( 'head' ) . append ( data . data . js ) } } } } , complete : function ( ) { collectorEchoMsg . processes [ collectorProcess ] . read _timeout = window . setTimeout ( function ( ) { if ( $ ( '#' + ifrId ) . is ( ':visible' ) ) { if ( ! collectorEchoMsg . processes [ collectorProcess ] . end ) { readFunc ( ) } } } , interval * 1000 ) } } ) } ; readFunc ( ) } , ifr _html : function ( collectorProcess , html ) { var cpHtml = collectorEchoMsg . processes [ collectorProcess ] . html ; cpHtml = cpHtml ? cpHtml : '' ; cpHtml += html ? html : '' ; collectorEchoMsg . processes [ collectorProcess ] . html = cpHtml ; var ifrBody = $ ( '#win_cem_ifr_' + collectorProcess ) . contents ( ) . find ( 'body' ) . get ( 0 ) ; ifrBody . innerHTML = cpHtml } , end : function ( collectorProcess , isTimeout ) { if ( collectorEchoMsg . end _set _timeout ) { window . clearTimeout ( collectorEchoMsg . end _set _timeout ) }
if ( collectorProcess ) { if ( isTimeout ) { var errorHtml = '<div style="color:red;font-weight:bold;margin:5px 0;" id="win_cem_error">运行中断了,请修改' + ( collectorEchoMsg . config . server ? collectorEchoMsg . config . server : 'web' ) + '服务器的超时时间或将采集运行模式设置为<a href="' + ulink ( 'admin/setting/caiji' ) + '" target="_blank">cli命令行</a></div>' ; collectorEchoMsg . ifr _html ( collectorProcess , errorHtml ) }
var endAll = ! 1 ; var statusFunc = function ( ) { var interval = collectorEchoMsg . get _interval ( ) ; ajaxOpen ( { type : 'get' , dataType : 'json' , async : ! 0 , url : ulink ( 'admin/collector/echo_msg?op=status&collector_process=_cpkey_' , { '_cpkey_' : collectorProcess } ) , success : function ( data ) { if ( data . code == 1 ) { var statusList = data . data ; if ( isObject ( statusList ) ) { var pStatus = isObject ( statusList . processes ) ? statusList . processes : { } ; $ ( '#win_cem_process_nav' ) . find ( '[data-collector-process]' ) . each ( function ( ) { var cpkey = $ ( this ) . attr ( 'data-collector-process' ) ; var pkey = cpkey ? cpkey . split ( '-' ) : [ ] ; pkey = pkey [ 1 ] ? pkey [ 1 ] : '' ; if ( pkey && ! pStatus [ pkey ] ) { collectorEchoMsg . stop _process ( cpkey ) ; $ ( this ) . css ( 'color' , 'green' ) } } ) ; if ( ! statusList . main ) { endAll = ! 0 ; $ ( '#myModal .modal-title' ) . find ( '.loading-sm' ) . remove ( ) } } } } , complete : function ( ) { collectorEchoMsg . end _set _timeout = window . setTimeout ( function ( ) { var curKey = $ ( '#win_cem_process_nav li.active' ) . find ( '[data-collector-process]' ) . attr ( 'data-collector-process' ) ; if ( collectorProcess == curKey ) { if ( collectorEchoMsg . processes [ collectorProcess ] . end ) { if ( ! endAll ) { statusFunc ( ) } } } } , interval * 1000 ) } } ) } ; statusFunc ( ) } } , set _interval : function ( num ) { ajaxOpen ( { type : 'get' , dataType : 'json' , async : ! 0 , url : ulink ( 'admin/collector/echo_msg?op=set_interval&interval=_num_' , { '_num_' : num } ) , success : function ( data ) { ajaxDataMsg ( data ) } } ) } , get _interval : function ( ) { var interval = toInt ( collectorEchoMsg . config . interval ) ; interval = interval <= 0 ? 2 : interval ; return interval } , stop _all : function ( ) { var processes = collectorEchoMsg . processes ; var cpKey = '' ; if ( processes ) { for ( var key in processes ) { cpKey = key ; collectorEchoMsg . stop _process ( key ) } }
if ( collectorEchoMsg . end _set _timeout ) { window . clearTimeout ( collectorEchoMsg . end _set _timeout ) }
ajaxOpen ( { type : 'get' , url : ulink ( 'admin/collector/echo_msg?op=stop&collector_process=_cpkey_' , { '_cpkey_' : cpKey } ) , dataType : 'json' , async : ! 0 , success : function ( data ) { } } ) } , stop _process : function ( collectorProcess ) { if ( isObject ( collectorEchoMsg . processes [ collectorProcess ] ) ) { collectorEchoMsg . processes [ collectorProcess ] . end = 1 ; if ( collectorEchoMsg . processes [ collectorProcess ] . read _ajax ) { collectorEchoMsg . processes [ collectorProcess ] . read _ajax . abort ( ) }
2023-09-27 14:35:43 +00:00
if ( collectorEchoMsg . processes [ collectorProcess ] . read _timeout ) { window . clearTimeout ( collectorEchoMsg . processes [ collectorProcess ] . read _timeout ) } } } , echo _url _msg : function ( data ) { var fid = 'ifr_collectorEchoMsg_show_url_data' ; if ( ! document . getElementById ( fid ) ) { $ ( 'body' ) . append ( '<form id="' + fid + '" action="' + ulink ( 'collector/echo_url_msg' ) + '" method="post" target="_echo_url_msg" style="display:none;"><input type="text" name="_usertoken_" value="' + window . site _config . usertoken + '" /><textarea name="data"></textarea></form>' ) }
if ( ! isObject ( data ) ) { data = { } }
data = JSON . stringify ( data ) ; $ ( '#' + fid ) . find ( '[name="data"]' ) . val ( data ) ; $ ( '#' + fid ) . submit ( ) } , } ; var winBackstageTask = { count : function ( delay ) { delay = toInt ( delay ) ; var countFunc = function ( ) { ajaxOpen ( { type : 'get' , dataType : 'json' , async : ! 0 , url : ulink ( 'admin/backstage/backstageTask?op=count' ) , success : function ( data ) { if ( data . code == 1 && data . data ) { var count = toInt ( data . data . count ) ; count = count > 0 ? count : '' ; $ ( '#menu_backstage_task .label' ) . text ( count ) } else { $ ( '#menu_backstage_task .label' ) . text ( '' ) } } } ) } ; if ( delay > 0 ) { window . setTimeout ( countFunc , delay ) } else { countFunc ( ) } } , collected _set _timeout : null , init : function ( ) { $ ( '#win_backstage_task a[href^="#win_bk_tasks_nav_"]' ) . bind ( 'click' , function ( ) { var curTaskType = $ ( $ ( this ) . attr ( 'href' ) ) . attr ( 'data-task-type' ) ; winBackstageTask . tasks ( curTaskType ) } ) ; $ ( '#win_backstage_task a[href="#win_bk_tasks_nav_0"]' ) . trigger ( 'click' ) ; $ ( '#myModal' ) . on ( 'hidden.bs.modal' , function ( e ) { winBackstageTask . count ( ) } ) } , tasks : function ( taskType , url ) { $ ( '#win_bk_tasks_nav_' + taskType ) . html ( '<div class="loading-sm"></div>' ) ; ajaxOpen ( { type : 'get' , dataType : 'json' , async : ! 0 , url : ( url ? url : ulink ( 'admin/backstage/backstageTask?op=tasks' + taskType ) ) , success : function ( data ) { if ( data . code == 1 && data . data ) { var count0 = toInt ( data . data . count0 ) ; var count1 = toInt ( data . data . count1 ) ; $ ( '#win_backstage_task' ) . find ( 'a[href="#win_bk_tasks_nav_0"]' ) . find ( 'span' ) . text ( count0 ) ; $ ( '#win_backstage_task' ) . find ( 'a[href="#win_bk_tasks_nav_1"]' ) . find ( 'span' ) . text ( count1 ) ; $ ( '#win_backstage_task' ) . find ( 'a[href="#win_bk_tasks_nav_' + taskType + '"]' ) . tab ( 'show' ) ; $ ( '#win_bk_tasks_nav_' + taskType ) . html ( data . data . html ) } else { $ ( '#win_bk_tasks_nav_' + taskType ) . html ( '无任务' ) }
2022-09-09 08:36:08 +00:00
winBackstageTask . count ( ) ; winBackstageTask . status ( ) } } ) } , init _tasks : function ( taskType ) { taskType = toInt ( taskType ) ; $ ( '#win_bk_tasks_box_' + ( taskType == 0 ? 1 : 0 ) ) . html ( '' ) ; $ ( '[id^="win_bk_tasks_box_"] a[data-parent^="#win_bk_tasks_box_"]' ) . bind ( 'click' , function ( ) { var curTaskId = $ ( $ ( this ) . attr ( 'href' ) ) . attr ( 'data-task-id' ) ; var curTaskType = $ ( this ) . parents ( '[id^="win_bk_tasks_nav_"]' ) . eq ( 0 ) . attr ( 'data-task-type' ) ; winBackstageTask . collected ( curTaskId , curTaskType ) } ) ; $ ( '[id^="win_bk_tasks_box_"] .fa-remove' ) . bind ( 'click' , function ( ) { var obj = $ ( this ) ; var curTaskId = $ ( this ) . attr ( 'data-task-id' ) ; ajaxOpen ( { type : 'get' , dataType : 'json' , async : ! 0 , url : ulink ( 'admin/task/bkdelete?id=' + curTaskId ) , success : function ( data ) { obj . parents ( '.panel' ) . remove ( ) ; var spanObj = $ ( '#win_backstage_task' ) . find ( 'a[href="#win_bk_tasks_nav_' + taskType + '"]' ) . find ( 'span' ) ; var spanCount = spanObj . text ( ) ; spanCount = spanCount ? parseInt ( spanCount ) : 0 ; spanCount = spanCount > 0 ? ( spanCount - 1 ) : 0 ; spanObj . text ( spanCount ) } } ) } ) ; $ ( '#win_bk_tasks_box_' + taskType + ' .pagination' ) . addClass ( 'pagination-sm' ) ; $ ( '#win_bk_tasks_box_' + taskType + ' .pagination a' ) . bind ( 'click' , function ( ) { var curTaskType = $ ( this ) . parents ( '[id^="win_bk_tasks_nav_"]' ) . eq ( 0 ) . attr ( 'data-task-type' ) ; winBackstageTask . tasks ( curTaskType , $ ( this ) . attr ( 'href' ) ) ; return ! 1 } ) } , collected : function ( taskId , taskType , url ) { if ( ! url ) { url = ulink ( 'admin/backstage/backstageTask?op=collected&tid=' + taskId ) }
ajaxOpen ( { type : 'get' , dataType : 'html' , async : ! 0 , url : url , success : function ( data ) { $ ( '#win_bk_collected_' + taskId ) . html ( data ) } , complete : function ( ) { if ( ! isNull ( taskType ) && 0 == toInt ( taskType ) ) { winBackstageTask . collected _set _timeout = window . setTimeout ( function ( ) { var isEnd = $ ( '#win_bk_tasks_box_0' ) . find ( 'a[href="#win_bk_collected_' + taskId + '"]' ) . attr ( 'data-is-end' ) ; var isVisible = $ ( '#win_bk_tasks_box_0 #win_bk_collected_' + taskId ) . is ( ':visible' ) ; if ( ! isEnd && isVisible ) { winBackstageTask . collected ( taskId , taskType , url ) } else { window . clearTimeout ( winBackstageTask . collected _set _timeout ) } } , 3000 ) } } } ) } , init _collected : function ( taskStatus , taskId ) { $ ( '[id^="win_bk_collected_"] .pagination' ) . addClass ( 'pagination-sm' ) ; $ ( '[id^="win_bk_collected_"] .pagination a' ) . bind ( 'click' , function ( ) { var curTaskId = $ ( this ) . parents ( '[id^="win_bk_collected_"]' ) . eq ( 0 ) . attr ( 'data-task-id' ) ; var curTaskType = $ ( this ) . parents ( '[id^="win_bk_tasks_nav_"]' ) . eq ( 0 ) . attr ( 'data-task-type' ) ; winBackstageTask . collected ( curTaskId , curTaskType , $ ( this ) . attr ( 'href' ) ) ; return ! 1 } ) ; if ( taskStatus && taskId ) { winBackstageTask . set _task _end ( taskId , taskStatus ) ; winBackstageTask . count ( ) ; winBackstageTask . status ( ) } } , set _task _end : function ( taskId , status ) { if ( taskId && status ) { $ ( '#win_bk_tasks_box_0' ) . find ( 'a[href="#win_bk_collected_' + taskId + '"]' ) . attr ( 'data-is-end' , '1' ) . find ( '.is_loading' ) . html ( '<small>' + status + '</small>' ) } } , status _set _timeout : null , status : function ( isLoop ) { if ( ! isLoop ) { window . clearTimeout ( winBackstageTask . status _set _timeout ) }
var taskIds = [ ] ; $ ( '#win_bk_tasks_box_0' ) . find ( '[id^="win_bk_collected_"]' ) . each ( function ( ) { var taskId = $ ( this ) . attr ( 'data-task-id' ) ; taskIds . push ( taskId ) } ) ; if ( taskIds . length > 0 ) { ajaxOpen ( { type : 'post' , dataType : 'json' , async : ! 0 , data : { tids : taskIds } , url : ulink ( 'admin/backstage/backstageTask?op=status' ) , success : function ( data ) { var statusList = data . data ; if ( isObject ( statusList ) ) { for ( var tid in statusList ) { if ( statusList [ tid ] ) { winBackstageTask . set _task _end ( tid , statusList [ tid ] ) } } }
2022-12-08 02:47:39 +00:00
var isVisible = $ ( '#win_bk_tasks_box_0' ) . is ( ':visible' ) ; var isEnd = ! 0 ; $ ( '#win_bk_tasks_box_0' ) . find ( 'a[href^="#win_bk_collected_"]' ) . each ( function ( ) { if ( ! $ ( this ) . attr ( 'data-is-end' ) ) { isEnd = ! 1 ; return ! 1 } } ) ; if ( ! isEnd && isVisible ) { winBackstageTask . status _set _timeout = window . setTimeout ( function ( ) { winBackstageTask . status ( ! 0 ) } , 3000 ) } else { window . clearTimeout ( winBackstageTask . status _set _timeout ) } } } ) } } } ; function ajax _check _userpwd ( ajaxSet ) { var oldSuccess = ajaxSet . success ; ajaxSet . success = function ( data ) { if ( data . data && data . data . _check _pwd _ ) { if ( data . msg ) { toastr . error ( data . msg ) }
2023-09-27 14:35:43 +00:00
var msg = '<div style="text-align:left;"><div style="margin-bottom:8px;">该操作需要验证您的登录密码</div>' + '<input class="form-control" type="password" id="confirm_ipt_check_pwd" placeholder="登录密码" />' + '<div class="checkbox" style="margin-bottom:0;"><label><input type="checkbox" value="1" id="confirm_ipt_check_skip" checked="checked" /> 1小时内不再验证</label></div></div>' ; confirmRight ( { closeAfterFunc : ! 0 , yes : '确定' , no : '取消' , msg : msg } , function ( ) { var ajaxSetData = isNull ( ajaxSet . data ) ? { } : ajaxSet . data ; var checkPwd = $ ( '#confirm_ipt_check_pwd' ) . val ( ) ; var checkSkip = $ ( '#confirm_ipt_check_skip' ) . is ( ':checked' ) ? 1 : '' ; if ( typeof ( ajaxSetData ) == 'object' ) { ajaxSetData . _check _pwd _ = checkPwd ; ajaxSetData . _check _skip _ = checkSkip } else { ajaxSetData = ajaxSetData ? ( ajaxSetData + '&' ) : '' ; ajaxSetData += '_check_pwd_=' + encodeURIComponent ( checkPwd ) ; ajaxSetData += '&_check_skip_=' + encodeURIComponent ( checkSkip ) }
2022-12-08 02:47:39 +00:00
ajaxSet . data = ajaxSetData ; ajaxSet . success = oldSuccess ; ajax _check _userpwd ( ajaxSet ) } ) ; $ ( 'body' ) . on ( 'keyup' , '#confirm_ipt_check_pwd' , function ( event ) { if ( event . keyCode == "13" ) { $ ( '#confirm_right .cr-btn-yes' ) . trigger ( "click" ) } } ) } else { if ( oldSuccess && typeof ( oldSuccess ) == 'function' ) { oldSuccess ( data ) } } } ; ajaxOpen ( ajaxSet ) }
2023-07-29 10:04:44 +00:00
function editorCodeIfr ( ifrEle , options ) { options = isObject ( options ) ? options : { } ; if ( options . set _value != null && typeof ( options . set _value ) != 'undefined' ) { $ ( document ) . ready ( function ( ) { $ ( ifrEle ) . attr ( 'src' , '' ) ; $ ( ifrEle ) . attr ( 'src' , ulink ( 'develop/editor_code' ) ) ; $ ( ifrEle ) . off ( 'load' ) . bind ( 'load' , function ( ) { if ( options . set _value && $ ( ifrEle ) [ 0 ] . contentWindow . editor _code _op ) { $ ( ifrEle ) [ 0 ] . contentWindow . editor _code _op . set ( options . set _value ) } } ) } ) } else if ( options . get _value ) { var ifrEle = $ ( ifrEle ) [ 0 ] ; var val = '' ; if ( ifrEle && ifrEle . contentWindow . editor _code _op ) { val = ifrEle . contentWindow . editor _code _op . get ( ) }
return val } }
var ruleInsertSign = { match : function ( toObj , options ) { if ( ! options ) { options = { } }
var sign = window . tpl _lang . sign _match ; var group = '(?<nr{:id}>[\\s\\S]*?)' ; if ( options . only ) { sign = sign . replace ( '{:id}' , '' ) ; var curVal = $ ( toObj ) . val ( ) ; if ( curVal . indexOf ( sign ) < 0 && curVal . indexOf ( '(?<nr>' ) < 0 && curVal . indexOf ( '(?<content>' ) < 0 ) { if ( options . group ) { sign = group . replace ( '{:id}' , '' ) }
insertAtCaret ( $ ( toObj ) , sign ) } else { toastr . error ( '存在' + sign + '或捕获组' ) } } else { var regSign = new RegExp ( sign . replace ( '{:id}' , '(\\w*)' ) . replace ( '[' , '\\[' ) . replace ( ']' , '\\]' ) , 'g' ) ; var regZimu = new RegExp ( "^([a-zA-Z]+)(\\d+)$" , 'i' ) ; var regP = new RegExp ( "\\(\\?<(?:content|nr)(\\w*)>" , 'g' ) ; var list = null ; var max = 0 ; var zm = '' ; while ( ( list = regSign . exec ( $ ( toObj ) . val ( ) ) ) != null ) { var num = 0 ; if ( options . zimu ) { var zimu = regZimu . exec ( list [ 1 ] ) ; if ( zimu ) { zm = zimu [ 1 ] ; num = parseInt ( zimu [ 2 ] ) } } else { num = parseInt ( list [ 1 ] ) }
if ( num > max ) { max = num } }
list = null ; while ( ( list = regP . exec ( $ ( toObj ) . val ( ) ) ) != null ) { var num = 0 ; if ( options . zimu ) { var zimu = regZimu . exec ( list [ 1 ] ) ; if ( zimu ) { zm = zimu [ 1 ] ; num = parseInt ( zimu [ 2 ] ) } } else { num = parseInt ( list [ 1 ] ) }
if ( num > max ) { max = num } }
if ( options . group ) { sign = group }
var signId = '' ; if ( options . zimu ) { if ( ! zm ) { var ranNum = Math . ceil ( Math . random ( ) * 25 ) ; zm = String . fromCharCode ( ( 'A' ) . charCodeAt ( 0 ) + ranNum ) ; ranNum = Math . ceil ( Math . random ( ) * 25 ) ; zm += String . fromCharCode ( ( 'a' ) . charCodeAt ( 0 ) + ranNum ) }
signId = zm + ( max + 1 ) } else { signId = max + 1 }
2023-09-27 14:35:43 +00:00
sign = sign . replace ( '{:id}' , signId ) ; insertAtCaret ( $ ( toObj ) , sign ) } } , matchN : function ( fromObj , toObj , options ) { if ( ! options ) { options = { } }
2023-07-29 10:04:44 +00:00
var sign = window . tpl _lang . sign _match ; var rule = '' ; if ( fromObj ) { rule = $ ( fromObj ) . val ( ) } else if ( options . rule ) { rule = options . rule }
var reP = new RegExp ( "\\(\\?<(?:content|nr)(\\w*)>.*?\\)" , 'g' ) ; rule = rule . replace ( reP , sign . replace ( '{:id}' , "$1" ) ) ; var regSign = new RegExp ( sign . replace ( '{:id}' , '(\\w*)' ) . replace ( '[' , '\\[' ) . replace ( ']' , '\\]' ) , 'g' ) ; var list = null ; var hasSign = ! 1 ; var returnList = new Array ( ) ; while ( ( list = regSign . exec ( rule ) ) != null ) { hasSign = ! 0 ; var each = list [ 0 ] ; if ( ! toObj ) { returnList . push ( each ) } else if ( $ ( toObj ) . is ( 'select' ) ) { if ( $ ( toObj ) . find ( 'option[value="' + each + '"]' ) . length <= 0 ) { $ ( toObj ) . append ( '<option value="' + each + '">' + each + '</option>' ) } } else { if ( $ ( toObj ) . val ( ) . indexOf ( each ) < 0 ) { insertAtCaret ( $ ( toObj ) , each ) } } }
if ( ! hasSign ) { if ( options . def ) { sign = sign . replace ( '{:id}' , '' ) ; if ( ! toObj ) { returnList . push ( sign ) } else if ( $ ( toObj ) . is ( 'select' ) ) { if ( $ ( toObj ) . find ( 'option[value="' + sign + '"]' ) . length <= 0 ) { $ ( toObj ) . append ( '<option value="' + sign + '">' + sign + '</option>' ) } } else { if ( $ ( toObj ) . val ( ) . indexOf ( sign ) < 0 ) { insertAtCaret ( $ ( toObj ) , sign ) } } } }
if ( ! toObj ) { return returnList } } , wildcard : function ( toObj , options ) { if ( ! options ) { options = { } }
2023-09-27 14:35:43 +00:00
var wildcard = window . tpl _lang . sign _wildcard ; if ( options . only ) { if ( $ ( toObj ) . val ( ) . indexOf ( wildcard ) < 0 ) { insertAtCaret ( $ ( toObj ) , wildcard ) } } else { insertAtCaret ( $ ( toObj ) , wildcard ) } } , tips : function ( isPage , isPn ) { var tips = '<p>1、规则中的特殊字符: <b>^$.*+|?[]{}()</b> 必须加上“\\”才能转义为字符,否则会识别为正则符号</p><p>2、[内容]标签的标识可由数字、字母及下划线组成</p>' ; if ( isPage ) { if ( isPn ) { tips += '<p>3、分页[内容]标签不可全局调用,只能在当前分页中调用</p>' } else { tips += '<p>3、页面级别: 多级页 > 多级页子页 > 内容页 > 关联页 > 关联页子页</p>' ; tips += '<p>4、[内容]标签可全局调用,但只能调用比自己级别高的页面中的标签,即内容页可调用多级页中的标签而不能调用关联页中的标签</p>' ; tips += '<p>5、同一页面中有相同标识的[内容]标签时,后面的标签会覆盖前面的同名标签。不同页面中有相同标识的[内容]标签时,低级别页面会覆盖高级别页面中的同名标签</p>' } }
2023-07-29 10:04:44 +00:00
confirmRight ( { msg : tips , yes : '确定' , width : 500 , textAlign : 'left' } ) } }