building file tree
This commit is contained in:
parent
0611d314b2
commit
451d6e578a
122
css/styles.css
122
css/styles.css
|
@ -299,26 +299,116 @@
|
|||
-webkit-padding-start: 0px;
|
||||
}
|
||||
|
||||
/* ————————————————————–
|
||||
Tree core styles
|
||||
*/
|
||||
.tree { margin: 1em; }
|
||||
|
||||
.tree input {
|
||||
position: absolute;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.tree input ~ ul { display: none; }
|
||||
|
||||
.tree input:checked ~ ul { display: block; }
|
||||
|
||||
/* ————————————————————–
|
||||
Tree rows
|
||||
*/
|
||||
.tree li {
|
||||
line-height: 1.2;
|
||||
position: relative;
|
||||
padding: 0 0 1em 1em;
|
||||
}
|
||||
|
||||
.tree ul li { padding: 1em 0 0 1em; }
|
||||
|
||||
.file-tree-container .file_tree { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; }
|
||||
.file-tree-container .file_tree input[type=radio], .file-tree-container .file_tree input[type=checkbox] { width: 0; height: 0; opacity: 0; position: absolute; margin: 0; }
|
||||
.file-tree-container .file_tree label { display: block; width: 100%; font-size: 14px; color: black; height: 30px; line-height: 30px; padding: 0 8px; cursor: pointer; white-space: nowrap; }
|
||||
.file-tree-container .file_tree label:hover { color: #a4d3ff; } .file_tree .dir_wrapper { display: none; padding-left: 28px; }
|
||||
.file-tree-container .file_tree .dir_wrapper label { padding-left: 0; }
|
||||
.file-tree-container .file_tree input[type=checkbox] + label { color: black; padding-left: 30px; }
|
||||
.file-tree-container .file_tree input[type=checkbox] + label:hover { color: #a4d3ff; }
|
||||
.file-tree-container .file_tree input[type=radio]:checked + label { color: #337ab7; }
|
||||
.file-tree-container .file_tree input[type=checkbox]:checked + label + .dir_wrapper { display: block; }
|
||||
.file-tree-container .file_tree input[type=checkbox] + label { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABQCAYAAABxs9dPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjc0Q0FDNEY5NDFGQjExRTQ4MEQ4ODY5MEFBODE4RDk2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjc0Q0FDNEZBNDFGQjExRTQ4MEQ4ODY5MEFBODE4RDk2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzRDQUM0Rjc0MUZCMTFFNDgwRDg4NjkwQUE4MThEOTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzRDQUM0Rjg0MUZCMTFFNDgwRDg4NjkwQUE4MThEOTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7T+9ssAAABJ0lEQVR42uzZMQrCMBgF4FbE0UFPILg5qdAbCA7q5qK7p3Bw8BK6u4giboKCJxDB1cFdsOjapb5ACyoiNG3pj30P3hj4SBOaEPP6cFwjWG5oAz0aMSSjMaaIbtGqFJCP2qE1KSCVgjdTkaKyIccr1B49SwGp5NF6HCAbvRjJpOTN9htog/YTAs3QXthFbUja9gQRRBBBBBFEEEEEpQVkalyl0zVD6tYxlfbJZK0h13W5ywgiiCCCCCKIIIII+nGmnp/u4g75k4Bj1IviCHXiAg00xlXQbhwo3TXUQRdoTtKibqPLqFFhH/Ba6BpdSQGpNL3+793ej3pRHCbkGPuz/PnmekgIZPNfRhBBBBFEEEEEEURQ8DO1pXGtjirWN1DZKz/Za54CDABbrytKn66XKwAAAABJRU5ErkJggg==); background-size: 18px 40px; background-position: top 7px left 6px; background-repeat: no-repeat; vertical-align: middle; }
|
||||
.file-tree-container .file_tree input[type=checkbox] + label:hover { background-position: top -18px left 6px; }
|
||||
.tree > li:last-child { padding-bottom: 0; }
|
||||
|
||||
.file-tree .directory { font-family: monospace; line-height: 2em; }
|
||||
.file-tree .directory_child { margin-left: 2em; position: relative; }
|
||||
.file-tree .directory_child:last-child::after { display: none; }
|
||||
.file-tree .directory_child::before { border-bottom: 1px solid; border-left: 1px solid; content: ""; height: 1em; left: -1em; position: absolute; width: 0.7em; }
|
||||
.file-tree .directory_child::after { border-left: 1px solid; content: ""; height: 100%; left: -1em; position: absolute; top: 0; }
|
||||
/* ————————————————————–
|
||||
Tree labels
|
||||
*/
|
||||
.tree_label {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
label.tree_label { cursor: pointer; }
|
||||
|
||||
label.tree_label:hover { color: #666; }
|
||||
|
||||
/* ————————————————————–
|
||||
Tree expanded icon
|
||||
*/
|
||||
label.tree_label:before {
|
||||
background: #000;
|
||||
color: #fff;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
float: left;
|
||||
margin: 0 1em 0 -2em;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
border-radius: 1em;
|
||||
content: '+';
|
||||
text-align: center;
|
||||
line-height: .9em;
|
||||
}
|
||||
|
||||
:checked ~ label.tree_label:before { content: '–'; }
|
||||
|
||||
/* ————————————————————–
|
||||
Tree branches
|
||||
*/
|
||||
/*.tree li:before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: -.5em;
|
||||
display: block;
|
||||
width: 0;
|
||||
border-left: 1px solid #777;
|
||||
content: "";
|
||||
}*/
|
||||
|
||||
.tree_label:after {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: -1.5em;
|
||||
display: block;
|
||||
height: 0.5em;
|
||||
width: 1em;
|
||||
border-bottom: 1px solid #777;
|
||||
border-left: 1px solid #777;
|
||||
border-radius: 0 0 0 .3em;
|
||||
content: '';
|
||||
}
|
||||
|
||||
label.tree_label:after { border-bottom: 0; }
|
||||
|
||||
:checked ~ label.tree_label:after {
|
||||
border-radius: 0 .3em 0 0;
|
||||
border-top: 1px solid #777;
|
||||
border-right: 1px solid #777;
|
||||
border-bottom: 0;
|
||||
border-left: 0;
|
||||
bottom: 0;
|
||||
top: 0.5em;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.tree li:last-child:before {
|
||||
height: 1em;
|
||||
bottom: auto;
|
||||
}
|
||||
|
||||
.tree > li:last-child:before { display: none; }
|
||||
|
||||
.tree_custom {
|
||||
display: block;
|
||||
background: #eee;
|
||||
padding: 1em;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
|
|
|
@ -337,6 +337,7 @@ app.controller('websiteCtrl', [
|
|||
});
|
||||
};
|
||||
vm.Sites.contents = function (r) {
|
||||
vm.showListFiles = true;
|
||||
var pkg = Auth.oauth3.pkg('www@daplie.com');
|
||||
return pkg.contents({
|
||||
hostname: r.domain
|
||||
|
@ -346,7 +347,12 @@ app.controller('websiteCtrl', [
|
|||
//, sub: r.sub
|
||||
, path: r.newPath
|
||||
}).then(function (result) {
|
||||
window.alert(JSON.stringify(result));
|
||||
// window.alert(JSON.stringify(result));
|
||||
vm.fileTree = result;
|
||||
console.log(result);
|
||||
console.log('data ' , result.data);
|
||||
result.data.forEach(function(file) {
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -379,6 +385,7 @@ app.controller('websiteCtrl', [
|
|||
});
|
||||
};
|
||||
vm.Shares.list = function (r) {
|
||||
vm.showSharesList = true;
|
||||
var pkg = Auth.oauth3.pkg('www@daplie.com');
|
||||
return pkg.listShares({
|
||||
domain: r.domain
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
||||
<button type="button" class="close" data-dismiss="modal" ng-click="vm.showSharesList = false; vm.showListFiles = false;"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
||||
<h4 class="modal-title">Create a new Website</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
@ -79,7 +79,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" ng-click="vm.showSharesList = false; vm.showListFiles = false;">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -121,12 +121,12 @@
|
|||
</table>
|
||||
</div>
|
||||
|
||||
<div class="modal fade {{r.challenge}}" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" ng-repeat="r in vm.sites">
|
||||
<div class="modal fade {{ r.challenge }}" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" ng-repeat="r in vm.sites">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
||||
<h4 class="modal-title"><a ng-href="https://{{r.domain}}" target="_blank" ng-bind="r.domain">example.com</a></h4>
|
||||
<button type="button" class="close" data-dismiss="modal" ng-click="vm.showSharesList = false; vm.showListFiles = false;"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
||||
<h4 class="modal-title"><a ng-href="https://{{ r.domain }}" target="_blank" ng-bind="r.domain">example.com</a></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-inline text-center">
|
||||
|
@ -140,17 +140,13 @@
|
|||
<div class="form-group">
|
||||
<input type="text" ng-model="r.shareMode" class="form-control" placeholder="rwx (read, write, invite)" />
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default" ng-click="vm.Shares.invite(r)">Invite</button>
|
||||
<button class="btn btn-info" ng-click="vm.Shares.list(r)">View Shares</button>
|
||||
<button type="submit" class="btn btn-success" ng-click="vm.Shares.invite(r)">Invite</button>
|
||||
</form>
|
||||
<form class="form-inline text-center">
|
||||
<h4 class="text-left">List Files:</h4>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" ng-model="r.newPath" placeholder="/" />
|
||||
</div>
|
||||
<button class="btn btn-default" ng-click="vm.Sites.contents(r)">List Files</button>
|
||||
</form>
|
||||
<div>
|
||||
<h4 class="text-left">Shares:</h4>
|
||||
<button class="btn btn-info" ng-click="vm.Shares.list(r)" ng-hide="vm.showSharesList">View Shares</button>
|
||||
<button class="btn btn-info" ng-click="vm.showSharesList = false" ng-show="vm.showSharesList">Hide Shares</button>
|
||||
<div class="white-well" ng-show="vm.showSharesList">
|
||||
<ul class="shares-container" ng-repeat="share in r.sharedWith" ng-if="!share.me">
|
||||
<li>
|
||||
<div class="media">
|
||||
|
@ -159,16 +155,71 @@
|
|||
</div>
|
||||
<div class="media-body">
|
||||
<h4 ng-bind="share.comment">friend@email.com</h4>
|
||||
<p>Share Path: <span ng-bind="share.path">/</span></p>
|
||||
<p>Actions Allowed: <span ng-bind="share.mode">rwx</span></p>
|
||||
<p><b>Share Path:</b> <span ng-bind="share.path">/</span></p>
|
||||
<p><b>Actions Allowed:</b> <span ng-bind="share.mode">rwx</span></p>
|
||||
</div>
|
||||
<div class="media-right align-self-center">
|
||||
<button class="btn btn-danger" ng-click="vm.Shares.remove(r, share)">X</button>
|
||||
<button class="btn btn-danger" ng-click="vm.Shares.remove(r, share)"><i class="fa fa-trash"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-inline text-center">
|
||||
<h4 class="text-left">List Files:</h4>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" ng-model="r.newPath" placeholder="/" />
|
||||
</div>
|
||||
<button class="btn btn-info" ng-click="vm.Sites.contents(r)">List Files</button>
|
||||
<button class="btn btn-primary" ng-click="vm.showListFiles = false" ng-show="vm.showListFiles">Hide Files</button>
|
||||
<div class="white-well" ng-show="vm.showListFiles">
|
||||
<div class="">
|
||||
<span>{{ vm.fileTree }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="tree ls-none">
|
||||
<li class="ls-none">
|
||||
<input type="checkbox" id="c1" />
|
||||
<label class="tree_label" for="c1">Level 0</label>
|
||||
<ul class="ls-none">
|
||||
<li class="ls-none">
|
||||
<input type="checkbox" id="c2" />
|
||||
<label for="c2" class="tree_label">Level 1</label>
|
||||
<ul class="ls-none">
|
||||
<li><span class="tree_label">Level 2</span></li>
|
||||
<li><span class="tree_label">Level 2</span></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="tree ls-none">
|
||||
<li class="ls-none">
|
||||
<input type="checkbox" id="c1" />
|
||||
<label class="tree_label" for="c1">Level 0</label>
|
||||
<ul class="ls-none">
|
||||
<li class="ls-none">
|
||||
<input type="checkbox" id="c2" />
|
||||
<label for="c2" class="tree_label">Level 1</label>
|
||||
<ul class="ls-none">
|
||||
<li><span class="tree_label">Level 2</span></li>
|
||||
<li><span class="tree_label">Level 2</span></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</form>
|
||||
<div class="">
|
||||
<h4 class="text-left">Select Upload:</h4>
|
||||
<div>
|
||||
|
@ -189,84 +240,16 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" ng-click="vm.showSharesList = false; vm.showListFiles = false;">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="white-well">
|
||||
<div class="file-tree-container">
|
||||
<div class="file_tree">
|
||||
<input type="checkbox" id="f_myfilms">
|
||||
<label for="f_myfilms">My Films</label>
|
||||
<div class="dir_wrapper">
|
||||
<input type="checkbox" id="f_wehave">
|
||||
<label for="f_wehave">We Have</label>
|
||||
<div class="dir_wrapper">
|
||||
<input type="checkbox" id="f_togo">
|
||||
<label for="f_togo">To Go</label>
|
||||
<div class="dir_wrapper">
|
||||
<input type="radio" name="hosted_files" id="f_deeper_js" value="Deeper.js">
|
||||
<label for="f_deeper_js">Deeper.js</label>
|
||||
<input type="radio" name="hosted_files" id="f_fileception_js" value="Fileception.js">
|
||||
<label for="f_fileception_js">Fileception.js</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="checkbox" id="f_justafolder">
|
||||
<label for="f_justafolder">Just a folder</label>
|
||||
<div class="dir_wrapper">
|
||||
<input type="radio" name="hosted_files" id="f_withafile_js" value="with_a_file.js">
|
||||
<label for="f_withafile_js">with_a_file.js</label>
|
||||
</div>
|
||||
|
||||
<input type="radio" name="hosted_files" id="f_main_js" value="main.js">
|
||||
<label for="f_main_js">main.js</label>
|
||||
<input type="radio" name="hosted_files" id="f_globals_js" value="globals.js">
|
||||
<label for="f_globals_js">globals.js</label>
|
||||
<input type="radio" name="hosted_files" id="f_filler_js" value="filler.js">
|
||||
<label for="f_filler_js">filler.js</label>
|
||||
<input type="radio" name="hosted_files" id="f_horror_vacui_js" value="horror_vacui.js">
|
||||
<label for="f_horror_vacui_js">horror_vacui.js</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="white-well">
|
||||
<div class="file-tree">
|
||||
<ul class="directory ls-none ls-pd0">
|
||||
<li>The World
|
||||
<ul class="ls-none ls-pd0">
|
||||
<li class="directory_child">Africa
|
||||
<ul class="ls-none ls-pd0">
|
||||
<li class="directory_child">Egypt</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="directory_child">Antarctica</li>
|
||||
<li class="directory_child">Asia
|
||||
<ul class="ls-none ls-pd0">
|
||||
<li class="directory_child">Japan</li>
|
||||
<li class="directory_child">South Korea
|
||||
<ul class="ls-none ls-pd0">
|
||||
<li class="directory_child">Seoul</li>
|
||||
<li class="directory_child">Incheon</li>
|
||||
</ul>
|
||||
<li class="directory_child">Thailand</li>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="directory_child">Australia</li>
|
||||
<li class="directory_child">Europe</li>
|
||||
<li class="directory_child">North America</li>
|
||||
<li class="directory_child">South America</li>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
@ -378,7 +361,7 @@
|
|||
<button class="btn btn-link" ng-click="vm.Sites.remove(r)">Clear</button></td>
|
||||
<td>
|
||||
<input type="text" ng-model="r.newPath" placeholder="/" />
|
||||
<button class="btn btn-default" ng-click="vm.Sites.contents(r)">List Files</button>
|
||||
<!-- <button class="btn btn-default" ng-click="vm.Sites.contents(r)">List Files</button> -->
|
||||
</td>
|
||||
<td ng-bind="r.path">Sites > blogs > blog.jane.smith.net</td>
|
||||
<td><span ng-repeat="share in r.sharedWith" ng-if="!share.me">
|
||||
|
|
Loading…
Reference in New Issue