- [task#152541] remove the useless code.
This commit is contained in:
@@ -1,91 +0,0 @@
|
||||
window.testConnection = () =>
|
||||
{
|
||||
$('#model-form').find('button[type="submit"]').attr('disabled', 'disabled');
|
||||
$('#test-conn-btn').attr('disabled', 'disabled');
|
||||
$.ajax(
|
||||
{
|
||||
type: 'POST',
|
||||
url: $.createLink('ai', 'modelTestConnection'),
|
||||
data: $('#model-form').find('form').serialize(),
|
||||
dataType: 'json',
|
||||
success: data =>
|
||||
{
|
||||
if(data.result == 'success')
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'success'})
|
||||
}
|
||||
else
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'danger'})
|
||||
}
|
||||
},
|
||||
complete: () =>
|
||||
{
|
||||
$('#model-form').find('button[type="submit"]').removeAttr('disabled');
|
||||
$('#test-conn-btn').removeAttr('disabled');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const handleModelTypeChange = () =>
|
||||
{
|
||||
const modelType = $('select[name="type"]').val();
|
||||
const vendorList = window.vendorListLang[modelType];
|
||||
$('select[name="vendor"]').html('');
|
||||
for(const vendor in vendorList) $('select[name="vendor"]').append('<option value="' + vendor + '">' + vendorList[vendor] + '</option>');
|
||||
$('select[name="vendor"]').trigger('chosen:updated');
|
||||
$('select[name="vendor"]').trigger('change');
|
||||
};
|
||||
|
||||
const handleVendorChange = () =>
|
||||
{
|
||||
const vendor = $('select[name="vendor"]').val();
|
||||
const requiredFields = window.vendorList[vendor]['credentials'];
|
||||
const vendorTip = window.vendorTipsLang[vendor];
|
||||
$('.vendor-tips').html(vendorTip ? vendorTip : '');
|
||||
$('.vendor-row').each((_, el) => {$(el).toggle(requiredFields.includes($(el).find('input').attr('name')));});
|
||||
};
|
||||
|
||||
const handleProxyTypeChange = () =>
|
||||
{
|
||||
$('#proxy-addr-container').toggle($('select[name="proxyType"]').val() != '');
|
||||
};
|
||||
|
||||
$(() =>
|
||||
{
|
||||
handleVendorChange();
|
||||
$('select[name="type"]').on('change', handleModelTypeChange);
|
||||
$('select[name="vendor"]').on('change', handleVendorChange);
|
||||
$('select[name="proxyType"]').on('change', handleProxyTypeChange);
|
||||
$('button[type="submit"]').on('click', e =>
|
||||
{
|
||||
$('button[type="submit"]').attr('disabled', 'disabled');
|
||||
$('#test-conn-btn').attr('disabled', 'disabled');
|
||||
e.preventDefault();
|
||||
|
||||
$.ajax(
|
||||
{
|
||||
type: 'POST',
|
||||
url: $.createLink('ai', 'modelcreate'),
|
||||
data: $('form').serialize(),
|
||||
dataType: 'json',
|
||||
success: data =>
|
||||
{
|
||||
if(data.result == 'success')
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'success'});
|
||||
window.location.href = $.createLink('ai', 'models');
|
||||
}
|
||||
else
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'danger'});
|
||||
}
|
||||
},
|
||||
complete: () =>
|
||||
{
|
||||
$('button[type="submit"]').removeAttr('disabled');
|
||||
$('#test-conn-btn').removeAttr('disabled');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,93 +0,0 @@
|
||||
window.testConnection = () =>
|
||||
{
|
||||
$('#model-form').find('button[type="submit"]').attr('disabled', 'disabled');
|
||||
$('#test-conn-btn').attr('disabled', 'disabled');
|
||||
$.ajax(
|
||||
{
|
||||
type: 'POST',
|
||||
url: $.createLink('ai', 'modelTestConnection'),
|
||||
data: $('.form').serialize(),
|
||||
dataType: 'json',
|
||||
success: data =>
|
||||
{
|
||||
if(data.result == 'success')
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'success'})
|
||||
}
|
||||
else
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'danger'})
|
||||
}
|
||||
},
|
||||
complete: () =>
|
||||
{
|
||||
$('#model-form').find('button[type="submit"]').removeAttr('disabled');
|
||||
$('#test-conn-btn').removeAttr('disabled');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const handleModelTypeChange = (modelType = '') =>
|
||||
{
|
||||
if(!modelType) modelType = $('select[name="type"]').val();
|
||||
const vendorList = window.vendorListLang[modelType];
|
||||
$('select[name="vendor"]').html('');
|
||||
for(const vendor in vendorList) $('select[name="vendor"]').append('<option value="' + vendor + '">' + vendorList[vendor] + '</option>');
|
||||
$('select[name="vendor"]').trigger('chosen:updated');
|
||||
$('select[name="vendor"]').trigger('change');
|
||||
};
|
||||
|
||||
const handleVendorChange = (vendor = '') =>
|
||||
{
|
||||
vendor ? $('select[name="vendor"]').val(vendor) : (vendor = $('select[name="vendor"]').val());
|
||||
const requiredFields = window.vendorList[vendor]['credentials'];
|
||||
const vendorTip = window.vendorTipsLang[vendor];
|
||||
$('.vendor-tips').html(vendorTip ? vendorTip : '');
|
||||
$('.vendor-row').each((_, el) => {$(el).toggle(requiredFields.includes($(el).find('input').attr('name')));});
|
||||
};
|
||||
|
||||
const handleProxyTypeChange = () =>
|
||||
{
|
||||
$('#proxy-addr-container').toggle($('select[name="proxyType"]').val() != '');
|
||||
};
|
||||
|
||||
$(() =>
|
||||
{
|
||||
handleModelTypeChange(window.modelData.type);
|
||||
handleVendorChange(window.modelData.vendor);
|
||||
handleProxyTypeChange();
|
||||
$('select[name="type"]').on('change', handleModelTypeChange);
|
||||
$('select[name="vendor"]').on('change', handleVendorChange);
|
||||
$('select[name="proxyType"]').on('change', handleProxyTypeChange);
|
||||
$('button[type="submit"]').on('click', e =>
|
||||
{
|
||||
$('button[type="submit"]').attr('disabled', 'disabled');
|
||||
$('#test-conn-btn').attr('disabled', 'disabled');
|
||||
e.preventDefault();
|
||||
|
||||
$.ajax(
|
||||
{
|
||||
type: 'POST',
|
||||
url: $.createLink('ai', 'modeledit', "id=" + modelData.id),
|
||||
data: $('.form').serialize(),
|
||||
dataType: 'json',
|
||||
success: data =>
|
||||
{
|
||||
if(data.result == 'success')
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'success'});
|
||||
window.location.href = $.createLink('ai', 'models');
|
||||
}
|
||||
else
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'danger'});
|
||||
}
|
||||
},
|
||||
complete: () =>
|
||||
{
|
||||
$('button[type="submit"]').removeAttr('disabled');
|
||||
$('#test-conn-btn').removeAttr('disabled');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,37 +0,0 @@
|
||||
let renderedDefault = false;
|
||||
let defaultModel = null;
|
||||
window.onRenderCell = (result, {col, row}) =>
|
||||
{
|
||||
if(col.name == 'name' && ((!renderedDefault && row.data.enabled == '1') || (renderedDefault && row.data.id == defaultModel)))
|
||||
{
|
||||
result.push({html: `<span class='label gray-pale rounded-xl cursor-help' title='${langDefaultTip}'>${langDefault}</span>`});
|
||||
renderedDefault = true;
|
||||
defaultModel = row.data.id;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
window.confirmDisable = function(modelID)
|
||||
{
|
||||
zui.Modal.confirm({message: confirmDisableTip, icon: 'icon-exclamation-sign', iconClass: 'warning-pale rounded-full icon-2x'}).then(res =>
|
||||
{
|
||||
if(res) $.ajaxSubmit({url: $.createLink('ai', 'modeldisable', `modelID=${modelID}`)});
|
||||
})
|
||||
};
|
||||
|
||||
$(function()
|
||||
{
|
||||
const container = window.frameElement?.closest('.load-indicator');
|
||||
if(container)
|
||||
{
|
||||
delete container.dataset.loading;
|
||||
container.classList.remove('loading');
|
||||
container.classList.remove('no-delay');
|
||||
}
|
||||
|
||||
/* If user navigated to this page from old page, reload. */
|
||||
if(window.name === 'app-admin-old')
|
||||
{
|
||||
$.apps.reloadApp('admin', $.createLink('ai', 'models'));
|
||||
}
|
||||
});
|
||||
@@ -1,41 +0,0 @@
|
||||
window.confirmDelete = modelID =>
|
||||
{
|
||||
zui.Modal.confirm({message: confirmDeleteTip, icon: 'icon-exclamation-sign', iconClass: 'warning-pale rounded-full icon-2x'}).then(res =>
|
||||
{
|
||||
if(res) $.ajaxSubmit({url: $.createLink('ai', 'modeldelete', `modelID=${modelID}`)});
|
||||
})
|
||||
};
|
||||
|
||||
window.confirmDisable = modelID =>
|
||||
{
|
||||
zui.Modal.confirm({message: confirmDisableTip, icon: 'icon-exclamation-sign', iconClass: 'warning-pale rounded-full icon-2x'}).then(res =>
|
||||
{
|
||||
if(res) $.ajaxSubmit({url: $.createLink('ai', 'modeldisable', `modelID=${modelID}`)});
|
||||
})
|
||||
};
|
||||
|
||||
window.testConnection = modelID =>
|
||||
{
|
||||
$('[href^="javascript:testConnection"]').attr('disabled', 'disabled');
|
||||
$.ajax(
|
||||
{
|
||||
type: 'GET',
|
||||
url: $.createLink('ai', 'modelTestConnection', `modelID=${modelID}`),
|
||||
dataType: 'json',
|
||||
success: data =>
|
||||
{
|
||||
if(data.result == 'success')
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'success'})
|
||||
}
|
||||
else
|
||||
{
|
||||
zui.Messager.show({content: data.message, type: 'danger'})
|
||||
}
|
||||
},
|
||||
complete: () =>
|
||||
{
|
||||
$('[href^="javascript:testConnection"]').removeAttr('disabled');
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -1,117 +0,0 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace zin;
|
||||
|
||||
$defaultModelType = array_key_first($lang->ai->models->typeList);
|
||||
$defaultModelVendor = array_key_first($lang->ai->models->vendorList->{$defaultModelType});
|
||||
$allCredFields = array_unique(array_reduce((array)$config->ai->vendorList, function($carry, $vendor) {return array_merge($carry, array_values((array)$vendor['credentials']));}, array()));
|
||||
|
||||
jsVar('window.vendorList', $config->ai->vendorList);
|
||||
jsVar('window.vendorListLang', $lang->ai->models->vendorList);
|
||||
jsVar('window.vendorTipsLang', $lang->ai->models->vendorTips);
|
||||
|
||||
formPanel
|
||||
(
|
||||
set::title($lang->ai->models->create),
|
||||
set::id('model-form'),
|
||||
set::actions(array('submit', array('text' => $lang->ai->models->testConnection, 'id' => 'test-conn-btn', 'class' => 'btn secondary', 'url' => 'javascript:testConnection()'), 'cancel')),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->name),
|
||||
set::width('1/2'),
|
||||
input
|
||||
(
|
||||
set::name('name'),
|
||||
set('maxlength', 20)
|
||||
)
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->type),
|
||||
set::width('1/2'),
|
||||
set::required(true),
|
||||
select
|
||||
(
|
||||
set::name('type'),
|
||||
set::items($lang->ai->models->typeList),
|
||||
set::value($defaultModelType),
|
||||
set::required(true)
|
||||
)
|
||||
),
|
||||
formRow
|
||||
(
|
||||
formGroup
|
||||
(
|
||||
/* Update vendor group on model type change. */
|
||||
set::label($lang->ai->models->vendor),
|
||||
set::width('1/2'),
|
||||
set::required(true),
|
||||
select
|
||||
(
|
||||
set::name('vendor'),
|
||||
set::items($lang->ai->models->vendorList->{$defaultModelType}),
|
||||
set::required(true)
|
||||
),
|
||||
set::tip(' '),
|
||||
set::tipClass('vendor-tips text-gray')
|
||||
)
|
||||
),
|
||||
array_map( // Vendor credentials rows.
|
||||
function($field) use ($lang)
|
||||
{
|
||||
return formRow
|
||||
(
|
||||
set::className('vendor-row'),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->{$field}),
|
||||
set::required(true),
|
||||
input
|
||||
(
|
||||
set::name($field),
|
||||
set::required(true)
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
$allCredFields
|
||||
),
|
||||
formRow
|
||||
(
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->proxyType),
|
||||
set::width('1/2'),
|
||||
set::required(true),
|
||||
select
|
||||
(
|
||||
set::name('proxyType'),
|
||||
set::items($lang->ai->models->proxyTypes),
|
||||
set::required(true)
|
||||
)
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->proxyAddr),
|
||||
set::width('1/2'),
|
||||
set::required(true),
|
||||
set::style(array('display' => 'none')), // Hide proxy address input by default.
|
||||
set::id('proxy-addr-container'),
|
||||
input
|
||||
(
|
||||
set::name('proxyAddr'),
|
||||
set::required(true)
|
||||
)
|
||||
)
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->description),
|
||||
textarea
|
||||
(
|
||||
set::name('description'),
|
||||
set::rows(3)
|
||||
)
|
||||
)
|
||||
);
|
||||
@@ -1,124 +0,0 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace zin;
|
||||
|
||||
$defaultModelType = array_key_first($lang->ai->models->typeList);
|
||||
$defaultModelVendor = array_key_first($lang->ai->models->vendorList->{$defaultModelType});
|
||||
$allCredFields = array_unique(array_reduce((array)$config->ai->vendorList, function($carry, $vendor) {return array_merge($carry, array_values((array)$vendor['credentials']));}, array()));
|
||||
|
||||
jsVar('window.vendorList', $config->ai->vendorList);
|
||||
jsVar('window.vendorListLang', $lang->ai->models->vendorList);
|
||||
jsVar('window.vendorTipsLang', $lang->ai->models->vendorTips);
|
||||
jsVar('window.modelData', $model);
|
||||
|
||||
formPanel
|
||||
(
|
||||
set::title($lang->ai->models->edit . (empty($model->name) ? '' : " - {$model->name}")),
|
||||
set::id('model-form'),
|
||||
set::actions(array('submit', array('text' => $lang->ai->models->testConnection, 'id' => 'test-conn-btn', 'class' => 'btn secondary', 'url' => 'javascript:testConnection()'), 'cancel')),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->name),
|
||||
set::width('1/2'),
|
||||
input
|
||||
(
|
||||
set::name('name'),
|
||||
set('maxlength', 20),
|
||||
set::value($model->name)
|
||||
)
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->type),
|
||||
set::width('1/2'),
|
||||
set::required(true),
|
||||
select
|
||||
(
|
||||
set::name('type'),
|
||||
set::items($lang->ai->models->typeList),
|
||||
set::value($model->type),
|
||||
set::required(true)
|
||||
)
|
||||
),
|
||||
formRow
|
||||
(
|
||||
formGroup
|
||||
(
|
||||
/* Update vendor group on model type change. */
|
||||
set::label($lang->ai->models->vendor),
|
||||
set::width('1/2'),
|
||||
set::required(true),
|
||||
select
|
||||
(
|
||||
set::name('vendor'),
|
||||
set::items($lang->ai->models->vendorList->{$defaultModelType}),
|
||||
set::value($model->vendor),
|
||||
set::required(true)
|
||||
),
|
||||
set::tip(' '),
|
||||
set::tipClass('vendor-tips text-gray')
|
||||
)
|
||||
),
|
||||
array_map( // Vendor credentials rows.
|
||||
function($field) use ($lang, $model)
|
||||
{
|
||||
return formRow
|
||||
(
|
||||
set::className('vendor-row'),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->{$field}),
|
||||
set::required(true),
|
||||
input
|
||||
(
|
||||
set::name($field),
|
||||
set::value(empty($model->{$field}) ? '' : $model->{$field}),
|
||||
set::required(true)
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
$allCredFields
|
||||
),
|
||||
formRow
|
||||
(
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->proxyType),
|
||||
set::width('1/2'),
|
||||
set::required(true),
|
||||
select
|
||||
(
|
||||
set::name('proxyType'),
|
||||
set::items($lang->ai->models->proxyTypes),
|
||||
set::value(empty($model->proxyType) ? '' : $model->proxyType),
|
||||
set::required(true)
|
||||
)
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->proxyAddr),
|
||||
set::width('1/2'),
|
||||
set::required(true),
|
||||
set::style(array('display' => 'none')), // Hide proxy address input by default.
|
||||
set::id('proxy-addr-container'),
|
||||
input
|
||||
(
|
||||
set::name('proxyAddr'),
|
||||
set::value(empty($model->proxyAddr) ? '' : $model->proxyAddr),
|
||||
set::required(true)
|
||||
)
|
||||
)
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->ai->models->description),
|
||||
textarea
|
||||
(
|
||||
set::name('description'),
|
||||
set::rows(3),
|
||||
set::value($model->desc)
|
||||
)
|
||||
)
|
||||
);
|
||||
@@ -1,62 +0,0 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace zin;
|
||||
|
||||
jsVar('langDefault', $lang->ai->models->default);
|
||||
jsVar('langDefaultTip', $lang->ai->models->defaultTip);
|
||||
jsVar('confirmDisableTip', $lang->ai->models->confirmDisable);
|
||||
|
||||
featureBar();
|
||||
hasPriv('ai', 'modelcreate') && toolbar(
|
||||
item(
|
||||
set(array(
|
||||
'text' => $lang->ai->models->create,
|
||||
'url' => createLink('ai', 'modelcreate'),
|
||||
'data-app' => $app->tab,
|
||||
'icon' => 'plus',
|
||||
'class' => 'btn primary',
|
||||
))
|
||||
)
|
||||
);
|
||||
|
||||
if(empty($models))
|
||||
{
|
||||
panel
|
||||
(
|
||||
center
|
||||
(
|
||||
set::style(array('height' => 'calc(100vh - 145px)')), // 145px is sum of header and footer height.
|
||||
div
|
||||
(
|
||||
span
|
||||
(
|
||||
set::className('p-8 text-gray'),
|
||||
$lang->ai->models->noModels
|
||||
),
|
||||
btn
|
||||
(
|
||||
set::text($lang->ai->models->create),
|
||||
set::icon('plus'),
|
||||
set::className('btn secondary'),
|
||||
set::url(createLink('ai', 'modelcreate')),
|
||||
set('data-app', $app->tab)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$models = initTableData($models, $config->ai->dtable->models, $this->ai);
|
||||
|
||||
dtable
|
||||
(
|
||||
set::cols($config->ai->dtable->models),
|
||||
set::data($models),
|
||||
set::onRenderCell(jsRaw('window.onRenderCell')),
|
||||
set::orderBy($orderBy),
|
||||
set::sortLink(inlink('models', "orderBy={name}_{sortType}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}")),
|
||||
set::footPager(usePager()),
|
||||
);
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace zin;
|
||||
|
||||
jsVar('confirmDeleteTip', $lang->ai->models->confirmDelete);
|
||||
jsVar('confirmDisableTip', $lang->ai->models->confirmDisable);
|
||||
|
||||
detailHeader
|
||||
(
|
||||
backBtn(set::icon('back'), setClass('ghost text-white'), $lang->goback),
|
||||
to::title
|
||||
(
|
||||
entityLabel
|
||||
(
|
||||
set(array('entityID' => $model->id, 'text' => $model->name)),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$actions = $this->loadModel('common')->buildOperateMenu($model);
|
||||
|
||||
detailBody
|
||||
(
|
||||
sectionList
|
||||
(
|
||||
section
|
||||
(
|
||||
set::title($lang->ai->models->details),
|
||||
tableData
|
||||
(
|
||||
item
|
||||
(
|
||||
set::name($lang->ai->models->type),
|
||||
$lang->ai->models->typeList[$model->type]
|
||||
),
|
||||
item
|
||||
(
|
||||
set::name($lang->ai->models->vendor),
|
||||
$lang->ai->models->vendorList->{$model->type}[$model->vendor]
|
||||
),
|
||||
array_map(function($field) use ($model, $lang)
|
||||
{
|
||||
return item
|
||||
(
|
||||
set::name($lang->ai->models->$field),
|
||||
empty($model->$field) ? $lang->ai->models->unconfigured : $model->$field
|
||||
);
|
||||
}, $config->ai->vendorList[$model->vendor]['credentials']),
|
||||
item
|
||||
(
|
||||
set::name($lang->ai->models->proxyType),
|
||||
$lang->ai->models->proxyTypes[empty($model->proxyType) ? '' : $model->proxyType]
|
||||
),
|
||||
!empty($model->proxyType) ? item
|
||||
(
|
||||
set::name($lang->ai->models->proxyAddr),
|
||||
empty($model->proxyAddr) ? $lang->ai->models->unconfigured : $model->proxyAddr
|
||||
) : null,
|
||||
item
|
||||
(
|
||||
set::name($lang->ai->models->description),
|
||||
$model->desc
|
||||
),
|
||||
item
|
||||
(
|
||||
set::name($lang->statusAB),
|
||||
$lang->ai->models->statusList[$model->enabled]
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
floatToolbar
|
||||
(
|
||||
set::object($model),
|
||||
isAjaxRequest('modal') ? null : to::prefix(backBtn(set::back('ai-models'), set::icon('back'), setClass('ghost text-white'), $lang->goback)),
|
||||
set::main($actions['mainActions']),
|
||||
set::suffix($actions['suffixActions'])
|
||||
),
|
||||
);
|
||||
@@ -27,7 +27,6 @@ $config->index->oldPages[] = 'screen-burn';
|
||||
$config->index->oldPages[] = 'screen-viewold';
|
||||
$config->index->oldPages[] = 'screen-staticdataold';
|
||||
$config->index->oldPages[] = 'report-annualdata';
|
||||
$config->index->oldPages[] = 'ai-adminindex';
|
||||
$config->index->oldPages[] = 'ai-chat';
|
||||
$config->index->oldPages[] = 'api-debug';
|
||||
$config->index->oldPages[] = 'datatable-ajaxoldcustom';
|
||||
|
||||
Reference in New Issue
Block a user