@@ -67,6 +67,8 @@ define([
var OWNED _NAME = Messages . fm _ownedPadsName ;
var TAGS = "tags" ;
var TAGS _NAME = Messages . fm _tagsName ;
var SHARED _FOLDER = 'sf' ;
var SHARED _FOLDER _NAME = Messages . fm _sharedFolderName ;
// Icons
var faFolder = 'fa-folder' ;
@@ -123,7 +125,7 @@ define([
var FOLDER _CONTENT _ID = "cp-app-drive-content-folder" ;
var config = { } ;
var DEBUG = config . DEBUG = tru e;
var DEBUG = config . DEBUG = fals e;
var debug = config . debug = DEBUG ? function ( ) {
console . log . apply ( console , arguments ) ;
} : function ( ) { return ; } ;
@@ -239,6 +241,10 @@ define([
var updateObject = function ( sframeChan , obj , cb ) {
sframeChan . query ( 'Q_DRIVE_GETOBJECT' , null , function ( err , newObj ) {
copyObjectValue ( obj , newObj ) ;
if ( ! APP . loggedIn && APP . newSharedFolder ) {
obj . drive . sharedFolders = obj . drive . sharedFolders || { } ;
obj . drive . sharedFolders [ APP . newSharedFolder ] = { } ;
}
cb ( ) ;
} ) ;
} ;
@@ -410,16 +416,22 @@ define([
// Tags used: display Tags category
if ( Object . keys ( manager . getTagsList ( ) ) . length ) { displayedCategories . push ( TAGS ) ; }
var virtualCategories = [ SEARCH , RECENT , OWNED , TAGS ] ;
var virtualCategories = [ SEARCH , RECENT , OWNED , TAGS , SHARED _FOLDER ];
if ( ! APP . loggedIn ) {
displayedCategories = [ FILES _DATA ] ;
currentPath = [ FILES _DATA ] ;
$tree . hide ( ) ;
if ( Object . keys ( files . root ) . length && ! proxy . anonymousAl ert ) {
var msg = common . fixLinks ( $ ( '<div>' ) . html ( Messages . fm _alert _anonymous ) ) ;
UI . alert ( msg ) ;
proxy . anonymousAlert = true ;
if ( APP . newSharedFold er) {
// ANON_SHARED_FOLDER
displayedCategories = [ SHARED _FOLDER ] ;
currentPath = [ SHARED _FOLDER , ROOT ] ;
} else {
displayedCategories = [ FILES _DATA ] ;
currentPath = [ FILES _DATA ] ;
if ( Object . keys ( files . root ) . length && ! proxy . anonymousAlert ) {
var msg = common . fixLinks ( $ ( '<div>' ) . html ( Messages . fm _alert _anonymous ) ) ;
UI . alert ( msg ) ;
proxy . anonymousAlert = true ;
}
}
}
@@ -1485,15 +1497,17 @@ define([
var isTrash = path [ 0 ] === TRASH ;
var newPath = path . slice ( ) ;
var key ;
var element ;
if ( isTrash && Array . isArray ( elPath ) ) {
key = elPath [ 0 ] ;
elPath . forEach ( function ( k ) { newPath . push ( k ) ; } ) ;
element = manager . find ( newPath ) ;
} else {
key = elPath ;
newPath . push ( key ) ;
element = root [ key ] ;
}
var element = manager . find ( newPath ) ;
var isSharedFolder = manager . isSharedFolder ( element ) ;
var $icon = ! isFolder ? getFileIcon ( element ) : undefined ;
@@ -1586,6 +1600,7 @@ define([
case RECENT : pName = RECENT _NAME ; break ;
case OWNED : pName = OWNED _NAME ; break ;
case TAGS : pName = TAGS _NAME ; break ;
case SHARED _FOLDER : pName = SHARED _FOLDER _NAME ; break ;
default : pName = name ;
}
return pName ;
@@ -1610,8 +1625,8 @@ define([
var name = p ;
var currentEl = isVirtual ? undefined : manager . find ( path . slice ( 0 , idx + 1 ) ) ;
if ( currentEl && manager . isSharedFolder ( currentEl ) ) {
name = manager . getSharedFolderData ( currentEl ) . title ;
if ( p === SHARED _FOLDER || ( currentEl && manager . isSharedFolder ( currentEl ) ) ) {
name = manager . getSharedFolderData ( currentEl || APP . newSharedFolder ) . title ;
skipNext = true ;
}
@@ -1629,7 +1644,7 @@ define([
name = getElementName ( path ) ;
}
if ( idx === 0 ) { name = getPrettyName ( p ) ; }
if ( idx === 0 ) { name = p === SHARED _FOLDER ? name : getPrettyName( p ) ; }
else {
var $span2 = $ ( '<span>' , {
'class' : 'cp-app-drive-path-element cp-app-drive-path-separator'
@@ -1669,7 +1684,7 @@ define([
msg = undefined ;
}
if ( ! APP . loggedIn ) {
msg = Messages . fm _info _anonymous ;
msg = APP . newSharedFolder ? Messages . fm _info _sharedFolder : Messages. fm _info _anonymous ;
return $ ( common . fixLinks ( $box . html ( msg ) ) ) ;
}
if ( ! msg || APP . store [ 'hide-info-' + path [ 0 ] ] === '1' ) {
@@ -2066,6 +2081,10 @@ define([
var sortElements = function ( folder , path , oldkeys , prop , asc , useId ) {
var root = path && manager . find ( path ) ;
if ( path [ 0 ] === SHARED _FOLDER ) {
path = path . slice ( 1 ) ;
root = Util . find ( folders [ APP . newSharedFolder ] , path ) ;
}
var test = folder ? manager . isFolder : manager . isFile ;
var keys = oldkeys . filter ( function ( e ) {
return useId ? test ( e ) : ( path && test ( root [ e ] ) ) ;
@@ -2212,8 +2231,11 @@ define([
$ ( '<div>' , { 'class' : 'cp-app-drive-toolbar-filler' } ) . appendTo ( $toolbar ) ;
var $rightside = $ ( '<div>' , { 'class' : 'cp-app-drive-toolbar-rightside' } )
. appendTo ( $toolbar ) ;
var $hist = common . createButton ( 'history' , true , { histConfig : APP . histConfig } ) ;
$rightside . append ( $hist ) ;
if ( APP . loggedIn || ! APP . newSharedFolder ) {
// ANON_SHARED_FOLDER
var $hist = common . createButton ( 'history' , true , { histConfig : APP . histConfig } ) ;
$rightside . append ( $hist ) ;
}
if ( APP . $burnThisDrive ) {
$rightside . append ( APP . $burnThisDrive ) ;
}
@@ -2520,6 +2542,39 @@ define([
$ ( h ( 'li.cp-app-drive-tags-list' , h ( 'table' , lines ) ) ) . appendTo ( $container ) ;
} ;
// ANON_SHARED_FOLDER
// Display a shared folder for anon users (read-only)
var displaySharedFolder = function ( $list ) {
if ( currentPath . length === 1 ) {
currentPath . push ( ROOT ) ;
}
var fId = APP . newSharedFolder ;
var data = folders [ fId ] ;
var $folderHeader = getFolderListHeader ( ) ;
var $fileHeader = getFileListHeader ( true ) ;
var path = currentPath . slice ( 1 ) ;
var root = Util . find ( data , path ) ;
if ( manager . hasSubfolder ( root ) ) { $list . append ( $folderHeader ) ; }
// display sub directories
var keys = Object . keys ( root ) ;
var sortedFolders = sortElements ( true , currentPath , keys , null , ! getSortFolderDesc ( ) ) ;
var sortedFiles = sortElements ( false , currentPath , keys , APP . store [ SORT _FILE _BY ] , ! getSortFileDesc ( ) ) ;
sortedFolders . forEach ( function ( key ) {
if ( manager . isFile ( root [ key ] ) ) { return ; }
var $element = createElement ( currentPath , key , root , true ) ;
$element . appendTo ( $list ) ;
} ) ;
if ( manager . hasFile ( root ) ) { $list . append ( $fileHeader ) ; }
// display files
sortedFiles . forEach ( function ( key ) {
if ( manager . isFolder ( root [ key ] ) ) { return ; }
var $element = createElement ( currentPath , key , root , false ) ;
if ( ! $element ) { return ; }
$element . appendTo ( $list ) ;
} ) ;
} ;
// Display the selected directory into the content part (rightside)
// NOTE: Elements in the trash are not using the same storage structure as the others
var _displayDirectory = function ( path , force ) {
@@ -2551,9 +2606,12 @@ define([
var isVirtual = virtualCategories . indexOf ( path [ 0 ] ) !== - 1 ;
var isSearch = path [ 0 ] === SEARCH ;
var isTags = path [ 0 ] === TAGS ;
// ANON_SHARED_FOLDER
var isSharedFolder = path [ 0 ] === SHARED _FOLDER && APP . newSharedFolder ;
var root = isVirtual ? undefined : manager . find ( path ) ;
if ( manager . isSharedFolder ( root ) ) {
// ANON_SHARED_FOLDER
path . push ( manager . user . userObject . ROOT ) ;
root = manager . find ( path ) ;
if ( ! root ) { return ; }
@@ -2664,6 +2722,9 @@ define([
displayOwned ( $list ) ;
} else if ( isTags ) {
displayTags ( $list ) ;
} else if ( isSharedFolder ) {
// ANON_SHARED_FOLDER
displaySharedFolder ( $list ) ;
} else {
$dirContent . contextmenu ( openContextMenu ( 'content' ) ) ;
if ( manager . hasSubfolder ( root ) ) { $list . append ( $folderHeader ) ; }
@@ -3071,6 +3132,10 @@ define([
else if ( $ ( this ) . hasClass ( 'cp-app-drive-context-openro' ) ) {
paths . forEach ( function ( p ) {
var el = manager . find ( p . path ) ;
if ( paths [ 0 ] . path [ 0 ] === SHARED _FOLDER && APP . newSharedFolder ) {
// ANON_SHARED_FOLDER
el = manager . find ( paths [ 0 ] . path . slice ( 1 ) , APP . newSharedFolder ) ;
}
var href ;
if ( manager . isPathIn ( p . path , [ FILES _DATA ] ) ) {
href = el . roHref ;
@@ -3159,6 +3224,10 @@ define([
}
if ( paths . length !== 1 ) { return ; }
el = manager . find ( paths [ 0 ] . path ) ;
if ( paths [ 0 ] . path [ 0 ] === SHARED _FOLDER && APP . newSharedFolder ) {
// ANON_SHARED_FOLDER
el = manager . find ( paths [ 0 ] . path . slice ( 1 ) , APP . newSharedFolder ) ;
}
getProperties ( el , function ( e , $prop ) {
if ( e ) { return void logError ( e ) ; }
UI . alert ( $prop [ 0 ] , undefined , true ) ;
@@ -3447,6 +3516,11 @@ define([
common: common,
logging: false
};*/
var metadataMgr = common . getMetadataMgr ( ) ;
var privateData = metadataMgr . getPrivateData ( ) ;
if ( privateData . newSharedFolder ) {
APP . newSharedFolder = privateData . newSharedFolder ;
}
var sframeChan = common . getSframeChannel ( ) ;
updateObject ( sframeChan , proxy , waitFor ( function ( ) {
@@ -3457,14 +3531,23 @@ define([
var metadataMgr = common . getMetadataMgr ( ) ;
var privateData = metadataMgr . getPrivateData ( ) ;
if ( privateData . newSharedFolder ) {
APP . newSharedFolder = privateData . newSharedFolder ;
}
APP . disableSF = ! privateData . enableSF && AppConfig . disableSharedFolders ;
if ( APP . newSharedFolder && ! APP . loggedIn ) {
readOnly = APP . readOnly = true ;
var data = folders [ APP . newSharedFolder ] ;
if ( data ) {
sframeChan . query ( 'Q_SET_PAD_TITLE_IN_DRIVE' , {
title : data . metadata && data . metadata . title ,
} , function ( ) { } ) ;
}
}
// ANON_SHARED_FOLDER
var pageTitle = ( ! APP . loggedIn && APP . newSharedFolder ) ? SHARED _FOLDER _NAME : Messages . type . drive ;
var configTb = {
displayed : [ 'useradmin' , 'pageTitle' , 'newpad' , 'limit' ] ,
pageTitle : Messages . type . driv e,
pageTitle : pageTitl e,
metadataMgr : metadataMgr ,
readOnly : readOnly ,
sfCommon : common ,