mirror of https://github.com/nextcloud/server.git
fix: drop legacy sharing files
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>pull/39196/head
parent
a9f7e66d3d
commit
b0418f730f
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"}
|
||||
{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,qGCjFC,wCDuFD,0BCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,2BCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,409 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
if (!OCA.Sharing) {
|
||||
/**
|
||||
* @namespace OCA.Sharing
|
||||
*/
|
||||
OCA.Sharing = {}
|
||||
}
|
||||
|
||||
/**
|
||||
* @namespace
|
||||
*/
|
||||
OCA.Sharing.App = {
|
||||
|
||||
_inFileList: null,
|
||||
_outFileList: null,
|
||||
_overviewFileList: null,
|
||||
_pendingFileList: null,
|
||||
|
||||
initSharingIn($el) {
|
||||
if (this._inFileList) {
|
||||
return this._inFileList
|
||||
}
|
||||
|
||||
this._inFileList = new OCA.Sharing.FileList(
|
||||
$el,
|
||||
{
|
||||
id: 'shares.self',
|
||||
sharedWithUser: true,
|
||||
fileActions: this._createFileActions(),
|
||||
config: OCA.Files.App.getFilesConfig(),
|
||||
// The file list is created when a "show" event is handled, so
|
||||
// it should be marked as "shown" like it would have been done
|
||||
// if handling the event with the file list already created.
|
||||
shown: true,
|
||||
}
|
||||
)
|
||||
|
||||
this._extendFileList(this._inFileList)
|
||||
this._inFileList.appName = t('files_sharing', 'Shared with you')
|
||||
this._inFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-shared"></div>'
|
||||
+ '<h2>' + t('files_sharing', 'Nothing shared with you yet') + '</h2>'
|
||||
+ '<p>' + t('files_sharing', 'Files and folders others share with you will show up here') + '</p>')
|
||||
return this._inFileList
|
||||
},
|
||||
|
||||
initSharingOut($el) {
|
||||
if (this._outFileList) {
|
||||
return this._outFileList
|
||||
}
|
||||
this._outFileList = new OCA.Sharing.FileList(
|
||||
$el,
|
||||
{
|
||||
id: 'shares.others',
|
||||
sharedWithUser: false,
|
||||
fileActions: this._createFileActions(),
|
||||
config: OCA.Files.App.getFilesConfig(),
|
||||
// The file list is created when a "show" event is handled, so
|
||||
// it should be marked as "shown" like it would have been done
|
||||
// if handling the event with the file list already created.
|
||||
shown: true,
|
||||
}
|
||||
)
|
||||
|
||||
this._extendFileList(this._outFileList)
|
||||
this._outFileList.appName = t('files_sharing', 'Shared with others')
|
||||
this._outFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-shared"></div>'
|
||||
+ '<h2>' + t('files_sharing', 'Nothing shared yet') + '</h2>'
|
||||
+ '<p>' + t('files_sharing', 'Files and folders you share will show up here') + '</p>')
|
||||
return this._outFileList
|
||||
},
|
||||
|
||||
initSharingLinks($el) {
|
||||
if (this._linkFileList) {
|
||||
return this._linkFileList
|
||||
}
|
||||
this._linkFileList = new OCA.Sharing.FileList(
|
||||
$el,
|
||||
{
|
||||
id: 'shares.link',
|
||||
linksOnly: true,
|
||||
fileActions: this._createFileActions(),
|
||||
config: OCA.Files.App.getFilesConfig(),
|
||||
// The file list is created when a "show" event is handled, so
|
||||
// it should be marked as "shown" like it would have been done
|
||||
// if handling the event with the file list already created.
|
||||
shown: true,
|
||||
}
|
||||
)
|
||||
|
||||
this._extendFileList(this._linkFileList)
|
||||
this._linkFileList.appName = t('files_sharing', 'Shared by link')
|
||||
this._linkFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-public"></div>'
|
||||
+ '<h2>' + t('files_sharing', 'No shared links') + '</h2>'
|
||||
+ '<p>' + t('files_sharing', 'Files and folders you share by link will show up here') + '</p>')
|
||||
return this._linkFileList
|
||||
},
|
||||
|
||||
initSharingDeleted($el) {
|
||||
if (this._deletedFileList) {
|
||||
return this._deletedFileList
|
||||
}
|
||||
this._deletedFileList = new OCA.Sharing.FileList(
|
||||
$el,
|
||||
{
|
||||
id: 'shares.deleted',
|
||||
defaultFileActionsDisabled: true,
|
||||
showDeleted: true,
|
||||
sharedWithUser: true,
|
||||
fileActions: this._restoreShareAction(),
|
||||
config: OCA.Files.App.getFilesConfig(),
|
||||
// The file list is created when a "show" event is handled, so
|
||||
// it should be marked as "shown" like it would have been done
|
||||
// if handling the event with the file list already created.
|
||||
shown: true,
|
||||
}
|
||||
)
|
||||
|
||||
this._extendFileList(this._deletedFileList)
|
||||
this._deletedFileList.appName = t('files_sharing', 'Deleted shares')
|
||||
this._deletedFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>'
|
||||
+ '<h2>' + t('files_sharing', 'No deleted shares') + '</h2>'
|
||||
+ '<p>' + t('files_sharing', 'Shares you deleted will show up here') + '</p>')
|
||||
return this._deletedFileList
|
||||
},
|
||||
|
||||
initSharingPening($el) {
|
||||
if (this._pendingFileList) {
|
||||
return this._pendingFileList
|
||||
}
|
||||
this._pendingFileList = new OCA.Sharing.FileList(
|
||||
$el,
|
||||
{
|
||||
id: 'shares.pending',
|
||||
showPending: true,
|
||||
detailsViewEnabled: false,
|
||||
defaultFileActionsDisabled: true,
|
||||
sharedWithUser: true,
|
||||
fileActions: this._acceptShareAction(),
|
||||
config: OCA.Files.App.getFilesConfig(),
|
||||
// The file list is created when a "show" event is handled, so
|
||||
// it should be marked as "shown" like it would have been done
|
||||
// if handling the event with the file list already created.
|
||||
shown: true,
|
||||
}
|
||||
)
|
||||
|
||||
this._extendFileList(this._pendingFileList)
|
||||
this._pendingFileList.appName = t('files_sharing', 'Pending shares')
|
||||
this._pendingFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>'
|
||||
+ '<h2>' + t('files_sharing', 'No pending shares') + '</h2>'
|
||||
+ '<p>' + t('files_sharing', 'Shares you have received but not confirmed will show up here') + '</p>')
|
||||
return this._pendingFileList
|
||||
},
|
||||
|
||||
initShareingOverview($el) {
|
||||
if (this._overviewFileList) {
|
||||
return this._overviewFileList
|
||||
}
|
||||
this._overviewFileList = new OCA.Sharing.FileList(
|
||||
$el,
|
||||
{
|
||||
id: 'shares.overview',
|
||||
fileActions: this._createFileActions(),
|
||||
config: OCA.Files.App.getFilesConfig(),
|
||||
isOverview: true,
|
||||
// The file list is created when a "show" event is handled, so
|
||||
// it should be marked as "shown" like it would have been done
|
||||
// if handling the event with the file list already created.
|
||||
shown: true,
|
||||
}
|
||||
)
|
||||
|
||||
this._extendFileList(this._overviewFileList)
|
||||
this._overviewFileList.appName = t('files_sharing', 'Shares')
|
||||
this._overviewFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>'
|
||||
+ '<h2>' + t('files_sharing', 'No shares') + '</h2>'
|
||||
+ '<p>' + t('files_sharing', 'Shares will show up here') + '</p>')
|
||||
return this._overviewFileList
|
||||
},
|
||||
|
||||
removeSharingIn() {
|
||||
if (this._inFileList) {
|
||||
this._inFileList.$fileList.empty()
|
||||
}
|
||||
},
|
||||
|
||||
removeSharingOut() {
|
||||
if (this._outFileList) {
|
||||
this._outFileList.$fileList.empty()
|
||||
}
|
||||
},
|
||||
|
||||
removeSharingLinks() {
|
||||
if (this._linkFileList) {
|
||||
this._linkFileList.$fileList.empty()
|
||||
}
|
||||
},
|
||||
|
||||
removeSharingDeleted() {
|
||||
if (this._deletedFileList) {
|
||||
this._deletedFileList.$fileList.empty()
|
||||
}
|
||||
},
|
||||
|
||||
removeSharingPending() {
|
||||
if (this._pendingFileList) {
|
||||
this._pendingFileList.$fileList.empty()
|
||||
}
|
||||
},
|
||||
|
||||
removeSharingOverview() {
|
||||
if (this._overviewFileList) {
|
||||
this._overviewFileList.$fileList.empty()
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Destroy the app
|
||||
*/
|
||||
destroy() {
|
||||
OCA.Files.fileActions.off('setDefault.app-sharing', this._onActionsUpdated)
|
||||
OCA.Files.fileActions.off('registerAction.app-sharing', this._onActionsUpdated)
|
||||
this.removeSharingIn()
|
||||
this.removeSharingOut()
|
||||
this.removeSharingLinks()
|
||||
this._inFileList = null
|
||||
this._outFileList = null
|
||||
this._linkFileList = null
|
||||
this._overviewFileList = null
|
||||
delete this._globalActionsInitialized
|
||||
},
|
||||
|
||||
_createFileActions() {
|
||||
// inherit file actions from the files app
|
||||
const fileActions = new OCA.Files.FileActions()
|
||||
// note: not merging the legacy actions because legacy apps are not
|
||||
// compatible with the sharing overview and need to be adapted first
|
||||
fileActions.registerDefaultActions()
|
||||
fileActions.merge(OCA.Files.fileActions)
|
||||
|
||||
if (!this._globalActionsInitialized) {
|
||||
// in case actions are registered later
|
||||
this._onActionsUpdated = _.bind(this._onActionsUpdated, this)
|
||||
OCA.Files.fileActions.on('setDefault.app-sharing', this._onActionsUpdated)
|
||||
OCA.Files.fileActions.on('registerAction.app-sharing', this._onActionsUpdated)
|
||||
this._globalActionsInitialized = true
|
||||
}
|
||||
|
||||
// when the user clicks on a folder, redirect to the corresponding
|
||||
// folder in the files app instead of opening it directly
|
||||
fileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {
|
||||
OCA.Files.App.setActiveView('files', { silent: true })
|
||||
OCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true)
|
||||
})
|
||||
fileActions.setDefault('dir', 'Open')
|
||||
return fileActions
|
||||
},
|
||||
|
||||
_restoreShareAction() {
|
||||
const fileActions = new OCA.Files.FileActions()
|
||||
fileActions.registerAction({
|
||||
name: 'Restore',
|
||||
displayName: t('files_sharing', 'Restore'),
|
||||
altText: t('files_sharing', 'Restore share'),
|
||||
mime: 'all',
|
||||
permissions: OC.PERMISSION_ALL,
|
||||
iconClass: 'icon-history',
|
||||
type: OCA.Files.FileActions.TYPE_INLINE,
|
||||
actionHandler(fileName, context) {
|
||||
const shareId = context.$file.data('shareId')
|
||||
$.post(OC.linkToOCS('apps/files_sharing/api/v1/deletedshares', 2) + shareId)
|
||||
.success(function(result) {
|
||||
context.fileList.remove(context.fileInfoModel.attributes.name)
|
||||
}).fail(function() {
|
||||
OC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to restore the share.'))
|
||||
})
|
||||
},
|
||||
})
|
||||
return fileActions
|
||||
},
|
||||
|
||||
_acceptShareAction() {
|
||||
const fileActions = new OCA.Files.FileActions()
|
||||
fileActions.registerAction({
|
||||
name: 'Accept share',
|
||||
displayName: t('files_sharing', 'Accept share'),
|
||||
mime: 'all',
|
||||
permissions: OC.PERMISSION_ALL,
|
||||
iconClass: 'icon-checkmark',
|
||||
type: OCA.Files.FileActions.TYPE_INLINE,
|
||||
actionHandler(fileName, context) {
|
||||
const shareId = context.$file.data('shareId')
|
||||
let shareBase = 'shares/pending'
|
||||
if (context.$file.attr('data-remote-id')) {
|
||||
shareBase = 'remote_shares/pending'
|
||||
}
|
||||
$.post(OC.linkToOCS('apps/files_sharing/api/v1/' + shareBase, 2) + shareId)
|
||||
.success(function(result) {
|
||||
context.fileList.remove(context.fileInfoModel.attributes.name)
|
||||
}).fail(function() {
|
||||
OC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to accept the share.'))
|
||||
})
|
||||
},
|
||||
})
|
||||
fileActions.registerAction({
|
||||
name: 'Reject share',
|
||||
displayName: t('files_sharing', 'Reject share'),
|
||||
mime: 'all',
|
||||
permissions: OC.PERMISSION_ALL,
|
||||
iconClass: 'icon-close',
|
||||
type: OCA.Files.FileActions.TYPE_INLINE,
|
||||
shouldRender(context) {
|
||||
// disable rejecting group shares from the pending list because they anyway
|
||||
// land back into that same list
|
||||
if (context.$file.attr('data-remote-id') && parseInt(context.$file.attr('data-share-type'), 10) === OC.Share.SHARE_TYPE_REMOTE_GROUP) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
actionHandler(fileName, context) {
|
||||
const shareId = context.$file.data('shareId')
|
||||
let shareBase = 'shares'
|
||||
if (context.$file.attr('data-remote-id')) {
|
||||
shareBase = 'remote_shares'
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: OC.linkToOCS('apps/files_sharing/api/v1/' + shareBase, 2) + shareId,
|
||||
type: 'DELETE',
|
||||
}).success(function(result) {
|
||||
context.fileList.remove(context.fileInfoModel.attributes.name)
|
||||
}).fail(function() {
|
||||
OC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to reject the share.'))
|
||||
})
|
||||
},
|
||||
})
|
||||
return fileActions
|
||||
},
|
||||
|
||||
_onActionsUpdated(ev) {
|
||||
_.each([this._inFileList, this._outFileList, this._linkFileList], function(list) {
|
||||
if (!list) {
|
||||
return
|
||||
}
|
||||
|
||||
if (ev.action) {
|
||||
list.fileActions.registerAction(ev.action)
|
||||
} else if (ev.defaultAction) {
|
||||
list.fileActions.setDefault(
|
||||
ev.defaultAction.mime,
|
||||
ev.defaultAction.name
|
||||
)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
_extendFileList(fileList) {
|
||||
// remove size column from summary
|
||||
fileList.fileSummary.$el.find('.filesize').remove()
|
||||
},
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
$('#app-content-sharinginOld').on('show', function(e) {
|
||||
OCA.Sharing.App.initSharingIn($(e.target))
|
||||
})
|
||||
$('#app-content-sharinginOld').on('hide', function() {
|
||||
OCA.Sharing.App.removeSharingIn()
|
||||
})
|
||||
$('#app-content-sharingoutOld').on('show', function(e) {
|
||||
OCA.Sharing.App.initSharingOut($(e.target))
|
||||
})
|
||||
$('#app-content-sharingoutOld').on('hide', function() {
|
||||
OCA.Sharing.App.removeSharingOut()
|
||||
})
|
||||
$('#app-content-sharinglinksOld').on('show', function(e) {
|
||||
OCA.Sharing.App.initSharingLinks($(e.target))
|
||||
})
|
||||
$('#app-content-sharinglinksOld').on('hide', function() {
|
||||
OCA.Sharing.App.removeSharingLinks()
|
||||
})
|
||||
$('#app-content-deletedsharesOld').on('show', function(e) {
|
||||
OCA.Sharing.App.initSharingDeleted($(e.target))
|
||||
})
|
||||
$('#app-content-deletedsharesOld').on('hide', function() {
|
||||
OCA.Sharing.App.removeSharingDeleted()
|
||||
})
|
||||
$('#app-content-pendingsharesOld').on('show', function(e) {
|
||||
OCA.Sharing.App.initSharingPening($(e.target))
|
||||
})
|
||||
$('#app-content-pendingsharesOld').on('hide', function() {
|
||||
OCA.Sharing.App.removeSharingPending()
|
||||
})
|
||||
$('#app-content-shareoverviewOld').on('show', function(e) {
|
||||
OCA.Sharing.App.initShareingOverview($(e.target))
|
||||
})
|
||||
$('#app-content-shareoverviewOld').on('hide', function() {
|
||||
OCA.Sharing.App.removeSharingOverview()
|
||||
})
|
||||
})
|
@ -1,541 +0,0 @@
|
||||
/* eslint-disable */
|
||||
/*
|
||||
* Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
(function() {
|
||||
|
||||
/**
|
||||
* @class OCA.Sharing.FileList
|
||||
* @augments OCA.Files.FileList
|
||||
*
|
||||
* @classdesc Sharing file list.
|
||||
* Contains both "shared with others" and "shared with you" modes.
|
||||
*
|
||||
* @param $el container element with existing markup for the .files-controls
|
||||
* and a table
|
||||
* @param [options] map of options, see other parameters
|
||||
* @param {boolean} [options.sharedWithUser] true to return files shared with
|
||||
* the current user, false to return files that the user shared with others.
|
||||
* Defaults to false.
|
||||
* @param {boolean} [options.linksOnly] true to return only link shares
|
||||
*/
|
||||
var FileList = function($el, options) {
|
||||
this.initialize($el, options)
|
||||
}
|
||||
FileList.prototype = _.extend({}, OCA.Files.FileList.prototype,
|
||||
/** @lends OCA.Sharing.FileList.prototype */ {
|
||||
appName: 'Shares',
|
||||
|
||||
/**
|
||||
* Whether the list shows the files shared with the user (true) or
|
||||
* the files that the user shared with others (false).
|
||||
*/
|
||||
_sharedWithUser: false,
|
||||
_linksOnly: false,
|
||||
_showDeleted: false,
|
||||
_showPending: false,
|
||||
_clientSideSort: true,
|
||||
_allowSelection: false,
|
||||
_isOverview: false,
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
initialize: function($el, options) {
|
||||
OCA.Files.FileList.prototype.initialize.apply(this, arguments)
|
||||
if (this.initialized) {
|
||||
return
|
||||
}
|
||||
|
||||
// TODO: consolidate both options
|
||||
if (options && options.sharedWithUser) {
|
||||
this._sharedWithUser = true
|
||||
}
|
||||
if (options && options.linksOnly) {
|
||||
this._linksOnly = true
|
||||
}
|
||||
if (options && options.showDeleted) {
|
||||
this._showDeleted = true
|
||||
}
|
||||
if (options && options.showPending) {
|
||||
this._showPending = true
|
||||
}
|
||||
if (options && options.isOverview) {
|
||||
this._isOverview = true
|
||||
}
|
||||
},
|
||||
|
||||
_renderRow: function() {
|
||||
// HACK: needed to call the overridden _renderRow
|
||||
// this is because at the time this class is created
|
||||
// the overriding hasn't been done yet...
|
||||
return OCA.Files.FileList.prototype._renderRow.apply(this, arguments)
|
||||
},
|
||||
|
||||
_createRow: function(fileData) {
|
||||
// TODO: hook earlier and render the whole row here
|
||||
var $tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)
|
||||
$tr.find('.filesize').remove()
|
||||
$tr.find('td.date').before($tr.children('td:first'))
|
||||
$tr.find('td.filename input:checkbox').remove()
|
||||
$tr.attr('data-share-id', _.pluck(fileData.shares, 'id').join(','))
|
||||
if (this._sharedWithUser) {
|
||||
$tr.attr('data-share-owner', fileData.shareOwner)
|
||||
$tr.attr('data-mounttype', 'shared-root')
|
||||
var permission = parseInt($tr.attr('data-permissions')) | OC.PERMISSION_DELETE
|
||||
$tr.attr('data-permissions', permission)
|
||||
}
|
||||
if (this._showDeleted || this._showPending) {
|
||||
var permission = fileData.permissions
|
||||
$tr.attr('data-share-permissions', permission)
|
||||
}
|
||||
|
||||
if (fileData.remoteId) {
|
||||
$tr.attr('data-remote-id', fileData.remoteId)
|
||||
}
|
||||
|
||||
if (fileData.shareType) {
|
||||
$tr.attr('data-share-type', fileData.shareType)
|
||||
}
|
||||
|
||||
// add row with expiration date for link only shares - influenced by _createRow of filelist
|
||||
if (this._linksOnly) {
|
||||
var expirationTimestamp = 0
|
||||
if (fileData.shares && fileData.shares[0].expiration !== null) {
|
||||
expirationTimestamp = moment(fileData.shares[0].expiration).valueOf()
|
||||
}
|
||||
$tr.attr('data-expiration', expirationTimestamp)
|
||||
|
||||
// date column (1000 milliseconds to seconds, 60 seconds, 60 minutes, 24 hours)
|
||||
// difference in days multiplied by 5 - brightest shade for expiry dates in more than 32 days (160/5)
|
||||
var modifiedColor = Math.round((expirationTimestamp - (new Date()).getTime()) / 1000 / 60 / 60 / 24 * 5)
|
||||
// ensure that the brightest color is still readable
|
||||
if (modifiedColor >= 160) {
|
||||
modifiedColor = 160
|
||||
}
|
||||
|
||||
var formatted
|
||||
var text
|
||||
if (expirationTimestamp > 0) {
|
||||
formatted = OC.Util.formatDate(expirationTimestamp)
|
||||
text = OC.Util.relativeModifiedDate(expirationTimestamp)
|
||||
} else {
|
||||
formatted = t('files_sharing', 'No expiration date set')
|
||||
text = ''
|
||||
modifiedColor = 160
|
||||
}
|
||||
td = $('<td></td>').attr({ 'class': 'date' })
|
||||
td.append($('<span></span>').attr({
|
||||
'class': 'modified',
|
||||
'title': formatted,
|
||||
'style': 'color:rgb(' + modifiedColor + ',' + modifiedColor + ',' + modifiedColor + ')'
|
||||
}).text(text))
|
||||
|
||||
$tr.append(td)
|
||||
}
|
||||
return $tr
|
||||
},
|
||||
|
||||
/**
|
||||
* Set whether the list should contain outgoing shares
|
||||
* or incoming shares.
|
||||
*
|
||||
* @param state true for incoming shares, false otherwise
|
||||
*/
|
||||
setSharedWithUser: function(state) {
|
||||
this._sharedWithUser = !!state
|
||||
},
|
||||
|
||||
updateEmptyContent: function() {
|
||||
var dir = this.getCurrentDirectory()
|
||||
if (dir === '/') {
|
||||
// root has special permissions
|
||||
this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty)
|
||||
this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty)
|
||||
|
||||
// hide expiration date header for non link only shares
|
||||
if (!this._linksOnly) {
|
||||
this.$el.find('th.column-expiration').addClass('hidden')
|
||||
}
|
||||
} else {
|
||||
OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments)
|
||||
}
|
||||
},
|
||||
|
||||
getDirectoryPermissions: function() {
|
||||
return OC.PERMISSION_READ | OC.PERMISSION_DELETE
|
||||
},
|
||||
|
||||
updateStorageStatistics: function() {
|
||||
// no op because it doesn't have
|
||||
// storage info like free space / used space
|
||||
},
|
||||
|
||||
reload: function() {
|
||||
this.showMask()
|
||||
if (this._reloadCall?.abort) {
|
||||
this._reloadCall.abort()
|
||||
}
|
||||
|
||||
// there is only root
|
||||
this._setCurrentDir('/', false)
|
||||
|
||||
var promises = []
|
||||
|
||||
var deletedShares = {
|
||||
url: OC.linkToOCS('apps/files_sharing/api/v1', 2) + 'deletedshares',
|
||||
/* jshint camelcase: false */
|
||||
data: {
|
||||
format: 'json',
|
||||
include_tags: true
|
||||
},
|
||||
type: 'GET',
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader('OCS-APIREQUEST', 'true')
|
||||
}
|
||||
}
|
||||
|
||||
var pendingShares = {
|
||||
url: OC.linkToOCS('apps/files_sharing/api/v1/shares', 2) + 'pending',
|
||||
/* jshint camelcase: false */
|
||||
data: {
|
||||
format: 'json'
|
||||
},
|
||||
type: 'GET',
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader('OCS-APIREQUEST', 'true')
|
||||
}
|
||||
}
|
||||
|
||||
var pendingRemoteShares = {
|
||||
url: OC.linkToOCS('apps/files_sharing/api/v1/remote_shares', 2) + 'pending',
|
||||
/* jshint camelcase: false */
|
||||
data: {
|
||||
format: 'json'
|
||||
},
|
||||
type: 'GET',
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader('OCS-APIREQUEST', 'true')
|
||||
}
|
||||
}
|
||||
|
||||
var shares = {
|
||||
url: OC.linkToOCS('apps/files_sharing/api/v1') + 'shares',
|
||||
/* jshint camelcase: false */
|
||||
data: {
|
||||
format: 'json',
|
||||
shared_with_me: this._sharedWithUser !== false,
|
||||
include_tags: true
|
||||
},
|
||||
type: 'GET',
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader('OCS-APIREQUEST', 'true')
|
||||
}
|
||||
}
|
||||
|
||||
var remoteShares = {
|
||||
url: OC.linkToOCS('apps/files_sharing/api/v1') + 'remote_shares',
|
||||
/* jshint camelcase: false */
|
||||
data: {
|
||||
format: 'json',
|
||||
include_tags: true
|
||||
},
|
||||
type: 'GET',
|
||||
beforeSend: function(xhr) {
|
||||
xhr.setRequestHeader('OCS-APIREQUEST', 'true')
|
||||
}
|
||||
}
|
||||
|
||||
// Add the proper ajax requests to the list and run them
|
||||
// and make sure we have 2 promises
|
||||
if (this._showDeleted) {
|
||||
promises.push($.ajax(deletedShares))
|
||||
} else if (this._showPending) {
|
||||
promises.push($.ajax(pendingShares))
|
||||
promises.push($.ajax(pendingRemoteShares))
|
||||
} else {
|
||||
promises.push($.ajax(shares))
|
||||
|
||||
if (this._sharedWithUser !== false || this._isOverview) {
|
||||
promises.push($.ajax(remoteShares))
|
||||
}
|
||||
if (this._isOverview) {
|
||||
shares.data.shared_with_me = !shares.data.shared_with_me
|
||||
promises.push($.ajax(shares))
|
||||
}
|
||||
}
|
||||
|
||||
this._reloadCall = $.when.apply($, promises)
|
||||
var callBack = this.reloadCallback.bind(this)
|
||||
return this._reloadCall.then(callBack, callBack)
|
||||
},
|
||||
|
||||
reloadCallback: function(shares, remoteShares, additionalShares) {
|
||||
delete this._reloadCall
|
||||
this.hideMask()
|
||||
|
||||
this.$el.find('#headerSharedWith').text(
|
||||
t('files_sharing', this._sharedWithUser ? 'Shared by' : 'Shared with')
|
||||
)
|
||||
|
||||
var files = []
|
||||
|
||||
// make sure to use the same format
|
||||
if (shares[0] && shares[0].ocs) {
|
||||
shares = shares[0]
|
||||
}
|
||||
if (remoteShares && remoteShares[0] && remoteShares[0].ocs) {
|
||||
remoteShares = remoteShares[0]
|
||||
}
|
||||
if (additionalShares && additionalShares[0] && additionalShares[0].ocs) {
|
||||
additionalShares = additionalShares[0]
|
||||
}
|
||||
|
||||
if (shares.ocs && shares.ocs.data) {
|
||||
files = files.concat(this._makeFilesFromShares(shares.ocs.data, this._sharedWithUser))
|
||||
}
|
||||
|
||||
if (remoteShares && remoteShares.ocs && remoteShares.ocs.data) {
|
||||
files = files.concat(this._makeFilesFromRemoteShares(remoteShares.ocs.data))
|
||||
}
|
||||
|
||||
if (additionalShares && additionalShares.ocs && additionalShares.ocs.data) {
|
||||
if (this._showPending) {
|
||||
// in this case the second callback is about pending remote shares
|
||||
files = files.concat(this._makeFilesFromRemoteShares(additionalShares.ocs.data))
|
||||
} else {
|
||||
files = files.concat(this._makeFilesFromShares(additionalShares.ocs.data, !this._sharedWithUser))
|
||||
}
|
||||
}
|
||||
|
||||
this.setFiles(files)
|
||||
return true
|
||||
},
|
||||
|
||||
_makeFilesFromRemoteShares: function(data) {
|
||||
var files = data
|
||||
|
||||
files = _.chain(files)
|
||||
// convert share data to file data
|
||||
.map(function(share) {
|
||||
var file = {
|
||||
shareOwner: share.owner + '@' + share.remote.replace(/.*?:\/\//g, ''),
|
||||
name: OC.basename(share.mountpoint),
|
||||
mtime: share.mtime * 1000,
|
||||
mimetype: share.mimetype,
|
||||
type: share.type,
|
||||
// remote share types are different and need to be mapped
|
||||
shareType: (parseInt(share.share_type, 10) === 1) ? OC.Share.SHARE_TYPE_REMOTE_GROUP : OC.Share.SHARE_TYPE_REMOTE,
|
||||
id: share.file_id,
|
||||
path: OC.dirname(share.mountpoint),
|
||||
permissions: share.permissions,
|
||||
tags: share.tags || []
|
||||
}
|
||||
|
||||
if (share.remote_id) {
|
||||
// remote share
|
||||
if (share.accepted !== '1') {
|
||||
file.name = OC.basename(share.name)
|
||||
file.path = '/'
|
||||
}
|
||||
file.remoteId = share.remote_id
|
||||
file.shareOwnerId = share.owner
|
||||
}
|
||||
|
||||
if (!file.mimetype) {
|
||||
// pending shares usually have no type, so default to showing a directory icon
|
||||
file.mimetype = 'dir-shared'
|
||||
}
|
||||
|
||||
file.shares = [{
|
||||
id: share.id,
|
||||
type: OC.Share.SHARE_TYPE_REMOTE
|
||||
}]
|
||||
return file
|
||||
})
|
||||
.value()
|
||||
return files
|
||||
},
|
||||
|
||||
/**
|
||||
* Converts the OCS API share response data to a file info
|
||||
* list
|
||||
* @param {Array} data OCS API share array
|
||||
* @param {boolean} sharedWithUser
|
||||
* @returns {Array.<OCA.Sharing.SharedFileInfo>} array of shared file info
|
||||
*/
|
||||
_makeFilesFromShares: function(data, sharedWithUser) {
|
||||
/* jshint camelcase: false */
|
||||
var files = data
|
||||
|
||||
if (this._linksOnly) {
|
||||
files = _.filter(data, function(share) {
|
||||
return share.share_type === OC.Share.SHARE_TYPE_LINK
|
||||
})
|
||||
}
|
||||
|
||||
// OCS API uses non-camelcased names
|
||||
files = _.chain(files)
|
||||
// convert share data to file data
|
||||
.map(function(share) {
|
||||
// TODO: use OC.Files.FileInfo
|
||||
var file = {
|
||||
id: share.file_source,
|
||||
icon: OC.MimeType.getIconUrl(share.mimetype),
|
||||
mimetype: share.mimetype,
|
||||
hasPreview: share.has_preview,
|
||||
tags: share.tags || []
|
||||
}
|
||||
if (share.item_type === 'folder') {
|
||||
file.type = 'dir'
|
||||
file.mimetype = 'httpd/unix-directory'
|
||||
} else {
|
||||
file.type = 'file'
|
||||
}
|
||||
file.share = {
|
||||
id: share.id,
|
||||
type: share.share_type,
|
||||
target: share.share_with,
|
||||
stime: share.stime * 1000,
|
||||
expiration: share.expiration
|
||||
}
|
||||
if (sharedWithUser) {
|
||||
file.shareOwner = share.displayname_owner
|
||||
file.shareOwnerId = share.uid_owner
|
||||
file.name = OC.basename(share.file_target)
|
||||
file.path = OC.dirname(share.file_target)
|
||||
file.permissions = share.permissions
|
||||
if (file.path) {
|
||||
file.extraData = share.file_target
|
||||
}
|
||||
} else {
|
||||
if (share.share_type !== OC.Share.SHARE_TYPE_LINK) {
|
||||
file.share.targetDisplayName = share.share_with_displayname
|
||||
file.share.targetShareWithId = share.share_with
|
||||
}
|
||||
file.name = OC.basename(share.path)
|
||||
file.path = OC.dirname(share.path)
|
||||
file.permissions = OC.PERMISSION_ALL
|
||||
if (file.path) {
|
||||
file.extraData = share.path
|
||||
}
|
||||
}
|
||||
return file
|
||||
})
|
||||
// Group all files and have a "shares" array with
|
||||
// the share info for each file.
|
||||
//
|
||||
// This uses a hash memo to cumulate share information
|
||||
// inside the same file object (by file id).
|
||||
.reduce(function(memo, file) {
|
||||
var data = memo[file.id]
|
||||
var recipient = file.share.targetDisplayName
|
||||
var recipientId = file.share.targetShareWithId
|
||||
if (!data) {
|
||||
data = memo[file.id] = file
|
||||
data.shares = [file.share]
|
||||
// using a hash to make them unique,
|
||||
// this is only a list to be displayed
|
||||
data.recipients = {}
|
||||
data.recipientData = {}
|
||||
// share types
|
||||
data.shareTypes = {}
|
||||
// counter is cheaper than calling _.keys().length
|
||||
data.recipientsCount = 0
|
||||
data.mtime = file.share.stime
|
||||
} else {
|
||||
// always take the most recent stime
|
||||
if (file.share.stime > data.mtime) {
|
||||
data.mtime = file.share.stime
|
||||
}
|
||||
data.shares.push(file.share)
|
||||
}
|
||||
|
||||
if (recipient) {
|
||||
// limit counterparts for output
|
||||
if (data.recipientsCount < 4) {
|
||||
// only store the first ones, they will be the only ones
|
||||
// displayed
|
||||
data.recipients[recipient] = true
|
||||
data.recipientData[data.recipientsCount] = {
|
||||
'shareWith': recipientId,
|
||||
'shareWithDisplayName': recipient
|
||||
}
|
||||
}
|
||||
data.recipientsCount++
|
||||
}
|
||||
|
||||
data.shareTypes[file.share.type] = true
|
||||
|
||||
delete file.share
|
||||
return memo
|
||||
}, {})
|
||||
// Retrieve only the values of the returned hash
|
||||
.values()
|
||||
// Clean up
|
||||
.each(function(data) {
|
||||
// convert the recipients map to a flat
|
||||
// array of sorted names
|
||||
data.mountType = 'shared'
|
||||
delete data.recipientsCount
|
||||
if (sharedWithUser) {
|
||||
// only for outgoing shares
|
||||
delete data.shareTypes
|
||||
} else {
|
||||
data.shareTypes = _.keys(data.shareTypes)
|
||||
}
|
||||
})
|
||||
// Finish the chain by getting the result
|
||||
.value()
|
||||
|
||||
// Sort by expected sort comparator
|
||||
return files.sort(this._sortComparator)
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* Share info attributes.
|
||||
*
|
||||
* @typedef {Object} OCA.Sharing.ShareInfo
|
||||
*
|
||||
* @property {number} id share ID
|
||||
* @property {number} type share type
|
||||
* @property {String} target share target, either user name or group name
|
||||
* @property {number} stime share timestamp in milliseconds
|
||||
* @property {String} [targetDisplayName] display name of the recipient
|
||||
* (only when shared with others)
|
||||
* @property {String} [targetShareWithId] id of the recipient
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Recipient attributes
|
||||
*
|
||||
* @typedef {Object} OCA.Sharing.RecipientInfo
|
||||
* @property {String} shareWith the id of the recipient
|
||||
* @property {String} shareWithDisplayName the display name of the recipient
|
||||
*/
|
||||
|
||||
/**
|
||||
* Shared file info attributes.
|
||||
*
|
||||
* @typedef {OCA.Files.FileInfo} OCA.Sharing.SharedFileInfo
|
||||
*
|
||||
* @property {Array.<OCA.Sharing.ShareInfo>} shares array of shares for
|
||||
* this file
|
||||
* @property {number} mtime most recent share time (if multiple shares)
|
||||
* @property {String} shareOwner name of the share owner
|
||||
* @property {Array.<String>} recipients name of the first 4 recipients
|
||||
* (this is mostly for display purposes)
|
||||
* @property {Object.<OCA.Sharing.RecipientInfo>} recipientData (as object for easier
|
||||
* passing to HTML data attributes with jQuery)
|
||||
*/
|
||||
|
||||
OCA.Sharing.FileList = FileList
|
||||
})()
|
Loading…
Reference in New Issue