aboutsummaryrefslogtreecommitdiffstats
path: root/files
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-10-23 11:40:40 +0200
committerRobin Appelman <icewind1991@gmail.com>2011-10-23 11:40:40 +0200
commitd46288b0abea28a4e0184f6720e990a05d5f19a9 (patch)
treeeb67d6849ff6239381f72fcca2b4c84da3d43ae7 /files
parent122fa190c684d953c1f11930109ca6644fde485c (diff)
downloadnextcloud-server-d46288b0abea28a4e0184f6720e990a05d5f19a9.tar.gz
nextcloud-server-d46288b0abea28a4e0184f6720e990a05d5f19a9.zip
'New' button, needs some css work
Diffstat (limited to 'files')
-rw-r--r--files/ajax/newfile.php27
-rw-r--r--files/css/files.css13
-rw-r--r--files/js/files.js93
-rw-r--r--files/templates/index.php33
4 files changed, 126 insertions, 40 deletions
diff --git a/files/ajax/newfile.php b/files/ajax/newfile.php
new file mode 100644
index 00000000000..5c4f49a3675
--- /dev/null
+++ b/files/ajax/newfile.php
@@ -0,0 +1,27 @@
+<?php
+
+// Init owncloud
+require_once('../../lib/base.php');
+
+OC_JSON::checkLoggedIn();
+
+// Get the params
+$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : '';
+$filename = isset( $_GET['filename'] ) ? $_GET['filename'] : '';
+$content = isset( $_GET['content'] ) ? $_GET['content'] : '';
+
+if($filename == '') {
+ OC_JSON::error(array("data" => array( "message" => "Empty Filename" )));
+ exit();
+}
+
+if(OC_Files::newFile($dir, $filename, 'file')) {
+ if($content){
+ OC_Filesystem::file_put_contents($dir.'/'.$filename,$content);
+ }
+ OC_JSON::success(array("data" => array('content'=>$content)));
+ exit();
+}
+
+
+OC_JSON::error(array("data" => array( "message" => "Error when creating the file" ))); \ No newline at end of file
diff --git a/files/css/files.css b/files/css/files.css
index ac1f523f862..c6f76215155 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -7,11 +7,17 @@
.actions input { margin:0; }
#file_menu { right:0; position:absolute; top:0; }
#file_menu a { display:block; float:left; background-image:none; text-decoration:none; }
-.file_upload_form, #file_newfolder_form { display:inline; float: left; margin-left:.5em; }
+.file_upload_form, #file_newfolder_form { display:inline; float: left; margin-left:0; }
#fileSelector, #file_upload_submit, #file_newfolder_submit { display:none; }
.file_upload_wrapper, #file_newfolder_name { background-repeat:no-repeat; background-position:.5em .5em; padding-left:2em; }
-.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin:.1em .1em .1em 0em;}
+.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin:0;}
.file_upload_wrapper .file_upload_button_wrapper { position:absolute; top:0; left:0; width:100%; height:100%; cursor:pointer; z-index:1000; }
+#new { float:left; border-top-right-radius:0; border-bottom-right-radius:0; margin-top:-0.075em; margin-right:0; border-right:none }
+#new.active { border-bottom-left-radius:0; border-bottom:none; }
+#new>a{ padding-left:1em; padding-right:1em; }
+#new>ul { display:none; position:fixed; text-align:left; padding:0.5em; background:#f8f8f8; margin-top:0.4em; border:1px solid #ddd; min-width:7em; margin-left:-0.5em; }
+#new>ul>li { margin:0.3em; padding-left:1.3em; background-repeat:no-repeat; cursor:pointer; }
+#new>ul>li>p { cursor:pointer; }
#file_newfolder_name { background-image:url('../../core/img/places/folder.svg'); font-weight:normal; width:7em; }
.file_upload_start, .file_upload_filename { font-size:1em; }
@@ -19,7 +25,8 @@
.file_upload_target { display:none; }
.file_upload_start { opacity:0; filter:alpha(opacity=0); z-index:1; position:absolute; left:0; top:0; width:100%; cursor:pointer;}
-.file_upload_filename { z-index:100; cursor:pointer;}
+input.file_upload_filename.active { border-bottom-right-radius:0 }
+input.file_upload_filename { z-index:100; cursor:pointer; border-top-left-radius:0; border-bottom-left-radius:0; }
.file_upload_form, .file_upload_wrapper, .file_upload_start, .file_upload_filename, #file_upload_submit { cursor:pointer; }
diff --git a/files/js/files.js b/files/js/files.js
index 902c5e54934..db3f3135b9f 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -255,32 +255,77 @@ $(document).ready(function() {
text=text.substr(0,text.length-6)+'...';
crumb.text(text);
}
+
+ $(window).click(function(){
+ $('#new>ul').hide();
+ $('#new').removeClass('active');
+ $('input.file_upload_filename').removeClass('active');
+ $('#new li').each(function(i,element){
+ if($(element).children('p').length==0){
+ $(element).children('input').remove();
+ $(element).append('<p>'+$(element).data('text')+'</p>');
+ }
+ });
+ });
+ $('#new').click(function(event){
+ event.stopPropagation();
+ });
+ $('#new>a').click(function(){
+ $('#new>ul').toggle();
+ $('#new').toggleClass('active');
+ $('input.file_upload_filename').toggleClass('active');
+ });
+ $('#new li').click(function(){
+ if($(this).children('p').length==0){
+ return;
+ }
+
+ $('#new li').each(function(i,element){
+ if($(element).children('p').length==0){
+ $(element).children('input').remove();
+ $(element).append('<p>'+$(element).data('text')+'</p>');
+ }
+ });
+
+ var type=$(this).data('type');
+ var text=$(this).children('p').text();
+ $(this).data('text',text);
+ $(this).children('p').remove();
+ var input=$('<input>');
+ $(this).append(input);
+ input.focus();
+ input.change(function(){
+ var name=$(this).val();
+ switch(type){
+ case 'file':
+ $.ajax({
+ url: OC.filePath('files','ajax','newfile.php'),
+ data: "dir="+encodeURIComponent($('#dir').val())+"&filename="+encodeURIComponent(name)+'&content=%20%0A',
+ complete: function(data){boolOperationFinished(data, function(){
+ var date=new Date();
+ FileList.addFile(name,0,date);
+ });}
+ });
+ break;
+ case 'folder':
+ $.ajax({
+ url: OC.filePath('files','ajax','newfolder.php'),
+ data: "dir="+encodeURIComponent($('#dir').val())+"&foldername="+encodeURIComponent(name),
+ complete: function(data){boolOperationFinished(data, function(){
+ var date=new Date();
+ FileList.addDir(name,0,date);
+ });}
+ });
+ break;
+ }
+ var li=$(this).parent();
+ $(this).remove();
+ li.append('<p>'+li.data('text')+'</p>');
+ $('#new>a').click();
+ });
+ });
});
-var adjustNewFolderSize = function() {
- if($('#file_newfolder_name').val() != '') {
- splitSize($('#file_newfolder_name'),$('#file_newfolder_submit'));
- $('#file_newfolder_name').unbind('keyup', adjustNewFolderSize);
- };
-}
-
-function splitSize(existingEl, appearingEl) {
- nw = parseInt($(existingEl).css('width')) - parseInt($(appearingEl).css('width'));
- $(existingEl).css('width', nw + 'px');
- $(appearingEl).fadeIn(250);
-}
-
-function unsplitSize(stayingEl, vanishingEl) {
- nw = parseInt($(stayingEl).css('width')) + parseInt($(vanishingEl).css('width'));
- $(stayingEl).css('width', nw + 'px');
- $(vanishingEl).fadeOut(250);
-}
-
-function resetFileActionPanel() {
- $('#file_action_panel form').css({"display":"none"});
- $('#file_action_panel').attr('activeAction', false);
-}
-
function boolOperationFinished(data, callback) {
result = jQuery.parseJSON(data.responseText);
if(result.status == 'success'){
diff --git a/files/templates/index.php b/files/templates/index.php
index a63f6e62b63..902c5cfa140 100644
--- a/files/templates/index.php
+++ b/files/templates/index.php
@@ -2,20 +2,27 @@
<?php echo($_['breadcrumb']); ?>
<?php if (!isset($_['readonly']) || !$_['readonly']) {?>
<div class="actions">
- <form data-upload-id='1' class="file_upload_form" action="ajax/upload.php" method="post" enctype="multipart/form-data" target="file_upload_target_1">
- <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_['uploadMaxFilesize'] ?>" id="max_upload">
- <input type="hidden" class="max_human_file_size" value="(max <?php echo $_['uploadMaxHumanFilesize']; ?>)">
- <input type="hidden" name="dir" value="<?php echo $_['dir'] ?>" id="dir">
- <div class="file_upload_wrapper svg">
- <input type="submit" class="file_upload_filename" value="<?php echo $l->t('Upload'); ?>"/>
+ <button id='new'>
+ <a>
+ <?php echo $l->t('New');?>
+ </a>
+ <ul class="popup popupTop">
+ <li style="background:url('<?php echo mimetype_icon('text/plain') ?>')" data-type='file'><p><?php echo $l->t('File');?></p></li>
+ <li style="background:url('<?php echo mimetype_icon('dir') ?>')" data-type='folder'><p><?php echo $l->t('Folder');?></p></li>
+<!-- <li style="background:url('<?php echo mimetype_icon('dir') ?>')" data-type='web'><p><?php echo $l->t('From the web');?></p></li> -->
+ </ul>
+ </button>
+ <div class="file_upload_wrapper svg">
+ <form data-upload-id='1' class="file_upload_form" action="ajax/upload.php" method="post" enctype="multipart/form-data" target="file_upload_target_1">
+ <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_['uploadMaxFilesize'] ?>" id="max_upload">
+ <input type="hidden" class="max_human_file_size" value="(max <?php echo $_['uploadMaxHumanFilesize']; ?>)">
+ <input type="hidden" name="dir" value="<?php echo $_['dir'] ?>" id="dir">
+ <input type="submit" class="file_upload_filename" value="^"/>
<input class="file_upload_start" type="file" name='files[]'/>
- <a href="#" class="file_upload_button_wrapper" onclick="return false;" title="<?php echo 'max. '.$_['uploadMaxHumanFilesize'] ?>"></a>
- </div>
- <iframe name="file_upload_target_1" class='file_upload_target' src=""></iframe>
- </form>
- <form id="file_newfolder_form">
- <input class="svg" type="text" name="file_newfolder_name" id="file_newfolder_name" value="" placeholder="<?php echo $l->t('New Folder')?>" />
- </form>
+ <a href="#" class="file_upload_button_wrapper" onclick="return false;" title="Upload. <?php echo 'max. '.$_['uploadMaxHumanFilesize'] ?>"></a>
+ <iframe name="file_upload_target_1" class='file_upload_target' src=""></iframe>
+ </form>
+ </div>
</div>
<div id="file_action_panel">
</div>