bnbwebexpertise/laravel-elfinder

一个用于集成由原barryvdh/laravel-elfinder分支而来的elFinder 2的Laravel包

v0.3.9 2016-10-17 07:38 UTC

This package is auto-updated.

Last update: 2024-09-11 17:40:28 UTC


README

分支版本

Packagist License

该包通过Composer(+自动加载)和发布命令提供对elFinder 2.1的集成,使得PHP文件可用,并通过一个单独的构建仓库更新文件。它还提供了一些独立、tinymce和ckeditor的示例视图。

注意:使用php artisan elfinder:publish代替旧的发布命令,以适应未来的更改!

安装

使用Composer安装此包

composer require bnbwebexpertise/laravel-elfinder

将 ServiceProvider 添加到 app/config/app.php 中的 providers 数组

'Barryvdh\Elfinder\ElfinderServiceProvider'

您需要使用以下 artisan 命令将资产复制到 public 文件夹

php artisan elfinder:publish

记得在每次更新后发布资产(或将命令添加到 composer.json 中的 post-update-cmd)

路由已添加到 ElfinderServiceProvider。您可以在配置中设置路由的分组参数。您可以更改前缀或路由的过滤器/中间件。如果您想要完全自定义,可以扩展 ServiceProvider 并重写 map() 函数。

配置

默认配置需要在 public 文件夹中创建一个名为 'files' 的目录。您可以通过发布配置文件来更改此设置。

php artisan vendor:publish --provider='Barryvdh\Elfinder\ElfinderServiceProvider' --tag=config

在您的 config/elfinder.php 中,您可以更改默认文件夹、访问回调或定义自己的根。

视图

您可以通过复制 resources/views 文件夹来覆盖默认视图。您也可以使用 vendor:publish 命令来做这件事

php artisan vendor:publish --provider='Barryvdh\Elfinder\ElfinderServiceProvider' --tag=views

使用文件系统磁盘

Laravel 5 具有使用 Flysystem 适配器作为本地/云磁盘的能力。您可以使用 disks 配置将那些磁盘添加到 elFinder。

此示例添加了 local 磁盘和 my-disk

'disks' => [
    'local',
    'my-disk' => [
        'URL' => url('to/disk'),
        'alias' => 'Local storage',
    ]
],

您可以为提供额外选项(如 URL、别名等)提供一个数组。 查看这里 以获取所有选项。

使用 Glide 进行图像处理

有关 elfinder-flysystem-driverGlide 的使用,请参阅。以下是一个使用自定义 Laravel 磁盘和 Glide 的基本示例

  1. 将磁盘添加到您的 apps config/filesystems disks
'public' => [
    'driver' => 'local',
    'root'   => base_path().'/public',
],

提示:您可以使用 extend 方法来注册自己的驱动程序,如果您想要使用非默认 Flysystem 磁盘

  1. 为您的磁盘创建一个 Glide 服务器,例如在 glide/<path> 路由上,使用缓存路径
	Route::get('glide/{path}', function($path){
		$server = \League\Glide\ServerFactory::create([
		    'source' => app('filesystem')->disk('public')->getDriver(),
		    'cache' => storage_path('glide'),
		]);
		return $server->getImageResponse($path, Input::query());
	})->where('path', '.+');
  1. 将磁盘添加到您的 elfinder 配置
	'disks' => [
	    'public' => [
	        'glideURL' => '/glide',
	    ]
	],
  1. (可选) 将 glideKey 也添加到配置中,并在您的 glide 路由中使用 Glide HttpSignature 验证密钥

现在,您应该在 elFinder 中看到一个根 'public',其中包含您 public 文件夹中的文件,并由 Glide 生成的缩略图。URL 也将指向 Glide 服务器,用于图像。

TinyMCE 4.x

您可以使用以下路由使用 tinyMCE 集成,默认为 /elfinder/tinymce4

route('elfinder.tinymce4');

在 TinyMCE 初始化代码中,添加以下行

file_browser_callback : elFinderBrowser

然后添加以下函数(将 elfinder_url 改为您的系统上的正确路径)

function elFinderBrowser (field_name, url, type, win) {
  tinymce.activeEditor.windowManager.open({
    file: '<?= route('elfinder.tinymce4') ?>',// use an absolute path!
    title: 'elFinder 2.0',
    width: 900,
    height: 450,
    resizable: 'yes'
  }, {
    setUrl: function (url) {
      win.document.getElementById(field_name).value = url;
    }
  });
  return false;
}

TinyMCE 3.x

您可以通过以下路由添加tinyMCE集成(默认:/elfinder/tinymce

route('elfinder.tinymce');

在 TinyMCE 初始化代码中,添加以下行

file_browser_callback : 'elFinderBrowser'

然后添加以下函数(将 elfinder_url 改为您的系统上的正确路径)

function elFinderBrowser (field_name, url, type, win) {
  var elfinder_url = '/elfinder/tinymce';    // use an absolute path!
  tinyMCE.activeEditor.windowManager.open({
    file: elfinder_url,
    title: 'elFinder 2.0',
    width: 900,
    height: 450,
    resizable: 'yes',
    inline: 'yes',    // This parameter only has an effect if you use the inlinepopups plugin!
    popup_css: false, // Disable TinyMCE's default popup CSS
    close_previous: 'no'
  }, {
    window: win,
    input: field_name
  });
  return false;
}

CKeditor 4.x

您可以通过以下路由添加CKeditor集成

'elfinder.ckeditor'

在CKeditor配置文件中

config.filebrowserBrowseUrl = '/elfinder/ckeditor';

独立弹出选择器

要使用elFinder并通过href、按钮或其他元素触发弹出窗口,您需要执行以下操作。

添加对弹出窗口的支持,我们使用了Jacklmoore的jQuery colorbox(不包括在内),但您可以使用任何其他,显然需要相应地调整以下说明。

添加所需的路由

您可以使用以下操作添加弹出窗口

'Barryvdh\Elfinder\ElfinderController@showPopup'

添加所需资源

确保您已按上述说明发布此包的公共资产。然后在您的页面中的 <head> 部分包含所需的colorbox样式(我们建议使用example1样式,但任何样式都行)

<link href="/assets/css/colorbox.css" rel="stylesheet">

Colorbox依赖于jQuery,因此请确保您已在您的页面中包含它,然后在您的jQuery文件包含之后某处添加jQuery Colorbox的脚本,例如...

<script type="text/javascript" src="/assets/js/jquery.colorbox-min.js"></script>

现在,在您的 <body> 标签关闭之前添加对弹出脚本的超链接。还提供了一个未压缩版本,如果您希望修改colorbox配置。只需将其复制到您的资产位置,并根据需要调整/压缩。

<script type="text/javascript" src="/packages/barryvdh/elfinder/js/standalonepopup.min.js"></script>

用法

为了使用查找器填充输入,只需添加您希望填充的输入,确保使用ID(在文件/图像被选中后,将使用此ID更新值)......

<label for="feature_image">Feature Image</label>
<input type="text" id="feature_image" name="feature_image" value=""/>

现在,只需添加您希望用来触发弹出窗口的元素,确保添加类 popup_selector 和包含与您要填充的输入ID匹配的值的 data-inputid 属性,如下所示。

<a href="" class="popup_selector" data-inputid="feature_image">Select Image</a>

页面上可以有任意多的元素,只需确保为每个元素提供唯一的ID,并在选择器上相应地设置data-updateid属性。