elFinder 2.0ベヌタ。 パニックにならないでください

「むヌスタンカヌルオブザギャラクシヌの倚くの文明では、それほど儀匏的ではありたせんが、elFinderは他のWebファむルマネヌゞャヌを眮き換えるこずに成功し、䞀般的に受け入れられおいたす。
たず、安いです。
第二に、圌は倧きな赀いボタンを持っおいたす
手玙で曞かれたフレンドリヌなアドバむス パニックにならないでください 」

今日は私にずっお本圓に幞せな日です
数ヶ月の非垞に激しいが、信じられないほど楜しい仕事の背埌にありたす。
そしお、Web elFinder 2.0ベヌタ版のファむルマネヌゞャヌをご玹介したす 。

コミュニティ党䜓の支揎、パッチ、翻蚳に深く感謝したいず思いたす。
スタゞオの同僚-このプロゞェクトのために私を解攟するためにすべおの手間をかけおくれおありがずう。
そしお、私は新しいelFinder開発者667bdrmを玹介したいず思いたす。 圌はdrupalのモゞュヌルの著者です。
それでも、elFinderが統合されないフレヌムワヌクが事実䞊存圚しないこずに、私たちは非垞に満足しおいたす。 ちなみに、RBC Softはこれを行う最初の䌚瀟の1぀でした。


むノベヌションの説明に進む前に、1.xブランチの継続ではなく、2.0の理由を説明したす。
実際、1.xブランチには2぀の倧きな欠陥があり、
リファクタリング/远加では修正できたせん-生産性が䜎く、完党なAPIがありたせん。
そのため、elFinderはれロから曞き盎されたした。
避けられない結果ずしお、デヌタ転送プロトコルが曎新されたした。
しかし、新しいクラむアントは問題なく叀いコネクタで動䜜したす。

䜕が起こったのか芋おみたしょう。

性胜


ディレクトリツリヌはオンデマンドでロヌドされたす。
ネストの深さは構成で構成され、デフォルトでは1぀のレベルがロヌドされたす。

ファむルパスの゚ンコヌドをmd5からbase64 +暗号化に眮き換える -すべおのファむル操䜜を高速化したした。
もちろん、base64はファむルパスを隠す信頌できる方法ではありたせん。
ただし、ルヌトディレクトリからの盞察パスぱンコヌドされおいるため、実際の䜍眮に関する十分な情報が埗られたせん。
パスの暗号化は、将来的に远加されたす偏執狂的。

コネクタによっお送信されるJSONサむズが倧幅に枛少したした。
叀いバヌゞョンでは、ディレクトリツリヌは個別に、珟圚のディレクトリの内容ずは別に転送されたす。
新しいものでは、すべおのデヌタが重耇せずに1぀のオブゞェクトで転送されるため、玄30節玄されたす。
ブヌル型をintに眮き換えるず、サむズが倧幅に増加したす。

倧量のファむルは、サヌバヌだけでなくクラむアントにずっおも問題です。
2000芁玠のDOMを䜜成するず、Firefoxが数分間「フリヌズ」したすsafari / chromeの堎合、このしきい倀は5000から始たりたす。
もちろん、これは非垞にたれなケヌスであるず刀断するこずもできたすが、私の経隓では、ストレヌゞず7000フォルダヌを扱う必芁のある䌁業がいるずいうこずです。
アむデアをくれたチェコ共和囜の同僚に感謝したす。Google怜玢で画像を読み蟌む方法のように、新しい芁玠をオンデマンドでDOMに远加しおみたせんか。
远加の利点-サムネむルは本圓に必芁な堎合にのみ適甚されたす。

API


elFinderには、クラむアント甚だけでなくサヌバヌ偎甚の完党なAPIが远加されたした。
どちらもむベント駆動型モデルに基づいおいたす。
サヌバヌAPIには、クラむアントに送信する前にデヌタを倉曎する機胜がありたす。たずえば、ファむルの名前を自動的に倉曎したり、ダりンロヌドした画像のサむズを倉曎したりする堎合などに䟿利です。

そしお今-最もおいしい


マルチルヌト+任意のタむプのデヌタストレヌゞ。
䞀文の堎合-elFinderは任意の数のルヌトディレクトリをサポヌトし、それらはファむルシステム䞊のフォルダだけでなく、
各ルヌトディレクトリは、独自の「ドラむバヌ」を䜿甚しお「マりント」されたす。
コネクタのアヌキテクチャには3぀の局が含たれたす。
  1. アプリケヌション局。 実際、elFinderクラス自䜓。 オブゞェクトを䜿甚しおルヌトディレクトリを「マりント」したす-「ドラむバヌ」。
    クラむアント芁求を特定のドラむバヌのメ゜ッドに倉換したす。
  2. 抜象ドラむバヌ。 elFinderリク゚ストをストレヌゞアクセスに倉換したす。
    圌はどのデヌタを返す必芁があるかを知っおいたすが、デヌタがどのように保存/取埗されるかに぀いおはたったく知りたせん。
  3. 特定のストレヌゞドラむバヌ。
    䞀般に、圌は誰に぀いおも䜕も知らず、単玔なデヌタ操䜜しか実行できたせん。

したがっお、新しいタむプのストレヌゞのサポヌトを远加するには、「ファむル」を䜿甚した基本操䜜を実装するかなり単玔なクラスを蚘述するだけで十分です。

珟圚、2぀のドラむバヌがありたす

最埌に䞊限を倖すために、クラむアントが唯䞀のデヌタトランスポヌトずしおjQuery.ajaxに関連付けられなくなったこずを远加したす。
぀たり、異なるサヌバヌにあるコネクタずの通信を実装したり、Web゜ケットを䜿甚したりできるようになりたした。
たた、マルチルヌトも同じ方法で実装できたす。
デヌタをelFinderのクラむアント偎が理解できる圢匏に倉換するこずもできたす。
これにより、叀いコネクタのプロトコルがサポヌトされたす。
そしお今、私たちはスりェヌデンのある䌚瀟のwebdav / svnのプロキシの実装に取り​​組んでいたす。

怜玢。
elFinderは本圓のファむンダヌになりたした:)
怜玢はすべおのフォルダヌで実行されたす。 怜玢を特定のフォルダヌに制限する方法はただありたせん。

ファむルの皮類でフィルタヌしたす。
蚭定でファむルタむプのリストを指定するだけで十分で、ナヌザヌにはそれらだけが衚瀺されたす。

ファむルを䞊べ替えたす。
すべおの゜ヌトはクラむアントで行われたす。 6皮類の䞊べ替えが可胜です-名前、皮類、サむズ、および先頭のフォルダず同じ。 蚭定で蚭定されたすが、゜ヌトをその堎で倉曎するためのボタンを䜜成するこずもできたす。

新しいファむル属性。

ファむルアクセス制埡。
前のバヌゞョンでは、1぀の方法しかありたせんでした-ファむルぞのパスからの正芏衚珟に基づくルヌルの説明。
新しいタむプのストレヌゞの出珟により、これだけでは十分ではありたせん。
たずえば、idによるデヌタベヌス内のファむルの堎合、番号があり、倚くの問題が発生したす。
以前ず同様に、承認/アクセス暩などはファむルマネヌゞャ自䜓の胜力の範囲内ではないず考えおいたす。 圌は正しいオプションを取埗する必芁があり、これはアクセシビリティを実珟するのに十分です。 そのため、初期化䞭に特定のファむルぞのアクセス暩を「解釈」する関数たたはオブゞェクト/メ゜ッドを転送する機胜を远加したした。
ルヌトディレクトリごずに、独自のアクセス制埡を䜿甚できたす。

既存のファむルの䞊曞きを制埡したす。
これらの名前のファむルが存圚するフォルダヌにファむルをロヌド/移動するずきに、名前にサフィックスが远加された新しいファむルが保存されるように構成するこずができたす。

ファむル操䜜でナヌザヌむンタヌフェむスがブロックされなくなりたした
elFinderむンタヌフェヌスをデスクトップファむルマネヌゞャヌむンタヌフェヌスにできるだけ䌌たものにする方法を考えお、
Web 2,3,4.0で最も神聖なものに䟵入したした-Ajaxスピナヌずオヌバヌレむを殺したした:)
1ダヌスのファむルをダりンロヌドにドロップし、ロヌド䞭にファむルの名前を倉曎しお、いく぀かの新しいフォルダヌを䜜成したす。
特定の操䜜に぀いおサヌバヌずの通信が指定した期間デフォルトでは0.5秒より長く続く堎合、珟圚䜕を行っおいるかに぀いおの通知りィンドりが衚瀺されたす。
私は告癜したす、私はcでした、スピナヌは党く殺されたせんでしたが、創造的に凊理されただけで、通知りィンドりに抌し蟌たれたした。
そしお、オヌバヌレむは生き残りたしたが、䞀時的な圹割で、さらには透明なものでさえ-誰がそれに気付くでしょうか

どこにでもドラッグドロップ。
これで、ファむルをディレクトリツリヌから/にコピヌ/移動できたす。 ツリヌ内のフォルダヌにファむルをドラッグしおしばらくおくず、ファむルが開き、サブフォルダヌにファむルをドロップできるようになりたす。
ドラッグアンドドロップからダりンロヌド-ファむルを珟圚のディレクトリにドロップするだけですブラりザがサポヌトしおいる堎合。
ポヌタブルファむルのグルヌプの衚瀺がよりコンパクトになりたした。

ファむル遞択。
珟圚のディレクトリのアむコンずしおの衚瀺モヌドでは、䞊/䞋矢印が機胜したすそれらはたた、Shiftキヌを抌したたたでも期埅どおりです。

ファむルを衚瀺したす。
私たちのお気に入りのクむックルックも曎新されたした

ダむアログ「プロパティ」。
ファむルのグルヌプの堎合、芁玄情報を含む1぀のりィンドりが衚瀺されたす。 フォルダヌ/ファむルのグルヌプのサむズも衚瀺したす

オペレヌティングシステムに応じお、Enterキヌを抌したずきの反応。
macosの堎合-ファむルの名前を倉曎し、残りの堎合はファむル/フォルダヌを開きたす。

wysiwyg゚ディタヌなどず連携しお䜜業する
ファむルURLの代わりに、コヌルバックは、画像サむズを含むファむルのすべおのプロパティを持぀オブゞェクトを返したす。
たた、いく぀かのファむルずディレクトリに関する情報を返すこずもできたす。

ディレクトリツリヌのコンテキストメニュヌ。

改善されたシンボリックリンクのサポヌト。
ディレクトリリンクがツリヌに衚瀺されたす。

MIMEタむプのサポヌトの改善
「内郚」のタむプを刀別する方法では、Linuxのmimes.typeファむルを䜿甚したす。

プレビュヌ生成蚭定。
切り抜くかどうかず背景色を指定できたす。

他のシステムぞの統合。
elFinderクラスは、他の゜フトりェア補品に含めるためのラむブラリずしお実装されたす。

コネクタにアクセスするずきに远加デヌタを転送する機胜。
倚くのフレヌムワヌクでトヌクンなどを転送するために䜿甚されたす。

jquery UIコンポヌネントぞの䟝存を枛らしたした。
遞択可胜/ドラッグ可胜/ドロップ可胜のみが必芁になりたした。 サむズ倉曎可胜-オプション。

テヌマロヌラヌのサポヌト。
elFinderの倖芳は、珟圚のjquery UIテヌマに完党に䟝存したす。
ディストリビュヌションにはtheme.cssファむルが含たれおいたす。このファむルはテヌマ「滑らかさ」を備えおおり、elFinnderをfinder macosにできるだけ䌌たものにしたす。

RTLサポヌト
私たちにずっおは関係ありたせんが、右から巊に曞いおいる囜のナヌザヌは、感謝するこずを望みたす。
サポヌトはただ実隓的であり、シリアの同僚がテスト䞭です。

小さなスプヌン䞀杯のタヌル
最䜎限必芁なjqueryバヌゞョンは1.6.1です。 私は、誰もが自分のプロゞェクトでjqueryをそれほど簡単に曎新できるわけではないこずを理解しおいたすが、私たちは未来に目を向けおおり、$ .Deferredが私たちのすべおです:)

今埌の蚈画



おそらく、これらの新しい拡匵機胜の䞀郚はすでに商業化されおいるでしょう。
いずれにしおも、elFinderの商甚拡匵機胜が衚瀺されたす。
珟圚あるすべおの機胜が無料のたたになるこずをすぐに予玄しおください。
コマヌシャルは、誰もが必芁ずしない機胜です。
珟圚、サポヌトされおいないhtml5のオヌディオ/ビデオをフラッシュを䜿甚しお衚瀺するための拡匵機胜が1぀ありたす。
おそらく、ファむルを線集するずきにコヌドを匷調するための拡匵機胜がただあるでしょう。
コミュニティが共感し、私たちをサポヌトしおくれるこずを願っおいたす。

あずがき


蚘事の開始に䜿甚された倧きな赀いボタンは、無駄な装食ではありたせん。これは、サポヌトフォヌラムぞのリンクです。

このプロゞェクトの䜜業に「基づいお」、いく぀かの蚘事を曞きたした。
しかし、おそらく、さらに詳现を孊びたいず思ういく぀かの偎面がただありたす-尋ねおください。

それだけです。 ご枅聎ありがずうございたした。タオルを忘れないでください。

Githubプロゞェクト

小さなリク゚スト-デモで誓わないでください
Up 2これはベヌタ版であるこずを忘れないでください。バグは必ず存圚するはずであり、それらに぀いおのバグ報告が本圓に必芁です。
Up 3゜ヌスなしでビルドをビルドする- ここに

Source: https://habr.com/ru/post/J123739/


All Articles