BryanDavis has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/351164 )
Change subject: Update for Tool Labs membership application and processing ...................................................................... Update for Tool Labs membership application and processing * Add css for sortable table columns * Add js for notifications badge Bug: T162508 Change-Id: I865d96558cc163315c9ddb798532cd9458125f43 --- A css/site.67fdda51f6d5.css M css/site.css A js/site.461860621f96.js M js/site.js A notifications/notify.a77b5d2fdd2d.js A notifications/notify.js M staticfiles.json 7 files changed, 346 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/labs/striker/staticfiles refs/changes/64/351164/1 diff --git a/css/site.67fdda51f6d5.css b/css/site.67fdda51f6d5.css new file mode 100644 index 0000000..f74bf6c --- /dev/null +++ b/css/site.67fdda51f6d5.css @@ -0,0 +1,146 @@ +.container { + width:auto; + max-width:1024px; + padding:0 1em; +} +.navbar-static-top { + margin-bottom:1em; +} +.navbar > .container .navbar-brand, +.navbar > .container-fluid .navbar-brand { + padding:10px; +} +.user-image-large { + height:80px; + width:80px; +} +.user-image-small { + height:28px; + width:28px; +} +.login-panel { + margin-top:25%; +} +form.hidden-labels label { + height:1px; + left:-10000px; + overflow:hidden; + position:absolute; + top:auto; + width:1px; +} +form.hidden-labels label.no-hide { + height:initial; + left:initial; + overflow:initial; + position:initial; + top:initial; + width:initial; +} +.tools-maintainers, +.tools-diffusion-repos { + -webkit-column-gap:2em; + -moz-column-gap:2em; + column-gap:2em; + -webkit-column-width:30ch; + -moz-column-width:30ch; + column-width:30ch; +} +.panel-pager .panel-title { + padding-top:.5em; +} +.panel-pager .panel-footer { + text-align:center; +} +.panel-pager .pagination { + margin:0; +} +.text-2x { + font-size:2em; +} +.text-5x { + font-size:5em; +} +.footer { + margin-top:2em; +} +.panel-body-warning { + background-color:#fcf8e3; + color:#8a6d3b; +} +.panel-success > .panel-heading > .text-muted { + color:inherit; +} +.margin-zero { + margin:0; +} +/* From http://stackoverflow.com/a/31967401/8171 */ +[data-toggle="collapse"].collapsed .if-not-collapsed { + display: none; +} +[data-toggle="collapse"]:not(.collapsed) .if-collapsed { + display: none; +} +.pubkey-view { + font-family:monospace; + font-size:smaller; + white-space:pre-wrap; + word-break:break-all; +} +#password-strength-meter { + font-size:smaller; + margin-bottom:15px; + margin-top:-10px; + overflow:hidden; + width:100%; +} +.password-strength-cell { + background-color:#eee; + color:#fff; + border:1px solid #ccc; + display:inline-block; + margin-left:1px; + text-align:center; +} +.hide { + display:none; +} +.zxcvbn-1 { + background-color:#d9534f; + border-color:#d43f3a; +} +.zxcvbn-2 { + background-color:#f0ad4e; + border-color:#eea236; +} +.zxcvbn-3 { + background-color:#5bc0de; + border-color:#46b8da; +} +.zxcvbn-4 { + background-color:#5cb85c; + border-color:#4cae4c; +} +.sortable { + color:inherit; + display:block; + position:relative; + padding-right:10px; +} +.sorted-asc:after, +.sorted-desc:after { + content:' '; + position:absolute; + width:10px; + height:10px; + right:0; + border:8px solid transparent; +} +.sorted-asc:after { + border-bottom-color:#333; + bottom:25%; +} +.sorted-desc:after { + border-top-color:#333; + top:25%; +} diff --git a/css/site.css b/css/site.css index e34ce18..f74bf6c 100644 --- a/css/site.css +++ b/css/site.css @@ -121,3 +121,26 @@ background-color:#5cb85c; border-color:#4cae4c; } +.sortable { + color:inherit; + display:block; + position:relative; + padding-right:10px; +} +.sorted-asc:after, +.sorted-desc:after { + content:' '; + position:absolute; + width:10px; + height:10px; + right:0; + border:8px solid transparent; +} +.sorted-asc:after { + border-bottom-color:#333; + bottom:25%; +} +.sorted-desc:after { + border-top-color:#333; + top:25%; +} diff --git a/js/site.461860621f96.js b/js/site.461860621f96.js new file mode 100644 index 0000000..5d029c7 --- /dev/null +++ b/js/site.461860621f96.js @@ -0,0 +1,13 @@ +/*! + * Copyright (c) 2016 Wikimedia Foundation and contributors. + * Licensed under the GPL v3+ license + */ +$(function () { + "use strict"; + $('[data-toggle="tooltip"]').tooltip(); + + notify_badge_id='live_notify_badge'; + notify_refresh_period=60000; + notify_api_url='/notifications/api/unread_count/'; + register_notifier(fill_notification_badge); +}) diff --git a/js/site.js b/js/site.js index 9c0e03a..5d029c7 100644 --- a/js/site.js +++ b/js/site.js @@ -5,4 +5,9 @@ $(function () { "use strict"; $('[data-toggle="tooltip"]').tooltip(); + + notify_badge_id='live_notify_badge'; + notify_refresh_period=60000; + notify_api_url='/notifications/api/unread_count/'; + register_notifier(fill_notification_badge); }) diff --git a/notifications/notify.a77b5d2fdd2d.js b/notifications/notify.a77b5d2fdd2d.js new file mode 100644 index 0000000..7e464a5 --- /dev/null +++ b/notifications/notify.a77b5d2fdd2d.js @@ -0,0 +1,78 @@ +var notify_badge_id; +var notify_menu_id; +var notify_api_url; +var notify_fetch_count; +var notify_unread_url; +var notify_mark_all_unread_url; +var notify_refresh_period = 15000; +var consecutive_misfires = 0; +var registered_functions = []; + +function fill_notification_badge(data) { + var badge = document.getElementById(notify_badge_id); + if (badge) { + badge.innerHTML = data.unread_count; + } +} + +function fill_notification_list(data) { + var menu = document.getElementById(notify_menu_id); + if (menu) { + menu.innerHTML = ""; + for (var i=0; i < data.unread_list.length; i++) { + var item = data.unread_list[i]; + console.log(item) + var message = "" + if(typeof item.actor !== 'undefined'){ + message = item.actor; + } + if(typeof item.verb !== 'undefined'){ + message = message + " " + item.verb; + } + if(typeof item.target !== 'undefined'){ + message = message + " " + item.target; + } + if(typeof item.timestamp !== 'undefined'){ + message = message + " " + item.timestamp; + } + + menu.innerHTML = menu.innerHTML + "<li>"+ message + "</li>"; + } + } +} + +function register_notifier(func) { + registered_functions.push(func); +} + +function fetch_api_data() { + if (registered_functions.length > 0) { + //only fetch data if a function is setup + var r = new XMLHttpRequest(); + r.open("GET", notify_api_url+'?max='+notify_fetch_count, true); + r.onreadystatechange = function () { + if (r.readyState != 4 || r.status != 200) { + consecutive_misfires++; + } + else { + consecutive_misfires = 0; + for (var i=0; i < registered_functions.length; i++) { + var func = registered_functions[i]; + func(JSON.parse(r.responseText)); + } + } + } + r.send(); + } + if (consecutive_misfires < 10) { + setTimeout(fetch_api_data,notify_refresh_period); + } else { + var badge = document.getElementById(notify_badge_id); + if (badge) { + badge.innerHTML = "!"; + badge.title = "Connection lost!" + } + } +} + +setTimeout(fetch_api_data,1000); \ No newline at end of file diff --git a/notifications/notify.js b/notifications/notify.js new file mode 100644 index 0000000..7e464a5 --- /dev/null +++ b/notifications/notify.js @@ -0,0 +1,78 @@ +var notify_badge_id; +var notify_menu_id; +var notify_api_url; +var notify_fetch_count; +var notify_unread_url; +var notify_mark_all_unread_url; +var notify_refresh_period = 15000; +var consecutive_misfires = 0; +var registered_functions = []; + +function fill_notification_badge(data) { + var badge = document.getElementById(notify_badge_id); + if (badge) { + badge.innerHTML = data.unread_count; + } +} + +function fill_notification_list(data) { + var menu = document.getElementById(notify_menu_id); + if (menu) { + menu.innerHTML = ""; + for (var i=0; i < data.unread_list.length; i++) { + var item = data.unread_list[i]; + console.log(item) + var message = "" + if(typeof item.actor !== 'undefined'){ + message = item.actor; + } + if(typeof item.verb !== 'undefined'){ + message = message + " " + item.verb; + } + if(typeof item.target !== 'undefined'){ + message = message + " " + item.target; + } + if(typeof item.timestamp !== 'undefined'){ + message = message + " " + item.timestamp; + } + + menu.innerHTML = menu.innerHTML + "<li>"+ message + "</li>"; + } + } +} + +function register_notifier(func) { + registered_functions.push(func); +} + +function fetch_api_data() { + if (registered_functions.length > 0) { + //only fetch data if a function is setup + var r = new XMLHttpRequest(); + r.open("GET", notify_api_url+'?max='+notify_fetch_count, true); + r.onreadystatechange = function () { + if (r.readyState != 4 || r.status != 200) { + consecutive_misfires++; + } + else { + consecutive_misfires = 0; + for (var i=0; i < registered_functions.length; i++) { + var func = registered_functions[i]; + func(JSON.parse(r.responseText)); + } + } + } + r.send(); + } + if (consecutive_misfires < 10) { + setTimeout(fetch_api_data,notify_refresh_period); + } else { + var badge = document.getElementById(notify_badge_id); + if (badge) { + badge.innerHTML = "!"; + badge.title = "Connection lost!" + } + } +} + +setTimeout(fetch_api_data,1000); \ No newline at end of file diff --git a/staticfiles.json b/staticfiles.json index d302ba4..187cd62 100644 --- a/staticfiles.json +++ b/staticfiles.json @@ -68,7 +68,7 @@ "css/bootstrap.min.css.map": "css/bootstrap.min.css.a2e87599b1de.map", "css/font-awesome.css": "css/font-awesome.c223583b49df.css", "css/font-awesome.min.css": "css/font-awesome.min.008e0bb5ebfa.css", - "css/site.css": "css/site.d7a04844a910.css", + "css/site.css": "css/site.67fdda51f6d5.css", "fonts/FontAwesome.otf": "fonts/FontAwesome.0d2717cd5d85.otf", "fonts/fontawesome-webfont.eot": "fonts/fontawesome-webfont.674f50d287a8.eot", "fonts/fontawesome-webfont.eot?v=4.7.0": "fonts/fontawesome-webfont.674f50d287a8.eot?v=4.7.0", @@ -98,8 +98,9 @@ "js/parsley.min.js": "js/parsley.min.9423fbd825cc.js", "js/parsley.min.js.map": "js/parsley.min.js.5b8729e5acc1.map", "js/password-strength.js": "js/password-strength.70c410d81a0c.js", - "js/site.js": "js/site.99b043ec732b.js", + "js/site.js": "js/site.461860621f96.js", "js/zxcvbn.min.js": "js/zxcvbn.min.91785aac00c6.js", + "notifications/notify.js": "notifications/notify.a77b5d2fdd2d.js", "robots.txt": "robots.f71d20196d4c.txt" }, "version": "1.0" -- To view, visit https://gerrit.wikimedia.org/r/351164 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I865d96558cc163315c9ddb798532cd9458125f43 Gerrit-PatchSet: 1 Gerrit-Project: labs/striker/staticfiles Gerrit-Branch: master Gerrit-Owner: BryanDavis <bda...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits