文件收集功能(4/10)

实现基本创建文件收集功能
具体收集功能后续增加
This commit is contained in:
Chenx221 2024-02-25 10:31:07 +08:00
parent c22b132070
commit 84886de324
Signed by: chenx221
GPG Key ID: D7A9EC07024C3021
7 changed files with 63 additions and 68 deletions

View File

@ -4,6 +4,7 @@ namespace app\controllers;
use app\models\CollectionTasks;
use app\models\CollectionSearch;
use Yii;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
@ -68,10 +69,14 @@ class CollectionController extends Controller
public function actionCreate()
{
$model = new CollectionTasks();
$model->scenario = 'create'; // 设置场景
if ($this->request->isPost) {
if ($model->load($this->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
if ($model->load($this->request->post())) {
$model->user_id = Yii::$app->user->id; // 手动设置user_id字段的值
if ($model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
}
} else {
$model->loadDefaultValues();
@ -82,26 +87,6 @@ class CollectionController extends Controller
]);
}
/**
* Updates an existing CollectionTasks model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param int $id ID
* @return string|\yii\web\Response
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($this->request->isPost && $model->load($this->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('update', [
'model' => $model,
]);
}
/**
* Deletes an existing CollectionTasks model.
* If deletion is successful, the browser will be redirected to the 'index' page.

View File

@ -3,6 +3,7 @@
namespace app\models;
use Yii;
use yii\db\ActiveRecord;
/**
* This is the model class for table "collection_tasks".
@ -16,8 +17,10 @@ use Yii;
* @property CollectionUploaded[] $collectionUploadeds
* @property User $user
*/
class CollectionTasks extends \yii\db\ActiveRecord
class CollectionTasks extends ActiveRecord
{
const SCENARIO_CREATE = 'create';
/**
* {@inheritdoc}
*/
@ -33,6 +36,7 @@ class CollectionTasks extends \yii\db\ActiveRecord
{
return [
[['user_id', 'folder_path', 'secret'], 'required'],
[['folder_path', 'secret'], 'required', 'on' => self::SCENARIO_CREATE],
[['user_id'], 'integer'],
[['created_at'], 'safe'],
[['folder_path', 'secret'], 'string', 'max' => 255],
@ -54,6 +58,16 @@ class CollectionTasks extends \yii\db\ActiveRecord
];
}
/**
* {@inheritdoc}
*/
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_CREATE] = ['folder_path', 'secret']; // 在这里列出你想在创建收集任务时验证的属性
return $scenarios;
}
/**
* Gets query for [[CollectionUploadeds]].
*

View File

@ -1,29 +0,0 @@
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/** @var yii\web\View $this */
/** @var app\models\CollectionTasks $model */
/** @var yii\widgets\ActiveForm $form */
?>
<div class="collection-tasks-form">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'user_id')->textInput() ?>
<?= $form->field($model, 'folder_path')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'created_at')->textInput() ?>
<?= $form->field($model, 'secret')->textInput(['maxlength' => true]) ?>
<div class="form-group">
<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>

View File

@ -1,20 +1,27 @@
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/** @var yii\web\View $this */
/** @var app\models\CollectionTasks $model */
$this->title = 'new 文件收集';
$this->params['breadcrumbs'][] = ['label' => 'Collection Tasks', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
/** @var yii\widgets\ActiveForm $form */
?>
<div class="collection-tasks-create">
<h1><?= Html::encode($this->title) ?></h1>
<div class="collection-tasks-form">
<?= $this->render('_form', [
'model' => $model,
]) ?>
<?php $form = ActiveForm::begin([
'action' => ['collection/create'], // 指定表单提交的URL
]); ?>
<?= $form->field($model, 'folder_path')->textInput(['maxlength' => true, 'readonly' => true]) ?>
<?= $form->field($model, 'secret')->textInput(['maxlength' => true]) ?>
<div class="form-group">
<?= Html::submitButton('创建', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>

View File

@ -36,6 +36,7 @@ $this->params['breadcrumbs'][] = $this->title;
'secret',
[
'class' => ActionColumn::className(),
'template' => '{view} {delete}',
'urlCreator' => function ($action, CollectionTasks $model, $key, $index, $column) {
return Url::toRoute([$action, 'id' => $model->id]);
}

View File

@ -2,6 +2,8 @@
use yii\grid\GridView;
use yii\helpers\Html;
use yii\web\JqueryAsset;
use yii\web\View;
use yii\web\YiiAsset;
use yii\widgets\DetailView;
use app\models\CollectionUploadedSearch;
@ -9,8 +11,8 @@ use app\models\CollectionUploadedSearch;
/** @var yii\web\View $this */
/** @var app\models\CollectionTasks $model */
$this->title = $model->id;
$this->params['breadcrumbs'][] = ['label' => 'Collection Tasks', 'url' => ['index']];
$this->title = '文件收集ID ' . $model->id;
$this->params['breadcrumbs'][] = ['label' => '文件收集', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
YiiAsset::register($this);
@ -23,11 +25,12 @@ $dataProvider->query->andWhere(['task_id' => $model->id]);
<h1><?= Html::encode($this->title) ?></h1>
<p>
<?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
<?= Html::a('Delete', ['delete', 'id' => $model->id], [
<?= Html::a('复制收集链接', null, ['class' => 'btn btn-primary', 'id' => 'copy-link-button']) ?>
<?= Html::a('访问收集链接', ['collection/access', 'id' => $model->id, '$secret' => $model->secret], ['class' => 'btn btn-primary', 'target' => '_blank']) ?>
<?= Html::a('取消收集', ['delete', 'id' => $model->id], [
'class' => 'btn btn-danger',
'data' => [
'confirm' => 'Are you sure you want to delete this item?',
'confirm' => '你确定要取消这个收集任务吗?已收集的文件不会被删除',
'method' => 'post',
],
]) ?>
@ -37,14 +40,13 @@ $dataProvider->query->andWhere(['task_id' => $model->id]);
'model' => $model,
'attributes' => [
'id',
'user_id',
'folder_path',
'created_at',
'secret',
],
]) ?>
<h2>收集情况:</h2>
<h2>文件收集情况:</h2>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
@ -58,3 +60,6 @@ $dataProvider->query->andWhere(['task_id' => $model->id]);
],
]); ?>
</div>
<?php
$this->registerJsFile('@web/js/collection_view.js', ['depends' => [JqueryAsset::class], 'position' => View::POS_END]);
?>

12
web/js/collection_view.js Normal file
View File

@ -0,0 +1,12 @@
$(document).ready(function() {
$('#copy-link-button').click(function() {
var id = $('table.detail-view tbody tr:first-child td').text();
var secret = $('table.detail-view tbody tr:nth-child(4) td').text(); // 获取访问密码
var shareLink = window.location.origin + '/index.php?r=collection%2Faccess&id=' + id + '&secret=' + secret; // 将访问密码添加到分享链接中
navigator.clipboard.writeText(shareLink).then(function() {
alert('分享链接已复制到剪贴板');
}).catch(function(error) {
console.error('复制失败: ', error);
});
});
});