netcommons / files
Files for NetCommons Plugin
Installs: 89 862
Dependents: 16
Suggesters: 0
Security: 0
Stars: 0
Watchers: 15
Forks: 3
Open Issues: 17
Type:cakephp-plugin
Requires
- cakedc/migrations: ~2.2
- josegonzalez/cakephp-upload: 1.*|2.*
- netcommons/authorization-keys: @dev
- netcommons/blocks: @dev
- netcommons/net-commons: @dev
- netcommons/site-manager: @dev
- dev-master
- 3.3.7.2
- 3.3.7.1
- 3.3.7.0
- 3.3.6.4
- 3.3.6.3
- 3.3.6.2
- 3.3.6.1
- 3.3.6.0
- 3.3.5.1
- 3.3.5.0
- 3.3.4.2
- 3.3.4.1
- 3.3.4.0
- 3.3.3.1
- 3.3.3.0
- 3.3.2.1
- 3.3.2.0
- 3.3.1.2
- 3.3.1.1
- 3.3.1.0
- 3.3.0.1
- 3.3.0
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.10
- 3.1.9
- 3.1.8
- 3.1.7
- 3.1.6
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.0
- 3.0.1
- 3.0.0
- dev-availability
- dev-fix/editProblem
- dev-develop
This package is auto-updated.
Last update: 2024-11-08 06:59:02 UTC
README
AttachmentBehavior
ファイルアップロードをするフォームを表示するときはModel::recursiveを0以上にしてください。
Model::recursive = -1の場合、Modelに添付されたアップロードファイルの情報が取得できないため、NetCommonsForm::uploadFile()は添付されたファイルが無いと判断してしまいます。
認証キーと組み合わせ使う方法
認証キープラグインと組み合わせることで特定の認証キーを知っているユーザだけがファイルダウンロード可能にできます。
リダイレクト型
ダウンロードアクションを実装しているコントローラで AuthorizationKeyComponent を使います
public $components = array( 'Files.Download', 'AuthorizationKeys.AuthorizationKey' => [ 'operationType' => 'redirect', 'targetAction' => 'download_pdf', 'model' => 'BlogEntry', ], );
ダウンロードアクション内で認証キーによるガードを設定します
public function download_pdf() { // ここから元コンテンツを取得する処理 $this->_prepare(); $key = $this->params['pass'][1]; $conditions = $this->BlogEntry->getConditions( Current::read('Block.id'), $this->Auth->user('id'), $this->_getPermission(), $this->_getCurrentDateTime() ); $conditions['BlogEntry.key'] = $key; $options = array( 'conditions' => $conditions, 'recursive' => 1, ); $blogEntry = $this->BlogEntry->find('first', $options); // ここまで元コンテンツを取得する処理 // 認証キーによるガード $this->AuthorizationKey->guard('redirect', 'BlogEntry', $blogEntry); // ダウンロード実行 if ($blogEntry) { return $this->Download->doDownload($blogEntry['BlogEntry']['id'], ['filed' => 'pdf']); } else { // 表示できない記事へのアクセスなら404 throw new NotFoundException(__('Invalid blog entry')); } }
ポップアップ型
ダウンロードアクションを実装しているコントローラで AuthorizationKeyComponent を使います
public $components = array( 'Files.Download', 'AuthorizationKeys.AuthorizationKey' => [ 'operationType' => 'redirect', 'targetAction' => 'download_pdf', 'model' => 'BlogEntry', ], );
ダウンロードアクション内でのガードをpopupにします
$this->AuthorizationKey->guard('popup', 'BlogEntry', $blogEntry);
ダウンロードリンクを書き換えてポップアップ画面が表示されるようにします。 認証キーポップアップはAngularJSのディレクティブ authorization-keys-popup-link として実装されています。
<div> PDF : <?php echo $this->Html->link('PDF', '#', ['authorization-keys-popup-link', 'url' => $this->NetCommonsHtml->url( [ 'action' => 'download_pdf', 'key' => $blogEntry['BlogEntry']['key'], 'pdf', ] ), 'frame-id' => Current::read('Frame.id') ] ); ?> </div>
認証キーの詳細については認証キーのドキュメントも参照してください。
Validation
AttachmentBehaviorでUploadビヘイビアのバリデーションルールを利用できます。