diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f41176c2..7ad4bb3f 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,6 +1,10 @@ Changelog ========= +3.2.4 (Unreleased) +-------------------- +- Enh #188: Add "Like" to message entries + 3.2.3 (Unreleased) -------------------- - Enh #411: Standardization of Modal Button Positions diff --git a/models/AbstractMessageEntry.php b/models/AbstractMessageEntry.php index c147a54b..81e1b79a 100644 --- a/models/AbstractMessageEntry.php +++ b/models/AbstractMessageEntry.php @@ -21,7 +21,7 @@ * @property int $id * @property int $message_id * @property int $user_id - * @property string $content + * @property string|null $content * @property int $type * @property string $created_at * @property int $created_by diff --git a/models/MessageEntry.php b/models/MessageEntry.php index f43e92f5..2ca9e398 100644 --- a/models/MessageEntry.php +++ b/models/MessageEntry.php @@ -4,8 +4,14 @@ use DateTime; use humhub\interfaces\ViewableInterface; +use humhub\modules\content\widgets\richtext\AbstractRichText; +use humhub\modules\content\widgets\richtext\converter\RichTextToEmailHtmlConverter; +use humhub\modules\content\widgets\richtext\RichText; +use humhub\modules\like\interfaces\LikeNotificationInterface; +use humhub\modules\mail\helpers\Url; use humhub\modules\user\models\User; use Yii; +use yii\base\InvalidConfigException; /** * This class represents a message text within a conversation. @@ -13,7 +19,7 @@ * @package humhub.modules.mail.models * @since 0.5 */ -class MessageEntry extends AbstractMessageEntry implements ViewableInterface +class MessageEntry extends AbstractMessageEntry implements ViewableInterface, LikeNotificationInterface { /** * @inheritdoc @@ -72,4 +78,27 @@ public function canView($user = null): bool return $message instanceof Message && $message->isParticipant($user); } + + /** + * @inerhitdoc + * @throws InvalidConfigException + */ + public function getLikeNotificationPlainTextPreview(): string + { + return Yii::t('MailModule.base', 'Message') . ' ' . RichText::convert($this->content, AbstractRichText::FORMAT_SHORTTEXT); + } + + /** + * @inerhitdoc + * @throws InvalidConfigException + */ + public function getLikeNotificationHtmlPreview(): string + { + return RichTextToEmailHtmlConverter::process($this->content); + } + + public function getLikeNotificationUrl(bool $scheme = false): string + { + return Url::toMessenger($this->message, $scheme); + } } diff --git a/module.json b/module.json index 49c8deaf..64b6aa6e 100644 --- a/module.json +++ b/module.json @@ -10,7 +10,7 @@ ], "version": "3.2.3", "humhub": { - "minVersion": "1.16" + "minVersion": "1.17" }, "homepage": "https://github.com/humhub/mail", "authors": [ diff --git a/resources/js/humhub.mail.notification.min.js b/resources/js/humhub.mail.notification.min.js index a68d8e33..89f505a4 100644 --- a/resources/js/humhub.mail.notification.min.js +++ b/resources/js/humhub.mail.notification.min.js @@ -1 +1 @@ -humhub.module("mail.notification",function(o,e,i){function n(){s.get(o.config.url.count).then(function(e){l(parseInt(e.newMessages))})}var a,s=e("client"),r=e("ui.loader"),t=e("event"),u=e("ui.widget").Widget,c=0,l=(o.initOnPjaxLoad=!0,function(e){var n=i("#badge-messages");e&&0!==parseInt(e)?(c=e,n.empty(),n.append(e),n.fadeIn("fast")):(n.css("display","none"),c=0),t.trigger("humhub:modules:notification:UpdateTitleNotificationCount")});o.export({init:function(e){e||(t.on("humhub:modules:mail:live:NewUserMessage",function(e,n){n=n[n.length-1];l(n.data.count)}).on("humhub:modules:mail:live:UserMessageDeleted",function(e,n){n=n[n.length-1];l(n.data.count)}),i("#icon-messages").click(function(){a&&a.abort();let n=i("#loader_messages"),t=n.parent();n.parent().find(":not(#loader_messages)").remove(),r.set(n.show()),s.get(o.config.url.list,{beforeSend:function(e){a=e}}).then(function(e){a=void 0,t.prepend(i(e.html)),n.hide(),t.niceScroll({cursorwidth:"7",cursorborder:"",cursorcolor:"#555",cursoropacitymax:"0.2",nativeparentscrolling:!1,railpadding:{top:0,right:3,left:0,bottom:0}})})})),n()},loadMessage:function(e){var n=u.instance("#mail-conversation-root");n&&"function"==typeof n.loadMessage?(n.loadMessage(e),n.$.closest(".container").addClass("mail-conversation-single-message")):s.redirect(e.url),e.finish()},setMailMessageCount:l,updateCount:n,getNewMessageCount:function(){return c}})}); \ No newline at end of file +humhub.module("mail.notification",function(o,e,i){function n(){s.get(o.config.url.count).then(function(e){l(parseInt(e.newMessages))})}var a,s=e("client"),r=e("ui.loader"),t=e("event"),u=e("ui.widget").Widget,c=0,l=(o.initOnPjaxLoad=!0,function(e){var n=i("#badge-messages");e&&0!==parseInt(e)?(c=e,n.empty(),n.append(e),n.fadeIn("fast")):(n.css("display","none"),c=0),t.trigger("humhub:modules:notification:UpdateTitleNotificationCount")});o.export({init:function(e){e||(t.on("humhub:modules:mail:live:NewUserMessage",function(e,n){n=n[n.length-1];l(n.data.count)}).on("humhub:modules:mail:live:UserMessageDeleted",function(e,n){n=n[n.length-1];l(n.data.count)}),i("#icon-messages").click(function(){a&&a.abort();const n=i("#loader_messages"),t=n.parent();n.parent().find(":not(#loader_messages)").remove(),r.set(n.show()),s.get(o.config.url.list,{beforeSend:function(e){a=e}}).then(function(e){a=void 0,t.prepend(i(e.html)),n.hide(),t.niceScroll({cursorwidth:"7",cursorborder:"",cursorcolor:"#555",cursoropacitymax:"0.2",nativeparentscrolling:!1,railpadding:{top:0,right:3,left:0,bottom:0}})})})),n()},loadMessage:function(e){var n=u.instance("#mail-conversation-root");n&&"function"==typeof n.loadMessage?(n.loadMessage(e),n.$.closest(".container").addClass("mail-conversation-single-message")):s.redirect(e.url),e.finish()},setMailMessageCount:l,updateCount:n,getNewMessageCount:function(){return c}})}); \ No newline at end of file diff --git a/widgets/ConversationEntryLinks.php b/widgets/ConversationEntryLinks.php new file mode 100644 index 00000000..f0aaa2d6 --- /dev/null +++ b/widgets/ConversationEntryLinks.php @@ -0,0 +1,40 @@ +initDefaultWidgets(); + parent::init(); + } + + public function initDefaultWidgets() + { + $this->addWidget(LikeLink::class, ['object' => $this->object], ['sortOrder' => 200]); + } + +} diff --git a/widgets/views/conversationEntry.php b/widgets/views/conversationEntry.php index 0cff45e3..1bc5d0d7 100644 --- a/widgets/views/conversationEntry.php +++ b/widgets/views/conversationEntry.php @@ -5,7 +5,7 @@ use humhub\modules\file\widgets\ShowFiles; use humhub\modules\mail\models\MessageEntry; use humhub\modules\mail\widgets\ConversationDateBadge; -use humhub\modules\mail\widgets\ConversationEntryMenu; +use humhub\modules\mail\widgets\ConversationEntryLinks; use humhub\modules\mail\widgets\MessageEntryTime; use humhub\modules\ui\view\components\View; use humhub\modules\user\widgets\Image; @@ -44,10 +44,11 @@ = RichText::output($entry->content) ?> = ShowFiles::widget(['object' => $entry]) ?> - = MessageEntryTime::widget(['entry' => $entry]) ?> +