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..22b98a85d7 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,62 @@ 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())
+ {
+ $deleteFileList = $this->dao->select('*')->from(TABLE_FILE)
+ ->where('objectType')->eq('story')
+ ->andWhere('objectID')->eq($storyID)
+ ->andWhere('extra')->eq(",$storyVersion,")
+ ->beginIF(!empty($deleteFiles))->andWhere('id')->in($deleteFiles)->fi()
+ ->fetchAll('id');
+
+ if(!empty($deleteFileList))
+ {
+ $this->dao->delete()->from(TABLE_FILE)->where('id')->in(array_keys($deleteFileList))->exec();
+
+ foreach($deleteFileList as $file)
+ {
+ $realPathName = $this->getRealPathName($file->pathname);
+ @unlink($realPathName);
+ }
+ }
+
+ /* When the file is in multiple story versions, 'extra' need delete the version to be deleted. */
+ $this->dao->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 @@