News tracking

This commit is contained in:
Guangcong Luo
2015-11-30 02:04:08 -05:00
parent c24d06da20
commit b718a335a2
4 changed files with 40 additions and 2 deletions

View File

@@ -91,9 +91,9 @@ ga('send', 'pageview');
<div class="activitymenu">
<div class="pmbox">
<div class="pm-window news-embed" data-newsid="<!-- newsid -->">
<h3><button class="closebutton" tabindex="-1"><i class="fa fa-times-circle"></i></button><button class="minimizebutton" tabindex="-1"><i class="fa fa-minus-circle"></i></button>Latest News</h3>
<h3><button class="closebutton" tabindex="-1"><i class="fa fa-times-circle"></i></button><button class="minimizebutton" tabindex="-1"><i class="fa fa-minus-circle"></i></button>News</h3>
<div class="pm-log" style="max-height:none">
<div style="font-size:9pt;padding:1px 10px"><!-- news --></div>
<!-- news -->
</div>
</div>
</div>

View File

@@ -67,6 +67,25 @@
this.updateFormats();
app.user.on('saveteams', this.updateTeams, this);
// news
// (created during page load)
var self = this;
Storage.whenPrefsLoaded(function () {
var newsid = Number(Storage.prefs('newsid'));
if (!newsid) return;
var $news = this.$('.news-embed');
var $newsEntries = $news.find('.newsentry');
var hasUnread = false;
for (var i = 0; i < $newsEntries.length; i++) {
if (Number($newsEntries.eq(i).data('newsid')) > newsid) {
hasUnread = true;
$newsEntries.eq(i).addClass('unread');
}
}
if (!hasUnread) self.minimizePM($news);
});
},
addPseudoPM: function (options) {
@@ -234,6 +253,8 @@
e.preventDefault();
e.stopPropagation();
$pmWindow = $(e.currentTarget).closest('.pm-window');
} else {
$pmWindow = e;
}
if (!$pmWindow) {
return;
@@ -376,6 +397,7 @@
}
app.dismissPopups();
var $target = $(e.currentTarget);
var newsid = $target.data('newsid');
if ($target.data('minimized')) {
this.minimizePM(e);
} else if ($(e.target).closest('h3').length) {
@@ -385,6 +407,11 @@
e.stopPropagation();
this.minimizePM(e);
return;
} else if (newsid) {
if (Storage.prefs('newsid', newsid)) {
$target.find('.unread').removeClass('unread');
}
return;
}
$target.find('textarea[name=message]').focus();
}

View File

@@ -45,10 +45,13 @@ Storage.prefs = function (prop, value, save) {
// set preference
if (value === null) {
delete this.prefs.data[prop];
} else if (this.prefs.data[prop] === value) {
return false; // no need to save
} else {
this.prefs.data[prop] = value;
}
if (save !== false) this.prefs.save();
return true;
};
Storage.prefs.data = {};

View File

@@ -769,6 +769,14 @@ p.or:after {
.challenge p {
margin: 4px 0;
}
.newsentry {
font-size: 9pt;
padding: 1px 10px;
border-bottom: 1px solid #AAAAAA;
}
.unread {
background: rgba(255,240,130,0.33);
}
.tiny-layout .leftmenu,
.tiny-layout .rightmenu,