Page MenuHomePhabricator

D10113.id24319.diff
No OneTemporary

D10113.id24319.diff

diff --git a/src/applications/notification/controller/PhabricatorNotificationClearController.php b/src/applications/notification/controller/PhabricatorNotificationClearController.php
--- a/src/applications/notification/controller/PhabricatorNotificationClearController.php
+++ b/src/applications/notification/controller/PhabricatorNotificationClearController.php
@@ -5,6 +5,7 @@
public function processRequest() {
$request = $this->getRequest();
+ $chrono_key = $request->getInt('chronoKey');
$user = $request->getUser();
if ($request->isDialogFormPost()) {
@@ -13,9 +14,10 @@
queryfx(
$table->establishConnection('w'),
'UPDATE %T SET hasViewed = 1 WHERE
- userPHID = %s AND hasViewed = 0',
+ userPHID = %s AND hasViewed = 0 and chronologicalKey < %d ',
$table->getTableName(),
- $user->getPHID());
+ $user->getPHID(),
+ $chrono_key);
return id(new AphrontReloadResponse())
->setURI('/notification/');
@@ -24,6 +26,7 @@
$dialog = new AphrontDialogView();
$dialog->setUser($user);
$dialog->setTitle('Really mark all notifications as read?');
+ $dialog->addHiddenInput('chronoKey', $chrono_key);
$is_serious = PhabricatorEnv::getEnvConfig('phabricator.serious-business');
if ($is_serious) {
diff --git a/src/applications/notification/controller/PhabricatorNotificationListController.php b/src/applications/notification/controller/PhabricatorNotificationListController.php
--- a/src/applications/notification/controller/PhabricatorNotificationListController.php
+++ b/src/applications/notification/controller/PhabricatorNotificationListController.php
@@ -45,10 +45,24 @@
$builder = new PhabricatorNotificationBuilder($notifications);
$builder->setUser($user);
$view = $builder->buildView()->render();
+ $clear_uri = id(new PhutilURI('/notification/clear/'))
+ ->setQueryParam(
+ 'chronoKey',
+ head($notifications)->getChronologicalKey());
+ $image = id(new PHUIIconView())
+ ->setIconFont('fa-eye-slash');
+ $button = id(new PHUIButtonView())
+ ->setTag('a')
+ ->setColor(PHUIButtonView::SIMPLE)
+ ->setHref((string) $clear_uri)
+ ->addSigil('workflow')
+ ->setIcon($image)
+ ->setText(pht('Mark All Read'));
} else {
$view = phutil_tag_div(
'phabricator-notification no-notifications',
$no_data);
+ $button = null;
}
$view = id(new PHUIBoxView())
@@ -56,19 +70,11 @@
->addClass('phabricator-notification-list')
->appendChild($view);
- $image = id(new PHUIIconView())
- ->setIconFont('fa-eye-slash');
- $button = id(new PHUIButtonView())
- ->setTag('a')
- ->setColor(PHUIButtonView::SIMPLE)
- ->setHref('/notification/clear/')
- ->addSigil('workflow')
- ->setIcon($image)
- ->setText(pht('Mark All Read'));
-
$notif_header = id(new PHUIHeaderView())
- ->setHeader($header)
- ->addActionLink($button);
+ ->setHeader($header);
+ if ($button) {
+ $notif_header->addActionLink($button);
+ }
$box = id(new PHUIObjectBoxView())
->setHeader($notif_header)
diff --git a/src/applications/notification/controller/PhabricatorNotificationPanelController.php b/src/applications/notification/controller/PhabricatorNotificationPanelController.php
--- a/src/applications/notification/controller/PhabricatorNotificationPanelController.php
+++ b/src/applications/notification/controller/PhabricatorNotificationPanelController.php
@@ -19,10 +19,26 @@
$builder = new PhabricatorNotificationBuilder($stories);
$notifications_view = $builder->buildView();
$content = $notifications_view->render();
+ $clear_uri = id(new PhutilURI('/notification/clear/'))
+ ->setQueryParam(
+ 'chronoKey',
+ head($stories)->getChronologicalKey());
+ $clear_ui = javelin_tag(
+ 'a',
+ array(
+ 'sigil' => 'workflow',
+ 'href' => $clear_uri,
+ 'class' => 'phabricator-notification-clear-all'
+ ),
+ pht('Mark All Read'));
+ $spacer = " \xC2\xB7 ";
+
} else {
$content = phutil_tag_div(
'phabricator-notification no-notifications',
pht('You have no notifications.'));
+ $clear_ui = '';
+ $spacer = '';
}
$notifications_link = phutil_tag(
@@ -50,15 +66,8 @@
'<div class="phabricator-notification-view-all">%s %s %s</div>',
$header,
$content,
- javelin_tag(
- 'a',
- array(
- 'sigil' => 'workflow',
- 'href' => '/notification/clear/',
- 'class' => 'phabricator-notification-clear-all'
- ),
- pht('Mark All Read')),
- " \xC2\xB7 ",
+ $clear_ui,
+ $spacer,
phutil_tag(
'a',
array(

File Metadata

Mime Type
text/plain
Expires
Wed, Jun 18, 7:20 AM (12 h, 12 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
8140369
Default Alt Text
D10113.id24319.diff (4 KB)

Event Timeline