mirror of
https://github.com/zulip/zulip.git
synced 2025-11-10 00:46:03 +00:00
In-Browser Notifications
Some browsers don't support desktop notifications. Some people haven't allowed permissions for humbug to have desktop notifications. This is a poor man's attempt at desktop notifications. We are adding the bootstrap-notify package (http://nijikokun.github.io/bootstrap-notify/) Resolves Trac #1336. (imported from commit 6a54f7d1875e765dabd32d94ada8ebe4474a3d71)
This commit is contained in:
@@ -259,6 +259,7 @@ PIPELINE_CSS = {
|
||||
},
|
||||
'app': {
|
||||
'source_filenames': (
|
||||
'third/bootstrap-notify/css/bootstrap-notify.css',
|
||||
'third/spectrum/spectrum.css',
|
||||
'styles/zephyr.css',
|
||||
'styles/pygments.css',
|
||||
@@ -309,6 +310,7 @@ PIPELINE_JS = {
|
||||
},
|
||||
'app': {
|
||||
'source_filenames': [
|
||||
'third/bootstrap-notify/js/bootstrap-notify.js',
|
||||
'third/jquery-validate/jquery.validate.js',
|
||||
'third/jquery-form/jquery.form.js',
|
||||
'third/jquery-highlight/jquery.highlight.js',
|
||||
|
||||
@@ -59,5 +59,6 @@ var page_params = {{ page_params }};
|
||||
{% include "zephyr/invite_user.html" %}
|
||||
{% include "zephyr/bankruptcy.html" %}
|
||||
{% include "zephyr/logout.html" %}
|
||||
<div class='notifications top-right'></div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -113,8 +113,9 @@ exports.window_has_focus = function () {
|
||||
return window_has_focus;
|
||||
};
|
||||
|
||||
function process_desktop_notification(message) {
|
||||
function process_notification(notification) {
|
||||
var i, notification_object, key;
|
||||
var message = notification.message;
|
||||
var title = message.sender_full_name;
|
||||
var content = $('<div/>').html(message.content).text();
|
||||
var other_recipients;
|
||||
@@ -166,7 +167,7 @@ function process_desktop_notification(message) {
|
||||
title += " (to " + message.stream + " > " + message.subject + ")";
|
||||
}
|
||||
|
||||
if (window.bridge === undefined) {
|
||||
if (window.bridge === undefined && notification.in_browser === undefined) {
|
||||
var icon_url = ui.small_avatar_url(message);
|
||||
notice_memory[key] = {
|
||||
obj: window.webkitNotifications.createNotification(
|
||||
@@ -182,6 +183,14 @@ function process_desktop_notification(message) {
|
||||
delete notice_memory[key];
|
||||
};
|
||||
notification_object.show();
|
||||
} else if (notification.in_browser === true) {
|
||||
var notification_html = $(templates.render('notification', {gravatar_url: ui.small_avatar_url(message),
|
||||
sender_fullname: message.sender_full_name,
|
||||
content: content}));
|
||||
$('.top-right').notify({
|
||||
message: { html: notification_html },
|
||||
fadeOut: {enabled:true, delay: 4000}
|
||||
}).show();
|
||||
} else {
|
||||
// Shunt the message along to the desktop client
|
||||
window.bridge.desktopNotification(title, content);
|
||||
@@ -218,7 +227,10 @@ exports.received_messages = function (messages) {
|
||||
}
|
||||
if (page_params.desktop_notifications_enabled &&
|
||||
browser_desktop_notifications_on()) {
|
||||
process_desktop_notification(message);
|
||||
process_notification({message: message});
|
||||
}
|
||||
else {
|
||||
process_notification({message: message, in_browser: true});
|
||||
}
|
||||
if (page_params.sounds_enabled && supports_sound) {
|
||||
if (window.bridge !== undefined) {
|
||||
|
||||
14
zephyr/static/templates/notification.handlebars
Normal file
14
zephyr/static/templates/notification.handlebars
Normal file
@@ -0,0 +1,14 @@
|
||||
{{! Content of in-browser notifications }}
|
||||
<div>
|
||||
<div class="notifications-gravatar">
|
||||
<img src="{{gravatar_url}}" />
|
||||
</div>
|
||||
<div class="notifications-content">
|
||||
<strong>
|
||||
{{sender_fullname}}:
|
||||
</strong>
|
||||
<br />
|
||||
{{content}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
172
zephyr/static/third/bootstrap-notify/css/bootstrap-notify.css
vendored
Normal file
172
zephyr/static/third/bootstrap-notify/css/bootstrap-notify.css
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
/*!
|
||||
The "bootstrap-notify" Software from "Goodybag, Inc." is:
|
||||
Copyright 2013 Nijiko Yonskai @nijikokun
|
||||
Copyright 2012 Goodybag, Inc.
|
||||
and is provided
|
||||
under the following license (the bootstrap-notify software has been modified):
|
||||
|
||||
Software from "Bootstrap" is Copyright (c) 2012 Twitter, Inc. and is provided
|
||||
under the following license (the Bootstrap software has been modified):
|
||||
--
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and
|
||||
distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
||||
owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
||||
that control, are controlled by, or are under common control with that
|
||||
entity. For the purposes of this definition, "control" means (i) the power,
|
||||
direct or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or
|
||||
more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising
|
||||
permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including
|
||||
but not limited to software source code, documentation source, and
|
||||
configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation or
|
||||
translation of a Source form, including but not limited to compiled object
|
||||
code, generated documentation, and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form,
|
||||
made available under the License, as indicated by a copyright notice that is
|
||||
included in or attached to the work (an example is provided in the Appendix
|
||||
below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form, that
|
||||
is based on (or derived from) the Work and for which the editorial revisions,
|
||||
annotations, elaborations, or other modifications represent, as a whole, an
|
||||
original work of authorship. For the purposes of this License, Derivative Works
|
||||
shall not include works that remain separable from, or merely link (or bind by
|
||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original
|
||||
version of the Work and any modifications or additions to that Work or
|
||||
Derivative Works thereof, that is intentionally submitted to Licensor for
|
||||
inclusion in the Work by the copyright owner or by an individual or Legal
|
||||
Entity authorized to submit on behalf of the copyright owner. For the purposes
|
||||
of this definition, "submitted" means any form of electronic, verbal, or
|
||||
written communication sent to the Licensor or its representatives, including
|
||||
but not limited to communication on electronic mailing lists, source code
|
||||
control systems, and issue tracking systems that are managed by, or on behalf
|
||||
of, the Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise designated in
|
||||
writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
||||
of whom a Contribution has been received by Licensor and subsequently
|
||||
incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide,
|
||||
non-exclusive, no-charge, royalty-free, irrevocable copyright license to
|
||||
reproduce, prepare Derivative Works of, publicly display, publicly perform,
|
||||
sublicense, and distribute the Work and such Derivative Works in Source or
|
||||
Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide,
|
||||
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this
|
||||
section) patent license to make, have made, use, offer to sell, sell, import,
|
||||
and otherwise transfer the Work, where such license applies only to those
|
||||
patent claims licensable by such Contributor that are necessarily infringed by
|
||||
their Contribution(s) alone or by combination of their Contribution(s) with the
|
||||
Work to which such Contribution(s) was submitted. If You institute patent
|
||||
litigation against any entity (including a cross-claim or counterclaim in a
|
||||
lawsuit) alleging that the Work or a Contribution incorporated within the Work
|
||||
constitutes direct or contributory patent infringement, then any patent
|
||||
licenses granted to You under this License for that Work shall terminate as of
|
||||
the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or
|
||||
Derivative Works thereof in any medium, with or without modifications, and in
|
||||
Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
You must give any other recipients of the Work or Derivative Works a copy of
|
||||
this License; and You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and You must retain, in the Source form of
|
||||
any Derivative Works that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work, excluding those notices
|
||||
that do not pertain to any part of the Derivative Works; and If the Work
|
||||
includes a "NOTICE" text file as part of its distribution, then any Derivative
|
||||
Works that You distribute must include a readable copy of the attribution
|
||||
notices contained within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one of the following
|
||||
places: within a NOTICE text file distributed as part of the Derivative Works;
|
||||
within the Source form or documentation, if provided along with the Derivative
|
||||
Works; or, within a display generated by the Derivative Works, if and wherever
|
||||
such third-party notices normally appear. The contents of the NOTICE file are
|
||||
for informational purposes only and do not modify the License. You may add Your
|
||||
own attribution notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided that such
|
||||
additional attribution notices cannot be construed as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide
|
||||
additional or different license terms and conditions for use, reproduction, or
|
||||
distribution of Your modifications, or for any such Derivative Works as a
|
||||
whole, provided Your use, reproduction, and distribution of the Work otherwise
|
||||
complies with the conditions stated in this License. 5. Submission of
|
||||
Contributions. Unless You explicitly state otherwise, any Contribution
|
||||
intentionally submitted for inclusion in the Work by You to the Licensor shall
|
||||
be under the terms and conditions of this License, without any additional terms
|
||||
or conditions. Notwithstanding the above, nothing herein shall supersede or
|
||||
modify the terms of any separate license agreement you may have executed with
|
||||
Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names,
|
||||
trademarks, service marks, or product names of the Licensor, except as required
|
||||
for reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
|
||||
writing, Licensor provides the Work (and each Contributor provides its
|
||||
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied, including, without limitation, any warranties
|
||||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any risks
|
||||
associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether in
|
||||
tort (including negligence), contract, or otherwise, unless required by
|
||||
applicable law (such as deliberate and grossly negligent acts) or agreed to in
|
||||
writing, shall any Contributor be liable to You for damages, including any
|
||||
direct, indirect, special, incidental, or consequential damages of any
|
||||
character arising as a result of this License or out of the use or inability to
|
||||
use the Work (including but not limited to damages for loss of goodwill, work
|
||||
stoppage, computer failure or malfunction, or any and all other commercial
|
||||
damages or losses), even if such Contributor has been advised of the
|
||||
possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or
|
||||
Derivative Works thereof, You may choose to offer, and charge a fee for,
|
||||
acceptance of support, warranty, indemnity, or other liability obligations
|
||||
and/or rights consistent with this License. However, in accepting such
|
||||
obligations, You may act only on Your own behalf and on Your sole
|
||||
responsibility, not on behalf of any other Contributor, and only if You agree
|
||||
to indemnify, defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason of your
|
||||
accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
--
|
||||
*/
|
||||
|
||||
|
||||
.notifications{position:fixed;}.notifications.top-right{right:25px;top:60px;z-index:9980;width:200px;}
|
||||
.notifications.top-left{left:10px;top:25px;}
|
||||
.notifications.bottom-left{left:10px;bottom:25px;}
|
||||
.notifications.bottom-right{right:10px;bottom:25px;}
|
||||
.notifications>div{position:relative;z-index:9999;margin:5px 0px;}
|
||||
.notifications.center{top:48%;left:0;width:100%;}.notifications.center>div{margin:5px auto;width:20%;text-align:center;}
|
||||
.notifications-gravatar{display:inline-block;position:absolute;top:10px;left:10px}
|
||||
.notifications-content{margin-left:40px;}
|
||||
.fade.alert-success{color:#000;background-color:#FFF;border-color:green;}
|
||||
251
zephyr/static/third/bootstrap-notify/js/bootstrap-notify.js
vendored
Normal file
251
zephyr/static/third/bootstrap-notify/js/bootstrap-notify.js
vendored
Normal file
@@ -0,0 +1,251 @@
|
||||
/** @preserve
|
||||
The "bootstrap-notify" Software from "Goodybag, Inc." is:
|
||||
Copyright 2013 Nijiko Yonskai @nijikokun
|
||||
Copyright 2012 Goodybag, Inc.
|
||||
and is provided
|
||||
under the following license (the bootstrap-notify software has been modified):
|
||||
--
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and
|
||||
distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
||||
owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
||||
that control, are controlled by, or are under common control with that
|
||||
entity. For the purposes of this definition, "control" means (i) the power,
|
||||
direct or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or
|
||||
more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising
|
||||
permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including
|
||||
but not limited to software source code, documentation source, and
|
||||
configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation or
|
||||
translation of a Source form, including but not limited to compiled object
|
||||
code, generated documentation, and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form,
|
||||
made available under the License, as indicated by a copyright notice that is
|
||||
included in or attached to the work (an example is provided in the Appendix
|
||||
below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form, that
|
||||
is based on (or derived from) the Work and for which the editorial revisions,
|
||||
annotations, elaborations, or other modifications represent, as a whole, an
|
||||
original work of authorship. For the purposes of this License, Derivative Works
|
||||
shall not include works that remain separable from, or merely link (or bind by
|
||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original
|
||||
version of the Work and any modifications or additions to that Work or
|
||||
Derivative Works thereof, that is intentionally submitted to Licensor for
|
||||
inclusion in the Work by the copyright owner or by an individual or Legal
|
||||
Entity authorized to submit on behalf of the copyright owner. For the purposes
|
||||
of this definition, "submitted" means any form of electronic, verbal, or
|
||||
written communication sent to the Licensor or its representatives, including
|
||||
but not limited to communication on electronic mailing lists, source code
|
||||
control systems, and issue tracking systems that are managed by, or on behalf
|
||||
of, the Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise designated in
|
||||
writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
||||
of whom a Contribution has been received by Licensor and subsequently
|
||||
incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide,
|
||||
non-exclusive, no-charge, royalty-free, irrevocable copyright license to
|
||||
reproduce, prepare Derivative Works of, publicly display, publicly perform,
|
||||
sublicense, and distribute the Work and such Derivative Works in Source or
|
||||
Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide,
|
||||
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this
|
||||
section) patent license to make, have made, use, offer to sell, sell, import,
|
||||
and otherwise transfer the Work, where such license applies only to those
|
||||
patent claims licensable by such Contributor that are necessarily infringed by
|
||||
their Contribution(s) alone or by combination of their Contribution(s) with the
|
||||
Work to which such Contribution(s) was submitted. If You institute patent
|
||||
litigation against any entity (including a cross-claim or counterclaim in a
|
||||
lawsuit) alleging that the Work or a Contribution incorporated within the Work
|
||||
constitutes direct or contributory patent infringement, then any patent
|
||||
licenses granted to You under this License for that Work shall terminate as of
|
||||
the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or
|
||||
Derivative Works thereof in any medium, with or without modifications, and in
|
||||
Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
You must give any other recipients of the Work or Derivative Works a copy of
|
||||
this License; and You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and You must retain, in the Source form of
|
||||
any Derivative Works that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work, excluding those notices
|
||||
that do not pertain to any part of the Derivative Works; and If the Work
|
||||
includes a "NOTICE" text file as part of its distribution, then any Derivative
|
||||
Works that You distribute must include a readable copy of the attribution
|
||||
notices contained within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one of the following
|
||||
places: within a NOTICE text file distributed as part of the Derivative Works;
|
||||
within the Source form or documentation, if provided along with the Derivative
|
||||
Works; or, within a display generated by the Derivative Works, if and wherever
|
||||
such third-party notices normally appear. The contents of the NOTICE file are
|
||||
for informational purposes only and do not modify the License. You may add Your
|
||||
own attribution notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided that such
|
||||
additional attribution notices cannot be construed as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide
|
||||
additional or different license terms and conditions for use, reproduction, or
|
||||
distribution of Your modifications, or for any such Derivative Works as a
|
||||
whole, provided Your use, reproduction, and distribution of the Work otherwise
|
||||
complies with the conditions stated in this License. 5. Submission of
|
||||
Contributions. Unless You explicitly state otherwise, any Contribution
|
||||
intentionally submitted for inclusion in the Work by You to the Licensor shall
|
||||
be under the terms and conditions of this License, without any additional terms
|
||||
or conditions. Notwithstanding the above, nothing herein shall supersede or
|
||||
modify the terms of any separate license agreement you may have executed with
|
||||
Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names,
|
||||
trademarks, service marks, or product names of the Licensor, except as required
|
||||
for reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
|
||||
writing, Licensor provides the Work (and each Contributor provides its
|
||||
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied, including, without limitation, any warranties
|
||||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any risks
|
||||
associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether in
|
||||
tort (including negligence), contract, or otherwise, unless required by
|
||||
applicable law (such as deliberate and grossly negligent acts) or agreed to in
|
||||
writing, shall any Contributor be liable to You for damages, including any
|
||||
direct, indirect, special, incidental, or consequential damages of any
|
||||
character arising as a result of this License or out of the use or inability to
|
||||
use the Work (including but not limited to damages for loss of goodwill, work
|
||||
stoppage, computer failure or malfunction, or any and all other commercial
|
||||
damages or losses), even if such Contributor has been advised of the
|
||||
possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or
|
||||
Derivative Works thereof, You may choose to offer, and charge a fee for,
|
||||
acceptance of support, warranty, indemnity, or other liability obligations
|
||||
and/or rights consistent with this License. However, in accepting such
|
||||
obligations, You may act only on Your own behalf and on Your sole
|
||||
responsibility, not on behalf of any other Contributor, and only if You agree
|
||||
to indemnify, defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason of your
|
||||
accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
--
|
||||
*/
|
||||
|
||||
/**
|
||||
* bootstrap-notify.js v1.0.0
|
||||
* --
|
||||
* Copyright 2012 Nijiko Yonskai <nijikokun@gmail.com>
|
||||
* Copyright 2012 Goodybag, Inc.
|
||||
* --
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
(function ($) {
|
||||
var Notification = function (element, options) {
|
||||
// Element collection
|
||||
this.$element = $(element);
|
||||
this.$note = $('<div class="alert"></div>');
|
||||
this.options = $.extend(true, {}, $.fn.notify.defaults, options);
|
||||
this._link = null;
|
||||
|
||||
// Setup from options
|
||||
if (this.options.transition)
|
||||
if (this.options.transition === 'fade')
|
||||
this.$note.addClass('in').addClass(this.options.transition);
|
||||
else this.$note.addClass(this.options.transition);
|
||||
else this.$note.addClass('fade').addClass('in');
|
||||
|
||||
if (this.options.type)
|
||||
this.$note.addClass('alert-' + this.options.type);
|
||||
else this.$note.addClass('alert-success');
|
||||
|
||||
if (this.options.message)
|
||||
if (typeof this.options.message === 'string')
|
||||
this.$note.html(this.options.message);
|
||||
else if (typeof this.options.message === 'object')
|
||||
if (this.options.message.html)
|
||||
this.$note.html(this.options.message.html);
|
||||
else if (this.options.message.text)
|
||||
this.$note.text(this.options.message.text);
|
||||
|
||||
if (this.options.closable)
|
||||
this._link = $('<a class="close pull-right">×</a>'),
|
||||
$(this._link).on('click', $.proxy(Notification.onClose, this)),
|
||||
this.$note.prepend(this._link);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
Notification.onClose = function () {
|
||||
this.options.onClose();
|
||||
$(this.$note).remove();
|
||||
this.options.onClosed();
|
||||
};
|
||||
|
||||
Notification.prototype.show = function () {
|
||||
if (this.options.fadeOut.enabled)
|
||||
this.$note.delay(this.options.fadeOut.delay || 3000).fadeOut('slow', $.proxy(Notification.onClose, this));
|
||||
|
||||
this.$element.append(this.$note);
|
||||
this.$note.alert();
|
||||
};
|
||||
|
||||
Notification.prototype.hide = function () {
|
||||
if (this.options.fadeOut.enabled)
|
||||
this.$note.delay(this.options.fadeOut.delay || 3000).fadeOut('slow', $.proxy(Notification.onClose, this));
|
||||
else Notification.onClose.call(this);
|
||||
};
|
||||
|
||||
$.fn.notify = function (options) {
|
||||
return new Notification(this, options);
|
||||
};
|
||||
|
||||
$.fn.notify.defaults = {
|
||||
type: 'success',
|
||||
closable: true,
|
||||
transition: 'fade',
|
||||
fadeOut: {
|
||||
enabled: true,
|
||||
delay: 3000
|
||||
},
|
||||
message: null,
|
||||
onClose: function () {},
|
||||
onClosed: function () {}
|
||||
}
|
||||
})(window.jQuery);
|
||||
Reference in New Issue
Block a user