2007-07-19 12:40:05 +02:00
/ * *
* Configuration for the left hand tree
* /
if ( typeof SiteTreeHandlers == 'undefined' ) SiteTreeHandlers = { } ;
SiteTreeHandlers . parentChanged _url = 'admin/assets/ajaxupdateparent' ;
SiteTreeHandlers . orderChanged _url = 'admin/assets/ajaxupdatesort' ;
SiteTreeHandlers . loadPage _url = 'admin/assets/getitem' ;
SiteTreeHandlers . loadTree _url = 'admin/assets/getsubtree' ;
SiteTreeHandlers . showRecord _url = 'admin/assets/show/' ;
2007-09-04 06:12:30 +02:00
SiteTreeHandlers . controller _url = 'admin/assets' ;
2007-07-19 12:40:05 +02:00
var _HANDLER _FORMS = {
addpage : 'addpage_options' ,
deletepage : 'deletepage_options' ,
sortitems : 'sortitems_options'
} ;
/ * *
* Top - right actions
* /
function action _upload _right ( e ) {
if ( frames [ 'AssetAdmin_upload' ] . document && frames [ 'AssetAdmin_upload' ] . document . getElementById ( 'Form_UploadForm' ) ) {
// make sure at least one file is selected for upload
var values = "" ;
var inputs = $A ( frames [ 'AssetAdmin_upload' ] . document . getElementsByTagName ( "input" ) ) ;
inputs . each ( function ( input ) {
if ( input . type == "file" ) values += input . value ;
} . bind ( this ) ) ;
if ( values . length == 0 ) {
alert ( "Please select at least one file for uploading" ) ;
openTab ( "Root_Upload" ) ;
} else {
frames [ 'AssetAdmin_upload' ] . document . getElementById ( 'Form_UploadForm' ) . submit ( ) ;
}
}
Event . stop ( e ) ;
return false ;
}
function action _deletemarked _right ( ) {
$ ( 'action_deletemarked_options' ) . onComplete = function ( ) { }
if ( confirm ( "Do you really want to delete the marked files?" ) ) {
$ ( 'action_deletemarked_options' ) . send ( ) ;
}
}
function action _movemarked _right ( ) {
$ ( 'action_movemarked_options' ) . toggle ( ) ;
}
MarkingPropertiesForm = Class . extend ( 'ActionPropertiesForm' ) ;
MarkingPropertiesForm . applyTo ( '#action_movemarked_options' , "Please select some files to move!" ) ;
MarkingPropertiesForm . applyTo ( '#action_deletemarked_options' , "Please select some files to delete!" ) ;
MarkingPropertiesForm . prototype = {
initialize : function ( noneCheckedError ) {
this . noneCheckedError = noneCheckedError ;
} ,
send : function ( ) {
var i , list = "" , checkboxes = $ ( 'Form_EditForm' ) . elements [ 'Files[]' ] ;
if ( ! checkboxes ) checkboxes = [ ] ;
if ( ! checkboxes . length ) checkboxes = [ checkboxes ] ;
for ( i = 0 ; i < checkboxes . length ; i ++ ) {
if ( checkboxes [ i ] . checked ) list += ( list ? ',' : '' ) + checkboxes [ i ] . value ;
}
if ( this . elements . DestFolderID && ! this . elements . DestFolderID . value ) {
alert ( "Please select a folder to move files to!" ) ;
return false ;
} else if ( list == "" ) {
alert ( this . noneCheckedError ) ;
return false ;
} else {
this . elements . FileIDs . value = list ;
return this . ActionPropertiesForm . send ( ) ;
}
}
}
/ * *
* Add File Action
* /
addfolder = Class . create ( ) ;
addfolder . applyTo ( '#addpage' ) ;
addfolder . prototype = {
initialize : function ( ) {
Observable . applyTo ( $ ( this . id + '_options' ) ) ;
2007-09-15 02:54:13 +02:00
this . getElementsByTagName ( 'button' ) [ 0 ] . onclick = returnFalse ;
2007-07-19 12:40:05 +02:00
$ ( this . id + '_options' ) . onsubmit = this . form _submit ;
} ,
onclick : function ( ) {
statusMessage ( 'Creating new folder...' ) ;
this . form _submit ( ) ;
/ *
if ( treeactions . toggleSelection ( this ) ) {
var selectedNode = $ ( 'sitetree' ) . firstSelected ( ) ;
if ( selectedNode ) {
while ( selectedNode . parentTreeNode && ! selectedNode . hints . defaultChild ) {
$ ( 'sitetree' ) . changeCurrentTo ( selectedNode . parentTreeNode ) ;
selectedNode = selectedNode . parentTreeNode ;
}
}
}
* /
return false ;
} ,
form _submit : function ( ) {
var st = $ ( 'sitetree' ) ;
$ ( 'addpage_options' ) . elements . ParentID . value = st . getIdxOf ( st . firstSelected ( ) ) ;
Ajax . SubmitForm ( 'addpage_options' , null , {
onSuccess : Ajax . Evaluator ,
onFailure : this . showAddPageError
} ) ;
return false ;
} ,
showAddPageError : function ( response ) {
errorMessage ( 'Error adding folder' , response ) ;
}
}
/ * *
* Delete folder action
* /
deletefolder = {
button _onclick : function ( ) {
if ( treeactions . toggleSelection ( this ) ) {
deletefolder . o1 = $ ( 'sitetree' ) . observeMethod ( 'SelectionChanged' , deletefolder . treeSelectionChanged ) ;
deletefolder . o2 = $ ( 'deletepage_options' ) . observeMethod ( 'Close' , deletefolder . popupClosed ) ;
addClass ( $ ( 'sitetree' ) , 'multiselect' ) ;
deletefolder . selectedNodes = { } ;
var sel = $ ( 'sitetree' ) . firstSelected ( )
if ( sel ) {
var selIdx = $ ( 'sitetree' ) . getIdxOf ( sel ) ;
deletefolder . selectedNodes [ selIdx ] = true ;
sel . removeNodeClass ( 'current' ) ;
sel . addNodeClass ( 'selected' ) ;
}
}
return false ;
} ,
treeSelectionChanged : function ( selectedNode ) {
var idx = $ ( 'sitetree' ) . getIdxOf ( selectedNode ) ;
if ( selectedNode . selected ) {
selectedNode . removeNodeClass ( 'selected' ) ;
selectedNode . selected = false ;
deletefolder . selectedNodes [ idx ] = false ;
} else {
selectedNode . addNodeClass ( 'selected' ) ;
selectedNode . selected = true ;
deletefolder . selectedNodes [ idx ] = true ;
}
return false ;
} ,
popupClosed : function ( ) {
removeClass ( $ ( 'sitetree' ) , 'multiselect' ) ;
$ ( 'sitetree' ) . stopObserving ( deletefolder . o1 ) ;
$ ( 'deletepage_options' ) . stopObserving ( deletefolder . o2 ) ;
for ( var idx in deletefolder . selectedNodes ) {
if ( deletefolder . selectedNodes [ idx ] ) {
node = $ ( 'sitetree' ) . getTreeNodeByIdx ( idx ) ;
if ( node ) {
node . removeNodeClass ( 'selected' ) ;
node . selected = false ;
}
}
}
} ,
form _submit : function ( ) {
var csvIDs = "" ;
for ( var idx in deletefolder . selectedNodes ) {
var selectedNode = $ ( 'sitetree' ) . getTreeNodeByIdx ( idx ) ;
var link = selectedNode . getElementsByTagName ( 'a' ) [ 0 ] ;
if ( deletefolder . selectedNodes [ idx ] && ( ! Element . hasClassName ( link , 'contents' ) || confirm ( "'" + link . firstChild . nodeValue + "' contains files. Would you like to delete the files and folder?" ) ) )
csvIDs += ( csvIDs ? "," : "" ) + idx ;
}
if ( csvIDs ) {
$ ( 'deletepage_options' ) . elements . csvIDs . value = csvIDs ;
statusMessage ( 'deleting pages' ) ;
Ajax . SubmitForm ( 'deletepage_options' , null , {
onSuccess : deletefolder . submit _success ,
onFailure : function ( response ) {
errorMessage ( 'Error deleting pages' , response ) ;
}
} ) ;
$ ( 'deletepage' ) . getElementsByTagName ( 'a' ) [ 0 ] . onclick ( ) ;
} else {
alert ( "Please select at least 1 page." ) ;
}
return false ;
} ,
submit _success : function ( response ) {
Ajax . Evaluator ( response ) ;
treeactions . closeSelection ( $ ( 'deletepage' ) ) ;
}
}
Behaviour . register ( {
'#Form_EditForm_Files' : {
removeFile : function ( fileID ) {
var record ;
if ( record = $ ( 'record-' + fileID ) ) {
record . parentNode . removeChild ( record ) ;
}
}
} ,
'#Form_EditForm_Files a.deletelink' : {
onclick : function ( event ) {
ajaxLink ( this . href ) ;
Event . stop ( event ) ;
return false ;
}
} ,
'#Form_EditForm' : {
changeDetection _fieldsToIgnore : {
'Files[]' : true
}
}
} ) ;
/ * *
* We don ' t want hitting the enter key in the name field
* to submit the form .
* /
Behaviour . register ( {
'#Form_EditForm_Name' : {
onkeypress : function ( event ) {
event = ( event ) ? event : window . event ;
var kc = event . keyCode ? event . keyCode : event . charCode ;
if ( kc == 13 ) {
return false ;
}
}
}
} ) ;
/ * *
* Initialisation function to set everything up
* /
appendLoader ( function ( ) {
// Set up delete page
Observable . applyTo ( $ ( 'deletepage_options' ) ) ;
if ( $ ( 'deletepage' ) ) {
$ ( 'deletepage' ) . onclick = deletefolder . button _onclick ;
$ ( 'deletepage' ) . getElementsByTagName ( 'a' ) [ 0 ] . onclick = function ( ) { return false ; } ;
$ ( 'deletepage_options' ) . onsubmit = deletefolder . form _submit ;
}
} ) ;