mirror of
https://github.com/kuaifan/dootask.git
synced 2026-02-05 12:45:41 +00:00
perf: 任务描述支持清单
This commit is contained in:
parent
5e6a21ddc5
commit
bd61b8c948
@ -1945,7 +1945,7 @@ class ProjectController extends AbstractController
|
||||
$task->pushMsgVisibleAdd($data);
|
||||
}
|
||||
if ($param['visibility_appointor']) {
|
||||
$newVisibleUserIds = $param['visibility_appointor'] ?? [];
|
||||
$newVisibleUserIds = is_array($param['visibility_appointor']) ? $param['visibility_appointor'] : [];
|
||||
$deleteUserIds = array_diff($visible, $newVisibleUserIds, $subUserids);
|
||||
$addUserIds = array_diff($newVisibleUserIds, $visible);
|
||||
$task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds);
|
||||
|
||||
@ -352,6 +352,25 @@ class ProjectTask extends AbstractModel
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成描述
|
||||
* @param $content
|
||||
* @return string
|
||||
*/
|
||||
public static function generateDesc($content)
|
||||
{
|
||||
$content = preg_replace_callback('/<ul class="tox-checklist">(.+?)<\/ul>/is', function ($matches) {
|
||||
return preg_replace_callback('/<li([^>]*)>(.+?)<\/li>/is', function ($m) {
|
||||
if (str_contains($m[1], 'tox-checklist--checked')) {
|
||||
return "<li{$m[1]}>[√]{$m[2]} </li>";
|
||||
} else {
|
||||
return "<li{$m[1]}>[ ]{$m[2]} </li>";
|
||||
}
|
||||
}, $matches[0]);
|
||||
}, $content);
|
||||
return Base::cutStr(strip_tags($content), 100, 0, "...");
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加任务
|
||||
* @param $data
|
||||
@ -407,7 +426,7 @@ class ProjectTask extends AbstractModel
|
||||
'visibility' => $visibility ?: 1
|
||||
]);
|
||||
if ($content) {
|
||||
$task->desc = Base::getHtml($content, 100);
|
||||
$task->desc = self::generateDesc($content);
|
||||
}
|
||||
// 标题
|
||||
if (empty($name)) {
|
||||
@ -901,7 +920,7 @@ class ProjectTask extends AbstractModel
|
||||
'url' => ProjectTaskContent::saveContent($this->id, $data['content'])
|
||||
],
|
||||
])->save();
|
||||
$this->desc = Base::getHtml($data['content'], 100);
|
||||
$this->desc = self::generateDesc($data['content']);
|
||||
$this->addLog("修改{任务}详细描述");
|
||||
$updateMarking['is_update_content'] = true;
|
||||
}
|
||||
|
||||
@ -359,17 +359,6 @@ class Base
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 去除html
|
||||
* @param $text
|
||||
* @param int $length
|
||||
* @return string
|
||||
*/
|
||||
public static function getHtml($text, $length = 250)
|
||||
{
|
||||
return Base::cutStr(strip_tags($text), $length, 0, "...");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 截取字符串
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -69,7 +69,7 @@ export default {
|
||||
content: this.value,
|
||||
|
||||
plugins: [
|
||||
'advlist autolink lists link image charmap print preview hr anchor pagebreak',
|
||||
'advlist autolink lists checklist link image charmap print preview hr anchor pagebreak',
|
||||
'searchreplace visualblocks visualchars code',
|
||||
'insertdatetime media nonbreaking save table directionality',
|
||||
'emoticons paste codesample',
|
||||
@ -81,16 +81,17 @@ export default {
|
||||
autoresize_bottom_margin: 2,
|
||||
min_height: 200,
|
||||
max_height: 380,
|
||||
contextmenu: 'bold italic underline forecolor backcolor | link | codesample | uploadImages imagePreview | preview screenload',
|
||||
valid_elements: 'a[href|title|target=_blank],em,strong/b,div[align],span[style],a,br,p,img[src|alt|witdh|height],pre[class],code',
|
||||
contextmenu: 'checklist | bold italic underline forecolor backcolor | link | uploadImages imagePreview | screenload',
|
||||
valid_elements: 'a[href|title|target=_blank],em,strong/b,div[align],span[style],a,br,p,img[src|alt|witdh|height],pre[class],code,ol[class],ul[class],li[class]',
|
||||
extended_valid_elements: 'a[href|title|target=_blank]',
|
||||
toolbar: false
|
||||
},
|
||||
optionFull: {
|
||||
menubar: 'file edit view',
|
||||
valid_elements: 'a[href|title|target=_blank],em,strong/b,div[align],span[style],a,br,p,img[src|alt|witdh|height],pre[class],code',
|
||||
removed_menuitems: 'preview,print',
|
||||
valid_elements: 'a[href|title|target=_blank],em,strong/b,div[align],span[style],a,br,p,img[src|alt|witdh|height],pre[class],code,ol[class],ul[class],li[class]',
|
||||
extended_valid_elements: 'a[href|title|target=_blank]',
|
||||
toolbar: 'uploadImages | bold italic underline | forecolor backcolor'
|
||||
toolbar: 'uploadImages | checklist | bold italic underline | forecolor backcolor'
|
||||
},
|
||||
|
||||
operateStyles: {},
|
||||
|
||||
@ -22,6 +22,10 @@
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.tox-checklist {
|
||||
padding-inline-start: 26px;
|
||||
}
|
||||
|
||||
.tox-tinymce {
|
||||
box-shadow: none;
|
||||
box-sizing: border-box;
|
||||
|
||||
7
resources/assets/statics/public/js/tinymce/plugins/checklist/index.js
vendored
Normal file
7
resources/assets/statics/public/js/tinymce/plugins/checklist/index.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
// Exports the "checklist" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/checklist')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/checklist'
|
||||
require('./plugin.js');
|
||||
8
resources/assets/statics/public/js/tinymce/plugins/checklist/plugin.js
vendored
Normal file
8
resources/assets/statics/public/js/tinymce/plugins/checklist/plugin.js
vendored
Normal file
File diff suppressed because one or more lines are too long
8
resources/assets/statics/public/js/tinymce/plugins/checklist/plugin.min.js
vendored
Normal file
8
resources/assets/statics/public/js/tinymce/plugins/checklist/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user