BusyBird
view release on metacpan or search on metacpan
share/www/templates/timeline.tx view on Meta::CPAN
<form class="navbar-form navbar-right bb-nav-controls-container">
<div class="btn-group">
<a id="bb-new-statuses-button" class="btn btn-default disabled" href="#">
New <span class="bb-new-statuses-num badge">0</span>
</a>
</div>
<div class="btn-group">
<a id="bb-button-incriment-threshold-level" class="btn btn-default" href="#">
<span class="glyphicon glyphicon-zoom-out"></span>
</a>
<a id="bb-button-decriment-threshold-level" class="btn btn-default" href="#">
<span class="glyphicon glyphicon-zoom-in"></span>
</a>
</div>
<span class="label label-default">Lv. <span class="bb-threshold-level">0</span></span>
<a class="btn btn-default" href="<: $post_button_url :>" target="_blank"><span class="glyphicon glyphicon-pencil"></span></a>
</form>
<div class="hidden-xs" id="bb-spinner-placeholder"></div>
<p id="bb-indicator" class="navbar-text navbar-right hidden-xs">
<span id="bb-msg"></span>
</p>
<!-- a menu collapsed in small screens -->
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-left">
<li class="active"><a><: $timeline_name :></a></li>
<li class="visible-xs"><a href="<: path('/') :>"><span class="glyphicon glyphicon-arrow-left"></span> Top</a></li>
</ul>
</div>
: } ## around navbar_content
: around head -> {
<style type="text/css">
.bb-status-extension-pane { display: <: $attached_image_show_default_bool ? "block" : "none" :>; }
.bb-status-extension-<: $attached_image_show_default_bool ? "expander" : "collapser" :> { display: none; }
.bb-status-extension-pane img { max-height: <: $attached_image_max_height :>px; }
</style>
: } ## around head
: around content -> {
<div class="container-fluid">
<div class="row">
<div class="hidden-xs col-sm-2 col-md-2">
<div class="sidebar-nav sidebar-nav-fixed" id="sidebar">
<div class="panel-group" id="bb-statuses-summary"></div>
</div>
</div>
<div class="col-xs-12 col-sm-10 col-md-8 bb-main-column">
<ul id="statuses" class="list-unstyled">
</ul>
<div id="main-footer">
<a class="btn btn-primary" id="bb-more-button" data-loading-text="Loading..." href="#">More...</a>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="<: path('/static/jquery.js') :>"></script>
<script type="text/javascript" src="<: path('/static/bootstrap/js/bootstrap.min.js') :>"></script>
<script type="text/javascript" src="<: path('/static/spin.js') :>"></script>
<script type="text/javascript" src="<: path('/static/q.js') :>"></script>
<script type="text/javascript" src="<: path('/static/busybird.js') :>"></script>
<script type="text/javascript" src="<: path('/static/timeline.js') :>"></script>
<script type="text/javascript">
"use strict";
(function() {
var showMaxReached = function(is_loading_max_reached, message_banner) {
if(!is_loading_max_reached) return;
var message = "Too many unread statuses. Some of them are not loaded here.";
message_banner.show(message, "warn");
console.warn(message);
};
var NewStatusesButton = function(args) {
// @params: args.unackedCountsPoller, args.spinner, args.statusContainer,
// args.messageBanner, args.statusesSummary, args.notification
var self = this;
var poller = args.unackedCountsPoller;
self.enabled = false;
self.now_loading = false;
self.spinner = args.spinner;
self.status_container = args.statusContainer;
self.message_banner = args.messageBanner;
self.statuses_summary = args.statusesSummary;
self.notification = args.notification;
self.cur_unacked_counts = {total: 0};
self._setEnabled(false);
$("#bb-new-statuses-button").on("click", function() { self.trigger(); return false; });
poller.listenOnChange(function(unacked_counts) {
self.cur_unacked_counts = unacked_counts;
self._updateUnackedCountView(true);
});
self.status_container.listenOnThresholdLevelChanged(function() {
self._updateUnackedCountView(false);
});
};
NewStatusesButton.prototype = {
_setEnabled: function(new_state) {
var self = this;
var $button = $("#bb-new-statuses-button");
self.enabled = new_state;
if(self.enabled) {
$button.removeClass("disabled");
}else {
$button.addClass("disabled");
}
},
_updateUnackedCountView: function(show_web_notification) {
var self = this;
var timeline_name = self.status_container.getTimelineName();
var visible_count = self._visibleUnackedCount();
if(show_web_notification && visible_count > 0) {
self.notification.showWebNotification({
message: visible_count + ' new statuses!', tag: timeline_name + '/notifyNewStatuses',
subtitle: timeline_name,
onClick: function() { self.trigger(); }
});
}
self.notification.setFaviconAlert(visible_count > 0);
self.notification.setTitleNotification(visible_count > 0 ? '('+ visible_count +')' : null);
( run in 0.802 second using v1.01-cache-2.11-cpan-5511b514fd6 )