diff --git a/activities/NewVote.php b/activities/NewVote.php index f9466b11..6c38f3fd 100644 --- a/activities/NewVote.php +++ b/activities/NewVote.php @@ -1,43 +1,29 @@ '' . Html::encode($originator->displayName) . '', - '{question}' => $this->context->getContentInfo($source) -]); -?> diff --git a/controllers/PollController.php b/controllers/PollController.php index 051adc33..347d4814 100644 --- a/controllers/PollController.php +++ b/controllers/PollController.php @@ -6,7 +6,7 @@ use humhub\modules\polls\models\Poll; use humhub\modules\polls\models\PollAnswer; use humhub\modules\polls\widgets\WallCreateForm; -use humhub\modules\stream\actions\Stream; +use humhub\modules\stream\actions\StreamEntryResponse; use humhub\modules\user\models\User; use humhub\modules\user\widgets\UserListBox; use humhub\helpers\Html; @@ -67,7 +67,7 @@ public function actionReload($id) throw new HttpException(403); } - return $this->asJson(Stream::getContentResultEntry($model->content)); + return $this->asJson(StreamEntryResponse::getAsArray($model->content)); } public function actionEdit() @@ -95,7 +95,7 @@ public function actionEdit() if ($model->validate() && $model->save()) { // Reload record to get populated updated_at field $model = Poll::findOne(['id' => $id]); - return Stream::getContentResultEntry($model->content); + return StreamEntryResponse::getAsArray($model->content); } else { $result['errors'] = $model->getErrors(); } @@ -131,7 +131,7 @@ public function setClosed($id, $closed) // Refresh updated_at $model->content->refresh(); - return Stream::getContentResultEntry($model->content); + return StreamEntryResponse::getAsArray($model->content); } /** @@ -159,7 +159,7 @@ public function actionAnswer() $poll->vote($votes); - return Stream::getContentResultEntry($poll->content); + return StreamEntryResponse::getAsArray($poll->content); } /** @@ -169,7 +169,7 @@ public function actionAnswerReset() { $poll = $this->getPollByParameter(); $poll->resetAnswer(); - return $this->asJson(Stream::getContentResultEntry($poll->content)); + return $this->asJson(StreamEntryResponse::getAsArray($poll->content)); } /** diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index eeff39a3..bfafd9d2 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,7 +1,11 @@ Changelog ========= -1.4.5 (Feburary 27, 2026) +1.5.0 (Unreleased) +------------------------- +- Enh #174: Update for HumHub 1.19 + +1.4.5 (February 27, 2026) ------------------------- - Fix #173: Alignment on large screens and Enterprise Theme diff --git a/migrations/m150709_151858_namespace.php b/migrations/m150709_151858_namespace.php index 58d0d3cb..09423509 100644 --- a/migrations/m150709_151858_namespace.php +++ b/migrations/m150709_151858_namespace.php @@ -1,15 +1,24 @@ renameClass('Poll', humhub\modules\polls\models\Poll::className()); - $this->update('activity', ['class' => 'humhub\modules\content\activities\ContentCreated', 'module' => 'content'], ['class' => 'PollCreated']); - $this->update('activity', ['class' => 'humhub\modules\polls\activities\NewVote', 'module' => 'polls'], ['class' => 'PollAnswered']); + $this->renameClass('Poll', Poll::class); + + $table = $this->db->getTableSchema('activity'); + $columnsContentCreated = ['class' => 'humhub\modules\content\activities\ContentCreated']; + $columnsNewVote = ['class' => 'humhub\modules\polls\activities\NewVote']; + if (isset($table->columns['module'])) { + $columnsContentCreated['module'] = 'content'; + $columnsNewVote['module'] = 'polls'; + } + + $this->update('activity', $columnsContentCreated, ['class' => 'PollCreated']); + $this->update('activity', $columnsNewVote, ['class' => 'PollAnswered']); } public function down() diff --git a/models/Poll.php b/models/Poll.php index e43ce5ab..6b05b9bb 100644 --- a/models/Poll.php +++ b/models/Poll.php @@ -2,9 +2,10 @@ namespace humhub\modules\polls\models; +use humhub\modules\activity\services\ActivityManager; use humhub\modules\content\widgets\richtext\RichText; +use humhub\modules\polls\activities\NewVote; use humhub\modules\polls\permissions\CreatePoll; -use humhub\modules\search\interfaces\Searchable; use humhub\modules\content\components\ContentActiveRecord; use Yii; @@ -32,7 +33,7 @@ * @since 0.5 * @author Luke */ -class Poll extends ContentActiveRecord implements Searchable +class Poll extends ContentActiveRecord { public const MIN_REQUIRED_ANSWERS = 2; public const SCENARIO_CREATE = 'create'; @@ -309,10 +310,7 @@ public function vote($votes = []) } if ($voted && !$this->anonymous) { - $activity = new \humhub\modules\polls\activities\NewVote(); - $activity->source = $this; - $activity->originator = Yii::$app->user->getIdentity(); - $activity->create(); + ActivityManager::dispatch(NewVote::class, $this); } return $voted; diff --git a/module.json b/module.json index b99eed71..82eaa80f 100644 --- a/module.json +++ b/module.json @@ -3,10 +3,9 @@ "name": "Polls", "description": "Easily create polls, streamline decision-making, and harness the power of voting.", "keywords": ["poll", "voting", "decision making"], - "version": "1.4.5", + "version": "1.5.0", "humhub": { - "minVersion": "1.18.1", - "maxVersion": "1.18" + "minVersion": "1.19" }, "homepage": "https://github.com/humhub/polls", "authors": [ diff --git a/widgets/views/closeButton.php b/widgets/views/closeButton.php index dc3f2b34..6d4b4d53 100644 --- a/widgets/views/closeButton.php +++ b/widgets/views/closeButton.php @@ -1,15 +1,18 @@ +
  • - closed) : ?> - - - - - - - - - - + closed + ? Link::to(Yii::t('PollsModule.base', 'Reopen Poll')) + ->action('close', $poll->content->container->createUrl('/polls/poll/open', ['id' => $poll->id]), '[data-poll=' . $poll->id . ']') + ->icon('check') + ->cssClass('dropdown-item') + : Link::to(Yii::t('PollsModule.base', 'Close Poll')) + ->action('close', $poll->content->container->createUrl('/polls/poll/close', ['id' => $poll->id]), '[data-poll=' . $poll->id . ']') + ->icon('times') + ->cssClass('dropdown-item') ?>
  • diff --git a/widgets/views/resetButton.php b/widgets/views/resetButton.php index d5198ffb..e0bf3959 100644 --- a/widgets/views/resetButton.php +++ b/widgets/views/resetButton.php @@ -1,8 +1,13 @@ +
  • - - - - + action('reset', $poll->content->container->createUrl('/polls/poll/answer-reset', ['pollId' => $poll->id]), '[data-poll=' . $poll->id . ']') + ->icon('undo') + ->cssClass('dropdown-item') ?>