diff options
-rw-r--r-- | settings/js/vue-4.js | 2 | ||||
-rw-r--r-- | settings/js/vue-4.js.map | 2 | ||||
-rw-r--r-- | settings/src/components/appList/appItem.vue | 6 |
3 files changed, 6 insertions, 4 deletions
diff --git a/settings/js/vue-4.js b/settings/js/vue-4.js index 19df8c3977a..6bc13ddb5b0 100644 --- a/settings/js/vue-4.js +++ b/settings/js/vue-4.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{67:function(t,e,a){var i=a(73);"string"==typeof i&&(i=[[t.i,i,""]]);var s={hmr:!0,transform:void 0,insertInto:void 0};a(20)(i,s);i.locals&&(t.exports=i.locals)},68:function(t,e,a){var i=a(77);"string"==typeof i&&(i=[[t.i,i,""]]);var s={hmr:!0,transform:void 0,insertInto:void 0};a(20)(i,s);i.locals&&(t.exports=i.locals)},72:function(t,e,a){"use strict";var i=a(67);a.n(i).a},73:function(t,e,a){(t.exports=a(19)(!1)).push([t.i,"\n.force[data-v-1a5a2391] {\n\tbackground: var(--color-main-background);\n\tborder-color: var(--color-error);\n\tcolor: var(--color-error);\n}\n.force[data-v-1a5a2391]:hover,\n.force[data-v-1a5a2391]:active {\n\tbackground: var(--color-error);\n\tborder-color: var(--color-error) !important;\n\tcolor: var(--color-main-background);\n}\n",""])},76:function(t,e,a){"use strict";var i=a(68);a.n(i).a},77:function(t,e,a){(t.exports=a(19)(!1)).push([t.i,"\n.force[data-v-52943dc0] {\n\tbackground: var(--color-main-background);\n\tborder-color: var(--color-error);\n\tcolor: var(--color-error);\n}\n.force[data-v-52943dc0]:hover,\n.force[data-v-52943dc0]:active {\n\tbackground: var(--color-error);\n\tborder-color: var(--color-error) !important;\n\tcolor: var(--color-main-background);\n}\n",""])},78:function(e,a,i){"use strict";i.r(a);var s=i(16),n={name:"appScore",props:["score"],computed:{scoreImage:function(){var t="rating/s"+Math.round(10*this.score)+".svg";return OC.imagePath("core",t)}}},r=i(5),o=Object(r.a)(n,function(){var t=this.$createElement;return(this._self._c||t)("img",{staticClass:"app-score-image",attrs:{src:this.scoreImage}})},[],!1,null,null,null).exports,p={mounted:function(){this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},computed:{appGroups:function(){return this.app.groups.map(function(t){return{id:t,name:t}})},loading:function(){var t=this;return function(e){return t.$store.getters.loading(e)}},installing:function(){return this.$store.getters.loading("install")},enableButtonText:function(){return this.app.needsDownload?t("settings","Download and enable"):t("settings","Enable")},forceEnableButtonText:function(){return this.app.needsDownload,t("settings","Enable untested app")},enableButtonTooltip:function(){return!!this.app.needsDownload&&t("settings","The app will be downloaded from the app store")},forceEnableButtonTooltip:function(){var e=t("settings","This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.");return this.app.needsDownload?e+" "+t("settings","The app will be downloaded from the app store"):e}},methods:{asyncFindGroup:function(t){return this.$store.dispatch("getGroups",{search:t,limit:5,offset:0})},isLimitedToGroups:function(t){return!(!this.app.groups.length&&!this.groupCheckedAppsData)},setGroupLimit:function(){this.groupCheckedAppsData||this.$store.dispatch("enableApp",{appId:this.app.id,groups:[]})},canLimitToGroups:function(t){return!(t.types&&t.types.includes("filesystem")||t.types.includes("prelogin")||t.types.includes("authentication")||t.types.includes("logging")||t.types.includes("prevent_group_restriction"))},addGroupLimitation:function(t){var e=this.app.groups.concat([]).concat([t.id]);this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},removeGroupLimitation:function(t){var e=this.app.groups.concat([]),a=e.indexOf(t.id);a>-1&&e.splice(a,1),this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},forceEnable:function(t){this.$store.dispatch("forceEnableApp",{appId:t,groups:[]}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},enable:function(t){this.$store.dispatch("enableApp",{appId:t,groups:[]}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},disable:function(t){this.$store.dispatch("disableApp",{appId:t}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},remove:function(t){this.$store.dispatch("uninstallApp",{appId:t}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},install:function(t){this.$store.dispatch("enableApp",{appId:t}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},update:function(t){this.$store.dispatch("updateApp",{appId:t}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})}}},l=Object(r.a)(p,void 0,void 0,!1,null,null,null).exports,c={name:"svgFilterMixin",mounted:function(){this.filterId="invertIconApps"+Math.floor(100*Math.random())+(new Date).getSeconds()+(new Date).getMilliseconds()},computed:{filterUrl:function(){return"url(#".concat(this.filterId,")")}},data:function(){return{filterId:""}}},u=Object(r.a)(c,void 0,void 0,!1,null,null,null).exports,d={name:"appItem",mixins:[l,u],props:{app:{},category:{},listView:{type:Boolean,default:!0}},watch:{"$route.params.id":function(t){this.isSelected=this.app.id===t}},components:{AppScore:o},data:function(){return{isSelected:!1,scrolled:!1}},mounted:function(){this.isSelected=this.app.id===this.$route.params.id},computed:{},watchers:{},methods:{showAppDetails:function(t){"INPUT"!==t.currentTarget.tagName&&"A"!==t.currentTarget.tagName&&this.$router.push({name:"apps-details",params:{category:this.category,id:this.app.id}})},prefix:function(t,e){return t+"_"+e}}},g=(i(72),Object(r.a)(d,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"section",class:{selected:t.isSelected},on:{click:t.showAppDetails}},[a("div",{staticClass:"app-image app-image-icon",on:{click:t.showAppDetails}},[t.listView&&!t.app.preview||!t.listView&&!t.app.screenshot?a("div",{staticClass:"icon-settings-dark"}):t._e(),t._v(" "),t.listView&&t.app.preview?a("svg",{attrs:{width:"32",height:"32",viewBox:"0 0 32 32"}},[a("defs",[a("filter",{attrs:{id:t.filterId}},[a("feColorMatrix",{attrs:{in:"SourceGraphic",type:"matrix",values:"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"}})],1)]),t._v(" "),a("image",{staticClass:"app-icon",attrs:{x:"0",y:"0",width:"32",height:"32",preserveAspectRatio:"xMinYMin meet",filter:t.filterUrl,"xlink:href":t.app.preview}})]):t._e(),t._v(" "),!t.listView&&t.app.screenshot?a("img",{attrs:{src:t.app.screenshot,width:"100%"}}):t._e()]),t._v(" "),a("div",{staticClass:"app-name",on:{click:t.showAppDetails}},[t._v("\n\t\t"+t._s(t.app.name)+"\n\t")]),t._v(" "),t.listView?t._e():a("div",{staticClass:"app-summary"},[t._v(t._s(t.app.summary))]),t._v(" "),t.listView?a("div",{staticClass:"app-version"},[t.app.version?a("span",[t._v(t._s(t.app.version))]):t.app.appstoreData.releases[0].version?a("span",[t._v(t._s(t.app.appstoreData.releases[0].version))]):t._e()]):t._e(),t._v(" "),a("div",{staticClass:"app-level"},[300===t.app.level?a("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?a("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Official apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t"+t._s(t.t("settings","Official")))]):t._e(),t._v(" "),t.listView?t._e():a("app-score",{attrs:{score:t.app.score}})],1),t._v(" "),a("div",{staticClass:"actions"},[t.app.error?a("div",{staticClass:"warning"},[t._v(t._s(t.app.error))]):t._e(),t._v(" "),t.loading(t.app.id)?a("div",{staticClass:"icon icon-loading-small"}):t._e(),t._v(" "),t.app.update?a("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {update}",{update:t.app.update}),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?a("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?a("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active?t._e():a("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.forceEnable(t.app.id)}}}):a("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.enable(t.app.id)}}})])])},[],!1,null,"1a5a2391",null).exports),h={name:"prefixMixin",methods:{prefix:function(t,e){return t+"_"+e}}},v=Object(r.a)(h,void 0,void 0,!1,null,null,null).exports,f={name:"appList",mixins:[v],props:["category","app","search"],components:{appItem:g},computed:{loading:function(){return this.$store.getters.loading("list")},apps:function(){var t=this,e=this.$store.getters.getAllApps.filter(function(e){return-1!==e.name.toLowerCase().search(t.search.toLowerCase())}).sort(function(t,e){var a=""+(t.active?0:1)+(t.update?0:1)+t.name,i=""+(e.active?0:1)+(e.update?0:1)+e.name;return OC.Util.naturalSortCompare(a,i)});return"installed"===this.category?e.filter(function(t){return t.installed}):"enabled"===this.category?e.filter(function(t){return t.active&&t.installed}):"disabled"===this.category?e.filter(function(t){return!t.active&&t.installed}):"app-bundles"===this.category?e.filter(function(t){return t.bundles}):"updates"===this.category?e.filter(function(t){return t.update}):e.filter(function(e){return e.appstore&&void 0!==e.category&&(e.category===t.category||e.category.indexOf(t.category)>-1)})},bundles:function(){return this.$store.getters.getServerData.bundles},bundleApps:function(){return function(t){return this.$store.getters.getAllApps.filter(function(e){return e.bundleId===t})}},searchApps:function(){var t=this;return""===this.search?[]:this.$store.getters.getAllApps.filter(function(e){return-1!==e.name.toLowerCase().search(t.search.toLowerCase())&&!t.apps.find(function(t){return t.id===e.id})})},useAppStoreView:function(){return!this.useListView&&!this.useBundleView},useListView:function(){return"installed"===this.category||"enabled"===this.category||"disabled"===this.category||"updates"===this.category},useBundleView:function(){return"app-bundles"===this.category},allBundlesEnabled:function(){var t=this;return function(e){return 0===t.bundleApps(e).filter(function(t){return!t.active}).length}},bundleToggleText:function(){var e=this;return function(a){return e.allBundlesEnabled(a)?t("settings","Disable all"):t("settings","Enable all")}}},methods:{toggleBundle:function(t){return this.allBundlesEnabled(t)?this.disableBundle(t):this.enableBundle(t)},enableBundle:function(t){var e=this.bundleApps(t).map(function(t){return t.id});this.$store.dispatch("enableApp",{appId:e,groups:[]}).catch(function(t){console.log(t),OC.Notification.show(t)})},disableBundle:function(t){var e=this.bundleApps(t).map(function(t){return t.id});this.$store.dispatch("disableApp",{appId:e,groups:[]}).catch(function(t){OC.Notification.show(t)})}}},m=Object(r.a)(f,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"app-content-inner"}},[a("div",{staticClass:"apps-list",class:{installed:t.useBundleView||t.useListView,store:t.useAppStoreView},attrs:{id:"apps-list"}},[t.useListView?[a("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},t._l(t.apps,function(e){return a("app-item",{key:e.id,attrs:{app:e,category:t.category}})}),1)]:t._e(),t._v(" "),t._l(t.bundles,function(e){return t.useBundleView&&t.bundleApps(e.id).length>0?[a("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},[a("div",{key:e.id,staticClass:"apps-header"},[a("div",{staticClass:"app-image"}),t._v(" "),a("h2",[t._v(t._s(e.name)+" "),a("input",{attrs:{type:"button",value:t.bundleToggleText(e.id)},on:{click:function(a){return t.toggleBundle(e.id)}}})]),t._v(" "),a("div",{staticClass:"app-version"}),t._v(" "),a("div",{staticClass:"app-level"}),t._v(" "),a("div",{staticClass:"app-groups"}),t._v(" "),a("div",{staticClass:"actions"},[t._v(" ")])]),t._v(" "),t._l(t.bundleApps(e.id),function(i){return a("app-item",{key:e.id+i.id,attrs:{app:i,category:t.category}})})],2)]:t._e()}),t._v(" "),t.useAppStoreView?t._l(t.apps,function(e){return a("app-item",{key:e.id,attrs:{app:e,category:t.category,"list-view":!1}})}):t._e()],2),t._v(" "),a("div",{staticClass:"apps-list installed",attrs:{id:"apps-list-search"}},[a("div",{staticClass:"apps-list-container"},[""!==t.search&&t.searchApps.length>0?[a("div",{staticClass:"section"},[a("div"),t._v(" "),a("td",{attrs:{colspan:"5"}},[a("h2",[t._v(t._s(t.t("settings","Results from other categories")))])])]),t._v(" "),t._l(t.searchApps,function(e){return a("app-item",{key:e.id,attrs:{app:e,category:t.category,"list-view":!0}})})]:t._e()],2)]),t._v(" "),t.loading||0!==t.searchApps.length||0!==t.apps.length?t._e():a("div",{staticClass:"emptycontent emptycontent-search",attrs:{id:"apps-list-empty"}},[a("div",{staticClass:"icon-settings-dark",attrs:{id:"app-list-empty-icon"}}),t._v(" "),a("h2",[t._v(t._s(t.t("settings","No apps found for your version")))])]),t._v(" "),a("div",{attrs:{id:"searchresults"}})])},[],!1,null,null,null).exports,_=i(2),b=i(69),y=i.n(b),C=i(74),w=i.n(C),A=i(75),k=i.n(A),x={mixins:[l,v,u],name:"appDetails",props:["category","app"],components:{Multiselect:s.Multiselect,AppScore:o},data:function(){return{groupCheckedAppsData:!1}},mounted:function(){this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},computed:{appstoreUrl:function(){return"https://apps.nextcloud.com/apps/".concat(this.app.id)},licence:function(){return this.app.licence?t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()}):null},hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5},author:function(){return"string"==typeof this.app.author?[{"@value":this.app.author}]:this.app.author["@value"]?[this.app.author]:this.app.author},appGroups:function(){return this.app.groups.map(function(t){return{id:t,name:t}})},groups:function(){return this.$store.getters.getGroups.filter(function(t){return"disabled"!==t.id}).sort(function(t,e){return t.name.localeCompare(e.name)})},renderMarkdown:function(){var t=new w.a.Renderer;return t.link=function(t,e,a){try{var i=decodeURIComponent(unescape(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0!==i.indexOf("http:")&&0!==i.indexOf("https:"))return"";var s='<a href="'+t+'" rel="noreferrer noopener"';return e&&(s+=' title="'+e+'"'),s+=">"+a+"</a>"},t.image=function(t,e,a){return a||e},t.blockquote=function(t){return t},k.a.sanitize(w()(this.app.description.trim(),{renderer:t,gfm:!1,highlight:!1,tables:!1,breaks:!1,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!1}),{SAFE_FOR_JQUERY:!0,ALLOWED_TAGS:["strong","p","a","ul","ol","li","em","del","blockquote"]})}}},D=(i(76),Object(r.a)(x,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticStyle:{padding:"20px"},attrs:{id:"app-details-view"}},[a("h2",[t.app.preview?t._e():a("div",{staticClass:"icon-settings-dark"}),t._v(" "),t.app.previewAsIcon&&t.app.preview?a("svg",{attrs:{width:"32",height:"32",viewBox:"0 0 32 32"}},[a("defs",[a("filter",{attrs:{id:t.filterId}},[a("feColorMatrix",{attrs:{in:"SourceGraphic",type:"matrix",values:"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"}})],1)]),t._v(" "),a("image",{staticClass:"app-icon",attrs:{x:"0",y:"0",width:"32",height:"32",preserveAspectRatio:"xMinYMin meet",filter:t.filterUrl,"xlink:href":t.app.preview}})]):t._e(),t._v("\n\t\t"+t._s(t.app.name))]),t._v(" "),t.app.screenshot?a("img",{attrs:{src:t.app.screenshot,width:"100%"}}):t._e(),t._v(" "),300===t.app.level||200===t.app.level||t.hasRating?a("div",{staticClass:"app-level"},[300===t.app.level?a("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?a("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Official apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t"+t._s(t.t("settings","Official")))]):t._e(),t._v(" "),t.hasRating?a("app-score",{attrs:{score:t.app.appstoreData.ratingOverall}}):t._e()],1):t._e(),t._v(" "),t.author?a("div",{staticClass:"app-author"},[t._v("\n\t\t"+t._s(t.t("settings","by"))+"\n\t\t"),t._l(t.author,function(e,i){return a("span",[e["@attributes"]&&e["@attributes"].homepage?a("a",{attrs:{href:e["@attributes"].homepage}},[t._v(t._s(e["@value"]))]):e["@value"]?a("span",[t._v(t._s(e["@value"]))]):a("span",[t._v(t._s(e))]),i+1<t.author.length?a("span",[t._v(", ")]):t._e()])})],2):t._e(),t._v(" "),t.licence?a("div",{staticClass:"app-licence"},[t._v(t._s(t.licence))]):t._e(),t._v(" "),a("div",{staticClass:"actions"},[a("div",{staticClass:"actions-buttons"},[t.app.update?a("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {version}",{version:t.app.update}),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?a("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?a("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active?t._e():a("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return t.forceEnable(t.app.id)}}}):a("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable primary",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.loading(t.app.id)},on:{click:function(e){return t.enable(t.app.id)}}})]),t._v(" "),a("div",{staticClass:"app-groups"},[t.app.active&&t.canLimitToGroups(t.app)?a("div",{staticClass:"groups-enable"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.groupCheckedAppsData,expression:"groupCheckedAppsData"}],staticClass:"groups-enable__checkbox checkbox",attrs:{type:"checkbox",id:t.prefix("groups_enable",t.app.id)},domProps:{value:t.app.id,checked:Array.isArray(t.groupCheckedAppsData)?t._i(t.groupCheckedAppsData,t.app.id)>-1:t.groupCheckedAppsData},on:{change:[function(e){var a=t.groupCheckedAppsData,i=e.target,s=!!i.checked;if(Array.isArray(a)){var n=t.app.id,r=t._i(a,n);i.checked?r<0&&(t.groupCheckedAppsData=a.concat([n])):r>-1&&(t.groupCheckedAppsData=a.slice(0,r).concat(a.slice(r+1)))}else t.groupCheckedAppsData=s},t.setGroupLimit]}}),t._v(" "),a("label",{attrs:{for:t.prefix("groups_enable",t.app.id)}},[t._v(t._s(t.t("settings","Limit to groups")))]),t._v(" "),a("input",{staticClass:"group_select",attrs:{type:"hidden",title:t.t("settings","All"),value:""}}),t._v(" "),t.isLimitedToGroups(t.app)?a("multiselect",{staticClass:"multiselect-vue",attrs:{options:t.groups,value:t.appGroups,"options-limit":5,placeholder:t.t("settings","Limit app usage to groups"),label:"name","track-by":"id",multiple:!0,"close-on-select":!1,"tag-width":60},on:{select:t.addGroupLimitation,remove:t.removeGroupLimitation,"search-change":t.asyncFindGroup}},[a("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])]):t._e()],1):t._e()])]),t._v(" "),a("ul",{staticClass:"app-dependencies"},[t.app.missingMinOwnCloudVersion?a("li",[t._v(t._s(t.t("settings","This app has no minimum Nextcloud version assigned. This will be an error in the future.")))]):t._e(),t._v(" "),t.app.missingMaxOwnCloudVersion?a("li",[t._v(t._s(t.t("settings","This app has no maximum Nextcloud version assigned. This will be an error in the future.")))]):t._e(),t._v(" "),t.app.canInstall?t._e():a("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app cannot be installed because the following dependencies are not fulfilled:"))+"\n\t\t\t"),a("ul",{staticClass:"missing-dependencies"},t._l(t.app.missingDependencies,function(e){return a("li",[t._v(t._s(e))])}),0)])]),t._v(" "),a("p",{staticClass:"documentation"},[t.app.internal?t._e():a("a",{staticClass:"appslink",attrs:{href:t.appstoreUrl,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","View in store"))+" ↗")]),t._v(" "),t.app.website?a("a",{staticClass:"appslink",attrs:{href:t.app.website,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Visit website"))+" ↗")]):t._e(),t._v(" "),t.app.bugs?a("a",{staticClass:"appslink",attrs:{href:t.app.bugs,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Report a bug"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.user?a("a",{staticClass:"appslink",attrs:{href:t.app.documentation.user,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","User documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.admin?a("a",{staticClass:"appslink",attrs:{href:t.app.documentation.admin,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Admin documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.developer?a("a",{staticClass:"appslink",attrs:{href:t.app.documentation.developer,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Developer documentation"))+" ↗")]):t._e()]),t._v(" "),a("div",{staticClass:"app-description",domProps:{innerHTML:t._s(t.renderMarkdown)}})])},[],!1,null,"52943dc0",null).exports);_.default.use(y.a);var T={name:"Apps",props:{category:{type:String,default:"installed"},id:{type:String,default:""}},components:{AppContent:s.AppContent,AppNavigation:s.AppNavigation,AppNavigationItem:s.AppNavigationItem,AppSidebar:s.AppSidebar,Content:s.Content,AppDetails:D,AppList:m},methods:{setSearch:function(t){this.searchQuery=t},resetSearch:function(){this.setSearch("")},hideAppDetails:function(){this.$router.push({name:"apps-category",params:{category:this.category}})}},beforeMount:function(){this.$store.dispatch("getCategories"),this.$store.dispatch("getAllApps"),this.$store.dispatch("getGroups",{offset:0,limit:5}),this.$store.commit("setUpdateCount",this.$store.getters.getServerData.updateCount)},mounted:function(){this.appSearch=new OCA.Search(this.setSearch,this.resetSearch)},data:function(){return{searchQuery:""}},watch:{category:function(t,e){this.setSearch("")}},computed:{loading:function(){return this.$store.getters.loading("categories")},loadingList:function(){return this.$store.getters.loading("list")},currentApp:function(){var t=this;return this.apps.find(function(e){return e.id===t.id})},categories:function(){return this.$store.getters.getCategories},apps:function(){return this.$store.getters.getAllApps},updateCount:function(){return this.$store.getters.getUpdateCount},settings:function(){return this.$store.getters.getServerData},menu:function(){var e=this,a=this.$store.getters.getCategories;a=(a=Array.isArray(a)?a:[]).map(function(t){var e={};return e.id="app-category-"+t.ident,e.icon="icon-category-"+t.ident,e.classes=[],e.router={name:"apps-category",params:{category:t.ident}},e.text=t.displayName,e});var i=[{id:"app-category-your-apps",classes:[],router:{name:"apps"},icon:"icon-category-installed",text:t("settings","Your apps")},{id:"app-category-enabled",classes:[],icon:"icon-category-enabled",router:{name:"apps-category",params:{category:"enabled"}},text:t("settings","Active apps")},{id:"app-category-disabled",classes:[],icon:"icon-category-disabled",router:{name:"apps-category",params:{category:"disabled"}},text:t("settings","Disabled apps")}];if(!this.settings.appstoreEnabled)return i;this.$store.getters.getUpdateCount>0&&i.push({id:"app-category-updates",classes:[],icon:"icon-download",router:{name:"apps-category",params:{category:"updates"}},text:t("settings","Updates"),utils:{counter:this.$store.getters.getUpdateCount}}),i.push({id:"app-category-app-bundles",classes:[],icon:"icon-category-app-bundles",router:{name:"apps-category",params:{category:"app-bundles"}},text:t("settings","App bundles")});var s=(a=i.concat(a)).findIndex(function(t){return t.id==="app-category-"+e.category});return s>=0?a[s].classes.push("active"):a[0].classes.push("active"),a.push({id:"app-developer-docs",classes:[],href:this.settings.developerDocumentation,text:t("settings","Developer documentation")+" ↗"}),a}}},N=Object(r.a)(T,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("Content",{class:{"with-app-sidebar":t.currentApp},attrs:{"app-name":"settings","content-class":{"icon-loading":t.loadingList},"navigation-class":{"icon-loading":t.loading}}},[a("AppNavigation",[a("ul",{attrs:{id:"appscategories"}},t._l(t.menu,function(t){return a("AppNavigationItem",{key:t.key,attrs:{item:t}})}),1)]),t._v(" "),a("AppContent",{staticClass:"app-settings-content",class:{"icon-loading":t.loadingList}},[a("AppList",{attrs:{category:t.category,app:t.currentApp,search:t.searchQuery}})],1),t._v(" "),t.id&&t.currentApp?a("AppSidebar",{on:{close:t.hideAppDetails}},[a("AppDetails",{attrs:{category:t.category,app:t.currentApp}})],1):t._e()],1)},[],!1,null,null,null);a.default=N.exports}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{67:function(t,e,a){var i=a(73);"string"==typeof i&&(i=[[t.i,i,""]]);var s={hmr:!0,transform:void 0,insertInto:void 0};a(20)(i,s);i.locals&&(t.exports=i.locals)},68:function(t,e,a){var i=a(77);"string"==typeof i&&(i=[[t.i,i,""]]);var s={hmr:!0,transform:void 0,insertInto:void 0};a(20)(i,s);i.locals&&(t.exports=i.locals)},72:function(t,e,a){"use strict";var i=a(67);a.n(i).a},73:function(t,e,a){(t.exports=a(19)(!1)).push([t.i,"\n.force[data-v-1304a746] {\n\tbackground: var(--color-main-background);\n\tborder-color: var(--color-error);\n\tcolor: var(--color-error);\n}\n.force[data-v-1304a746]:hover,\n.force[data-v-1304a746]:active {\n\tbackground: var(--color-error);\n\tborder-color: var(--color-error) !important;\n\tcolor: var(--color-main-background);\n}\n",""])},76:function(t,e,a){"use strict";var i=a(68);a.n(i).a},77:function(t,e,a){(t.exports=a(19)(!1)).push([t.i,"\n.force[data-v-52943dc0] {\n\tbackground: var(--color-main-background);\n\tborder-color: var(--color-error);\n\tcolor: var(--color-error);\n}\n.force[data-v-52943dc0]:hover,\n.force[data-v-52943dc0]:active {\n\tbackground: var(--color-error);\n\tborder-color: var(--color-error) !important;\n\tcolor: var(--color-main-background);\n}\n",""])},78:function(e,a,i){"use strict";i.r(a);var s=i(16),n={name:"appScore",props:["score"],computed:{scoreImage:function(){var t="rating/s"+Math.round(10*this.score)+".svg";return OC.imagePath("core",t)}}},r=i(5),o=Object(r.a)(n,function(){var t=this.$createElement;return(this._self._c||t)("img",{staticClass:"app-score-image",attrs:{src:this.scoreImage}})},[],!1,null,null,null).exports,p={mounted:function(){this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},computed:{appGroups:function(){return this.app.groups.map(function(t){return{id:t,name:t}})},loading:function(){var t=this;return function(e){return t.$store.getters.loading(e)}},installing:function(){return this.$store.getters.loading("install")},enableButtonText:function(){return this.app.needsDownload?t("settings","Download and enable"):t("settings","Enable")},forceEnableButtonText:function(){return this.app.needsDownload,t("settings","Enable untested app")},enableButtonTooltip:function(){return!!this.app.needsDownload&&t("settings","The app will be downloaded from the app store")},forceEnableButtonTooltip:function(){var e=t("settings","This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.");return this.app.needsDownload?e+" "+t("settings","The app will be downloaded from the app store"):e}},methods:{asyncFindGroup:function(t){return this.$store.dispatch("getGroups",{search:t,limit:5,offset:0})},isLimitedToGroups:function(t){return!(!this.app.groups.length&&!this.groupCheckedAppsData)},setGroupLimit:function(){this.groupCheckedAppsData||this.$store.dispatch("enableApp",{appId:this.app.id,groups:[]})},canLimitToGroups:function(t){return!(t.types&&t.types.includes("filesystem")||t.types.includes("prelogin")||t.types.includes("authentication")||t.types.includes("logging")||t.types.includes("prevent_group_restriction"))},addGroupLimitation:function(t){var e=this.app.groups.concat([]).concat([t.id]);this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},removeGroupLimitation:function(t){var e=this.app.groups.concat([]),a=e.indexOf(t.id);a>-1&&e.splice(a,1),this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},forceEnable:function(t){this.$store.dispatch("forceEnableApp",{appId:t,groups:[]}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},enable:function(t){this.$store.dispatch("enableApp",{appId:t,groups:[]}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},disable:function(t){this.$store.dispatch("disableApp",{appId:t}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},remove:function(t){this.$store.dispatch("uninstallApp",{appId:t}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},install:function(t){this.$store.dispatch("enableApp",{appId:t}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})},update:function(t){this.$store.dispatch("updateApp",{appId:t}).then(function(t){OC.Settings.Apps.rebuildNavigation()}).catch(function(t){OC.Notification.show(t)})}}},l=Object(r.a)(p,void 0,void 0,!1,null,null,null).exports,c={name:"svgFilterMixin",mounted:function(){this.filterId="invertIconApps"+Math.floor(100*Math.random())+(new Date).getSeconds()+(new Date).getMilliseconds()},computed:{filterUrl:function(){return"url(#".concat(this.filterId,")")}},data:function(){return{filterId:""}}},u=Object(r.a)(c,void 0,void 0,!1,null,null,null).exports,d={name:"appItem",mixins:[l,u],props:{app:{},category:{},listView:{type:Boolean,default:!0}},watch:{"$route.params.id":function(t){this.isSelected=this.app.id===t}},components:{AppScore:o},data:function(){return{isSelected:!1,scrolled:!1}},mounted:function(){this.isSelected=this.app.id===this.$route.params.id},computed:{hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5}},watchers:{},methods:{showAppDetails:function(t){"INPUT"!==t.currentTarget.tagName&&"A"!==t.currentTarget.tagName&&this.$router.push({name:"apps-details",params:{category:this.category,id:this.app.id}})},prefix:function(t,e){return t+"_"+e}}},g=(i(72),Object(r.a)(d,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"section",class:{selected:t.isSelected},on:{click:t.showAppDetails}},[a("div",{staticClass:"app-image app-image-icon",on:{click:t.showAppDetails}},[t.listView&&!t.app.preview||!t.listView&&!t.app.screenshot?a("div",{staticClass:"icon-settings-dark"}):t._e(),t._v(" "),t.listView&&t.app.preview?a("svg",{attrs:{width:"32",height:"32",viewBox:"0 0 32 32"}},[a("defs",[a("filter",{attrs:{id:t.filterId}},[a("feColorMatrix",{attrs:{in:"SourceGraphic",type:"matrix",values:"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"}})],1)]),t._v(" "),a("image",{staticClass:"app-icon",attrs:{x:"0",y:"0",width:"32",height:"32",preserveAspectRatio:"xMinYMin meet",filter:t.filterUrl,"xlink:href":t.app.preview}})]):t._e(),t._v(" "),!t.listView&&t.app.screenshot?a("img",{attrs:{src:t.app.screenshot,width:"100%"}}):t._e()]),t._v(" "),a("div",{staticClass:"app-name",on:{click:t.showAppDetails}},[t._v("\n\t\t"+t._s(t.app.name)+"\n\t")]),t._v(" "),t.listView?t._e():a("div",{staticClass:"app-summary"},[t._v(t._s(t.app.summary))]),t._v(" "),t.listView?a("div",{staticClass:"app-version"},[t.app.version?a("span",[t._v(t._s(t.app.version))]):t.app.appstoreData.releases[0].version?a("span",[t._v(t._s(t.app.appstoreData.releases[0].version))]):t._e()]):t._e(),t._v(" "),a("div",{staticClass:"app-level"},[300===t.app.level?a("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?a("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Official apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t"+t._s(t.t("settings","Official")))]):t._e(),t._v(" "),t.hasRating&&!t.listView?a("app-score",{attrs:{score:t.app.score}}):t._e()],1),t._v(" "),a("div",{staticClass:"actions"},[t.app.error?a("div",{staticClass:"warning"},[t._v(t._s(t.app.error))]):t._e(),t._v(" "),t.loading(t.app.id)?a("div",{staticClass:"icon icon-loading-small"}):t._e(),t._v(" "),t.app.update?a("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {update}",{update:t.app.update}),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?a("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?a("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active?t._e():a("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.forceEnable(t.app.id)}}}):a("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.loading(t.app.id)},on:{click:function(e){return e.stopPropagation(),t.enable(t.app.id)}}})])])},[],!1,null,"1304a746",null).exports),h={name:"prefixMixin",methods:{prefix:function(t,e){return t+"_"+e}}},v=Object(r.a)(h,void 0,void 0,!1,null,null,null).exports,f={name:"appList",mixins:[v],props:["category","app","search"],components:{appItem:g},computed:{loading:function(){return this.$store.getters.loading("list")},apps:function(){var t=this,e=this.$store.getters.getAllApps.filter(function(e){return-1!==e.name.toLowerCase().search(t.search.toLowerCase())}).sort(function(t,e){var a=""+(t.active?0:1)+(t.update?0:1)+t.name,i=""+(e.active?0:1)+(e.update?0:1)+e.name;return OC.Util.naturalSortCompare(a,i)});return"installed"===this.category?e.filter(function(t){return t.installed}):"enabled"===this.category?e.filter(function(t){return t.active&&t.installed}):"disabled"===this.category?e.filter(function(t){return!t.active&&t.installed}):"app-bundles"===this.category?e.filter(function(t){return t.bundles}):"updates"===this.category?e.filter(function(t){return t.update}):e.filter(function(e){return e.appstore&&void 0!==e.category&&(e.category===t.category||e.category.indexOf(t.category)>-1)})},bundles:function(){return this.$store.getters.getServerData.bundles},bundleApps:function(){return function(t){return this.$store.getters.getAllApps.filter(function(e){return e.bundleId===t})}},searchApps:function(){var t=this;return""===this.search?[]:this.$store.getters.getAllApps.filter(function(e){return-1!==e.name.toLowerCase().search(t.search.toLowerCase())&&!t.apps.find(function(t){return t.id===e.id})})},useAppStoreView:function(){return!this.useListView&&!this.useBundleView},useListView:function(){return"installed"===this.category||"enabled"===this.category||"disabled"===this.category||"updates"===this.category},useBundleView:function(){return"app-bundles"===this.category},allBundlesEnabled:function(){var t=this;return function(e){return 0===t.bundleApps(e).filter(function(t){return!t.active}).length}},bundleToggleText:function(){var e=this;return function(a){return e.allBundlesEnabled(a)?t("settings","Disable all"):t("settings","Enable all")}}},methods:{toggleBundle:function(t){return this.allBundlesEnabled(t)?this.disableBundle(t):this.enableBundle(t)},enableBundle:function(t){var e=this.bundleApps(t).map(function(t){return t.id});this.$store.dispatch("enableApp",{appId:e,groups:[]}).catch(function(t){console.log(t),OC.Notification.show(t)})},disableBundle:function(t){var e=this.bundleApps(t).map(function(t){return t.id});this.$store.dispatch("disableApp",{appId:e,groups:[]}).catch(function(t){OC.Notification.show(t)})}}},m=Object(r.a)(f,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"app-content-inner"}},[a("div",{staticClass:"apps-list",class:{installed:t.useBundleView||t.useListView,store:t.useAppStoreView},attrs:{id:"apps-list"}},[t.useListView?[a("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},t._l(t.apps,function(e){return a("app-item",{key:e.id,attrs:{app:e,category:t.category}})}),1)]:t._e(),t._v(" "),t._l(t.bundles,function(e){return t.useBundleView&&t.bundleApps(e.id).length>0?[a("transition-group",{staticClass:"apps-list-container",attrs:{name:"app-list",tag:"div"}},[a("div",{key:e.id,staticClass:"apps-header"},[a("div",{staticClass:"app-image"}),t._v(" "),a("h2",[t._v(t._s(e.name)+" "),a("input",{attrs:{type:"button",value:t.bundleToggleText(e.id)},on:{click:function(a){return t.toggleBundle(e.id)}}})]),t._v(" "),a("div",{staticClass:"app-version"}),t._v(" "),a("div",{staticClass:"app-level"}),t._v(" "),a("div",{staticClass:"app-groups"}),t._v(" "),a("div",{staticClass:"actions"},[t._v(" ")])]),t._v(" "),t._l(t.bundleApps(e.id),function(i){return a("app-item",{key:e.id+i.id,attrs:{app:i,category:t.category}})})],2)]:t._e()}),t._v(" "),t.useAppStoreView?t._l(t.apps,function(e){return a("app-item",{key:e.id,attrs:{app:e,category:t.category,"list-view":!1}})}):t._e()],2),t._v(" "),a("div",{staticClass:"apps-list installed",attrs:{id:"apps-list-search"}},[a("div",{staticClass:"apps-list-container"},[""!==t.search&&t.searchApps.length>0?[a("div",{staticClass:"section"},[a("div"),t._v(" "),a("td",{attrs:{colspan:"5"}},[a("h2",[t._v(t._s(t.t("settings","Results from other categories")))])])]),t._v(" "),t._l(t.searchApps,function(e){return a("app-item",{key:e.id,attrs:{app:e,category:t.category,"list-view":!0}})})]:t._e()],2)]),t._v(" "),t.loading||0!==t.searchApps.length||0!==t.apps.length?t._e():a("div",{staticClass:"emptycontent emptycontent-search",attrs:{id:"apps-list-empty"}},[a("div",{staticClass:"icon-settings-dark",attrs:{id:"app-list-empty-icon"}}),t._v(" "),a("h2",[t._v(t._s(t.t("settings","No apps found for your version")))])]),t._v(" "),a("div",{attrs:{id:"searchresults"}})])},[],!1,null,null,null).exports,_=i(2),b=i(69),y=i.n(b),C=i(74),w=i.n(C),A=i(75),k=i.n(A),x={mixins:[l,v,u],name:"appDetails",props:["category","app"],components:{Multiselect:s.Multiselect,AppScore:o},data:function(){return{groupCheckedAppsData:!1}},mounted:function(){this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},computed:{appstoreUrl:function(){return"https://apps.nextcloud.com/apps/".concat(this.app.id)},licence:function(){return this.app.licence?t("settings","{license}-licensed",{license:(""+this.app.licence).toUpperCase()}):null},hasRating:function(){return this.app.appstoreData&&this.app.appstoreData.ratingNumOverall>5},author:function(){return"string"==typeof this.app.author?[{"@value":this.app.author}]:this.app.author["@value"]?[this.app.author]:this.app.author},appGroups:function(){return this.app.groups.map(function(t){return{id:t,name:t}})},groups:function(){return this.$store.getters.getGroups.filter(function(t){return"disabled"!==t.id}).sort(function(t,e){return t.name.localeCompare(e.name)})},renderMarkdown:function(){var t=new w.a.Renderer;return t.link=function(t,e,a){try{var i=decodeURIComponent(unescape(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0!==i.indexOf("http:")&&0!==i.indexOf("https:"))return"";var s='<a href="'+t+'" rel="noreferrer noopener"';return e&&(s+=' title="'+e+'"'),s+=">"+a+"</a>"},t.image=function(t,e,a){return a||e},t.blockquote=function(t){return t},k.a.sanitize(w()(this.app.description.trim(),{renderer:t,gfm:!1,highlight:!1,tables:!1,breaks:!1,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!1}),{SAFE_FOR_JQUERY:!0,ALLOWED_TAGS:["strong","p","a","ul","ol","li","em","del","blockquote"]})}}},D=(i(76),Object(r.a)(x,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticStyle:{padding:"20px"},attrs:{id:"app-details-view"}},[a("h2",[t.app.preview?t._e():a("div",{staticClass:"icon-settings-dark"}),t._v(" "),t.app.previewAsIcon&&t.app.preview?a("svg",{attrs:{width:"32",height:"32",viewBox:"0 0 32 32"}},[a("defs",[a("filter",{attrs:{id:t.filterId}},[a("feColorMatrix",{attrs:{in:"SourceGraphic",type:"matrix",values:"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"}})],1)]),t._v(" "),a("image",{staticClass:"app-icon",attrs:{x:"0",y:"0",width:"32",height:"32",preserveAspectRatio:"xMinYMin meet",filter:t.filterUrl,"xlink:href":t.app.preview}})]):t._e(),t._v("\n\t\t"+t._s(t.app.name))]),t._v(" "),t.app.screenshot?a("img",{attrs:{src:t.app.screenshot,width:"100%"}}):t._e(),t._v(" "),300===t.app.level||200===t.app.level||t.hasRating?a("div",{staticClass:"app-level"},[300===t.app.level?a("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","This app is supported via your current Nextcloud subscription."),expression:"t('settings', 'This app is supported via your current Nextcloud subscription.')",modifiers:{auto:!0}}],staticClass:"supported icon-checkmark-color"},[t._v("\n\t\t\t"+t._s(t.t("settings","Supported")))]):t._e(),t._v(" "),200===t.app.level?a("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","Official apps are developed by and within the community. They offer central functionality and are ready for production use."),expression:"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')",modifiers:{auto:!0}}],staticClass:"official icon-checkmark"},[t._v("\n\t\t\t"+t._s(t.t("settings","Official")))]):t._e(),t._v(" "),t.hasRating?a("app-score",{attrs:{score:t.app.appstoreData.ratingOverall}}):t._e()],1):t._e(),t._v(" "),t.author?a("div",{staticClass:"app-author"},[t._v("\n\t\t"+t._s(t.t("settings","by"))+"\n\t\t"),t._l(t.author,function(e,i){return a("span",[e["@attributes"]&&e["@attributes"].homepage?a("a",{attrs:{href:e["@attributes"].homepage}},[t._v(t._s(e["@value"]))]):e["@value"]?a("span",[t._v(t._s(e["@value"]))]):a("span",[t._v(t._s(e))]),i+1<t.author.length?a("span",[t._v(", ")]):t._e()])})],2):t._e(),t._v(" "),t.licence?a("div",{staticClass:"app-licence"},[t._v(t._s(t.licence))]):t._e(),t._v(" "),a("div",{staticClass:"actions"},[a("div",{staticClass:"actions-buttons"},[t.app.update?a("input",{staticClass:"update primary",attrs:{type:"button",value:t.t("settings","Update to {version}",{version:t.app.update}),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return t.update(t.app.id)}}}):t._e(),t._v(" "),t.app.canUnInstall?a("input",{staticClass:"uninstall",attrs:{type:"button",value:t.t("settings","Remove"),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return t.remove(t.app.id)}}}):t._e(),t._v(" "),t.app.active?a("input",{staticClass:"enable",attrs:{type:"button",value:t.t("settings","Disable"),disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return t.disable(t.app.id)}}}):t._e(),t._v(" "),t.app.active||!t.app.canInstall&&!t.app.isCompatible?t.app.active?t._e():a("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.forceEnableButtonTooltip,expression:"forceEnableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable force",attrs:{type:"button",value:t.forceEnableButtonText,disabled:t.installing||t.loading(t.app.id)},on:{click:function(e){return t.forceEnable(t.app.id)}}}):a("input",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.enableButtonTooltip,expression:"enableButtonTooltip",modifiers:{auto:!0}}],staticClass:"enable primary",attrs:{type:"button",value:t.enableButtonText,disabled:!t.app.canInstall||t.installing||t.loading(t.app.id)},on:{click:function(e){return t.enable(t.app.id)}}})]),t._v(" "),a("div",{staticClass:"app-groups"},[t.app.active&&t.canLimitToGroups(t.app)?a("div",{staticClass:"groups-enable"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.groupCheckedAppsData,expression:"groupCheckedAppsData"}],staticClass:"groups-enable__checkbox checkbox",attrs:{type:"checkbox",id:t.prefix("groups_enable",t.app.id)},domProps:{value:t.app.id,checked:Array.isArray(t.groupCheckedAppsData)?t._i(t.groupCheckedAppsData,t.app.id)>-1:t.groupCheckedAppsData},on:{change:[function(e){var a=t.groupCheckedAppsData,i=e.target,s=!!i.checked;if(Array.isArray(a)){var n=t.app.id,r=t._i(a,n);i.checked?r<0&&(t.groupCheckedAppsData=a.concat([n])):r>-1&&(t.groupCheckedAppsData=a.slice(0,r).concat(a.slice(r+1)))}else t.groupCheckedAppsData=s},t.setGroupLimit]}}),t._v(" "),a("label",{attrs:{for:t.prefix("groups_enable",t.app.id)}},[t._v(t._s(t.t("settings","Limit to groups")))]),t._v(" "),a("input",{staticClass:"group_select",attrs:{type:"hidden",title:t.t("settings","All"),value:""}}),t._v(" "),t.isLimitedToGroups(t.app)?a("multiselect",{staticClass:"multiselect-vue",attrs:{options:t.groups,value:t.appGroups,"options-limit":5,placeholder:t.t("settings","Limit app usage to groups"),label:"name","track-by":"id",multiple:!0,"close-on-select":!1,"tag-width":60},on:{select:t.addGroupLimitation,remove:t.removeGroupLimitation,"search-change":t.asyncFindGroup}},[a("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])]):t._e()],1):t._e()])]),t._v(" "),a("ul",{staticClass:"app-dependencies"},[t.app.missingMinOwnCloudVersion?a("li",[t._v(t._s(t.t("settings","This app has no minimum Nextcloud version assigned. This will be an error in the future.")))]):t._e(),t._v(" "),t.app.missingMaxOwnCloudVersion?a("li",[t._v(t._s(t.t("settings","This app has no maximum Nextcloud version assigned. This will be an error in the future.")))]):t._e(),t._v(" "),t.app.canInstall?t._e():a("li",[t._v("\n\t\t\t"+t._s(t.t("settings","This app cannot be installed because the following dependencies are not fulfilled:"))+"\n\t\t\t"),a("ul",{staticClass:"missing-dependencies"},t._l(t.app.missingDependencies,function(e){return a("li",[t._v(t._s(e))])}),0)])]),t._v(" "),a("p",{staticClass:"documentation"},[t.app.internal?t._e():a("a",{staticClass:"appslink",attrs:{href:t.appstoreUrl,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","View in store"))+" ↗")]),t._v(" "),t.app.website?a("a",{staticClass:"appslink",attrs:{href:t.app.website,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Visit website"))+" ↗")]):t._e(),t._v(" "),t.app.bugs?a("a",{staticClass:"appslink",attrs:{href:t.app.bugs,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Report a bug"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.user?a("a",{staticClass:"appslink",attrs:{href:t.app.documentation.user,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","User documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.admin?a("a",{staticClass:"appslink",attrs:{href:t.app.documentation.admin,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Admin documentation"))+" ↗")]):t._e(),t._v(" "),t.app.documentation&&t.app.documentation.developer?a("a",{staticClass:"appslink",attrs:{href:t.app.documentation.developer,target:"_blank",rel:"noreferrer noopener"}},[t._v(t._s(t.t("settings","Developer documentation"))+" ↗")]):t._e()]),t._v(" "),a("div",{staticClass:"app-description",domProps:{innerHTML:t._s(t.renderMarkdown)}})])},[],!1,null,"52943dc0",null).exports);_.default.use(y.a);var N={name:"Apps",props:{category:{type:String,default:"installed"},id:{type:String,default:""}},components:{AppContent:s.AppContent,AppNavigation:s.AppNavigation,AppNavigationItem:s.AppNavigationItem,AppSidebar:s.AppSidebar,Content:s.Content,AppDetails:D,AppList:m},methods:{setSearch:function(t){this.searchQuery=t},resetSearch:function(){this.setSearch("")},hideAppDetails:function(){this.$router.push({name:"apps-category",params:{category:this.category}})}},beforeMount:function(){this.$store.dispatch("getCategories"),this.$store.dispatch("getAllApps"),this.$store.dispatch("getGroups",{offset:0,limit:5}),this.$store.commit("setUpdateCount",this.$store.getters.getServerData.updateCount)},mounted:function(){this.appSearch=new OCA.Search(this.setSearch,this.resetSearch)},data:function(){return{searchQuery:""}},watch:{category:function(t,e){this.setSearch("")}},computed:{loading:function(){return this.$store.getters.loading("categories")},loadingList:function(){return this.$store.getters.loading("list")},currentApp:function(){var t=this;return this.apps.find(function(e){return e.id===t.id})},categories:function(){return this.$store.getters.getCategories},apps:function(){return this.$store.getters.getAllApps},updateCount:function(){return this.$store.getters.getUpdateCount},settings:function(){return this.$store.getters.getServerData},menu:function(){var e=this,a=this.$store.getters.getCategories;a=(a=Array.isArray(a)?a:[]).map(function(t){var e={};return e.id="app-category-"+t.ident,e.icon="icon-category-"+t.ident,e.classes=[],e.router={name:"apps-category",params:{category:t.ident}},e.text=t.displayName,e});var i=[{id:"app-category-your-apps",classes:[],router:{name:"apps"},icon:"icon-category-installed",text:t("settings","Your apps")},{id:"app-category-enabled",classes:[],icon:"icon-category-enabled",router:{name:"apps-category",params:{category:"enabled"}},text:t("settings","Active apps")},{id:"app-category-disabled",classes:[],icon:"icon-category-disabled",router:{name:"apps-category",params:{category:"disabled"}},text:t("settings","Disabled apps")}];if(!this.settings.appstoreEnabled)return i;this.$store.getters.getUpdateCount>0&&i.push({id:"app-category-updates",classes:[],icon:"icon-download",router:{name:"apps-category",params:{category:"updates"}},text:t("settings","Updates"),utils:{counter:this.$store.getters.getUpdateCount}}),i.push({id:"app-category-app-bundles",classes:[],icon:"icon-category-app-bundles",router:{name:"apps-category",params:{category:"app-bundles"}},text:t("settings","App bundles")});var s=(a=i.concat(a)).findIndex(function(t){return t.id==="app-category-"+e.category});return s>=0?a[s].classes.push("active"):a[0].classes.push("active"),a.push({id:"app-developer-docs",classes:[],href:this.settings.developerDocumentation,text:t("settings","Developer documentation")+" ↗"}),a}}},T=Object(r.a)(N,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("Content",{class:{"with-app-sidebar":t.currentApp},attrs:{"app-name":"settings","content-class":{"icon-loading":t.loadingList},"navigation-class":{"icon-loading":t.loading}}},[a("AppNavigation",[a("ul",{attrs:{id:"appscategories"}},t._l(t.menu,function(t){return a("AppNavigationItem",{key:t.key,attrs:{item:t}})}),1)]),t._v(" "),a("AppContent",{staticClass:"app-settings-content",class:{"icon-loading":t.loadingList}},[a("AppList",{attrs:{category:t.category,app:t.currentApp,search:t.searchQuery}})],1),t._v(" "),t.id&&t.currentApp?a("AppSidebar",{on:{close:t.hideAppDetails}},[a("AppDetails",{attrs:{category:t.category,app:t.currentApp}})],1):t._e()],1)},[],!1,null,null,null);a.default=T.exports}}]); //# sourceMappingURL=vue-4.js.map
\ No newline at end of file diff --git a/settings/js/vue-4.js.map b/settings/js/vue-4.js.map index ab82ea91a31..e8e6e6e4e87 100644 --- a/settings/js/vue-4.js.map +++ b/settings/js/vue-4.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./settings/src/components/appList/appItem.vue?5cfa","webpack:///./settings/src/components/appDetails.vue?c69f","webpack:///./settings/src/components/appList/appItem.vue?64bc","webpack:///./settings/src/components/appList/appItem.vue?48b8","webpack:///./settings/src/components/appDetails.vue?1f9b","webpack:///./settings/src/components/appDetails.vue?656a","webpack:///./settings/src/views/Apps.vue?ae09","webpack:///./settings/src/components/appList/appScore.vue?02ae","webpack:///settings/src/components/appList/appScore.vue","webpack:///./settings/src/components/appList/appScore.vue","webpack:///./settings/src/components/appList/appScore.vue?644e","webpack:///./settings/src/components/appManagement.vue?f8d8","webpack:///settings/src/components/appManagement.vue","webpack:///./settings/src/components/appManagement.vue","webpack:///./settings/src/components/svgFilterMixin.vue?e63f","webpack:///settings/src/components/svgFilterMixin.vue","webpack:///./settings/src/components/svgFilterMixin.vue","webpack:///./settings/src/components/appList/appItem.vue?9674","webpack:///settings/src/components/appList/appItem.vue","webpack:///./settings/src/components/appList/appItem.vue","webpack:///./settings/src/components/appList/appItem.vue?390c","webpack:///./settings/src/components/prefixMixin.vue?4873","webpack:///settings/src/components/prefixMixin.vue","webpack:///./settings/src/components/prefixMixin.vue","webpack:///./settings/src/components/appList.vue?42a6","webpack:///settings/src/components/appList.vue","webpack:///./settings/src/components/appList.vue","webpack:///./settings/src/components/appList.vue?dfbc","webpack:///./settings/src/components/appDetails.vue?c695","webpack:///settings/src/components/appDetails.vue","webpack:///./settings/src/components/appDetails.vue","webpack:///./settings/src/components/appDetails.vue?e38b","webpack:///settings/src/views/Apps.vue","webpack:///./settings/src/views/Apps.vue?b69d","webpack:///./settings/src/views/Apps.vue"],"names":["content","__webpack_require__","module","i","options","hmr","transform","insertInto","undefined","locals","exports","_node_modules_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_style_index_0_id_1a5a2391_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","n","push","_node_modules_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_style_index_0_id_52943dc0_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","appList_appScorevue_type_script_lang_js_","name","props","computed","scoreImage","imageName","Math","round","this","score","OC","imagePath","appScore","Object","componentNormalizer","_h","$createElement","_self","_c","staticClass","attrs","src","components_appManagementvue_type_script_lang_js_","mounted","app","groups","length","groupCheckedAppsData","appGroups","map","group","id","loading","self","$store","getters","installing","enableButtonText","needsDownload","t","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","concat","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","then","response","Settings","Apps","rebuildNavigation","catch","error","Notification","show","enable","disable","remove","install","update","appManagement","appManagement_render","appManagement_staticRenderFns","components_svgFilterMixinvue_type_script_lang_js_","filterId","floor","random","Date","getSeconds","getMilliseconds","filterUrl","data","svgFilterMixin","svgFilterMixin_render","svgFilterMixin_staticRenderFns","appList_appItemvue_type_script_lang_js_","mixins","category","listView","type","Boolean","default","watch","$route.params.id","isSelected","components","AppScore","scrolled","$route","params","watchers","showAppDetails","event","currentTarget","tagName","$router","prefix","_prefix","appItem","_vm","class","selected","on","click","preview","screenshot","_e","_v","width","height","viewBox","in","values","x","y","preserveAspectRatio","filter","xlink:href","_s","summary","version","appstoreData","releases","level","directives","rawName","value","expression","modifiers","auto","disabled","$event","stopPropagation","active","canInstall","isCompatible","components_prefixMixinvue_type_script_lang_js_","prefixMixin","prefixMixin_render","prefixMixin_staticRenderFns","components_appListvue_type_script_lang_js_","apps","_this","getAllApps","toLowerCase","sort","a","b","sortStringA","sortStringB","Util","naturalSortCompare","installed","bundles","appstore","getServerData","bundleApps","bundle","bundleId","searchApps","_this2","find","_app","useAppStoreView","useListView","useBundleView","allBundlesEnabled","bundleToggleText","toggleBundle","disableBundle","enableBundle","console","log","appList","store","tag","_l","key","list-view","colspan","components_appDetailsvue_type_script_lang_js_","Multiselect","ncvuecomponents","appstoreUrl","licence","license","toUpperCase","hasRating","ratingNumOverall","author","@value","getGroups","localeCompare","renderMarkdown","renderer","marked_default","Renderer","link","href","title","text","prot","decodeURIComponent","unescape","replace","e","out","image","blockquote","quote","purify_default","sanitize","description","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","appDetails","staticStyle","padding","previewAsIcon","ratingOverall","domProps","checked","Array","isArray","_i","change","$$a","$$el","target","$$c","$$v","$$i","slice","for","options-limit","placeholder","label","track-by","multiple","close-on-select","tag-width","select","search-change","slot","dep","internal","rel","website","bugs","documentation","user","admin","developer","innerHTML","vue_runtime_esm","use","vue_local_storage_default","views_Appsvue_type_script_lang_js_","String","AppContent","AppNavigation","AppNavigationItem","AppSidebar","Content","AppDetails","AppList","setSearch","searchQuery","resetSearch","hideAppDetails","beforeMount","commit","updateCount","appSearch","OCA","Search","val","old","loadingList","currentApp","categories","getCategories","getUpdateCount","settings","menu","item","ident","icon","classes","router","displayName","defaultCategories","appstoreEnabled","utils","counter","activeGroup","findIndex","developerDocumentation","Apps_component","with-app-sidebar","app-name","content-class","icon-loading","navigation-class","close","__webpack_exports__"],"mappings":"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","file":"vue-4.js","sourcesContent":["\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1a5a2391&scoped=true&lang=css&\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1a5a2391&scoped=true&lang=css&\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1a5a2391&scoped=true&lang=css&\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import mod from \"-!../../../../node_modules/style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1a5a2391&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1a5a2391&scoped=true&lang=css&\"","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-1a5a2391] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-1a5a2391]:hover,\\n.force[data-v-1a5a2391]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n","import mod from \"-!../../../node_modules/style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-52943dc0] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-52943dc0]:hover,\\n.force[data-v-52943dc0]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Content',{class:{ 'with-app-sidebar': _vm.currentApp},attrs:{\"app-name\":\"settings\",\"content-class\":{ 'icon-loading': _vm.loadingList },\"navigation-class\":{ 'icon-loading': _vm.loading }}},[_c('AppNavigation',[_c('ul',{attrs:{\"id\":\"appscategories\"}},_vm._l((_vm.menu),function(item){return _c('AppNavigationItem',{key:item.key,attrs:{\"item\":item}})}),1)]),_vm._v(\" \"),_c('AppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.currentApp,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.currentApp)?_c('AppSidebar',{on:{\"close\":_vm.hideAppDetails}},[_c('AppDetails',{attrs:{\"category\":_vm.category,\"app\":_vm.currentApp}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appScore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appScore.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" class=\"app-score-image\" />\n</template>\n<script>\n\texport default {\n\t\tname: 'appScore',\n\t\tprops: ['score'],\n\t\tcomputed: {\n\t\t\tscoreImage() {\n\t\t\t\tlet score = Math.round( this.score * 10 );\n\t\t\t\tlet imageName = 'rating/s' + score + '.svg';\n\t\t\t\treturn OC.imagePath('core', imageName);\n\t\t\t}\n\t\t}\n\t};\n</script>","import { render, staticRenderFns } from \"./appScore.vue?vue&type=template&id=3c7dd35d&\"\nimport script from \"./appScore.vue?vue&type=script&lang=js&\"\nexport * from \"./appScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appManagement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appManagement.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\n\texport default {\n\t\tmounted() {\n\t\t\tif (this.app.groups.length > 0) {\n\t\t\t\tthis.groupCheckedAppsData = true;\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\tappGroups() {\n\t\t\t\treturn this.app.groups.map(group => {return {id: group, name: group}});\n\t\t\t},\n\t\t\tloading() {\n\t\t\t\tlet self = this;\n\t\t\t\treturn function(id) {\n\t\t\t\t\treturn self.$store.getters.loading(id);\n\t\t\t\t}\n\t\t\t},\n\t\t\tinstalling() {\n\t\t\t\treturn this.$store.getters.loading('install');\n\t\t\t},\n\t\t\tenableButtonText() {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Download and enable');\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable');\n\t\t\t},\n\t\t\tforceEnableButtonText() {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Enable untested app');\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable untested app');\n\t\t\t},\n\t\t\tenableButtonTooltip() {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings','The app will be downloaded from the app store');\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tforceEnableButtonTooltip() {\n\t\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.');\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn base + ' ' + t('settings','The app will be downloaded from the app store');\n\t\t\t\t}\n\t\t\t\treturn base;\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\tasyncFindGroup(query) {\n\t\t\t\treturn this.$store.dispatch('getGroups', {search: query, limit: 5, offset: 0});\n\t\t\t},\n\t\t\tisLimitedToGroups(app) {\n\t\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tsetGroupLimit: function() {\n\t\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\t\tthis.$store.dispatch('enableApp', {appId: this.app.id, groups: []});\n\t\t\t\t}\n\t\t\t},\n\t\t\tcanLimitToGroups(app) {\n\t\t\t\tif (app.types && app.types.includes('filesystem')\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\taddGroupLimitation(group) {\n\t\t\t\tlet groups = this.app.groups.concat([]).concat([group.id]);\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: groups});\n\t\t\t},\n\t\t\tremoveGroupLimitation(group) {\n\t\t\t\tlet currentGroups = this.app.groups.concat([]);\n\t\t\t\tlet index = currentGroups.indexOf(group.id);\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tcurrentGroups.splice(index, 1);\n\t\t\t\t}\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups});\n\t\t\t},\n\t\t\tforceEnable(appId) {\n\t\t\t\tthis.$store.dispatch('forceEnableApp', { appId: appId, groups: [] })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tenable(appId) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: appId, groups: [] })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tdisable(appId) {\n\t\t\t\tthis.$store.dispatch('disableApp', { appId: appId })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tremove(appId) {\n\t\t\t\tthis.$store.dispatch('uninstallApp', { appId: appId })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tinstall(appId) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: appId })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tupdate(appId) {\n\t\t\t\tthis.$store.dispatch('updateApp', { appId: appId })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t}\n\t\t}\n\t}\n</script>\n","var render, staticRenderFns\nimport script from \"./appManagement.vue?vue&type=script&lang=js&\"\nexport * from \"./appManagement.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\n\texport default {\n\t\tname: 'svgFilterMixin',\n\t\tmounted() {\n\t\t\tthis.filterId = 'invertIconApps' + Math.floor((Math.random() * 100 )) + new Date().getSeconds() + new Date().getMilliseconds();\n\t\t},\n\t\tcomputed: {\n\t\t\tfilterUrl () {\n\t\t\t\treturn `url(#${this.filterId})`;\n\t\t\t},\n\t\t},\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tfilterId: '',\n\t\t\t};\n\t\t},\n\t}\n</script>","var render, staticRenderFns\nimport script from \"./svgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./svgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"section\" v-bind:class=\"{ selected: isSelected }\" v-on:click=\"showAppDetails\">\n\t\t<div class=\"app-image app-image-icon\" v-on:click=\"showAppDetails\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !app.screenshot)\" class=\"icon-settings-dark\"></div>\n\n\t\t\t<svg v-if=\"listView && app.preview\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"></feColorMatrix></filter></defs>\n\t\t\t\t<image x=\"0\" y=\"0\" width=\"32\" height=\"32\" preserveAspectRatio=\"xMinYMin meet\" :filter=\"filterUrl\" :xlink:href=\"app.preview\" class=\"app-icon\"></image>\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot\" :src=\"app.screenshot\" width=\"100%\" />\n\t\t</div>\n\t\t<div class=\"app-name\" v-on:click=\"showAppDetails\">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div class=\"app-summary\" v-if=\"!listView\">{{ app.summary }}</div>\n\t\t<div class=\"app-version\" v-if=\"listView\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class=\"app-level\">\n\t\t\t<span class=\"supported icon-checkmark-color\" v-if=\"app.level === 300\"\n\t\t\t\t v-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span class=\"official icon-checkmark\" v-if=\"app.level === 200\"\n\t\t\t\t v-tooltip.auto=\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\">\n\t\t\t\t{{ t('settings', 'Official') }}</span>\n\t\t\t<app-score v-if=\"!listView\" :score=\"app.score\"></app-score>\n\t\t</div>\n\n\t\t<div class=\"actions\">\n\t\t\t<div class=\"warning\" v-if=\"app.error\">{{ app.error }}</div>\n\t\t\t<div class=\"icon icon-loading-small\" v-if=\"loading(app.id)\"></div>\n\t\t\t<input v-if=\"app.update\" class=\"update primary\" type=\"button\" :value=\"t('settings', 'Update to {update}', {update:app.update})\" v-on:click.stop=\"update(app.id)\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t<input v-if=\"app.canUnInstall\" class=\"uninstall\" type=\"button\" :value=\"t('settings', 'Remove')\" v-on:click.stop=\"remove(app.id)\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t<input v-if=\"app.active\" class=\"enable\" type=\"button\" :value=\"t('settings','Disable')\" v-on:click.stop=\"disable(app.id)\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\" class=\"enable\" type=\"button\" :value=\"enableButtonText\" v-on:click.stop=\"enable(app.id)\" v-tooltip.auto=\"enableButtonTooltip\" :disabled=\"!app.canInstall || installing || loading(app.id)\" />\n\t\t\t<input v-else-if=\"!app.active\" class=\"enable force\" type=\"button\" :value=\"forceEnableButtonText\" v-on:click.stop=\"forceEnable(app.id)\" v-tooltip.auto=\"forceEnableButtonTooltip\" :disabled=\"installing || loading(app.id)\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\n\timport AppScore from './appScore';\n\timport AppManagement from '../appManagement';\n\timport SvgFilterMixin from '../svgFilterMixin';\n\n\texport default {\n\t\tname: 'appItem',\n\t\tmixins: [AppManagement, SvgFilterMixin],\n\t\tprops: {\n\t\t\tapp: {},\n\t\t\tcategory: {},\n\t\t\tlistView: {\n\t\t\t\ttype: Boolean,\n\t\t\t\tdefault: true,\n\t\t\t}\n\t\t},\n\t\twatch: {\n\t\t\t'$route.params.id': function (id) {\n\t\t\t\tthis.isSelected = (this.app.id === id);\n\t\t\t}\n\t\t},\n\t\tcomponents: {\n\t\t\tAppScore,\n\t\t},\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tisSelected: false,\n\t\t\t\tscrolled: false,\n\t\t\t};\n\t\t},\n\t\tmounted() {\n\t\t\tthis.isSelected = (this.app.id === this.$route.params.id);\n\t\t},\n\t\tcomputed: {\n\n\t\t},\n\t\twatchers: {\n\n\t\t},\n\t\tmethods: {\n\t\t\tshowAppDetails(event) {\n\t\t\t\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.$router.push({\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: {category: this.category, id: this.app.id}\n\t\t\t\t});\n\t\t\t},\n\t\t\tprefix(prefix, content) {\n\t\t\t\treturn prefix + '_' + content;\n\t\t\t},\n\t\t}\n\t}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","import { render, staticRenderFns } from \"./appItem.vue?vue&type=template&id=1a5a2391&scoped=true&\"\nimport script from \"./appItem.vue?vue&type=script&lang=js&\"\nexport * from \"./appItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./appItem.vue?vue&type=style&index=0&id=1a5a2391&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a5a2391\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.app.screenshot))?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(_vm._s(_vm.app.summary))]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-version\"},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Official')))]):_vm._e(),_vm._v(\" \"),(!_vm.listView)?_c('app-score',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(_vm._s(_vm.app.error))]):_vm._e(),_vm._v(\" \"),(_vm.loading(_vm.app.id))?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {update}', {update:_vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\n\texport default {\n\t\tname: 'prefixMixin',\n\t\tmethods: {\n\t\t\tprefix (prefix, content) {\n\t\t\t\treturn prefix + '_' + content;\n\t\t\t},\n\t\t}\n\t}\n</script>","var render, staticRenderFns\nimport script from \"./prefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./prefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\t\t\t\t\t<app-item v-for=\"app in apps\" :key=\"app.id\" :app=\"app\" :category=\"category\" />\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\t\t\t<template v-for=\"bundle in bundles\" v-if=\"useBundleView && bundleApps(bundle.id).length > 0\">\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\n\t\t\t\t\t<div class=\"apps-header\" :key=\"bundle.id\">\n\t\t\t\t\t\t<div class=\"app-image\"></div>\n\t\t\t\t\t\t<h2>{{ bundle.name }} <input type=\"button\" :value=\"bundleToggleText(bundle.id)\" v-on:click=\"toggleBundle(bundle.id)\"></h2>\n\t\t\t\t\t\t<div class=\"app-version\"></div>\n\t\t\t\t\t\t<div class=\"app-level\"></div>\n\t\t\t\t\t\t<div class=\"app-groups\"></div>\n\t\t\t\t\t\t<div class=\"actions\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<app-item v-for=\"app in bundleApps(bundle.id)\" :key=\"bundle.id + app.id\" :app=\"app\" :category=\"category\"/>\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\t\t\t<template v-if=\"useAppStoreView\">\n\t\t\t\t<app-item v-for=\"app in apps\" :key=\"app.id\" :app=\"app\" :category=\"category\" :list-view=\"false\" />\n\t\t\t</template>\n\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div></div>\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\n\t\t\t\t\t<app-item v-for=\"app in searchApps\" :key=\"app.id\" :app=\"app\" :category=\"category\" :list-view=\"true\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\" v-if=\"!loading && searchApps.length === 0 && apps.length === 0\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\"></div>\n\t\t\t<h2>{{ t('settings', 'No apps found for your version')}}</h2>\n\t\t</div>\n\n\t\t<div id=\"searchresults\"></div>\n\t</div>\n</template>\n\n<script>\nimport appItem from './appList/appItem';\nimport prefix from './prefixMixin';\n\nexport default {\n\tname: 'appList',\n\tmixins: [prefix],\n\tprops: ['category', 'app', 'search'],\n\tcomponents: {\n\t\tappItem\n\t},\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list');\n\t\t},\n\t\tapps() {\n\t\t\tlet apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function (a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name;\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name;\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB);\n\t\t\t\t});\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed);\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed);\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed);\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles);\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update);\n\t\t\t}\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined &&\n\t\t\t\t\t(app.category === this.category || app.category.indexOf(this.category) > -1);\n\t\t\t});\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getServerData.bundles;\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => app.bundleId === bundle);\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id));\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView;\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates');\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles');\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\tlet self = this;\n\t\t\treturn function(id) {\n\t\t\t\treturn self.bundleApps(id).filter(app => !app.active).length === 0;\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\tlet self = this;\n\t\t\treturn function(id) {\n\t\t\t\tif (self.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all');\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable all');\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id);\n\t\t\t}\n\t\t\treturn this.enableBundle(id);\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tlet apps = this.bundleApps(id).map(app => app.id);\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => { console.log(error); OC.Notification.show(error)});\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tlet apps = this.bundleApps(id).map(app => app.id);\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./appList.vue?vue&type=template&id=f515f708&\"\nimport script from \"./appList.vue?vue&type=script&lang=js&\"\nexport * from \"./appList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),_vm._l((_vm.bundles),function(bundle){return (_vm.useBundleView && _vm.bundleApps(bundle.id).length > 0)?[_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\" \")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('app-item',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2)]:_vm._e()}),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_vm._v(\" \"),(!_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-details-view\" style=\"padding: 20px;\">\n\t\t<h2>\n\t\t\t<div v-if=\"!app.preview\" class=\"icon-settings-dark\"></div>\n\t\t\t<svg v-if=\"app.previewAsIcon && app.preview\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"></feColorMatrix></filter></defs>\n\t\t\t\t<image x=\"0\" y=\"0\" width=\"32\" height=\"32\" preserveAspectRatio=\"xMinYMin meet\" :filter=\"filterUrl\" :xlink:href=\"app.preview\" class=\"app-icon\"></image>\n\t\t\t</svg>\n\t\t\t{{ app.name }}</h2>\n\t\t<img v-if=\"app.screenshot\" :src=\"app.screenshot\" width=\"100%\" />\n\t\t<div class=\"app-level\" v-if=\"app.level === 300 || app.level === 200 || hasRating\">\n\t\t\t<span class=\"supported icon-checkmark-color\" v-if=\"app.level === 300\"\n\t\t\t\t v-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span class=\"official icon-checkmark\" v-if=\"app.level === 200\"\n\t\t\t v-tooltip.auto=\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\">\n\t\t\t\t{{ t('settings', 'Official') }}</span>\n\t\t\t<app-score v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\"></app-score>\n\t\t</div>\n\n\t\t<div class=\"app-author\" v-if=\"author\">\n\t\t\t{{ t('settings', 'by') }}\n\t\t\t<span v-for=\"(a, index) in author\">\n\t\t\t\t<a v-if=\"a['@attributes'] && a['@attributes']['homepage']\" :href=\"a['@attributes']['homepage']\">{{ a['@value'] }}</a><span v-else-if=\"a['@value']\">{{ a['@value'] }}</span><span v-else>{{ a }}</span><span v-if=\"index+1 < author.length\">, </span>\n\t\t\t</span>\n\t\t</div>\n\t\t<div class=\"app-licence\" v-if=\"licence\">{{ licence }}</div>\n\t\t<div class=\"actions\">\n\t\t\t<div class=\"actions-buttons\">\n\t\t\t\t<input v-if=\"app.update\" class=\"update primary\" type=\"button\" :value=\"t('settings', 'Update to {version}', {version: app.update})\" v-on:click=\"update(app.id)\" :disabled=\"installing || loading(app.id)\"/>\n\t\t\t\t<input v-if=\"app.canUnInstall\" class=\"uninstall\" type=\"button\" :value=\"t('settings', 'Remove')\" v-on:click=\"remove(app.id)\" :disabled=\"installing || loading(app.id)\"/>\n\t\t\t\t<input v-if=\"app.active\" class=\"enable\" type=\"button\" :value=\"t('settings','Disable')\" v-on:click=\"disable(app.id)\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\" class=\"enable primary\" type=\"button\" :value=\"enableButtonText\" v-on:click=\"enable(app.id)\" v-tooltip.auto=\"enableButtonTooltip\" :disabled=\"!app.canInstall || installing || loading(app.id)\" />\n\t\t\t\t<input v-else-if=\"!app.active\" class=\"enable force\" type=\"button\" :value=\"forceEnableButtonText\" v-on:click=\"forceEnable(app.id)\" v-tooltip.auto=\"forceEnableButtonTooltip\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t</div>\n\t\t\t<div class=\"app-groups\">\n\t\t\t\t<div class=\"groups-enable\" v-if=\"app.active && canLimitToGroups(app)\">\n\t\t\t\t\t<input type=\"checkbox\" :value=\"app.id\" v-model=\"groupCheckedAppsData\" v-on:change=\"setGroupLimit\" class=\"groups-enable__checkbox checkbox\" :id=\"prefix('groups_enable', app.id)\">\n\t\t\t\t\t<label :for=\"prefix('groups_enable', app.id)\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t\t<input type=\"hidden\" class=\"group_select\" :title=\"t('settings', 'All')\" value=\"\">\n\t\t\t\t\t<multiselect v-if=\"isLimitedToGroups(app)\" :options=\"groups\" :value=\"appGroups\" @select=\"addGroupLimitation\" @remove=\"removeGroupLimitation\" :options-limit=\"5\"\n\t\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Limit app usage to groups')\"\n\t\t\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t\t :multiple=\"true\" :close-on-select=\"false\"\n\t\t\t\t\t\t\t\t :tag-width=\"60\" @search-change=\"asyncFindGroup\">\n\t\t\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t\t\t</multiselect>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"dep in app.missingDependencies\">{{ dep }}</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"documentation\">\n\t\t\t<a class=\"appslink\" :href=\"appstoreUrl\" v-if=\"!app.internal\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'View in store')}} ↗</a>\n\n\t\t\t<a class=\"appslink\" v-if=\"app.website\" :href=\"app.website\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a class=\"appslink\" v-if=\"app.bugs\" :href=\"app.bugs\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a class=\"appslink\" v-if=\"app.documentation && app.documentation.user\" :href=\"app.documentation.user\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a class=\"appslink\" v-if=\"app.documentation && app.documentation.admin\" :href=\"app.documentation.admin\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a class=\"appslink\" v-if=\"app.documentation && app.documentation.developer\" :href=\"app.documentation.developer\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\n\t\t<div class=\"app-description\" v-html=\"renderMarkdown\"></div>\n\t</div>\n</template>\n\n<script>\nimport { Multiselect } from 'nextcloud-vue';\nimport marked from 'marked';\nimport dompurify from 'dompurify'\n\nimport AppScore from './appList/appScore';\nimport AppManagement from './appManagement';\nimport prefix from './prefixMixin';\nimport SvgFilterMixin from './svgFilterMixin';\n\nexport default {\n\tmixins: [AppManagement, prefix, SvgFilterMixin],\n\tname: 'appDetails',\n\tprops: ['category', 'app'],\n\tcomponents: {\n\t\tMultiselect,\n\t\tAppScore\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true;\n\t\t}\n\t},\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`;\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() } );\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5;\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author];\n\t\t\t}\n\t\t\treturn this.app.author;\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => {return {id: group, name: group}});\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name));\n\t\t},\n\t\trenderMarkdown() {\n\t\t\tvar renderer = new marked.Renderer();\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\ttry {\n\t\t\t\t\tvar prot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase();\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tvar out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"';\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"';\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>';\n\t\t\t\treturn out;\n\t\t\t};\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text;\n\t\t\t\t}\n\t\t\t\treturn title;\n\t\t\t};\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote;\n\t\t\t};\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.app.description.trim(), {\n\t\t\t\t\trenderer: renderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote'\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","import { render, staticRenderFns } from \"./appDetails.vue?vue&type=template&id=52943dc0&scoped=true&\"\nimport script from \"./appDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./appDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52943dc0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"20px\"},attrs:{\"id\":\"app-details-view\"}},[_c('h2',[(!_vm.app.preview)?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.app.previewAsIcon && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name))]),_vm._v(\" \"),(_vm.app.screenshot)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e(),_vm._v(\" \"),(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Official')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('app-score',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.author)?_c('div',{staticClass:\"app-author\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'by'))+\"\\n\\t\\t\"),_vm._l((_vm.author),function(a,index){return _c('span',[(a['@attributes'] && a['@attributes']['homepage'])?_c('a',{attrs:{\"href\":a['@attributes']['homepage']}},[_vm._v(_vm._s(a['@value']))]):(a['@value'])?_c('span',[_vm._v(_vm._s(a['@value']))]):_c('span',[_vm._v(_vm._s(a))]),(index+1 < _vm.author.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e(),_vm._v(\" \"),(_vm.licence)?_c('div',{staticClass:\"app-licence\"},[_vm._v(_vm._s(_vm.licence))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"actions-buttons\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', {version: _vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"groups-enable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"type\":\"checkbox\",\"id\":_vm.prefix('groups_enable', _vm.app.id)},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.')))]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.')))]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep){return _c('li',[_vm._v(_vm._s(dep))])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-description\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Content app-name=\"settings\" :class=\"{ 'with-app-sidebar': currentApp}\"\n\t:content-class=\"{ 'icon-loading': loadingList }\" :navigation-class=\"{ 'icon-loading': loading }\">\n\t\t<AppNavigation>\n\t\t\t<ul id=\"appscategories\">\n\t\t\t\t<AppNavigationItem v-for=\"item in menu\" :key=\"item.key\" :item=\"item\" />\n\t\t\t</ul>\n\t\t</AppNavigation>\n\t\t<AppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"currentApp\" :search=\"searchQuery\" />\n\t\t</AppContent>\n\t\t<AppSidebar v-if=\"id && currentApp\" @close=\"hideAppDetails\">\n\t\t\t<AppDetails :category=\"category\" :app=\"currentApp\" />\n\t\t</AppSidebar>\n\t</Content>\n</template>\n\n<script>\nimport { \n\tAppContent,\n\tAppNavigation,\n\tAppNavigationItem,\n\tAppSidebar,\n\tContent\n} from 'nextcloud-vue';\nimport AppList from '../components/appList';\nimport Vue from 'vue';\nimport VueLocalStorage from 'vue-localstorage'\nimport AppDetails from '../components/appDetails';\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t}\n\t},\n\tcomponents: {\n\t\tAppContent,\n\t\tAppNavigation,\n\t\tAppNavigationItem,\n\t\tAppSidebar,\n\t\tContent,\n\t\tAppDetails,\n\t\tAppList\n\t},\n\tmethods: {\n\t\tsetSearch(query) {\n\t\t\tthis.searchQuery = query;\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.setSearch('');\n\t\t},\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: {category: this.category}\n\t\t\t})\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories');\n\t\tthis.$store.dispatch('getAllApps');\n\t\tthis.$store.dispatch('getGroups', {offset: 0, limit: 5});\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\tmounted() {\n\t\t/** \n\t\t * Register search\n\t\t */\n\t\tthis.appSearch = new OCA.Search(this.setSearch, this.resetSearch);\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: ''\n\t\t}\n\t},\n\twatch: {\n\t\tcategory: function (val, old) {\n\t\t\tthis.setSearch('');\n\t\t}\n\t},\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories');\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list');\n\t\t},\n\t\tcurrentApp() {\n\t\t\treturn this.apps.find(app => app.id === this.id );\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories;\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps;\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount;\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\n\t\t// BUILD APP NAVIGATION MENU OBJECT\n\t\tmenu() {\n\t\t\t// Data provided php side\n\t\t\tlet categories = this.$store.getters.getCategories;\n\t\t\tcategories = Array.isArray(categories) ? categories : [];\n\n\t\t\t// Map groups\n\t\t\tcategories = categories.map(category => {\n\t\t\t\tlet item = {};\n\t\t\t\titem.id = 'app-category-' + category.ident;\n\t\t\t\titem.icon = 'icon-category-' + category.ident;\n\t\t\t\titem.classes = [];\t\t\t\t\t\t\t// empty classes, active will be set later\n\t\t\t\titem.router = {\t\t\t\t\t\t\t\t// router link to\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tparams: {category: category.ident}\n\t\t\t\t};\n\t\t\t\titem.text = category.displayName;\n\n\t\t\t\treturn item;\n\t\t\t});\n\n\n\t\t\t// Add everyone group\n\t\t\tlet defaultCategories = [\n\t\t\t\t{\n\t\t\t\t\tid: 'app-category-your-apps',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\trouter: {name: 'apps'},\n\t\t\t\t\ticon: 'icon-category-installed',\n\t\t\t\t\ttext: t('settings', 'Your apps'),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'app-category-enabled',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-category-enabled',\n\t\t\t\t\trouter: {name: 'apps-category', params: {category: 'enabled'}},\n\t\t\t\t\ttext: t('settings', 'Active apps'),\n\t\t\t\t}, {\n\t\t\t\t\tid: 'app-category-disabled',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-category-disabled',\n\t\t\t\t\trouter: {name: 'apps-category', params: {category: 'disabled'}},\n\t\t\t\t\ttext: t('settings', 'Disabled apps'),\n\t\t\t\t}\n\t\t\t];\n\n\t\t\tif (!this.settings.appstoreEnabled) {\n\t\t\t\treturn defaultCategories\n\t\t\t}\n\n\t\t\tif (this.$store.getters.getUpdateCount > 0) {\n\t\t\t\tdefaultCategories.push({\n\t\t\t\t\tid: 'app-category-updates',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-download',\n\t\t\t\t\trouter: {name: 'apps-category', params: {category: 'updates'}},\n\t\t\t\t\ttext: t('settings', 'Updates'),\n\t\t\t\t\tutils: {counter: this.$store.getters.getUpdateCount}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdefaultCategories.push({\n\t\t\t\tid: 'app-category-app-bundles',\n\t\t\t\tclasses: [],\n\t\t\t\ticon: 'icon-category-app-bundles',\n\t\t\t\trouter: {name: 'apps-category', params: {category: 'app-bundles'}},\n\t\t\t\ttext: t('settings', 'App bundles'),\n\t\t\t});\n\n\t\t\tcategories = defaultCategories.concat(categories);\n\n\t\t\t// Set current group as active\n\t\t\tlet activeGroup = categories.findIndex(group => group.id === 'app-category-' + this.category);\n\t\t\tif (activeGroup >= 0) {\n\t\t\t\tcategories[activeGroup].classes.push('active');\n\t\t\t} else {\n\t\t\t\tcategories[0].classes.push('active');\n\t\t\t}\n\n\t\t\tcategories.push({\n\t\t\t\tid: 'app-developer-docs',\n\t\t\t\tclasses: [],\n\t\t\t\thref: this.settings.developerDocumentation,\n\t\t\t\ttext: t('settings', 'Developer documentation') + ' ↗',\n\t\t\t});\n\n\t\t\t// Return\n\t\t\treturn categories\n\t\t},\n\t}\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=124a4d4a&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"sources":["webpack:///./settings/src/components/appList/appItem.vue?69f1","webpack:///./settings/src/components/appDetails.vue?c69f","webpack:///./settings/src/components/appList/appItem.vue?1b7a","webpack:///./settings/src/components/appList/appItem.vue?3b32","webpack:///./settings/src/components/appDetails.vue?1f9b","webpack:///./settings/src/components/appDetails.vue?656a","webpack:///./settings/src/views/Apps.vue?ae09","webpack:///./settings/src/components/appList/appScore.vue?02ae","webpack:///settings/src/components/appList/appScore.vue","webpack:///./settings/src/components/appList/appScore.vue","webpack:///./settings/src/components/appList/appScore.vue?644e","webpack:///./settings/src/components/appManagement.vue?f8d8","webpack:///settings/src/components/appManagement.vue","webpack:///./settings/src/components/appManagement.vue","webpack:///./settings/src/components/svgFilterMixin.vue?e63f","webpack:///settings/src/components/svgFilterMixin.vue","webpack:///./settings/src/components/svgFilterMixin.vue","webpack:///./settings/src/components/appList/appItem.vue?9674","webpack:///settings/src/components/appList/appItem.vue","webpack:///./settings/src/components/appList/appItem.vue","webpack:///./settings/src/components/appList/appItem.vue?1eee","webpack:///./settings/src/components/prefixMixin.vue?4873","webpack:///settings/src/components/prefixMixin.vue","webpack:///./settings/src/components/prefixMixin.vue","webpack:///./settings/src/components/appList.vue?42a6","webpack:///settings/src/components/appList.vue","webpack:///./settings/src/components/appList.vue","webpack:///./settings/src/components/appList.vue?dfbc","webpack:///./settings/src/components/appDetails.vue?c695","webpack:///settings/src/components/appDetails.vue","webpack:///./settings/src/components/appDetails.vue","webpack:///./settings/src/components/appDetails.vue?e38b","webpack:///settings/src/views/Apps.vue","webpack:///./settings/src/views/Apps.vue?b69d","webpack:///./settings/src/views/Apps.vue"],"names":["content","__webpack_require__","module","i","options","hmr","transform","insertInto","undefined","locals","exports","_node_modules_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_style_index_0_id_1304a746_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","n","push","_node_modules_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_style_index_0_id_52943dc0_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","appList_appScorevue_type_script_lang_js_","name","props","computed","scoreImage","imageName","Math","round","this","score","OC","imagePath","appScore","Object","componentNormalizer","_h","$createElement","_self","_c","staticClass","attrs","src","components_appManagementvue_type_script_lang_js_","mounted","app","groups","length","groupCheckedAppsData","appGroups","map","group","id","loading","self","$store","getters","installing","enableButtonText","needsDownload","t","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","concat","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","then","response","Settings","Apps","rebuildNavigation","catch","error","Notification","show","enable","disable","remove","install","update","appManagement","appManagement_render","appManagement_staticRenderFns","components_svgFilterMixinvue_type_script_lang_js_","filterId","floor","random","Date","getSeconds","getMilliseconds","filterUrl","data","svgFilterMixin","svgFilterMixin_render","svgFilterMixin_staticRenderFns","appList_appItemvue_type_script_lang_js_","mixins","category","listView","type","Boolean","default","watch","$route.params.id","isSelected","components","AppScore","scrolled","$route","params","hasRating","appstoreData","ratingNumOverall","watchers","showAppDetails","event","currentTarget","tagName","$router","prefix","_prefix","appItem","_vm","class","selected","on","click","preview","screenshot","_e","_v","width","height","viewBox","in","values","x","y","preserveAspectRatio","filter","xlink:href","_s","summary","version","releases","level","directives","rawName","value","expression","modifiers","auto","disabled","$event","stopPropagation","active","canInstall","isCompatible","components_prefixMixinvue_type_script_lang_js_","prefixMixin","prefixMixin_render","prefixMixin_staticRenderFns","components_appListvue_type_script_lang_js_","apps","_this","getAllApps","toLowerCase","sort","a","b","sortStringA","sortStringB","Util","naturalSortCompare","installed","bundles","appstore","getServerData","bundleApps","bundle","bundleId","searchApps","_this2","find","_app","useAppStoreView","useListView","useBundleView","allBundlesEnabled","bundleToggleText","toggleBundle","disableBundle","enableBundle","console","log","appList","store","tag","_l","key","list-view","colspan","components_appDetailsvue_type_script_lang_js_","Multiselect","ncvuecomponents","appstoreUrl","licence","license","toUpperCase","author","@value","getGroups","localeCompare","renderMarkdown","renderer","marked_default","Renderer","link","href","title","text","prot","decodeURIComponent","unescape","replace","e","out","image","blockquote","quote","purify_default","sanitize","description","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","appDetails","staticStyle","padding","previewAsIcon","ratingOverall","domProps","checked","Array","isArray","_i","change","$$a","$$el","target","$$c","$$v","$$i","slice","for","options-limit","placeholder","label","track-by","multiple","close-on-select","tag-width","select","search-change","slot","dep","internal","rel","website","bugs","documentation","user","admin","developer","innerHTML","vue_runtime_esm","use","vue_local_storage_default","views_Appsvue_type_script_lang_js_","String","AppContent","AppNavigation","AppNavigationItem","AppSidebar","Content","AppDetails","AppList","setSearch","searchQuery","resetSearch","hideAppDetails","beforeMount","commit","updateCount","appSearch","OCA","Search","val","old","loadingList","currentApp","categories","getCategories","getUpdateCount","settings","menu","item","ident","icon","classes","router","displayName","defaultCategories","appstoreEnabled","utils","counter","activeGroup","findIndex","developerDocumentation","Apps_component","with-app-sidebar","app-name","content-class","icon-loading","navigation-class","close","__webpack_exports__"],"mappings":"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","file":"vue-4.js","sourcesContent":["\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1304a746&scoped=true&lang=css&\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1304a746&scoped=true&lang=css&\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1304a746&scoped=true&lang=css&\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import mod from \"-!../../../../node_modules/style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1304a746&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=1304a746&scoped=true&lang=css&\"","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-1304a746] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-1304a746]:hover,\\n.force[data-v-1304a746]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n","import mod from \"-!../../../node_modules/style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\"","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-52943dc0] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-52943dc0]:hover,\\n.force[data-v-52943dc0]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Content',{class:{ 'with-app-sidebar': _vm.currentApp},attrs:{\"app-name\":\"settings\",\"content-class\":{ 'icon-loading': _vm.loadingList },\"navigation-class\":{ 'icon-loading': _vm.loading }}},[_c('AppNavigation',[_c('ul',{attrs:{\"id\":\"appscategories\"}},_vm._l((_vm.menu),function(item){return _c('AppNavigationItem',{key:item.key,attrs:{\"item\":item}})}),1)]),_vm._v(\" \"),_c('AppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.currentApp,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.currentApp)?_c('AppSidebar',{on:{\"close\":_vm.hideAppDetails}},[_c('AppDetails',{attrs:{\"category\":_vm.category,\"app\":_vm.currentApp}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appScore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appScore.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" class=\"app-score-image\" />\n</template>\n<script>\n\texport default {\n\t\tname: 'appScore',\n\t\tprops: ['score'],\n\t\tcomputed: {\n\t\t\tscoreImage() {\n\t\t\t\tlet score = Math.round( this.score * 10 );\n\t\t\t\tlet imageName = 'rating/s' + score + '.svg';\n\t\t\t\treturn OC.imagePath('core', imageName);\n\t\t\t}\n\t\t}\n\t};\n</script>","import { render, staticRenderFns } from \"./appScore.vue?vue&type=template&id=3c7dd35d&\"\nimport script from \"./appScore.vue?vue&type=script&lang=js&\"\nexport * from \"./appScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appManagement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appManagement.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\n\texport default {\n\t\tmounted() {\n\t\t\tif (this.app.groups.length > 0) {\n\t\t\t\tthis.groupCheckedAppsData = true;\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\tappGroups() {\n\t\t\t\treturn this.app.groups.map(group => {return {id: group, name: group}});\n\t\t\t},\n\t\t\tloading() {\n\t\t\t\tlet self = this;\n\t\t\t\treturn function(id) {\n\t\t\t\t\treturn self.$store.getters.loading(id);\n\t\t\t\t}\n\t\t\t},\n\t\t\tinstalling() {\n\t\t\t\treturn this.$store.getters.loading('install');\n\t\t\t},\n\t\t\tenableButtonText() {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Download and enable');\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable');\n\t\t\t},\n\t\t\tforceEnableButtonText() {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Enable untested app');\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable untested app');\n\t\t\t},\n\t\t\tenableButtonTooltip() {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings','The app will be downloaded from the app store');\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tforceEnableButtonTooltip() {\n\t\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.');\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn base + ' ' + t('settings','The app will be downloaded from the app store');\n\t\t\t\t}\n\t\t\t\treturn base;\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\tasyncFindGroup(query) {\n\t\t\t\treturn this.$store.dispatch('getGroups', {search: query, limit: 5, offset: 0});\n\t\t\t},\n\t\t\tisLimitedToGroups(app) {\n\t\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tsetGroupLimit: function() {\n\t\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\t\tthis.$store.dispatch('enableApp', {appId: this.app.id, groups: []});\n\t\t\t\t}\n\t\t\t},\n\t\t\tcanLimitToGroups(app) {\n\t\t\t\tif (app.types && app.types.includes('filesystem')\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\taddGroupLimitation(group) {\n\t\t\t\tlet groups = this.app.groups.concat([]).concat([group.id]);\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: groups});\n\t\t\t},\n\t\t\tremoveGroupLimitation(group) {\n\t\t\t\tlet currentGroups = this.app.groups.concat([]);\n\t\t\t\tlet index = currentGroups.indexOf(group.id);\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tcurrentGroups.splice(index, 1);\n\t\t\t\t}\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups});\n\t\t\t},\n\t\t\tforceEnable(appId) {\n\t\t\t\tthis.$store.dispatch('forceEnableApp', { appId: appId, groups: [] })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tenable(appId) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: appId, groups: [] })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tdisable(appId) {\n\t\t\t\tthis.$store.dispatch('disableApp', { appId: appId })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tremove(appId) {\n\t\t\t\tthis.$store.dispatch('uninstallApp', { appId: appId })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tinstall(appId) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: appId })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t},\n\t\t\tupdate(appId) {\n\t\t\t\tthis.$store.dispatch('updateApp', { appId: appId })\n\t\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation(); })\n\t\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t\t}\n\t\t}\n\t}\n</script>\n","var render, staticRenderFns\nimport script from \"./appManagement.vue?vue&type=script&lang=js&\"\nexport * from \"./appManagement.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\n\texport default {\n\t\tname: 'svgFilterMixin',\n\t\tmounted() {\n\t\t\tthis.filterId = 'invertIconApps' + Math.floor((Math.random() * 100 )) + new Date().getSeconds() + new Date().getMilliseconds();\n\t\t},\n\t\tcomputed: {\n\t\t\tfilterUrl () {\n\t\t\t\treturn `url(#${this.filterId})`;\n\t\t\t},\n\t\t},\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tfilterId: '',\n\t\t\t};\n\t\t},\n\t}\n</script>","var render, staticRenderFns\nimport script from \"./svgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./svgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"section\" v-bind:class=\"{ selected: isSelected }\" v-on:click=\"showAppDetails\">\n\t\t<div class=\"app-image app-image-icon\" v-on:click=\"showAppDetails\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !app.screenshot)\" class=\"icon-settings-dark\"></div>\n\n\t\t\t<svg v-if=\"listView && app.preview\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"></feColorMatrix></filter></defs>\n\t\t\t\t<image x=\"0\" y=\"0\" width=\"32\" height=\"32\" preserveAspectRatio=\"xMinYMin meet\" :filter=\"filterUrl\" :xlink:href=\"app.preview\" class=\"app-icon\"></image>\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot\" :src=\"app.screenshot\" width=\"100%\" />\n\t\t</div>\n\t\t<div class=\"app-name\" v-on:click=\"showAppDetails\">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div class=\"app-summary\" v-if=\"!listView\">{{ app.summary }}</div>\n\t\t<div class=\"app-version\" v-if=\"listView\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class=\"app-level\">\n\t\t\t<span class=\"supported icon-checkmark-color\" v-if=\"app.level === 300\"\n\t\t\t\t v-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span class=\"official icon-checkmark\" v-if=\"app.level === 200\"\n\t\t\t\t v-tooltip.auto=\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\">\n\t\t\t\t{{ t('settings', 'Official') }}</span>\n\t\t\t<app-score v-if=\"hasRating && !listView\" :score=\"app.score\"></app-score>\n\t\t</div>\n\n\t\t<div class=\"actions\">\n\t\t\t<div class=\"warning\" v-if=\"app.error\">{{ app.error }}</div>\n\t\t\t<div class=\"icon icon-loading-small\" v-if=\"loading(app.id)\"></div>\n\t\t\t<input v-if=\"app.update\" class=\"update primary\" type=\"button\" :value=\"t('settings', 'Update to {update}', {update:app.update})\" v-on:click.stop=\"update(app.id)\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t<input v-if=\"app.canUnInstall\" class=\"uninstall\" type=\"button\" :value=\"t('settings', 'Remove')\" v-on:click.stop=\"remove(app.id)\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t<input v-if=\"app.active\" class=\"enable\" type=\"button\" :value=\"t('settings','Disable')\" v-on:click.stop=\"disable(app.id)\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\" class=\"enable\" type=\"button\" :value=\"enableButtonText\" v-on:click.stop=\"enable(app.id)\" v-tooltip.auto=\"enableButtonTooltip\" :disabled=\"!app.canInstall || installing || loading(app.id)\" />\n\t\t\t<input v-else-if=\"!app.active\" class=\"enable force\" type=\"button\" :value=\"forceEnableButtonText\" v-on:click.stop=\"forceEnable(app.id)\" v-tooltip.auto=\"forceEnableButtonTooltip\" :disabled=\"installing || loading(app.id)\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\n\timport AppScore from './appScore';\n\timport AppManagement from '../appManagement';\n\timport SvgFilterMixin from '../svgFilterMixin';\n\n\texport default {\n\t\tname: 'appItem',\n\t\tmixins: [AppManagement, SvgFilterMixin],\n\t\tprops: {\n\t\t\tapp: {},\n\t\t\tcategory: {},\n\t\t\tlistView: {\n\t\t\t\ttype: Boolean,\n\t\t\t\tdefault: true,\n\t\t\t}\n\t\t},\n\t\twatch: {\n\t\t\t'$route.params.id': function (id) {\n\t\t\t\tthis.isSelected = (this.app.id === id);\n\t\t\t}\n\t\t},\n\t\tcomponents: {\n\t\t\tAppScore,\n\t\t},\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tisSelected: false,\n\t\t\t\tscrolled: false,\n\t\t\t};\n\t\t},\n\t\tmounted() {\n\t\t\tthis.isSelected = (this.app.id === this.$route.params.id);\n\t\t},\n\t\tcomputed: {\n\t\t\thasRating() {\n\t\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5;\n\t\t\t},\n\t\t},\n\t\twatchers: {\n\n\t\t},\n\t\tmethods: {\n\t\t\tshowAppDetails(event) {\n\t\t\t\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.$router.push({\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: {category: this.category, id: this.app.id}\n\t\t\t\t});\n\t\t\t},\n\t\t\tprefix(prefix, content) {\n\t\t\t\treturn prefix + '_' + content;\n\t\t\t},\n\t\t}\n\t}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","import { render, staticRenderFns } from \"./appItem.vue?vue&type=template&id=1304a746&scoped=true&\"\nimport script from \"./appItem.vue?vue&type=script&lang=js&\"\nexport * from \"./appItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./appItem.vue?vue&type=style&index=0&id=1304a746&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1304a746\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.app.screenshot))?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(_vm._s(_vm.app.summary))]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-version\"},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Official')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('app-score',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(_vm._s(_vm.app.error))]):_vm._e(),_vm._v(\" \"),(_vm.loading(_vm.app.id))?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {update}', {update:_vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\n\texport default {\n\t\tname: 'prefixMixin',\n\t\tmethods: {\n\t\t\tprefix (prefix, content) {\n\t\t\t\treturn prefix + '_' + content;\n\t\t\t},\n\t\t}\n\t}\n</script>","var render, staticRenderFns\nimport script from \"./prefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./prefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\t\t\t\t\t<app-item v-for=\"app in apps\" :key=\"app.id\" :app=\"app\" :category=\"category\" />\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\t\t\t<template v-for=\"bundle in bundles\" v-if=\"useBundleView && bundleApps(bundle.id).length > 0\">\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\n\t\t\t\t\t<div class=\"apps-header\" :key=\"bundle.id\">\n\t\t\t\t\t\t<div class=\"app-image\"></div>\n\t\t\t\t\t\t<h2>{{ bundle.name }} <input type=\"button\" :value=\"bundleToggleText(bundle.id)\" v-on:click=\"toggleBundle(bundle.id)\"></h2>\n\t\t\t\t\t\t<div class=\"app-version\"></div>\n\t\t\t\t\t\t<div class=\"app-level\"></div>\n\t\t\t\t\t\t<div class=\"app-groups\"></div>\n\t\t\t\t\t\t<div class=\"actions\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<app-item v-for=\"app in bundleApps(bundle.id)\" :key=\"bundle.id + app.id\" :app=\"app\" :category=\"category\"/>\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\t\t\t<template v-if=\"useAppStoreView\">\n\t\t\t\t<app-item v-for=\"app in apps\" :key=\"app.id\" :app=\"app\" :category=\"category\" :list-view=\"false\" />\n\t\t\t</template>\n\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div></div>\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\n\t\t\t\t\t<app-item v-for=\"app in searchApps\" :key=\"app.id\" :app=\"app\" :category=\"category\" :list-view=\"true\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\" v-if=\"!loading && searchApps.length === 0 && apps.length === 0\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\"></div>\n\t\t\t<h2>{{ t('settings', 'No apps found for your version')}}</h2>\n\t\t</div>\n\n\t\t<div id=\"searchresults\"></div>\n\t</div>\n</template>\n\n<script>\nimport appItem from './appList/appItem';\nimport prefix from './prefixMixin';\n\nexport default {\n\tname: 'appList',\n\tmixins: [prefix],\n\tprops: ['category', 'app', 'search'],\n\tcomponents: {\n\t\tappItem\n\t},\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list');\n\t\t},\n\t\tapps() {\n\t\t\tlet apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function (a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name;\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name;\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB);\n\t\t\t\t});\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed);\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed);\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed);\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles);\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update);\n\t\t\t}\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined &&\n\t\t\t\t\t(app.category === this.category || app.category.indexOf(this.category) > -1);\n\t\t\t});\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getServerData.bundles;\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => app.bundleId === bundle);\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id));\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView;\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates');\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles');\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\tlet self = this;\n\t\t\treturn function(id) {\n\t\t\t\treturn self.bundleApps(id).filter(app => !app.active).length === 0;\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\tlet self = this;\n\t\t\treturn function(id) {\n\t\t\t\tif (self.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all');\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable all');\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id);\n\t\t\t}\n\t\t\treturn this.enableBundle(id);\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tlet apps = this.bundleApps(id).map(app => app.id);\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => { console.log(error); OC.Notification.show(error)});\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tlet apps = this.bundleApps(id).map(app => app.id);\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => { OC.Notification.show(error)});\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./appList.vue?vue&type=template&id=f515f708&\"\nimport script from \"./appList.vue?vue&type=script&lang=js&\"\nexport * from \"./appList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),_vm._l((_vm.bundles),function(bundle){return (_vm.useBundleView && _vm.bundleApps(bundle.id).length > 0)?[_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\" \")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('app-item',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2)]:_vm._e()}),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_vm._v(\" \"),(!_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-details-view\" style=\"padding: 20px;\">\n\t\t<h2>\n\t\t\t<div v-if=\"!app.preview\" class=\"icon-settings-dark\"></div>\n\t\t\t<svg v-if=\"app.previewAsIcon && app.preview\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"></feColorMatrix></filter></defs>\n\t\t\t\t<image x=\"0\" y=\"0\" width=\"32\" height=\"32\" preserveAspectRatio=\"xMinYMin meet\" :filter=\"filterUrl\" :xlink:href=\"app.preview\" class=\"app-icon\"></image>\n\t\t\t</svg>\n\t\t\t{{ app.name }}</h2>\n\t\t<img v-if=\"app.screenshot\" :src=\"app.screenshot\" width=\"100%\" />\n\t\t<div class=\"app-level\" v-if=\"app.level === 300 || app.level === 200 || hasRating\">\n\t\t\t<span class=\"supported icon-checkmark-color\" v-if=\"app.level === 300\"\n\t\t\t\t v-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span class=\"official icon-checkmark\" v-if=\"app.level === 200\"\n\t\t\t v-tooltip.auto=\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\">\n\t\t\t\t{{ t('settings', 'Official') }}</span>\n\t\t\t<app-score v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\"></app-score>\n\t\t</div>\n\n\t\t<div class=\"app-author\" v-if=\"author\">\n\t\t\t{{ t('settings', 'by') }}\n\t\t\t<span v-for=\"(a, index) in author\">\n\t\t\t\t<a v-if=\"a['@attributes'] && a['@attributes']['homepage']\" :href=\"a['@attributes']['homepage']\">{{ a['@value'] }}</a><span v-else-if=\"a['@value']\">{{ a['@value'] }}</span><span v-else>{{ a }}</span><span v-if=\"index+1 < author.length\">, </span>\n\t\t\t</span>\n\t\t</div>\n\t\t<div class=\"app-licence\" v-if=\"licence\">{{ licence }}</div>\n\t\t<div class=\"actions\">\n\t\t\t<div class=\"actions-buttons\">\n\t\t\t\t<input v-if=\"app.update\" class=\"update primary\" type=\"button\" :value=\"t('settings', 'Update to {version}', {version: app.update})\" v-on:click=\"update(app.id)\" :disabled=\"installing || loading(app.id)\"/>\n\t\t\t\t<input v-if=\"app.canUnInstall\" class=\"uninstall\" type=\"button\" :value=\"t('settings', 'Remove')\" v-on:click=\"remove(app.id)\" :disabled=\"installing || loading(app.id)\"/>\n\t\t\t\t<input v-if=\"app.active\" class=\"enable\" type=\"button\" :value=\"t('settings','Disable')\" v-on:click=\"disable(app.id)\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\" class=\"enable primary\" type=\"button\" :value=\"enableButtonText\" v-on:click=\"enable(app.id)\" v-tooltip.auto=\"enableButtonTooltip\" :disabled=\"!app.canInstall || installing || loading(app.id)\" />\n\t\t\t\t<input v-else-if=\"!app.active\" class=\"enable force\" type=\"button\" :value=\"forceEnableButtonText\" v-on:click=\"forceEnable(app.id)\" v-tooltip.auto=\"forceEnableButtonTooltip\" :disabled=\"installing || loading(app.id)\" />\n\t\t\t</div>\n\t\t\t<div class=\"app-groups\">\n\t\t\t\t<div class=\"groups-enable\" v-if=\"app.active && canLimitToGroups(app)\">\n\t\t\t\t\t<input type=\"checkbox\" :value=\"app.id\" v-model=\"groupCheckedAppsData\" v-on:change=\"setGroupLimit\" class=\"groups-enable__checkbox checkbox\" :id=\"prefix('groups_enable', app.id)\">\n\t\t\t\t\t<label :for=\"prefix('groups_enable', app.id)\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t\t<input type=\"hidden\" class=\"group_select\" :title=\"t('settings', 'All')\" value=\"\">\n\t\t\t\t\t<multiselect v-if=\"isLimitedToGroups(app)\" :options=\"groups\" :value=\"appGroups\" @select=\"addGroupLimitation\" @remove=\"removeGroupLimitation\" :options-limit=\"5\"\n\t\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Limit app usage to groups')\"\n\t\t\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t\t :multiple=\"true\" :close-on-select=\"false\"\n\t\t\t\t\t\t\t\t :tag-width=\"60\" @search-change=\"asyncFindGroup\">\n\t\t\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t\t\t</multiselect>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"dep in app.missingDependencies\">{{ dep }}</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"documentation\">\n\t\t\t<a class=\"appslink\" :href=\"appstoreUrl\" v-if=\"!app.internal\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'View in store')}} ↗</a>\n\n\t\t\t<a class=\"appslink\" v-if=\"app.website\" :href=\"app.website\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a class=\"appslink\" v-if=\"app.bugs\" :href=\"app.bugs\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a class=\"appslink\" v-if=\"app.documentation && app.documentation.user\" :href=\"app.documentation.user\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a class=\"appslink\" v-if=\"app.documentation && app.documentation.admin\" :href=\"app.documentation.admin\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a class=\"appslink\" v-if=\"app.documentation && app.documentation.developer\" :href=\"app.documentation.developer\" target=\"_blank\" rel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\n\t\t<div class=\"app-description\" v-html=\"renderMarkdown\"></div>\n\t</div>\n</template>\n\n<script>\nimport { Multiselect } from 'nextcloud-vue';\nimport marked from 'marked';\nimport dompurify from 'dompurify'\n\nimport AppScore from './appList/appScore';\nimport AppManagement from './appManagement';\nimport prefix from './prefixMixin';\nimport SvgFilterMixin from './svgFilterMixin';\n\nexport default {\n\tmixins: [AppManagement, prefix, SvgFilterMixin],\n\tname: 'appDetails',\n\tprops: ['category', 'app'],\n\tcomponents: {\n\t\tMultiselect,\n\t\tAppScore\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true;\n\t\t}\n\t},\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`;\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() } );\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5;\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author];\n\t\t\t}\n\t\t\treturn this.app.author;\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => {return {id: group, name: group}});\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name));\n\t\t},\n\t\trenderMarkdown() {\n\t\t\tvar renderer = new marked.Renderer();\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\ttry {\n\t\t\t\t\tvar prot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase();\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tvar out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"';\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"';\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>';\n\t\t\t\treturn out;\n\t\t\t};\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text;\n\t\t\t\t}\n\t\t\t\treturn title;\n\t\t\t};\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote;\n\t\t\t};\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.app.description.trim(), {\n\t\t\t\t\trenderer: renderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote'\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","import { render, staticRenderFns } from \"./appDetails.vue?vue&type=template&id=52943dc0&scoped=true&\"\nimport script from \"./appDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./appDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./appDetails.vue?vue&type=style&index=0&id=52943dc0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52943dc0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"20px\"},attrs:{\"id\":\"app-details-view\"}},[_c('h2',[(!_vm.app.preview)?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.app.previewAsIcon && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name))]),_vm._v(\" \"),(_vm.app.screenshot)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e(),_vm._v(\" \"),(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Official')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('app-score',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.author)?_c('div',{staticClass:\"app-author\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'by'))+\"\\n\\t\\t\"),_vm._l((_vm.author),function(a,index){return _c('span',[(a['@attributes'] && a['@attributes']['homepage'])?_c('a',{attrs:{\"href\":a['@attributes']['homepage']}},[_vm._v(_vm._s(a['@value']))]):(a['@value'])?_c('span',[_vm._v(_vm._s(a['@value']))]):_c('span',[_vm._v(_vm._s(a))]),(index+1 < _vm.author.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e(),_vm._v(\" \"),(_vm.licence)?_c('div',{staticClass:\"app-licence\"},[_vm._v(_vm._s(_vm.licence))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"actions-buttons\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', {version: _vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"groups-enable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"type\":\"checkbox\",\"id\":_vm.prefix('groups_enable', _vm.app.id)},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.')))]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.')))]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep){return _c('li',[_vm._v(_vm._s(dep))])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-description\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Content app-name=\"settings\" :class=\"{ 'with-app-sidebar': currentApp}\"\n\t:content-class=\"{ 'icon-loading': loadingList }\" :navigation-class=\"{ 'icon-loading': loading }\">\n\t\t<AppNavigation>\n\t\t\t<ul id=\"appscategories\">\n\t\t\t\t<AppNavigationItem v-for=\"item in menu\" :key=\"item.key\" :item=\"item\" />\n\t\t\t</ul>\n\t\t</AppNavigation>\n\t\t<AppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"currentApp\" :search=\"searchQuery\" />\n\t\t</AppContent>\n\t\t<AppSidebar v-if=\"id && currentApp\" @close=\"hideAppDetails\">\n\t\t\t<AppDetails :category=\"category\" :app=\"currentApp\" />\n\t\t</AppSidebar>\n\t</Content>\n</template>\n\n<script>\nimport { \n\tAppContent,\n\tAppNavigation,\n\tAppNavigationItem,\n\tAppSidebar,\n\tContent\n} from 'nextcloud-vue';\nimport AppList from '../components/appList';\nimport Vue from 'vue';\nimport VueLocalStorage from 'vue-localstorage'\nimport AppDetails from '../components/appDetails';\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t}\n\t},\n\tcomponents: {\n\t\tAppContent,\n\t\tAppNavigation,\n\t\tAppNavigationItem,\n\t\tAppSidebar,\n\t\tContent,\n\t\tAppDetails,\n\t\tAppList\n\t},\n\tmethods: {\n\t\tsetSearch(query) {\n\t\t\tthis.searchQuery = query;\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.setSearch('');\n\t\t},\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: {category: this.category}\n\t\t\t})\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories');\n\t\tthis.$store.dispatch('getAllApps');\n\t\tthis.$store.dispatch('getGroups', {offset: 0, limit: 5});\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\tmounted() {\n\t\t/** \n\t\t * Register search\n\t\t */\n\t\tthis.appSearch = new OCA.Search(this.setSearch, this.resetSearch);\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: ''\n\t\t}\n\t},\n\twatch: {\n\t\tcategory: function (val, old) {\n\t\t\tthis.setSearch('');\n\t\t}\n\t},\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories');\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list');\n\t\t},\n\t\tcurrentApp() {\n\t\t\treturn this.apps.find(app => app.id === this.id );\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories;\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps;\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount;\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\n\t\t// BUILD APP NAVIGATION MENU OBJECT\n\t\tmenu() {\n\t\t\t// Data provided php side\n\t\t\tlet categories = this.$store.getters.getCategories;\n\t\t\tcategories = Array.isArray(categories) ? categories : [];\n\n\t\t\t// Map groups\n\t\t\tcategories = categories.map(category => {\n\t\t\t\tlet item = {};\n\t\t\t\titem.id = 'app-category-' + category.ident;\n\t\t\t\titem.icon = 'icon-category-' + category.ident;\n\t\t\t\titem.classes = [];\t\t\t\t\t\t\t// empty classes, active will be set later\n\t\t\t\titem.router = {\t\t\t\t\t\t\t\t// router link to\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tparams: {category: category.ident}\n\t\t\t\t};\n\t\t\t\titem.text = category.displayName;\n\n\t\t\t\treturn item;\n\t\t\t});\n\n\n\t\t\t// Add everyone group\n\t\t\tlet defaultCategories = [\n\t\t\t\t{\n\t\t\t\t\tid: 'app-category-your-apps',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\trouter: {name: 'apps'},\n\t\t\t\t\ticon: 'icon-category-installed',\n\t\t\t\t\ttext: t('settings', 'Your apps'),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'app-category-enabled',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-category-enabled',\n\t\t\t\t\trouter: {name: 'apps-category', params: {category: 'enabled'}},\n\t\t\t\t\ttext: t('settings', 'Active apps'),\n\t\t\t\t}, {\n\t\t\t\t\tid: 'app-category-disabled',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-category-disabled',\n\t\t\t\t\trouter: {name: 'apps-category', params: {category: 'disabled'}},\n\t\t\t\t\ttext: t('settings', 'Disabled apps'),\n\t\t\t\t}\n\t\t\t];\n\n\t\t\tif (!this.settings.appstoreEnabled) {\n\t\t\t\treturn defaultCategories\n\t\t\t}\n\n\t\t\tif (this.$store.getters.getUpdateCount > 0) {\n\t\t\t\tdefaultCategories.push({\n\t\t\t\t\tid: 'app-category-updates',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-download',\n\t\t\t\t\trouter: {name: 'apps-category', params: {category: 'updates'}},\n\t\t\t\t\ttext: t('settings', 'Updates'),\n\t\t\t\t\tutils: {counter: this.$store.getters.getUpdateCount}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdefaultCategories.push({\n\t\t\t\tid: 'app-category-app-bundles',\n\t\t\t\tclasses: [],\n\t\t\t\ticon: 'icon-category-app-bundles',\n\t\t\t\trouter: {name: 'apps-category', params: {category: 'app-bundles'}},\n\t\t\t\ttext: t('settings', 'App bundles'),\n\t\t\t});\n\n\t\t\tcategories = defaultCategories.concat(categories);\n\n\t\t\t// Set current group as active\n\t\t\tlet activeGroup = categories.findIndex(group => group.id === 'app-category-' + this.category);\n\t\t\tif (activeGroup >= 0) {\n\t\t\t\tcategories[activeGroup].classes.push('active');\n\t\t\t} else {\n\t\t\t\tcategories[0].classes.push('active');\n\t\t\t}\n\n\t\t\tcategories.push({\n\t\t\t\tid: 'app-developer-docs',\n\t\t\t\tclasses: [],\n\t\t\t\thref: this.settings.developerDocumentation,\n\t\t\t\ttext: t('settings', 'Developer documentation') + ' ↗',\n\t\t\t});\n\n\t\t\t// Return\n\t\t\treturn categories\n\t\t},\n\t}\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=124a4d4a&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file diff --git a/settings/src/components/appList/appItem.vue b/settings/src/components/appList/appItem.vue index 5f37802df51..daf5ddacc24 100644 --- a/settings/src/components/appList/appItem.vue +++ b/settings/src/components/appList/appItem.vue @@ -48,7 +48,7 @@ <span class="official icon-checkmark" v-if="app.level === 200" v-tooltip.auto="t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')"> {{ t('settings', 'Official') }}</span> - <app-score v-if="!listView" :score="app.score"></app-score> + <app-score v-if="hasRating && !listView" :score="app.score"></app-score> </div> <div class="actions"> @@ -97,7 +97,9 @@ this.isSelected = (this.app.id === this.$route.params.id); }, computed: { - + hasRating() { + return this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5; + }, }, watchers: { |