From 0cd8ce30cdd499983f9d4f22d8eca1a27c3d37d5 Mon Sep 17 00:00:00 2001 From: xieqiyu Date: Wed, 31 Aug 2022 12:35:45 +0800 Subject: [PATCH 1/2] * Finish task#66954,#66960,#66959,#66958,#66956. --- extension/lite/story/ext/view/edit.html.php | 8 ++++ module/common/lang/de.php | 3 +- module/common/lang/en.php | 3 +- module/common/lang/fr.php | 1 + module/common/lang/vi.php | 3 +- module/common/lang/zh-cn.php | 1 + module/file/control.php | 14 +++--- module/file/model.php | 50 ++++++++++++++++++++- module/file/view/printfiles.html.php | 2 +- module/file/view/viewfiles.html.php | 29 +++++++----- module/story/control.php | 42 ++++++++++------- module/story/model.php | 23 ++++++---- module/story/view/change.html.php | 2 +- module/story/view/edit.html.php | 8 ++++ module/story/view/view.html.php | 2 +- module/upgrade/model.php | 37 +++++++++++++++ 16 files changed, 180 insertions(+), 48 deletions(-) diff --git a/extension/lite/story/ext/view/edit.html.php b/extension/lite/story/ext/view/edit.html.php index bf24a2e266..c45fa148a4 100644 --- a/extension/lite/story/ext/view/edit.html.php +++ b/extension/lite/story/ext/view/edit.html.php @@ -80,6 +80,14 @@ status) !== false ? html::textarea('spec', htmlSpecialString($story->spec), "rows='5' class='form-control'") : $story->spec;?> +
+
attatch;?>
+
+ status) !== false ? true : false;?> + fetch('file', 'printFiles', array('files' => $files, 'fieldset' => 'false', 'object' => $story, 'method' => 'edit', 'showDelete' => $canChangeFile));?> + fetch('file', 'buildform') : '';?> +
+
printExtendFields($story, 'div', 'position=left');?>
story->comment;?>
diff --git a/module/common/lang/de.php b/module/common/lang/de.php index d2113a3e89..3de060ef37 100644 --- a/module/common/lang/de.php +++ b/module/common/lang/de.php @@ -99,7 +99,8 @@ $lang->collapse = 'Zuklappen'; $lang->saveSuccess = 'Gespeichert'; $lang->importSuccess = 'Gespeichert'; $lang->fail = 'Fehlgeschlagen'; -$lang->addFiles = 'Hinzufügen'; +$lang->addFiles = 'Hinzufügen '; +$lang->deleteFiles = 'Anhang gelöscht '; $lang->files = 'Datei '; $lang->pasteText = 'Einfügen'; $lang->uploadImages = 'Hochladen'; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index d8390243ce..c4bba1c349 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -99,7 +99,8 @@ $lang->collapse = 'Collapse'; $lang->saveSuccess = 'Saved'; $lang->importSuccess = 'Saved'; $lang->fail = 'Fail'; -$lang->addFiles = 'Added Files'; +$lang->addFiles = 'Added Files '; +$lang->deleteFiles = 'Deleted Files '; $lang->files = 'Files '; $lang->pasteText = 'Multi-line Paste'; $lang->uploadImages = 'Multi-image Upload'; diff --git a/module/common/lang/fr.php b/module/common/lang/fr.php index 67caf6b5fd..aec37d0a92 100644 --- a/module/common/lang/fr.php +++ b/module/common/lang/fr.php @@ -100,6 +100,7 @@ $lang->saveSuccess = 'Sauvegardé'; $lang->importSuccess = 'Sauvé'; $lang->fail = 'Echec'; $lang->addFiles = 'Fichiers ajoutés '; +$lang->deleteFiles = 'Pièce jointe supprimée '; $lang->files = 'Fichiers '; $lang->pasteText = 'Collage Multi-lignes'; $lang->uploadImages = 'Upload Multi-images'; diff --git a/module/common/lang/vi.php b/module/common/lang/vi.php index b5e9712fd7..0113ca2d00 100644 --- a/module/common/lang/vi.php +++ b/module/common/lang/vi.php @@ -78,7 +78,8 @@ $lang->collapse = 'Co lại'; $lang->saveSuccess = 'Đã lưu'; $lang->importSuccess = 'Đã lưu'; $lang->fail = 'Thất bại'; -$lang->addFiles = 'Tập tin đã thêm'; +$lang->addFiles = 'Tập tin đã thêm '; +$lang->deleteFiles = 'Tháo ảnh '; $lang->files = 'Files '; $lang->pasteText = 'Dán nhiều dòng'; $lang->uploadImages = 'Tải lên nhiều ảnh'; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index a27488d59e..8080576b61 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -100,6 +100,7 @@ $lang->saveSuccess = '保存成功'; $lang->importSuccess = '导入成功'; $lang->fail = '失败'; $lang->addFiles = '上传了附件 '; +$lang->deleteFiles = '删除了附件 '; $lang->files = '附件 '; $lang->pasteText = '多项录入'; $lang->uploadImages = '多图上传 '; diff --git a/module/file/control.php b/module/file/control.php index c8230031b6..995919bcce 100755 --- a/module/file/control.php +++ b/module/file/control.php @@ -306,17 +306,19 @@ class file extends control * @param string $fieldset * @param object $object * @param string $method + * @param bool $showDelete * @access public * @return void */ - public function printFiles($files, $fieldset, $object = null, $method = 'view') + public function printFiles($files, $fieldset, $object = null, $method = 'view', $showDelete = true) { - $this->view->files = $files; - $this->view->fieldset = $fieldset; - $this->view->object = $object; - $this->view->method = $method; + $this->view->files = $files; + $this->view->fieldset = $fieldset; + $this->view->object = $object; + $this->view->method = $method; + $this->view->showDelete = $showDelete; - if($method == 'view') return $this->display('file', 'viewfiles'); + if(strpos('view,edit', $method) !== false) return $this->display('file', 'viewfiles'); $this->display(); } diff --git a/module/file/model.php b/module/file/model.php index 72d4a1d828..e575e7179b 100755 --- a/module/file/model.php +++ b/module/file/model.php @@ -46,8 +46,9 @@ class fileModel extends model ->where('objectType')->eq($objectType) ->andWhere('objectID')->eq((int)$objectID) ->andWhere('extra')->ne('editor') + ->beginIF($objectType == 'story' and $extra)->andWhere('extra')->like("%,$extra,%")->fi() + ->beginIF($objectType != 'story' and $extra)->andWhere('extra')->eq($extra)->fi() ->andWhere('deleted')->eq('0') - ->beginIF($extra)->andWhere('extra')->eq($extra) ->orderBy('id') ->fetchAll('id'); @@ -1097,7 +1098,6 @@ class fileModel extends model { return $this->dao->select("id,$value")->from(TABLE_FILE) ->where('id')->in($IDs) - ->andWhere('deleted')->eq('0') ->fetchPairs(); } @@ -1119,4 +1119,50 @@ class fileModel extends model $this->dao->update(TABLE_CASE)->set('`fromCaseVersion`')->eq($fromcaseVersion)->where('`fromCaseID`')->eq($file->objectID)->exec(); } } + + /** + * Update version of story files. + * + * @param int $storyID + * @param int $storyVersion + * @param array $deleteFiles + * @access public + * @return void + */ + public function updateStoryFileVersion($storyID, $storyVersion, $deleteFiles = array()) + { + $oldStoryVersion = $storyVersion - 1; + $this->dao->dbh($this->dbh)->update(TABLE_FILE)->set("extra = CONCAT(extra, '$storyVersion,')") + ->where('objectType')->eq('story') + ->andWhere('objectID')->eq($storyID) + ->andWhere('extra')->like("%,$oldStoryVersion,%") + ->beginIF(!empty($deleteFiles))->andWhere('id')->notin($deleteFiles)->fi() + ->exec(); + } + + /** + * Delete story file. + * + * @param int $storyID + * @param int $storyVersion + * @param array $deleteFiles + * @access public + * @return void + */ + public function deleteStoryFile($storyID, $storyVersion, $deleteFiles = array()) + { + $this->dao->delete()->from(TABLE_FILE) + ->where('objectType')->eq('story') + ->andWhere('objectID')->eq($storyID) + ->andWhere('extra')->eq(",$storyVersion,") + ->beginIF(!empty($deleteFiles))->andWhere('id')->in($deleteFiles)->fi() + ->exec(); + + $this->dao->dbh($this->dbh)->update(TABLE_FILE)->set("extra = REPLACE(extra, '$storyVersion,', '')") + ->where('objectType')->eq('story') + ->andWhere('objectID')->eq($storyID) + ->andWhere('extra')->like("%,$storyVersion,%") + ->beginIF(!empty($deleteFiles))->andWhere('id')->in($deleteFiles)->fi() + ->exec(); + } } diff --git a/module/file/view/printfiles.html.php b/module/file/view/printfiles.html.php index 2c621c7413..ee78a6ecc0 100644 --- a/module/file/view/printfiles.html.php +++ b/module/file/view/printfiles.html.php @@ -92,7 +92,7 @@ if(common::hasPriv($objectType, 'edit', $object)) { echo "  "; - if($method != 'storyChange') common::printLink('file', 'edit', "fileID=$file->id", $lang->file->edit, '', "data-width='400' class='fileAction btn btn-link edit iframe text-primary' title='{$lang->file->edit}'"); + common::printLink('file', 'edit', "fileID=$file->id", $lang->file->edit, '', "data-width='400' class='fileAction btn btn-link edit iframe text-primary' title='{$lang->file->edit}'"); if(common::hasPriv('file', 'delete')) echo html::a('###', $lang->delete, '', "class='fileAction btn btn-link text-primary' onclick='deleteFile($file->id)' title='$lang->delete'"); echo ''; } diff --git a/module/file/view/viewfiles.html.php b/module/file/view/viewfiles.html.php index 164f7e7dbe..a41d89589d 100644 --- a/module/file/view/viewfiles.html.php +++ b/module/file/view/viewfiles.html.php @@ -7,6 +7,7 @@