Слияние кода завершено, страница обновится автоматически
<?php
namespace Ichynul\IframeTabs;
use Encore\Admin\Admin;
use Ichynul\IframeTabs\Middleware\ForceLogin;
use Illuminate\Support\Arr;
use Illuminate\Support\ServiceProvider;
class IframeTabsServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
app('router')->aliasMiddleware('iframe.login', ForceLogin::class);
Admin::booted(function () {
if ($this->inWeb()) {
IframeTabs::fixMinify();
}
});
}
protected function inWeb()
{
$c = request('c', '');
return !$this->app->runningInConsole()
&& (!$c || !preg_match('/.*?admin:minify.*?/i', $c)); // if run admin:minify in `admin/helpers/terminal/artisan`
}
/**
* {@inheritdoc}
*/
public function boot(IframeTabs $extension)
{
if (!IframeTabs::boot()) {
return;
}
if ($views = $extension->views()) {
$this->loadViewsFrom($views, 'iframe-tabs');
}
if ($this->app->runningInConsole() && $assets = $extension->assets()) {
$this->publishes(
[$assets => public_path('vendor/laravel-admin-ext/iframe-tabs')],
'iframe-tabs'
);
}
$this->app->booted(function () {
IframeTabs::routes(__DIR__ . '/../routes/web.php');
});
$layer_path = IframeTabs::config('layer_path', 'vendor/laravel-admin-ext/iframe-tabs/layer/layer.js');
if (!file_exists(public_path($layer_path))) {
$layer_path = '';
}
Admin::booting(function () use ($layer_path) {
Admin::js('vendor/laravel-admin-ext/iframe-tabs/bootstrap-tab.js');
if ($layer_path) {
Admin::js($layer_path);
}
});
if ($this->inWeb()) {
Admin::booted(function () use ($layer_path) {
if (IframeTabs::isMinify() && $layer_path) {
Admin::css(preg_replace('/^(.+)layer\.js.*$/i', '$1theme/default/layer.css?v=iframe-tabs', $layer_path));
}
if (\Request::route()->getName() == 'iframes.index') {
//Override view index hide partials.footer
\View::prependNamespace('admin', __DIR__ . '/../resources/views/index');
Admin::css(IframeTabs::config('tabs_css', 'vendor/laravel-admin-ext/iframe-tabs/dashboard.css'));
} else {
$this->initSubPage();
//Override view content hide partials.header and partials.sidebar
\View::prependNamespace('admin', __DIR__ . '/../resources/views/content');
//add scritp 'Back to top' in content
$this->contentScript();
//Override content style ,reset style of '#pjax-container' margin-left:0
Admin::css('vendor/laravel-admin-ext/iframe-tabs/content.css');
}
config(['admin.minify_assets' => false]);
});
}
}
protected function initSubPage()
{
if (!in_array(IframeTabs::config('bind_urls', 'none'), ['new_tab', 'popup'])) {
return;
}
$method = strtolower(request()->method());
$session = request()->session();
if ($method == 'get') {
$_ifraem_id_ = $session->pull('_ifraem_id_', '');
$after_save = $session->pull('after_save', '');
if ($_ifraem_id_ && $session->has('toastr')) {
if ($session->has('toastr')) {
$toastr = $session->get('toastr');
$type = Arr::get($toastr->get('type'), 0, 'success');
$message = Arr::get($toastr->get('message'), 0, '');
if ($type == 'success') {
$session->put('_list_ifraem_id_', $_ifraem_id_);
$session->put('_list_after_save_', $after_save);
$session->put('_success_message_', $message);
}
}
}
} else if ($method == 'put' || $method == 'post') {
$post_ifraem_id_ = request()->input('_ifraem_id_', '');
$post_after_save = request()->input('after-save', '');
if ($post_ifraem_id_) {
$session->put('_ifraem_id_', $post_ifraem_id_);
} else {
$session->forget('_ifraem_id_');
}
if ($post_after_save) {
$session->put('after_save', $post_after_save);
} else {
$session->forget('after_save');
}
}
}
protected function contentScript()
{
$session = request()->session();
$_ifraem_id_ = request()->input('_ifraem_id_', '');
$_list_ifraem_id_ = $session->pull('_list_ifraem_id_', '');
$_success_message_ = $session->pull('_success_message_', 'success');
$_list_after_save_ = $session->pull('_list_after_save_', '');
IframeTabs::config('layer_path');
$script = <<<EOT
var _ifraem_id_ = '{$_ifraem_id_}';
var _list_ifraem_id_ = '{$_list_ifraem_id_}';
var _list_after_save_ = '{$_list_after_save_}';
if (_list_ifraem_id_ && !_list_after_save_)
{
var iframes = top.document.getElementsByTagName("iframe");
for(var i in iframes)
{
if (iframes[i].id == _list_ifraem_id_)
{
var openner = iframes[i].contentWindow;
openner.$.pjax.reload('#pjax-container');
if (top.bind_urls =='new_tab')
{
var tab_id = getCurrentId();
if(tab_id)
{
top.toastr.success('{$_success_message_}');
top.closeTabByPageId(tab_id.replace(/^iframe_/i, ''));
doStop();
}
}
else if (top.bind_urls =='popup')
{
var index = parent.layer.getFrameIndex(window.name);
if(index)
{
top.toastr.success('{$_success_message_}');
parent.layer.close(index);
doStop();
}
}
break;
}
}
return;
}
$('body').addClass('iframe-content');
if(!$('button#totop'))
{
$('.wrapper').append('<span id="totop" class="fa fa-upload" title="Back to top" style="display:none;"></span>');
$(window).scroll(function() {
if ($(window).scrollTop() > 400) {
$("#totop").fadeIn(300);
} else {
$("#totop").fadeOut(300);
}
});
$("#totop").click(function() {
if ($('html').scrollTop()) {
$('html').animate({
scrollTop: 0
}, 300);
return false;
}
$('body').animate({
scrollTop: 0
}, 300);
return false;
});
}
if($('#terminal-box').size())
{
// fix laravel-admin-extensions/helpers terminal
$(window).load(function(){
$('#terminal-box,.slimScrollDiv').css({
height: $('#pjax-container').height() - 247 +'px'
});
});
}
$('body').on('click', '.breadcrumb li a', function() {
var url = $(this).attr('href');
if (url == top.iframes_index) {
top.addTabs({
id: '_admin_dashboard',
title: top.home_title,
close: false,
url: url,
urlType: 'absolute',
icon: '<i class="fa ' + top.home_icon + '"></i>'
});
return false;
}
});
if ((top.bind_urls =='new_tab' || top.bind_urls =='popup') && $(".box-body table.table").size())
{
$(".box-body table.table tbody a.grid-row-view,.box-body table.table tbody a.grid-row-edit,.box-header .pull-right .btn-success").click(function(){
var url = $(this).attr('href');
if (!url || url == '#' || /^javascript|\(|\)/i.test(url)) {
return;
}
if ($(this).attr('target') == '_blank') {
return;
}
if ($(this).hasClass('iframes-pass-url')) {
return;
}
var icon = '<i class="fa fa-file-text"></i>';
if ($(this).find('i.fa').size()) {
icon = $(this).find('i.fa').prop("outerHTML");
}
var title = ($(this).text() || '').trim();
var tab_id = getCurrentId();
if(!tab_id)
{
return true;
}
url += (url.indexOf('?')>-1? '&':'?') + '_ifraem_id_=' + tab_id;
tab_id = tab_id.replace(/^iframe_(.+)$/ ,'$1');
var tab = top.findTabTitle(tab_id);
if (!tab)
{
return true;
}
title = ' ' + tab.text() + (title ? '-' + title : '');
if(top.bind_urls == 'popup')
{
openPop(url, icon + title);
}
else
{
top.openTab(url, title || '*', icon);
}
return false;
});
}
if(_ifraem_id_ && $('form').size())
{
$('form').append('<input type="hidden" name="_ifraem_id_" value="' + _ifraem_id_ + '" />');
}
function getCurrentId()
{
var iframes = top.document.getElementsByTagName("iframe");
for(var i in iframes)
{
if (iframes[i].contentWindow == window)
{
return '' + iframes[i].id;
}
}
return '';
}
function doStop()
{
if(!!(window.attachEvent && !window.opera)){
document.execCommand("stop");
}
else {
window.stop();
}
}
function openPop(url, title) {
layer.open({
content: url,
type: 2,
title: title,
anim: 2,
closeBtn: 1,
shade: false,
area: ['100%', '100%'],
});
}
EOT;
Admin::script($script);
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )