#69: download des émissions uploadées #73
@ -24,7 +24,8 @@ class SoundTrackInline(TrackInline):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class SoundInline(admin.TabularInline):
 | 
					class SoundInline(admin.TabularInline):
 | 
				
			||||||
    model = Sound
 | 
					    model = Sound
 | 
				
			||||||
    fields = ['type', 'name', 'audio', 'duration', 'is_good_quality', 'is_public']
 | 
					    fields = ['type', 'name', 'audio', 'duration', 'is_good_quality', 'is_public',
 | 
				
			||||||
 | 
					              'is_downloadable']
 | 
				
			||||||
    readonly_fields = ['type', 'audio', 'duration', 'is_good_quality']
 | 
					    readonly_fields = ['type', 'audio', 'duration', 'is_good_quality']
 | 
				
			||||||
    extra = 0
 | 
					    extra = 0
 | 
				
			||||||
    max_num = 0
 | 
					    max_num = 0
 | 
				
			||||||
@ -42,14 +43,15 @@ class SoundAdmin(SortableAdminBase, admin.ModelAdmin):
 | 
				
			|||||||
    fields = None
 | 
					    fields = None
 | 
				
			||||||
    list_display = ['id', 'name', 'related',
 | 
					    list_display = ['id', 'name', 'related',
 | 
				
			||||||
                    'type', 'duration', 'is_public', 'is_good_quality',
 | 
					                    'type', 'duration', 'is_public', 'is_good_quality',
 | 
				
			||||||
                    'audio']
 | 
					                    'is_downloadable', 'audio']
 | 
				
			||||||
    list_filter = ('type', 'is_good_quality', 'is_public')
 | 
					    list_filter = ('type', 'is_good_quality', 'is_public')
 | 
				
			||||||
    list_editable = ['name', 'type', 'is_public']
 | 
					    list_editable = ['name', 'type', 'is_public', 'is_downloadable']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    search_fields = ['name', 'program__title']
 | 
					    search_fields = ['name', 'program__title']
 | 
				
			||||||
    fieldsets = [
 | 
					    fieldsets = [
 | 
				
			||||||
        (None, {'fields': ['name', 'file', 'type', 'program', 'episode']}),
 | 
					        (None, {'fields': ['name', 'file', 'type', 'program', 'episode']}),
 | 
				
			||||||
        (None, {'fields': ['duration', 'is_public', 'is_good_quality', 'mtime']}),
 | 
					        (None, {'fields': ['duration', 'is_public', 'is_downloadable',
 | 
				
			||||||
 | 
					                           'is_good_quality', 'mtime']}),
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
    readonly_fields = ('file', 'duration',)
 | 
					    readonly_fields = ('file', 'duration',)
 | 
				
			||||||
    inlines = [SoundTrackInline]
 | 
					    inlines = [SoundTrackInline]
 | 
				
			||||||
 | 
				
			|||||||
@ -42,6 +42,10 @@ class SoundQuerySet(models.QuerySet):
 | 
				
			|||||||
        """ Return sounds available as podcasts """
 | 
					        """ Return sounds available as podcasts """
 | 
				
			||||||
        return self.filter(is_public=True)
 | 
					        return self.filter(is_public=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def downloadable(self):
 | 
				
			||||||
 | 
					        """ Return sounds available as podcasts """
 | 
				
			||||||
 | 
					        return self.filter(is_downloadable=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def archive(self):
 | 
					    def archive(self):
 | 
				
			||||||
        """ Return sounds that are archives """
 | 
					        """ Return sounds that are archives """
 | 
				
			||||||
        return self.filter(type=Sound.TYPE_ARCHIVE)
 | 
					        return self.filter(type=Sound.TYPE_ARCHIVE)
 | 
				
			||||||
@ -127,7 +131,12 @@ class Sound(models.Model):
 | 
				
			|||||||
        blank=True, null=True
 | 
					        blank=True, null=True
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    is_public = models.BooleanField(
 | 
					    is_public = models.BooleanField(
 | 
				
			||||||
        _('public'), help_text=_('if it can be podcasted from the server'),
 | 
					        _('public'), help_text=_('whether it is publicly available as podcast'),
 | 
				
			||||||
 | 
					        default=False,
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    is_downloadable = models.BooleanField(
 | 
				
			||||||
 | 
					        _('downloadable'),
 | 
				
			||||||
 | 
					        help_text=_('whether it can be publicly downloaded by visitors (sound must be public)'),
 | 
				
			||||||
        default=False,
 | 
					        default=False,
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -149,6 +158,8 @@ class Sound(models.Model):
 | 
				
			|||||||
            self.program = self.episode.program
 | 
					            self.program = self.episode.program
 | 
				
			||||||
        if check:
 | 
					        if check:
 | 
				
			||||||
            self.check_on_file()
 | 
					            self.check_on_file()
 | 
				
			||||||
 | 
					        if not self.is_public:
 | 
				
			||||||
 | 
					            self.is_downloadable = False
 | 
				
			||||||
        self.__check_name()
 | 
					        self.__check_name()
 | 
				
			||||||
        super().save(*args, **kwargs)
 | 
					        super().save(*args, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -67,5 +67,5 @@ class PodcastSerializer(serializers.ModelSerializer):
 | 
				
			|||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
        model = Sound
 | 
					        model = Sound
 | 
				
			||||||
        fields = ['pk', 'name', 'program', 'episode', 'type',
 | 
					        fields = ['pk', 'name', 'program', 'episode', 'type',
 | 
				
			||||||
                  'duration', 'mtime', 'url']
 | 
					                  'duration', 'mtime', 'url', 'is_downloadable']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1,24 @@
 | 
				
			|||||||
.admin .navbar .navbar-brand{padding-right:1em}.admin .navbar .navbar-brand img{margin:0 .4em;margin-top:.3em;max-height:3em}.admin .breadcrumbs{margin-bottom:1em}.admin .results>#result_list{width:100%;margin:1em 0}.admin ul.menu-list li{list-style-type:none}.admin .submit-row a.deletelink{height:35px}
 | 
					/*!*************************************************************************************************************************************************************************************************************************************!*\
 | 
				
			||||||
 | 
					  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-24.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-24.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-24.use[3]!./src/assets/admin.scss ***!
 | 
				
			||||||
 | 
					  \*************************************************************************************************************************************************************************************************************************************/
 | 
				
			||||||
 | 
					.admin .navbar .navbar-brand {
 | 
				
			||||||
 | 
					  padding-right: 1em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.admin .navbar .navbar-brand img {
 | 
				
			||||||
 | 
					  margin: 0em 0.4em;
 | 
				
			||||||
 | 
					  margin-top: 0.3em;
 | 
				
			||||||
 | 
					  max-height: 3em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.admin .breadcrumbs {
 | 
				
			||||||
 | 
					  margin-bottom: 1em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.admin .results > #result_list {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  margin: 1em 0em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.admin ul.menu-list li {
 | 
				
			||||||
 | 
					  list-style-type: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.admin .submit-row a.deletelink {
 | 
				
			||||||
 | 
					  height: 35px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -1,2 +1,213 @@
 | 
				
			|||||||
(function(){"use strict";var n={5159:function(n,t,e){e(9651),e(8880);var o=e(9643),r=e(1784);const i={...o.Z,components:{...o.Z.components,...r.S}};window.App=i},1784:function(n,t,e){e.d(t,{S:function(){return v}});var o=e(4156),r=e(1847),i=e(6294),u=e(5189),c=e(2530),f=e(7520),a=e(7079),s=e(2673),l=e(8833),p=e(5127);t["Z"]={AAutocomplete:o.Z,AEpisode:r.Z,AList:i.Z,APage:u.Z,APlayer:c.C,APlaylist:f.Z,AProgress:a.Z,ASoundItem:s.Z};const v={AStatistics:l.Z,AStreamer:p.Z}}},t={};function e(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return n[o](i,i.exports,e),i.exports}e.m=n,function(){var n=[];e.O=function(t,o,r,i){if(!o){var u=1/0;for(s=0;s<n.length;s++){o=n[s][0],r=n[s][1],i=n[s][2];for(var c=!0,f=0;f<o.length;f++)(!1&i||u>=i)&&Object.keys(e.O).every((function(n){return e.O[n](o[f])}))?o.splice(f--,1):(c=!1,i<u&&(u=i));if(c){n.splice(s--,1);var a=r();void 0!==a&&(t=a)}}return t}i=i||0;for(var s=n.length;s>0&&n[s-1][2]>i;s--)n[s]=n[s-1];n[s]=[o,r,i]}}(),function(){e.d=function(n,t){for(var o in t)e.o(t,o)&&!e.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:t[o]})}}(),function(){e.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"===typeof window)return window}}()}(),function(){e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)}}(),function(){e.r=function(n){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})}}(),function(){var n={328:0};e.O.j=function(t){return 0===n[t]};var t=function(t,o){var r,i,u=o[0],c=o[1],f=o[2],a=0;if(u.some((function(t){return 0!==n[t]}))){for(r in c)e.o(c,r)&&(e.m[r]=c[r]);if(f)var s=f(e)}for(t&&t(o);a<u.length;a++)i=u[a],e.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return e.O(s)},o=self["webpackChunkaircox_assets"]=self["webpackChunkaircox_assets"]||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))}();var o=e.O(void 0,[998,64],(function(){return e(5159)}));o=e.O(o)})();
 | 
					/*
 | 
				
			||||||
//# sourceMappingURL=admin.js.map
 | 
					 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 | 
				
			||||||
 | 
					 * This devtool is neither made for production nor for readable output files.
 | 
				
			||||||
 | 
					 * It uses "eval()" calls to create a separate source file in the browser devtools.
 | 
				
			||||||
 | 
					 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 | 
				
			||||||
 | 
					 * or disable the default devtool with "devtool: false".
 | 
				
			||||||
 | 
					 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					/******/ (function() { // webpackBootstrap
 | 
				
			||||||
 | 
					/******/ 	"use strict";
 | 
				
			||||||
 | 
					/******/ 	var __webpack_modules__ = ({
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ "./src/admin.js":
 | 
				
			||||||
 | 
					/*!**********************!*\
 | 
				
			||||||
 | 
					  !*** ./src/admin.js ***!
 | 
				
			||||||
 | 
					  \**********************/
 | 
				
			||||||
 | 
					/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _assets_styles_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./assets/styles.scss */ \"./src/assets/styles.scss\");\n/* harmony import */ var _assets_admin_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assets/admin.scss */ \"./src/assets/admin.scss\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./src/index.js\");\n/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app */ \"./src/app.js\");\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components */ \"./src/components/index.js\");\n\n\n\n\n\nconst AdminApp = { ..._app__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n  components: { ..._app__WEBPACK_IMPORTED_MODULE_3__[\"default\"].components,\n    ..._components__WEBPACK_IMPORTED_MODULE_4__.admin\n  }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (AdminApp);\nwindow.App = AdminApp;\n\n//# sourceURL=webpack://aircox-assets/./src/admin.js?");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ }),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ "./src/assets/admin.scss":
 | 
				
			||||||
 | 
					/*!*******************************!*\
 | 
				
			||||||
 | 
					  !*** ./src/assets/admin.scss ***!
 | 
				
			||||||
 | 
					  \*******************************/
 | 
				
			||||||
 | 
					/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n//# sourceURL=webpack://aircox-assets/./src/assets/admin.scss?");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/******/ 	});
 | 
				
			||||||
 | 
					/************************************************************************/
 | 
				
			||||||
 | 
					/******/ 	// The module cache
 | 
				
			||||||
 | 
					/******/ 	var __webpack_module_cache__ = {};
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	// The require function
 | 
				
			||||||
 | 
					/******/ 	function __webpack_require__(moduleId) {
 | 
				
			||||||
 | 
					/******/ 		// Check if module is in cache
 | 
				
			||||||
 | 
					/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
 | 
				
			||||||
 | 
					/******/ 		if (cachedModule !== undefined) {
 | 
				
			||||||
 | 
					/******/ 			return cachedModule.exports;
 | 
				
			||||||
 | 
					/******/ 		}
 | 
				
			||||||
 | 
					/******/ 		// Create a new module (and put it into the cache)
 | 
				
			||||||
 | 
					/******/ 		var module = __webpack_module_cache__[moduleId] = {
 | 
				
			||||||
 | 
					/******/ 			// no module.id needed
 | 
				
			||||||
 | 
					/******/ 			// no module.loaded needed
 | 
				
			||||||
 | 
					/******/ 			exports: {}
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 		// Execute the module function
 | 
				
			||||||
 | 
					/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 		// Return the exports of the module
 | 
				
			||||||
 | 
					/******/ 		return module.exports;
 | 
				
			||||||
 | 
					/******/ 	}
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	// expose the modules object (__webpack_modules__)
 | 
				
			||||||
 | 
					/******/ 	__webpack_require__.m = __webpack_modules__;
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/************************************************************************/
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/chunk loaded */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		var deferred = [];
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.O = function(result, chunkIds, fn, priority) {
 | 
				
			||||||
 | 
					/******/ 			if(chunkIds) {
 | 
				
			||||||
 | 
					/******/ 				priority = priority || 0;
 | 
				
			||||||
 | 
					/******/ 				for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
 | 
				
			||||||
 | 
					/******/ 				deferred[i] = [chunkIds, fn, priority];
 | 
				
			||||||
 | 
					/******/ 				return;
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 			var notFulfilled = Infinity;
 | 
				
			||||||
 | 
					/******/ 			for (var i = 0; i < deferred.length; i++) {
 | 
				
			||||||
 | 
					/******/ 				var chunkIds = deferred[i][0];
 | 
				
			||||||
 | 
					/******/ 				var fn = deferred[i][1];
 | 
				
			||||||
 | 
					/******/ 				var priority = deferred[i][2];
 | 
				
			||||||
 | 
					/******/ 				var fulfilled = true;
 | 
				
			||||||
 | 
					/******/ 				for (var j = 0; j < chunkIds.length; j++) {
 | 
				
			||||||
 | 
					/******/ 					if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {
 | 
				
			||||||
 | 
					/******/ 						chunkIds.splice(j--, 1);
 | 
				
			||||||
 | 
					/******/ 					} else {
 | 
				
			||||||
 | 
					/******/ 						fulfilled = false;
 | 
				
			||||||
 | 
					/******/ 						if(priority < notFulfilled) notFulfilled = priority;
 | 
				
			||||||
 | 
					/******/ 					}
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 				if(fulfilled) {
 | 
				
			||||||
 | 
					/******/ 					deferred.splice(i--, 1)
 | 
				
			||||||
 | 
					/******/ 					var r = fn();
 | 
				
			||||||
 | 
					/******/ 					if (r !== undefined) result = r;
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 			return result;
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/compat get default export */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		// getDefaultExport function for compatibility with non-harmony modules
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.n = function(module) {
 | 
				
			||||||
 | 
					/******/ 			var getter = module && module.__esModule ?
 | 
				
			||||||
 | 
					/******/ 				function() { return module['default']; } :
 | 
				
			||||||
 | 
					/******/ 				function() { return module; };
 | 
				
			||||||
 | 
					/******/ 			__webpack_require__.d(getter, { a: getter });
 | 
				
			||||||
 | 
					/******/ 			return getter;
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/define property getters */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		// define getter functions for harmony exports
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.d = function(exports, definition) {
 | 
				
			||||||
 | 
					/******/ 			for(var key in definition) {
 | 
				
			||||||
 | 
					/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
 | 
				
			||||||
 | 
					/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/global */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.g = (function() {
 | 
				
			||||||
 | 
					/******/ 			if (typeof globalThis === 'object') return globalThis;
 | 
				
			||||||
 | 
					/******/ 			try {
 | 
				
			||||||
 | 
					/******/ 				return this || new Function('return this')();
 | 
				
			||||||
 | 
					/******/ 			} catch (e) {
 | 
				
			||||||
 | 
					/******/ 				if (typeof window === 'object') return window;
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 		})();
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/make namespace object */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		// 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 });
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/jsonp chunk loading */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		// no baseURI
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// object to store loaded and loading chunks
 | 
				
			||||||
 | 
					/******/ 		// undefined = chunk not loaded, null = chunk preloaded/prefetched
 | 
				
			||||||
 | 
					/******/ 		// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
 | 
				
			||||||
 | 
					/******/ 		var installedChunks = {
 | 
				
			||||||
 | 
					/******/ 			"admin": 0
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no chunk on demand loading
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no prefetching
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no preloaded
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no HMR
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no HMR manifest
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// install a JSONP callback for chunk loading
 | 
				
			||||||
 | 
					/******/ 		var webpackJsonpCallback = function(parentChunkLoadingFunction, data) {
 | 
				
			||||||
 | 
					/******/ 			var chunkIds = data[0];
 | 
				
			||||||
 | 
					/******/ 			var moreModules = data[1];
 | 
				
			||||||
 | 
					/******/ 			var runtime = data[2];
 | 
				
			||||||
 | 
					/******/ 			// add "moreModules" to the modules object,
 | 
				
			||||||
 | 
					/******/ 			// then flag all "chunkIds" as loaded and fire callback
 | 
				
			||||||
 | 
					/******/ 			var moduleId, chunkId, i = 0;
 | 
				
			||||||
 | 
					/******/ 			if(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {
 | 
				
			||||||
 | 
					/******/ 				for(moduleId in moreModules) {
 | 
				
			||||||
 | 
					/******/ 					if(__webpack_require__.o(moreModules, moduleId)) {
 | 
				
			||||||
 | 
					/******/ 						__webpack_require__.m[moduleId] = moreModules[moduleId];
 | 
				
			||||||
 | 
					/******/ 					}
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 				if(runtime) var result = runtime(__webpack_require__);
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 			if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
 | 
				
			||||||
 | 
					/******/ 			for(;i < chunkIds.length; i++) {
 | 
				
			||||||
 | 
					/******/ 				chunkId = chunkIds[i];
 | 
				
			||||||
 | 
					/******/ 				if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
 | 
				
			||||||
 | 
					/******/ 					installedChunks[chunkId][0]();
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 				installedChunks[chunkId] = 0;
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 			return __webpack_require__.O(result);
 | 
				
			||||||
 | 
					/******/ 		}
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		var chunkLoadingGlobal = self["webpackChunkaircox_assets"] = self["webpackChunkaircox_assets"] || [];
 | 
				
			||||||
 | 
					/******/ 		chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
 | 
				
			||||||
 | 
					/******/ 		chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/************************************************************************/
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	// startup
 | 
				
			||||||
 | 
					/******/ 	// Load entry module and return exports
 | 
				
			||||||
 | 
					/******/ 	// This entry module depends on other loaded chunks and execution need to be delayed
 | 
				
			||||||
 | 
					/******/ 	var __webpack_exports__ = __webpack_require__.O(undefined, ["chunk-vendors","chunk-common"], function() { return __webpack_require__("./src/admin.js"); })
 | 
				
			||||||
 | 
					/******/ 	__webpack_exports__ = __webpack_require__.O(__webpack_exports__);
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ })()
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -1,2 +1,203 @@
 | 
				
			|||||||
(function(){"use strict";var n={1784:function(n,t,e){var r=e(4156),o=e(1847),i=e(6294),u=e(5189),f=e(2530),c=e(7520),a=e(7079),s=e(2673),l=e(8833),p=e(5127);t["Z"]={AAutocomplete:r.Z,AEpisode:o.Z,AList:i.Z,APage:u.Z,APlayer:f.C,APlaylist:c.Z,AProgress:a.Z,ASoundItem:s.Z};l.Z,p.Z},5288:function(n,t,e){e(8880);var r=e(9643);window.App=r.Z}},t={};function e(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return n[r](i,i.exports,e),i.exports}e.m=n,function(){var n=[];e.O=function(t,r,o,i){if(!r){var u=1/0;for(s=0;s<n.length;s++){r=n[s][0],o=n[s][1],i=n[s][2];for(var f=!0,c=0;c<r.length;c++)(!1&i||u>=i)&&Object.keys(e.O).every((function(n){return e.O[n](r[c])}))?r.splice(c--,1):(f=!1,i<u&&(u=i));if(f){n.splice(s--,1);var a=o();void 0!==a&&(t=a)}}return t}i=i||0;for(var s=n.length;s>0&&n[s-1][2]>i;s--)n[s]=n[s-1];n[s]=[r,o,i]}}(),function(){e.d=function(n,t){for(var r in t)e.o(t,r)&&!e.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:t[r]})}}(),function(){e.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"===typeof window)return window}}()}(),function(){e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)}}(),function(){e.r=function(n){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})}}(),function(){var n={321:0};e.O.j=function(t){return 0===n[t]};var t=function(t,r){var o,i,u=r[0],f=r[1],c=r[2],a=0;if(u.some((function(t){return 0!==n[t]}))){for(o in f)e.o(f,o)&&(e.m[o]=f[o]);if(c)var s=c(e)}for(t&&t(r);a<u.length;a++)i=u[a],e.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return e.O(s)},r=self["webpackChunkaircox_assets"]=self["webpackChunkaircox_assets"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}();var r=e.O(void 0,[998,64],(function(){return e(5288)}));r=e.O(r)})();
 | 
					/*
 | 
				
			||||||
//# sourceMappingURL=core.js.map
 | 
					 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 | 
				
			||||||
 | 
					 * This devtool is neither made for production nor for readable output files.
 | 
				
			||||||
 | 
					 * It uses "eval()" calls to create a separate source file in the browser devtools.
 | 
				
			||||||
 | 
					 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 | 
				
			||||||
 | 
					 * or disable the default devtool with "devtool: false".
 | 
				
			||||||
 | 
					 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					/******/ (function() { // webpackBootstrap
 | 
				
			||||||
 | 
					/******/ 	"use strict";
 | 
				
			||||||
 | 
					/******/ 	var __webpack_modules__ = ({
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ "./src/core.js":
 | 
				
			||||||
 | 
					/*!*********************!*\
 | 
				
			||||||
 | 
					  !*** ./src/core.js ***!
 | 
				
			||||||
 | 
					  \*********************/
 | 
				
			||||||
 | 
					/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./src/index.js\");\n/* harmony import */ var _app_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app.js */ \"./src/app.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_app_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nwindow.App = _app_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n\n//# sourceURL=webpack://aircox-assets/./src/core.js?");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/******/ 	});
 | 
				
			||||||
 | 
					/************************************************************************/
 | 
				
			||||||
 | 
					/******/ 	// The module cache
 | 
				
			||||||
 | 
					/******/ 	var __webpack_module_cache__ = {};
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	// The require function
 | 
				
			||||||
 | 
					/******/ 	function __webpack_require__(moduleId) {
 | 
				
			||||||
 | 
					/******/ 		// Check if module is in cache
 | 
				
			||||||
 | 
					/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
 | 
				
			||||||
 | 
					/******/ 		if (cachedModule !== undefined) {
 | 
				
			||||||
 | 
					/******/ 			return cachedModule.exports;
 | 
				
			||||||
 | 
					/******/ 		}
 | 
				
			||||||
 | 
					/******/ 		// Create a new module (and put it into the cache)
 | 
				
			||||||
 | 
					/******/ 		var module = __webpack_module_cache__[moduleId] = {
 | 
				
			||||||
 | 
					/******/ 			// no module.id needed
 | 
				
			||||||
 | 
					/******/ 			// no module.loaded needed
 | 
				
			||||||
 | 
					/******/ 			exports: {}
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 		// Execute the module function
 | 
				
			||||||
 | 
					/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 		// Return the exports of the module
 | 
				
			||||||
 | 
					/******/ 		return module.exports;
 | 
				
			||||||
 | 
					/******/ 	}
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	// expose the modules object (__webpack_modules__)
 | 
				
			||||||
 | 
					/******/ 	__webpack_require__.m = __webpack_modules__;
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/************************************************************************/
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/chunk loaded */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		var deferred = [];
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.O = function(result, chunkIds, fn, priority) {
 | 
				
			||||||
 | 
					/******/ 			if(chunkIds) {
 | 
				
			||||||
 | 
					/******/ 				priority = priority || 0;
 | 
				
			||||||
 | 
					/******/ 				for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
 | 
				
			||||||
 | 
					/******/ 				deferred[i] = [chunkIds, fn, priority];
 | 
				
			||||||
 | 
					/******/ 				return;
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 			var notFulfilled = Infinity;
 | 
				
			||||||
 | 
					/******/ 			for (var i = 0; i < deferred.length; i++) {
 | 
				
			||||||
 | 
					/******/ 				var chunkIds = deferred[i][0];
 | 
				
			||||||
 | 
					/******/ 				var fn = deferred[i][1];
 | 
				
			||||||
 | 
					/******/ 				var priority = deferred[i][2];
 | 
				
			||||||
 | 
					/******/ 				var fulfilled = true;
 | 
				
			||||||
 | 
					/******/ 				for (var j = 0; j < chunkIds.length; j++) {
 | 
				
			||||||
 | 
					/******/ 					if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {
 | 
				
			||||||
 | 
					/******/ 						chunkIds.splice(j--, 1);
 | 
				
			||||||
 | 
					/******/ 					} else {
 | 
				
			||||||
 | 
					/******/ 						fulfilled = false;
 | 
				
			||||||
 | 
					/******/ 						if(priority < notFulfilled) notFulfilled = priority;
 | 
				
			||||||
 | 
					/******/ 					}
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 				if(fulfilled) {
 | 
				
			||||||
 | 
					/******/ 					deferred.splice(i--, 1)
 | 
				
			||||||
 | 
					/******/ 					var r = fn();
 | 
				
			||||||
 | 
					/******/ 					if (r !== undefined) result = r;
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 			return result;
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/compat get default export */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		// getDefaultExport function for compatibility with non-harmony modules
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.n = function(module) {
 | 
				
			||||||
 | 
					/******/ 			var getter = module && module.__esModule ?
 | 
				
			||||||
 | 
					/******/ 				function() { return module['default']; } :
 | 
				
			||||||
 | 
					/******/ 				function() { return module; };
 | 
				
			||||||
 | 
					/******/ 			__webpack_require__.d(getter, { a: getter });
 | 
				
			||||||
 | 
					/******/ 			return getter;
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/define property getters */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		// define getter functions for harmony exports
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.d = function(exports, definition) {
 | 
				
			||||||
 | 
					/******/ 			for(var key in definition) {
 | 
				
			||||||
 | 
					/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
 | 
				
			||||||
 | 
					/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/global */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.g = (function() {
 | 
				
			||||||
 | 
					/******/ 			if (typeof globalThis === 'object') return globalThis;
 | 
				
			||||||
 | 
					/******/ 			try {
 | 
				
			||||||
 | 
					/******/ 				return this || new Function('return this')();
 | 
				
			||||||
 | 
					/******/ 			} catch (e) {
 | 
				
			||||||
 | 
					/******/ 				if (typeof window === 'object') return window;
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 		})();
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/make namespace object */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		// 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 });
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	/* webpack/runtime/jsonp chunk loading */
 | 
				
			||||||
 | 
					/******/ 	!function() {
 | 
				
			||||||
 | 
					/******/ 		// no baseURI
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// object to store loaded and loading chunks
 | 
				
			||||||
 | 
					/******/ 		// undefined = chunk not loaded, null = chunk preloaded/prefetched
 | 
				
			||||||
 | 
					/******/ 		// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
 | 
				
			||||||
 | 
					/******/ 		var installedChunks = {
 | 
				
			||||||
 | 
					/******/ 			"core": 0
 | 
				
			||||||
 | 
					/******/ 		};
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no chunk on demand loading
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no prefetching
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no preloaded
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no HMR
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// no HMR manifest
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		// install a JSONP callback for chunk loading
 | 
				
			||||||
 | 
					/******/ 		var webpackJsonpCallback = function(parentChunkLoadingFunction, data) {
 | 
				
			||||||
 | 
					/******/ 			var chunkIds = data[0];
 | 
				
			||||||
 | 
					/******/ 			var moreModules = data[1];
 | 
				
			||||||
 | 
					/******/ 			var runtime = data[2];
 | 
				
			||||||
 | 
					/******/ 			// add "moreModules" to the modules object,
 | 
				
			||||||
 | 
					/******/ 			// then flag all "chunkIds" as loaded and fire callback
 | 
				
			||||||
 | 
					/******/ 			var moduleId, chunkId, i = 0;
 | 
				
			||||||
 | 
					/******/ 			if(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {
 | 
				
			||||||
 | 
					/******/ 				for(moduleId in moreModules) {
 | 
				
			||||||
 | 
					/******/ 					if(__webpack_require__.o(moreModules, moduleId)) {
 | 
				
			||||||
 | 
					/******/ 						__webpack_require__.m[moduleId] = moreModules[moduleId];
 | 
				
			||||||
 | 
					/******/ 					}
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 				if(runtime) var result = runtime(__webpack_require__);
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 			if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
 | 
				
			||||||
 | 
					/******/ 			for(;i < chunkIds.length; i++) {
 | 
				
			||||||
 | 
					/******/ 				chunkId = chunkIds[i];
 | 
				
			||||||
 | 
					/******/ 				if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
 | 
				
			||||||
 | 
					/******/ 					installedChunks[chunkId][0]();
 | 
				
			||||||
 | 
					/******/ 				}
 | 
				
			||||||
 | 
					/******/ 				installedChunks[chunkId] = 0;
 | 
				
			||||||
 | 
					/******/ 			}
 | 
				
			||||||
 | 
					/******/ 			return __webpack_require__.O(result);
 | 
				
			||||||
 | 
					/******/ 		}
 | 
				
			||||||
 | 
					/******/ 		
 | 
				
			||||||
 | 
					/******/ 		var chunkLoadingGlobal = self["webpackChunkaircox_assets"] = self["webpackChunkaircox_assets"] || [];
 | 
				
			||||||
 | 
					/******/ 		chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
 | 
				
			||||||
 | 
					/******/ 		chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
 | 
				
			||||||
 | 
					/******/ 	}();
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/************************************************************************/
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ 	// startup
 | 
				
			||||||
 | 
					/******/ 	// Load entry module and return exports
 | 
				
			||||||
 | 
					/******/ 	// This entry module depends on other loaded chunks and execution need to be delayed
 | 
				
			||||||
 | 
					/******/ 	var __webpack_exports__ = __webpack_require__.O(undefined, ["chunk-vendors","chunk-common"], function() { return __webpack_require__("./src/core.js"); })
 | 
				
			||||||
 | 
					/******/ 	__webpack_exports__ = __webpack_require__.O(__webpack_exports__);
 | 
				
			||||||
 | 
					/******/ 	
 | 
				
			||||||
 | 
					/******/ })()
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
@ -4,14 +4,53 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
{% include "aircox/program_sidebar.html" %}
 | 
					{% include "aircox/program_sidebar.html" %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<a-episode :page="{title: "{{ page.title }}", podcasts: {{ object.podcasts|json }}}">
 | 
					<a-episode :page="{title: "{{ page.title }}", podcasts: {{ object.podcasts|json }}}">
 | 
				
			||||||
<template v-slot="{podcasts,page}">
 | 
					<template v-slot="{podcasts,page}">
 | 
				
			||||||
{{ block.super }}
 | 
					{{ block.super }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div class="columns is-desktop">
 | 
					{% if object.podcasts %}
 | 
				
			||||||
    <section class="column">
 | 
					<section>
 | 
				
			||||||
        <h5 class="title is-5">{% translate "Diffusions" %}</h5>
 | 
					    <a-playlist v-if="page" :set="podcasts"
 | 
				
			||||||
 | 
					        name="{{ page.title }}"
 | 
				
			||||||
 | 
					        list-class="menu-list" item-class="menu-item"
 | 
				
			||||||
 | 
					        :player="player" :actions="['play']"
 | 
				
			||||||
 | 
					        @select="player.playItems('queue', $event.item)">
 | 
				
			||||||
 | 
					        <template v-slot:header>
 | 
				
			||||||
 | 
					            <h4 class="title is-4">{% translate "Podcasts" %}</h4>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					    </a-playlist>
 | 
				
			||||||
 | 
					    {% comment %}
 | 
				
			||||||
 | 
					    {% for object in podcasts %}
 | 
				
			||||||
 | 
					    {% include "aircox/widgets/podcast_item.html" %}
 | 
				
			||||||
 | 
					    {% endfor %}
 | 
				
			||||||
 | 
					    {% endcomment %}
 | 
				
			||||||
 | 
					</section>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% if tracks %}
 | 
				
			||||||
 | 
					<section>
 | 
				
			||||||
 | 
					    <h4 class="title is-4">{% translate "Playlist" %}</h4>
 | 
				
			||||||
 | 
					    <ol>
 | 
				
			||||||
 | 
					        {% for track in tracks %}
 | 
				
			||||||
 | 
					        <li><span>{{ track.title }}</span>
 | 
				
			||||||
 | 
					            <span class="has-text-grey-dark has-text-weight-light">
 | 
				
			||||||
 | 
					            — {{ track.artist }}
 | 
				
			||||||
 | 
					            {% if track.info %}(<i>{{ track.info }}</i>){% endif %}
 | 
				
			||||||
 | 
					            </span>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					        {% endfor %}
 | 
				
			||||||
 | 
					    </ol>
 | 
				
			||||||
 | 
					</section>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</template></a-episode>
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block sidebar %}
 | 
				
			||||||
 | 
					<section>
 | 
				
			||||||
 | 
					    <h4 class="title is-4">{% translate "Diffusions" %}</h4>
 | 
				
			||||||
    <ul>
 | 
					    <ul>
 | 
				
			||||||
    {% for diffusion in object.diffusion_set.all %}
 | 
					    {% for diffusion in object.diffusion_set.all %}
 | 
				
			||||||
    <li>
 | 
					    <li>
 | 
				
			||||||
@ -36,43 +75,8 @@
 | 
				
			|||||||
    </li>
 | 
					    </li>
 | 
				
			||||||
    {% endfor %}
 | 
					    {% endfor %}
 | 
				
			||||||
    </ul>
 | 
					    </ul>
 | 
				
			||||||
    </section>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    {% if object.podcasts %}
 | 
					 | 
				
			||||||
    <section class="column">
 | 
					 | 
				
			||||||
        <a-playlist v-if="page" :set="podcasts"
 | 
					 | 
				
			||||||
            name="{{ page.title }}"
 | 
					 | 
				
			||||||
            :player="player" :actions="['play']"
 | 
					 | 
				
			||||||
            @select="player.playItems('queue', $event.item)">
 | 
					 | 
				
			||||||
            <template v-slot:header>
 | 
					 | 
				
			||||||
                <h5 class="title is-5">{% translate "Podcasts" %}</h5>
 | 
					 | 
				
			||||||
            </template>
 | 
					 | 
				
			||||||
        </a-playlist>
 | 
					 | 
				
			||||||
        {% comment %}
 | 
					 | 
				
			||||||
        {% for object in podcasts %}
 | 
					 | 
				
			||||||
        {% include "aircox/widgets/podcast_item.html" %}
 | 
					 | 
				
			||||||
        {% endfor %}
 | 
					 | 
				
			||||||
        {% endcomment %}
 | 
					 | 
				
			||||||
    </section>
 | 
					 | 
				
			||||||
    {% endif %}
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{% if tracks %}
 | 
					 | 
				
			||||||
<section class="column">
 | 
					 | 
				
			||||||
    <h4 class="title is-4">{% translate "Playlist" %}</h4>
 | 
					 | 
				
			||||||
    <ol>
 | 
					 | 
				
			||||||
        {% for track in tracks %}
 | 
					 | 
				
			||||||
        <li><span>{{ track.title }}</span>
 | 
					 | 
				
			||||||
            <span class="has-text-grey-dark has-text-weight-light">
 | 
					 | 
				
			||||||
            — {{ track.artist }}
 | 
					 | 
				
			||||||
            {% if track.info %}(<i>{{ track.info }}</i>){% endif %}
 | 
					 | 
				
			||||||
            </span>
 | 
					 | 
				
			||||||
        </li>
 | 
					 | 
				
			||||||
        {% endfor %}
 | 
					 | 
				
			||||||
    </ol>
 | 
					 | 
				
			||||||
</section>
 | 
					</section>
 | 
				
			||||||
{% endif %}
 | 
					{{ block.super }}
 | 
				
			||||||
 | 
					 | 
				
			||||||
</template></a-episode>
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -32,7 +32,6 @@ Context:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
{% block comments %}
 | 
					{% block comments %}
 | 
				
			||||||
{% if comments or comment_form %}
 | 
					{% if comments or comment_form %}
 | 
				
			||||||
<hr>
 | 
					 | 
				
			||||||
<section class="mt-6">
 | 
					<section class="mt-6">
 | 
				
			||||||
    <h4 class="title is-4">{% translate "Comments" %}</h4>
 | 
					    <h4 class="title is-4">{% translate "Comments" %}</h4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -51,8 +50,6 @@ Context:
 | 
				
			|||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    {% endfor %}
 | 
					    {% endfor %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {% if comments and comment_form %}<hr>{% endif %}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    {% if comment_form %}
 | 
					    {% if comment_form %}
 | 
				
			||||||
    <form method="POST">
 | 
					    <form method="POST">
 | 
				
			||||||
        <h5 class="title is-5">{% translate "Post a comment" %}</h5>
 | 
					        <h5 class="title is-5">{% translate "Post a comment" %}</h5>
 | 
				
			||||||
 | 
				
			|||||||
@ -13,9 +13,35 @@
 | 
				
			|||||||
{{ block.super }}
 | 
					{{ block.super }}
 | 
				
			||||||
<br>
 | 
					<br>
 | 
				
			||||||
{% with has_headline=False %}
 | 
					{% with has_headline=False %}
 | 
				
			||||||
<div class="columns is-desktop">
 | 
					{% if articles %}
 | 
				
			||||||
    <section class="column">
 | 
					<section>
 | 
				
			||||||
        <h5 class="title is-5">{% translate "Diffusions" %}</h5>
 | 
					    <h4 class="title is-4">{% translate "Articles" %}</h4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {% for object in articles %}
 | 
				
			||||||
 | 
					    {% include "aircox/widgets/page_item.html" %}
 | 
				
			||||||
 | 
					    {% endfor %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <br>
 | 
				
			||||||
 | 
					    <nav class="pagination is-centered">
 | 
				
			||||||
 | 
					        <ul class="pagination-list">
 | 
				
			||||||
 | 
					            <li>
 | 
				
			||||||
 | 
					                <a href="{% url "article-list" parent_slug=program.slug %}"
 | 
				
			||||||
 | 
					                    class="pagination-link"
 | 
				
			||||||
 | 
					                    aria-label="{% translate "Show all program's articles" %}">
 | 
				
			||||||
 | 
					                    {% translate "More articles" %}
 | 
				
			||||||
 | 
					                </a>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					    </nav>
 | 
				
			||||||
 | 
					</section>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					{% endwith %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block sidebar %}
 | 
				
			||||||
 | 
					<section>
 | 
				
			||||||
 | 
					    <h4 class="title is-4">{% translate "Diffusions" %}</h4>
 | 
				
			||||||
    {% for schedule in program.schedule_set.all %}
 | 
					    {% for schedule in program.schedule_set.all %}
 | 
				
			||||||
    {{ schedule.get_frequency_verbose }}
 | 
					    {{ schedule.get_frequency_verbose }}
 | 
				
			||||||
    {% with schedule.start|date:"H:i" as start %}
 | 
					    {% with schedule.start|date:"H:i" as start %}
 | 
				
			||||||
@ -36,33 +62,7 @@
 | 
				
			|||||||
    </small>
 | 
					    </small>
 | 
				
			||||||
    <br>
 | 
					    <br>
 | 
				
			||||||
    {% endfor %}
 | 
					    {% endfor %}
 | 
				
			||||||
    </section>
 | 
					</section>
 | 
				
			||||||
 | 
					{{ block.super }}
 | 
				
			||||||
    {% if articles %}
 | 
					 | 
				
			||||||
    <section class="column">
 | 
					 | 
				
			||||||
        <h4 class="title is-5">{% translate "Articles" %}</h4>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        {% for object in articles %}
 | 
					 | 
				
			||||||
        {% include "aircox/widgets/page_item.html" %}
 | 
					 | 
				
			||||||
        {% endfor %}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <br>
 | 
					 | 
				
			||||||
        <nav class="pagination is-centered">
 | 
					 | 
				
			||||||
            <ul class="pagination-list">
 | 
					 | 
				
			||||||
                <li>
 | 
					 | 
				
			||||||
                    <a href="{% url "article-list" parent_slug=program.slug %}"
 | 
					 | 
				
			||||||
                        class="pagination-link"
 | 
					 | 
				
			||||||
                        aria-label="{% translate "Show all program's articles" %}">
 | 
					 | 
				
			||||||
                        {% translate "More articles" %}
 | 
					 | 
				
			||||||
                    </a>
 | 
					 | 
				
			||||||
                </li>
 | 
					 | 
				
			||||||
            </ul>
 | 
					 | 
				
			||||||
        </nav>
 | 
					 | 
				
			||||||
    </section>
 | 
					 | 
				
			||||||
    {% endif %}
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
{% endwith %}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,11 @@
 | 
				
			|||||||
@charset "utf-8";
 | 
					@charset "utf-8";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@import "~bulma/sass/utilities/_all.sass";
 | 
					@import "~bulma/sass/utilities/_all.sass";
 | 
				
			||||||
@import "~bulma/sass/components/dropdown.sass";
 | 
					@import "~bulma/sass/components/dropdown.sass";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$body-background-color: $light;
 | 
					$body-background-color: $light;
 | 
				
			||||||
 | 
					$menu-item-hover-background-color: #dfdfdf;
 | 
				
			||||||
 | 
					$menu-item-active-background-color: #d2d2d2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@import "~bulma";
 | 
					@import "~bulma";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -36,6 +39,17 @@ $body-background-color: $light;
 | 
				
			|||||||
.overflow-hidden { overflow: hidden }
 | 
					.overflow-hidden { overflow: hidden }
 | 
				
			||||||
.overflow-hidden.is-fullwidth { max-width: 100%; }
 | 
					.overflow-hidden.is-fullwidth { max-width: 100%; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@keyframes blink {
 | 
				
			||||||
 | 
					    from { opacity: 1; }
 | 
				
			||||||
 | 
					    to { opacity: 0.4; }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.blink {
 | 
				
			||||||
 | 
					    animation: 1s ease-in-out 3s infinite alternate blink;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-- navbar
 | 
					//-- navbar
 | 
				
			||||||
.navbar + .container {
 | 
					.navbar + .container {
 | 
				
			||||||
    margin-top: 1em;
 | 
					    margin-top: 1em;
 | 
				
			||||||
@ -276,15 +290,15 @@ aside {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
.sound-item {
 | 
					.sound-item {
 | 
				
			||||||
    .cover { height: 5em; }
 | 
					    .cover { height: 5em; }
 | 
				
			||||||
    .media-content a { padding: 0em; }
 | 
					    .media-content a { padding: 0em; }
 | 
				
			||||||
 | 
					    margin-bottom: 0.2em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.sound-item .media-right .button {
 | 
				
			||||||
.is-round, .sound-item .button {
 | 
					    margin-right: 0.2em;
 | 
				
			||||||
    border: 1px $grey solid;
 | 
					    min-width: 2.5em;
 | 
				
			||||||
    border-radius: 1em;
 | 
					    display: inline-block;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,17 +1,17 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
    <div>
 | 
					    <div class="playlist">
 | 
				
			||||||
        <slot name="header"></slot>
 | 
					        <slot name="header"></slot>
 | 
				
			||||||
        <ul :class="listClass">
 | 
					        <ul :class="listClass">
 | 
				
			||||||
            <li v-for="(item,index) in items" :class="itemClass" @click="!hasAction('play') && select(index)"
 | 
					            <li v-for="(item,index) in items" :class="itemClass" @click="!hasAction('play') && select(index)"
 | 
				
			||||||
                :key="index">
 | 
					                :key="index">
 | 
				
			||||||
                <a :class="index == selectedIndex ? 'is-active' : ''">
 | 
					                <a :class="player.isPlaying(item) ? 'is-active' : ''">
 | 
				
			||||||
                    <ASoundItem
 | 
					                    <ASoundItem
 | 
				
			||||||
                        :data="item" :index="index" :set="set" :player="player_"
 | 
					                        :data="item" :index="index" :set="set" :player="player_"
 | 
				
			||||||
                        @togglePlay="togglePlay(index)"
 | 
					                        @togglePlay="togglePlay(index)"
 | 
				
			||||||
                        :actions="actions">
 | 
					                        :actions="actions">
 | 
				
			||||||
                        <template v-slot:actions="{}">
 | 
					                        <template v-slot:extra-right="{}">
 | 
				
			||||||
                            <button class="button" v-if="editable" @click.stop="remove(index,true)">
 | 
					                            <button class="button" v-if="editable" @click.stop="remove(index,true)">
 | 
				
			||||||
                                <span class="icon is-small"><span class="fa fa-minus"></span></span>
 | 
					                                <span class="icon is-small"><span class="fa fa-close"></span></span>
 | 
				
			||||||
                            </button>
 | 
					                            </button>
 | 
				
			||||||
                        </template>
 | 
					                        </template>
 | 
				
			||||||
                    </ASoundItem>
 | 
					                    </ASoundItem>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,19 +1,16 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
    <div class="media sound-item">
 | 
					    <div class="media sound-item">
 | 
				
			||||||
        <div class="media-left">
 | 
					        <div class="media-left" @click.stop="$emit('togglePlay')">
 | 
				
			||||||
            <img class="cover is-tiny" :src="item.data.cover" v-if="item.data.cover">
 | 
					            <img class="cover is-tiny" :src="item.data.cover" v-if="item.data.cover">
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <div class="media-left">
 | 
					 | 
				
			||||||
            <button class="button" @click.stop="$emit('togglePlay')">
 | 
					 | 
				
			||||||
                <div class="icon">
 | 
					 | 
				
			||||||
                    <span class="fa fa-pause" v-if="playing"></span>
 | 
					 | 
				
			||||||
                    <span class="fa fa-play" v-else></span>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
            </button>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
        <div class="media-content">
 | 
					        <div class="media-content">
 | 
				
			||||||
            <slot name="content" :player="player" :item="item" :loaded="loaded">
 | 
					            <slot name="content" :player="player" :item="item" :loaded="loaded">
 | 
				
			||||||
                <h4 class="title is-4">{{ name || item.name }}</h4>
 | 
					                <h4 class="title is-5" @click.stop="$emit('togglePlay')">
 | 
				
			||||||
 | 
					                    <span class="icon is-small is-size-7 blink" v-if="playing">
 | 
				
			||||||
 | 
					                        <span class="fa fa-play"></span>
 | 
				
			||||||
 | 
					                    </span>
 | 
				
			||||||
 | 
					                    {{ name || item.name }}
 | 
				
			||||||
 | 
					                </h4>
 | 
				
			||||||
                <a class="subtitle is-6 is-inline-block" v-if="hasAction('page') && item.data.page_url"
 | 
					                <a class="subtitle is-6 is-inline-block" v-if="hasAction('page') && item.data.page_url"
 | 
				
			||||||
                    :href="item.data.page_url">
 | 
					                    :href="item.data.page_url">
 | 
				
			||||||
                    {{ item.data.page_title }}
 | 
					                    {{ item.data.page_title }}
 | 
				
			||||||
@ -21,6 +18,12 @@
 | 
				
			|||||||
            </slot>
 | 
					            </slot>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <div class="media-right">
 | 
					        <div class="media-right">
 | 
				
			||||||
 | 
					            <a class="button" v-if="item.data.is_downloadable"
 | 
				
			||||||
 | 
					                    :href="item.data.url" target="_blank">
 | 
				
			||||||
 | 
					                <span class="icon is-small">
 | 
				
			||||||
 | 
					                    <span class="fa fa-download"></span>
 | 
				
			||||||
 | 
					                </span>
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
            <button class="button" v-if="player && player.sets.pin != $parent.set" @click.stop="player.togglePin(item)">
 | 
					            <button class="button" v-if="player && player.sets.pin != $parent.set" @click.stop="player.togglePin(item)">
 | 
				
			||||||
                <span class="icon is-small">
 | 
					                <span class="icon is-small">
 | 
				
			||||||
                    <span :class="(pinned ? '' : 'has-text-grey-light ') + 'fa fa-thumbtack'"></span>
 | 
					                    <span :class="(pinned ? '' : 'has-text-grey-light ') + 'fa fa-thumbtack'"></span>
 | 
				
			||||||
@ -28,6 +31,7 @@
 | 
				
			|||||||
            </button>
 | 
					            </button>
 | 
				
			||||||
            <slot name="actions" :player="player" :item="item" :loaded="loaded"></slot>
 | 
					            <slot name="actions" :player="player" :item="item" :loaded="loaded"></slot>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					        <slot name="extra-right" :player="player" :item="item" :loaded="loaded"></slot>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,8 +3,7 @@
 | 
				
			|||||||
 * administration interface)
 | 
					 * administration interface)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
//-- vendor
 | 
					//-- vendor
 | 
				
			||||||
import '@fortawesome/fontawesome-free/css/all.min.css'
 | 
					import '@fortawesome/fontawesome-free/css/all.min.css';
 | 
				
			||||||
import '@fortawesome/fontawesome-free/css/fontawesome.min.css'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-- aircox
 | 
					//-- aircox
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user