diff --git a/fet2020/static/img/favicons/android-chrome-192x192.png b/fet2020/static/img/favicons/android-chrome-192x192.png new file mode 100644 index 00000000..46d48388 Binary files /dev/null and b/fet2020/static/img/favicons/android-chrome-192x192.png differ diff --git a/fet2020/static/img/favicons/android-chrome-512x512.png b/fet2020/static/img/favicons/android-chrome-512x512.png new file mode 100644 index 00000000..52444f71 Binary files /dev/null and b/fet2020/static/img/favicons/android-chrome-512x512.png differ diff --git a/fet2020/static/img/favicons/apple-touch-icon.png b/fet2020/static/img/favicons/apple-touch-icon.png new file mode 100644 index 00000000..5ea55af4 Binary files /dev/null and b/fet2020/static/img/favicons/apple-touch-icon.png differ diff --git a/fet2020/static/img/favicons/browserconfig.xml b/fet2020/static/img/favicons/browserconfig.xml new file mode 100644 index 00000000..d416bc53 --- /dev/null +++ b/fet2020/static/img/favicons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #ffffff + + + diff --git a/fet2020/static/img/favicons/favicon-16x16.png b/fet2020/static/img/favicons/favicon-16x16.png new file mode 100644 index 00000000..6995483d Binary files /dev/null and b/fet2020/static/img/favicons/favicon-16x16.png differ diff --git a/fet2020/static/img/favicons/favicon-32x32.png b/fet2020/static/img/favicons/favicon-32x32.png new file mode 100644 index 00000000..7b5dfea0 Binary files /dev/null and b/fet2020/static/img/favicons/favicon-32x32.png differ diff --git a/fet2020/static/img/favicons/favicon.ico b/fet2020/static/img/favicons/favicon.ico new file mode 100644 index 00000000..7ce657e4 Binary files /dev/null and b/fet2020/static/img/favicons/favicon.ico differ diff --git a/fet2020/static/img/favicons/mstile-150x150.png b/fet2020/static/img/favicons/mstile-150x150.png new file mode 100644 index 00000000..b75c95ce Binary files /dev/null and b/fet2020/static/img/favicons/mstile-150x150.png differ diff --git a/fet2020/static/img/favicons/safari-pinned-tab.svg b/fet2020/static/img/favicons/safari-pinned-tab.svg new file mode 100644 index 00000000..99798dd8 --- /dev/null +++ b/fet2020/static/img/favicons/safari-pinned-tab.svg @@ -0,0 +1,193 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + + + + + + + + + + + + + diff --git a/fet2020/static/img/favicons/site.webmanifest b/fet2020/static/img/favicons/site.webmanifest new file mode 100644 index 00000000..5b4ac899 --- /dev/null +++ b/fet2020/static/img/favicons/site.webmanifest @@ -0,0 +1,18 @@ +{ + "name": "FET", + "short_name": "FET", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff" +} diff --git a/fet2020/static/responsive-hidden-nav.js b/fet2020/static/responsive-hidden-nav.js deleted file mode 100644 index b40d3118..00000000 --- a/fet2020/static/responsive-hidden-nav.js +++ /dev/null @@ -1,162 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./src/assets/js/building-blocks/responsive-hidden-nav.js": -/*!****************************************************************!*\ - !*** ./src/assets/js/building-blocks/responsive-hidden-nav.js ***! - \****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var $topBar = $('[data-responsive-hidden-nav]'); -var $button = $('[data-responsive-hidden-nav] .responsive-hidden-button'); -var $visibleLinks = $('[data-responsive-hidden-nav] .visible-links'); -var $hiddenLinks = $('[data-responsive-hidden-nav] .hidden-links'); -var responsiveBreaks = []; // Empty List (Array) on initialization - -function updateTopBar() { - var availableSpace = $button.hasClass('hidden') ? $topBar.width() : $topBar.width() - $button.width() - 30; // Calculation of available space on the logic of whether button has the class `hidden` or not - - if ($visibleLinks.width() > availableSpace) { - // Logic when visible list is overflowing the nav - responsiveBreaks.push($visibleLinks.width()); // Record the width of the list - - $visibleLinks.children().last().prependTo($hiddenLinks); // Move item to the hidden list - // Show the resonsive hidden button - - if ($button.hasClass('hidden')) { - $button.removeClass('hidden'); - } - } else { - // Logic when visible list is not overflowing the nav - if (availableSpace > responsiveBreaks[responsiveBreaks.length - 1]) { - // Logic when there is space for another item in the nav - $hiddenLinks.children().first().appendTo($visibleLinks); - responsiveBreaks.pop(); // Move the item to the visible list - } // Hide the resonsive hidden button if list is empty - - - if (responsiveBreaks.length < 1) { - $button.addClass('hidden'); - $hiddenLinks.addClass('hidden'); - } - } - - $button.attr("count", responsiveBreaks.length); // Keeping counter updated - - if ($visibleLinks.width() > availableSpace) { - // Occur again if the visible list is still overflowing the nav - updateTopBar(); - } -} // Window listeners - - -$(window).resize(function () { - updateTopBar(); -}); -$button.on('click', function () { - $hiddenLinks.toggleClass('hidden'); -}); -updateTopBar(); - -/***/ }), - -/***/ 0: -/*!**********************************************************************!*\ - !*** multi ./src/assets/js/building-blocks/responsive-hidden-nav.js ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! /srv/test_1/myproject/src/assets/js/building-blocks/responsive-hidden-nav.js */"./src/assets/js/building-blocks/responsive-hidden-nav.js"); - - -/***/ }) - -/******/ }); -//# sourceMappingURL=responsive-hidden-nav.js.map \ No newline at end of file diff --git a/fet2020/static/responsive-hidden-nav.js.map b/fet2020/static/responsive-hidden-nav.js.map deleted file mode 100644 index 84955c2e..00000000 --- a/fet2020/static/responsive-hidden-nav.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/js/building-blocks/responsive-hidden-nav.js"],"names":["$topBar","$","$button","$visibleLinks","$hiddenLinks","responsiveBreaks","updateTopBar","availableSpace","hasClass","width","push","children","last","prependTo","removeClass","length","first","appendTo","pop","addClass","attr","window","resize","on","toggleClass"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA,IAAIA,OAAO,GAAGC,CAAC,CAAC,8BAAD,CAAf;AACA,IAAIC,OAAO,GAAGD,CAAC,CAAC,wDAAD,CAAf;AACA,IAAIE,aAAa,GAAGF,CAAC,CAAC,6CAAD,CAArB;AACA,IAAIG,YAAY,GAAGH,CAAC,CAAC,4CAAD,CAApB;AAEA,IAAII,gBAAgB,GAAG,EAAvB,C,CAA2B;;AAE3B,SAASC,YAAT,GAAwB;AAEtB,MAAIC,cAAc,GAAGL,OAAO,CAACM,QAAR,CAAiB,QAAjB,IAA6BR,OAAO,CAACS,KAAR,EAA7B,GAA+CT,OAAO,CAACS,KAAR,KAAkBP,OAAO,CAACO,KAAR,EAAlB,GAAoC,EAAxG,CAFsB,CAEsF;;AAE5G,MAAGN,aAAa,CAACM,KAAd,KAAwBF,cAA3B,EAA2C;AAAE;AAE3CF,oBAAgB,CAACK,IAAjB,CAAsBP,aAAa,CAACM,KAAd,EAAtB,EAFyC,CAEK;;AAC9CN,iBAAa,CAACQ,QAAd,GAAyBC,IAAzB,GAAgCC,SAAhC,CAA0CT,YAA1C,EAHyC,CAGgB;AAEzD;;AACA,QAAGF,OAAO,CAACM,QAAR,CAAiB,QAAjB,CAAH,EAA+B;AAC7BN,aAAO,CAACY,WAAR,CAAoB,QAApB;AACD;AAEF,GAVD,MAUO;AAAE;AAEP,QAAGP,cAAc,GAAGF,gBAAgB,CAACA,gBAAgB,CAACU,MAAjB,GAAwB,CAAzB,CAApC,EAAiE;AAAE;AACjEX,kBAAY,CAACO,QAAb,GAAwBK,KAAxB,GAAgCC,QAAhC,CAAyCd,aAAzC;AACAE,sBAAgB,CAACa,GAAjB,GAF+D,CAEvC;AACzB,KALI,CAOL;;;AACA,QAAGb,gBAAgB,CAACU,MAAjB,GAA0B,CAA7B,EAAgC;AAC9Bb,aAAO,CAACiB,QAAR,CAAiB,QAAjB;AACAf,kBAAY,CAACe,QAAb,CAAsB,QAAtB;AACD;AACF;;AAEDjB,SAAO,CAACkB,IAAR,CAAa,OAAb,EAAsBf,gBAAgB,CAACU,MAAvC,EA5BsB,CA4B0B;;AAEhD,MAAGZ,aAAa,CAACM,KAAd,KAAwBF,cAA3B,EAA2C;AAAE;AAC3CD,gBAAY;AACb;AACF,C,CAED;;;AACAL,CAAC,CAACoB,MAAD,CAAD,CAAUC,MAAV,CAAiB,YAAW;AACxBhB,cAAY;AACf,CAFD;AAGAJ,OAAO,CAACqB,EAAR,CAAW,OAAX,EAAoB,YAAW;AAC7BnB,cAAY,CAACoB,WAAb,CAAyB,QAAzB;AACD,CAFD;AAGAlB,YAAY,G","file":"responsive-hidden-nav.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","var $topBar = $('[data-responsive-hidden-nav]');\nvar $button = $('[data-responsive-hidden-nav] .responsive-hidden-button');\nvar $visibleLinks = $('[data-responsive-hidden-nav] .visible-links');\nvar $hiddenLinks = $('[data-responsive-hidden-nav] .hidden-links');\n\nvar responsiveBreaks = []; // Empty List (Array) on initialization\n\nfunction updateTopBar() {\n \n var availableSpace = $button.hasClass('hidden') ? $topBar.width() : $topBar.width() - $button.width() - 30; // Calculation of available space on the logic of whether button has the class `hidden` or not\n\n if($visibleLinks.width() > availableSpace) { // Logic when visible list is overflowing the nav\n \n responsiveBreaks.push($visibleLinks.width()); // Record the width of the list\n $visibleLinks.children().last().prependTo($hiddenLinks); // Move item to the hidden list\n \n // Show the resonsive hidden button\n if($button.hasClass('hidden')) {\n $button.removeClass('hidden');\n }\n \n } else { // Logic when visible list is not overflowing the nav\n \n if(availableSpace > responsiveBreaks[responsiveBreaks.length-1]) { // Logic when there is space for another item in the nav\n $hiddenLinks.children().first().appendTo($visibleLinks);\n responsiveBreaks.pop(); // Move the item to the visible list\n }\n \n // Hide the resonsive hidden button if list is empty\n if(responsiveBreaks.length < 1) {\n $button.addClass('hidden');\n $hiddenLinks.addClass('hidden');\n }\n }\n\n $button.attr(\"count\", responsiveBreaks.length); // Keeping counter updated\n\n if($visibleLinks.width() > availableSpace) { // Occur again if the visible list is still overflowing the nav\n updateTopBar();\n }\n}\n\n// Window listeners\n$(window).resize(function() {\n updateTopBar();\n});\n$button.on('click', function() {\n $hiddenLinks.toggleClass('hidden');\n});\nupdateTopBar();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/fet2020/templates/base.html b/fet2020/templates/base.html index e18986a9..be33f161 100644 --- a/fet2020/templates/base.html +++ b/fet2020/templates/base.html @@ -16,16 +16,19 @@ - - - - - - + + + + + + + + - - + + +