mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 04:22:07 +02:00
Merge branch 'wip-MDL-33303-m24' of git://github.com/samhemelryk/moodle
This commit is contained in:
commit
20ef104713
@ -107,7 +107,7 @@ class core_files_renderer extends plugin_renderer_base {
|
||||
$module = array(
|
||||
'name'=>'form_filemanager',
|
||||
'fullpath'=>'/lib/form/filemanager.js',
|
||||
'requires' => array('core_filepicker', 'base', 'io-base', 'node', 'json', 'core_dndupload', 'panel', 'resize-plugin', 'dd-plugin'),
|
||||
'requires' => array('core_filepicker', 'base', 'io-base', 'node', 'json', 'core_dndupload', 'panel', 'resize-plugin', 'dd-plugin', 'resize'),
|
||||
'strings' => array(
|
||||
array('error', 'moodle'), array('info', 'moodle'), array('confirmdeletefile', 'repository'),
|
||||
array('draftareanofiles', 'repository'), array('entername', 'repository'), array('enternewname', 'repository'),
|
||||
@ -123,6 +123,7 @@ class core_files_renderer extends plugin_renderer_base {
|
||||
array($this->filemanager_js_templates()), true, $module);
|
||||
}
|
||||
$this->page->requires->js_init_call('M.form_filemanager.init', array($fm->options), true, $module);
|
||||
user_preference_allow_ajax_update('filemanagerresizedto', PARAM_SEQUENCE);
|
||||
|
||||
// non javascript file manager
|
||||
$html .= '<noscript>';
|
||||
@ -192,8 +193,17 @@ class core_files_renderer extends plugin_renderer_base {
|
||||
$strdndenabledinbox = get_string('dndenabled_inbox', 'moodle');
|
||||
$loading = get_string('loading', 'repository');
|
||||
|
||||
$resizedto = get_user_preferences('filemanagerresizedto', null);
|
||||
$filemanagerstyle = '';
|
||||
$containerstyletag = '';
|
||||
if (!is_null($resizedto) && preg_match('#^\d+,\d+$#', $resizedto)) {
|
||||
list($width, $height) = explode(',', $resizedto, 2);
|
||||
$filemanagerstyle = " style='width:{$width}px;'";
|
||||
$containerstyletag = " style='height:{$height}px;'";
|
||||
}
|
||||
|
||||
$html = '
|
||||
<div id="filemanager-'.$client_id.'" class="filemanager fm-loading">
|
||||
<div id="filemanager-'.$client_id.'" class="filemanager fm-loading"'.$filemanagerstyle.'>
|
||||
<div class="fp-restrictions">
|
||||
'.$restrictions.'
|
||||
<span class="dndupload-message"> - '.$strdndenabled.' </span>
|
||||
@ -216,7 +226,7 @@ class core_files_renderer extends plugin_renderer_base {
|
||||
</div>
|
||||
</div>
|
||||
<div class="filemanager-loading mdl-align">'.$icon_progress.'</div>
|
||||
<div class="filemanager-container" >
|
||||
<div class="filemanager-container"'.$containerstyletag.'>
|
||||
<div class="fm-content-wrapper">
|
||||
<div class="fp-content"></div>
|
||||
<div class="fm-empty-container <!--mdl-align-->">
|
||||
@ -227,6 +237,7 @@ class core_files_renderer extends plugin_renderer_base {
|
||||
</div>
|
||||
<div class="filemanager-updating">'.$icon_progress.'</div>
|
||||
</div>
|
||||
<div class="fp-statusbar"></div>
|
||||
</div>';
|
||||
return preg_replace('/\{\!\}/', '', $html);
|
||||
}
|
||||
|
@ -83,6 +83,14 @@ M.form_filemanager.init = function(Y, options) {
|
||||
} else {
|
||||
this.filecount = 0;
|
||||
}
|
||||
|
||||
this.publish('filemanager:content-changed', {
|
||||
context : this,
|
||||
prefix : 'filemanager',
|
||||
preventable : false,
|
||||
type : 'content-changed'
|
||||
});
|
||||
|
||||
// prepare filemanager for drag-and-drop upload
|
||||
this.filemanager = Y.one('#filemanager-'+options.client_id);
|
||||
if (this.filemanager.hasClass('filemanager-container') || !this.filemanager.one('.filemanager-container')) {
|
||||
@ -122,6 +130,44 @@ M.form_filemanager.init = function(Y, options) {
|
||||
this.filemanager.all('.fp-vb-icons,.fp-vb-tree,.fp-vb-details').removeClass('checked')
|
||||
this.filemanager.all('.fp-vb-icons').addClass('checked')
|
||||
this.refresh(this.currentpath); // MDL-31113 get latest list from server
|
||||
|
||||
// Make sure that the filemanager is at least shown within the constraints of the page
|
||||
if ((this.filemanager.get('offsetWidth') + this.filemanager.getX()) > this.filemanager.get('docWidth')) {
|
||||
this.filemanager.setStyle('width', Math.round(this.filemanager.get('docWidth') - this.filemanager.getX()));
|
||||
}
|
||||
|
||||
if (Y.Resize) {
|
||||
// We only do this is the YUI resize component is loaded
|
||||
var resize = new Y.Resize({
|
||||
node: this.dndcontainer,
|
||||
wrap : true,
|
||||
handles : ['br']
|
||||
}).plug(Y.Plugin.ResizeConstrained, {
|
||||
minWidth : 410,
|
||||
maxWidth : this.dndcontainer.ancestor('.ffilemanager').get('offsetWidth') || 1600,
|
||||
minHeight : 160,
|
||||
maxHeight : 1024
|
||||
});
|
||||
// When it resizes we need to correct the width and height of other elements.
|
||||
resize.on('resize:resize', function(e) {
|
||||
this.filemanager.setStyle('width', e.info.offsetWidth);
|
||||
var fmcw = this.filemanager.one('.fp-content');
|
||||
if (fmcw) {
|
||||
fmcw.setStyle('height', this.dndcontainer.get('offsetHeight'));
|
||||
}
|
||||
}, this);
|
||||
// After resizing we update the user preference so that we always show them the file manager at the same size.
|
||||
resize.on('resize:end', function(e){
|
||||
M.util.set_user_preference('filemanagerresizedto', Math.round(e.info.offsetWidth).toString()+','+Math.round(e.info.offsetHeight).toString());
|
||||
});
|
||||
// When content gets updated by the filemanager we need to auto-update the height of the resizeable area to include it.
|
||||
this.on('filemanager:content-changed', function(){
|
||||
var fmcw = this.filemanager.one('.fp-content');
|
||||
if (fmcw) {
|
||||
fmcw.setStyle('height', this.dndcontainer.get('offsetHeight'));
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
},
|
||||
|
||||
wait: function() {
|
||||
@ -511,7 +557,7 @@ M.form_filemanager.init = function(Y, options) {
|
||||
filenode : element_template,
|
||||
callbackcontext : this,
|
||||
callback : function(e, node) {
|
||||
if (e.preventDefault) { e.preventDefault(); }
|
||||
if (e.preventDefault) {e.preventDefault();}
|
||||
if (node.type == 'folder') {
|
||||
this.refresh(node.filepath);
|
||||
} else {
|
||||
@ -519,7 +565,7 @@ M.form_filemanager.init = function(Y, options) {
|
||||
}
|
||||
},
|
||||
rightclickcallback : function(e, node) {
|
||||
if (e.preventDefault) { e.preventDefault(); }
|
||||
if (e.preventDefault) {e.preventDefault();}
|
||||
this.select_file(node);
|
||||
},
|
||||
classnamecallback : function(node) {
|
||||
@ -606,6 +652,7 @@ M.form_filemanager.init = function(Y, options) {
|
||||
node.appendChild(Y.Node.create('<option/>').
|
||||
set('value', list[i]).setContent(list[i]))
|
||||
}
|
||||
this.fire('filemanager:content-changed');
|
||||
},
|
||||
update_file: function(confirmed) {
|
||||
var selectnode = this.selectnode;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* File Picker and File Manager
|
||||
*/
|
||||
|
||||
.filemanager {width: 680px; min-width: 410px;}
|
||||
.filemanager, .file-picker {font-size:11px;color: #555555;letter-spacing: .2px;}
|
||||
.filemanager a, .file-picker a {color:#555555;}
|
||||
.filemanager a:hover, .file-picker a:hover {color:#555555;text-decoration: none;}
|
||||
@ -287,8 +287,10 @@ a.ygtvspacer:hover {color: transparent;text-decoration: none;}
|
||||
/*.filemanager-container ul{margin:0;padding:0;}
|
||||
.filemanager-container ul li{white-space:nowrap;list-style-type:none;}
|
||||
.filemanager-container ul li a{padding:0}*/
|
||||
.filemanager .fp-content{overflow: auto;max-height: 472px;}
|
||||
.filemanager .fp-content{overflow: auto;}
|
||||
.filemanager-container, .filepicker-filelist {overflow:hidden;}
|
||||
.filemanager.fm-loaded .fp-statusbar {background: #F2F2F2;border: 1px solid #BBB;border-top:0;min-height:2em;margin-bottom:5px;padding-right:2em;}
|
||||
.filemanager .yui3-resize-handle-inner-br {bottom:-2em;}
|
||||
|
||||
/*
|
||||
* Icon view (File Manager only)
|
||||
|
Loading…
x
Reference in New Issue
Block a user