diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py
index 1df2c44ff7..7e43112cfe 100644
--- a/cms/djangoapps/contentstore/views.py
+++ b/cms/djangoapps/contentstore/views.py
@@ -616,3 +616,9 @@ def remove_user(request, org, course, name):
remove_user_from_course_group(request.user, user, location, EDITOR_ROLE_NAME)
return create_json_response()
+
+@login_required
+@ensure_csrf_cookie
+def asset_index(request, location):
+ return render_to_response('asset_index.html',{})
+
diff --git a/cms/static/img/close-icon.png b/cms/static/img/close-icon.png
new file mode 100644
index 0000000000..684399725b
Binary files /dev/null and b/cms/static/img/close-icon.png differ
diff --git a/cms/static/js/base.js b/cms/static/js/base.js
index 16a7f87202..e02635ad42 100644
--- a/cms/static/js/base.js
+++ b/cms/static/js/base.js
@@ -13,15 +13,62 @@ $(document).ready(function() {
$newComponentTypePicker = $('.new-component');
$newComponentTemplatePickers = $('.new-component-templates');
$newComponentButton = $('.new-component-button');
+ $body.bind('keyup', onKeyUp);
$('.expand-collapse-icon').bind('click', toggleSubmodules);
$('.visibility-options').bind('change', setVisibility);
$('.unit-history ol a').bind('click', showHistoryModal);
- $modal.bind('click', hideHistoryModal);
+ $modal.bind('click', hideModal);
$modalCover.bind('click', hideHistoryModal);
+
+ $('.assets .upload-button').bind('click', showUploadModal);
+ $('.upload-modal .close-button').bind('click', hideModal);
});
+function showUploadModal(e) {
+ e.preventDefault();
+ $('.upload-modal').show();
+ $('.file-input').bind('change', startUpload);
+ $('.upload-modal .choose-file-button').bind('click', showFileSelectionMenu);
+ $modalCover.show();
+}
+
+function showFileSelectionMenu(e) {
+ e.preventDefault();
+ $('.file-input').click();
+}
+
+function startUpload(e) {
+ $('.upload-modal h1').html('Uploading…');
+ $('.upload-modal .file-name').html($('.file-input').val());
+ $('.upload-modal .choose-file-button').hide();
+ $('.upload-modal .progress-bar').removeClass('loaded').show();
+ $('.upload-modal .progress-fill').html('').css('width', '0').animate({
+ 'width': '100%'
+ }, 1500);
+ setTimeout(markAsLoaded, 1500);
+}
+
+function markAsLoaded() {
+ $('.upload-modal .copy-button').css('display', 'inline-block');
+ $('.upload-modal .progress-bar').addClass('loaded');
+ $('.upload-modal .progress-fill').html('loaded successfully');
+ $('.upload-modal .choose-file-button').html('Load Another File').show();
+}
+
+function hideModal(e) {
+ e.preventDefault();
+ $('.modal').hide();
+ $modalCover.hide();
+}
+
+function onKeyUp(e) {
+ if(e.which == 87) {
+ $body.toggleClass('show-wip');
+ }
+}
+
function toggleSubmodules(e) {
e.preventDefault();
$(this).toggleClass('expand').toggleClass('collapse');
diff --git a/cms/static/sass/_assets.scss b/cms/static/sass/_assets.scss
new file mode 100644
index 0000000000..54ad25c0a3
--- /dev/null
+++ b/cms/static/sass/_assets.scss
@@ -0,0 +1,160 @@
+.assets {
+ input.asset-search-input {
+ float: left;
+ width: 260px;
+ background-color: #fff;
+ }
+
+ .upload-button {
+ @include blue-button;
+ float: left;
+ margin-right: 20px;
+ font-size: 12px;
+ }
+
+ .asset-library {
+ @include clearfix;
+
+ table {
+ width: 100%;
+ border-radius: 3px 3px 0 0;
+ border: 1px solid #c5cad4;
+
+ td,
+ th {
+ padding: 10px 20px;
+ text-align: left;
+ vertical-align: middle;
+ }
+
+ thead th {
+ background: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, .1)) #ced2db;
+ font-size: 12px;
+ font-weight: 700;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
+ }
+
+ tbody {
+ background: #fff;
+
+ tr {
+ border-top: 1px solid #c5cad4;
+
+ &:first-child {
+ border-top: none;
+ }
+ }
+ }
+
+ .thumb-col {
+ width: 100px;
+ }
+
+ .date-col {
+ width: 200px;
+ }
+
+ .embed-col {
+ width: 70px;
+ }
+
+ .thumb {
+ width: 100px;
+ max-height: 80px;
+
+ img {
+ width: 100%;
+ }
+ }
+ }
+
+ .pagination {
+ float: right;
+ margin: 15px 10px;
+
+ ol, li {
+ display: inline;
+ }
+
+ a {
+ display: inline-block;
+ height: 25px;
+ padding: 0 4px;
+ text-align: center;
+ line-height: 25px;
+ }
+ }
+ }
+}
+
+.upload-modal {
+ display: none;
+ width: 640px !important;
+ margin-left: -320px !important;
+
+ .modal-body {
+ height: auto !important;
+ overflow-y: auto !important;
+ text-align: center;
+ }
+
+ .file-input {
+ display: none;
+ }
+
+ .choose-file-button {
+ @include blue-button;
+ padding: 10px 82px 12px;
+ font-size: 17px;
+ }
+
+ .progress-bar {
+ display: none;
+ width: 350px;
+ height: 50px;
+ margin: 30px auto 10px;
+ border: 1px solid $blue;
+
+ &.loaded {
+ border-color: #66b93d;
+
+ .progress-fill {
+ background: #66b93d;
+ }
+ }
+ }
+
+ .progress-fill {
+ width: 0%;
+ height: 50px;
+ background: $blue;
+ color: #fff;
+ line-height: 48px;
+ }
+
+ h1 {
+ float: none;
+ margin: 40px 0 30px;
+ font-size: 34px;
+ font-weight: 300;
+ }
+
+ .close-button {
+ @include white-button;
+ position: absolute;
+ top: 0;
+ right: 15px;
+ width: 29px;
+ height: 29px;
+ padding: 0 !important;
+ border-radius: 17px !important;
+ line-height: 29px;
+ text-align: center;
+ }
+
+ .copy-button {
+ @include white-button;
+ display: none;
+ margin-bottom: 100px;
+ }
+}
\ No newline at end of file
diff --git a/cms/static/sass/_base.scss b/cms/static/sass/_base.scss
index abacff87c3..312d066078 100644
--- a/cms/static/sass/_base.scss
+++ b/cms/static/sass/_base.scss
@@ -24,10 +24,16 @@ a {
}
h1 {
+ float: left;
font-size: 28px;
margin: 36px 6px;
}
+.page-actions {
+ float: right;
+ margin-top: 42px;
+}
+
.main-wrapper {
position: relative;
margin: 0 40px;
@@ -37,6 +43,10 @@ h1 {
position: relative;
max-width: 1280px;
margin: auto;
+
+ > article {
+ clear: both;
+ }
}
.window {
@@ -189,20 +199,21 @@ label {
}
}
-.wip {
- outline: 1px solid #f00 !important;
- position: relative;
-}
-
-.wip-box {
- @extend .wip;
- &:after {
- content: "WIP";
- font-size: 8px;
- padding: 2px;
- background: #f00;
- color: #fff;
- @include position(absolute, 0px 0px 0 0);
+body.show-wip {
+ .wip {
+ outline: 1px solid #f00 !important;
+ position: relative;
}
-}
+ .wip-box {
+ @extend .wip;
+ &:after {
+ content: "WIP";
+ font-size: 8px;
+ padding: 2px;
+ background: #f00;
+ color: #fff;
+ @include position(absolute, 0px 0px 0 0);
+ }
+ }
+}
\ No newline at end of file
diff --git a/cms/static/sass/_cms_mixins.scss b/cms/static/sass/_cms_mixins.scss
index 2f0309a451..0d6616ad1e 100644
--- a/cms/static/sass/_cms_mixins.scss
+++ b/cms/static/sass/_cms_mixins.scss
@@ -72,7 +72,7 @@
&:hover {
background-color: #d9e3ee;
- color: #6d788b;
+ color: #6d788b;
}
}
diff --git a/cms/static/sass/_graphics.scss b/cms/static/sass/_graphics.scss
index 4a4af6b018..14662c7d42 100644
--- a/cms/static/sass/_graphics.scss
+++ b/cms/static/sass/_graphics.scss
@@ -41,6 +41,13 @@
background: url(../img/list-icon.png) no-repeat;
}
+.close-icon {
+ display: inline-block;
+ width: 13px;
+ height: 12px;
+ background: url(../img/close-icon.png) no-repeat;
+}
+
.home-icon {
display: inline-block;
width: 19px;
diff --git a/cms/static/sass/_modal.scss b/cms/static/sass/_modal.scss
index 203f5a776c..a60d5629e3 100644
--- a/cms/static/sass/_modal.scss
+++ b/cms/static/sass/_modal.scss
@@ -9,7 +9,7 @@
background: rgba(0, 0, 0, .8);
}
-.history-modal {
+.modal {
display: none;
position: fixed;
top: 60px;
diff --git a/cms/static/sass/base-style.scss b/cms/static/sass/base-style.scss
index ef734b7115..476f9de377 100644
--- a/cms/static/sass/base-style.scss
+++ b/cms/static/sass/base-style.scss
@@ -13,6 +13,7 @@
@import "courseware";
@import "subsection";
@import "unit";
+@import "assets";
@import "course-info";
@import "graphics";
@import "modal";
diff --git a/cms/templates/asset_index.html b/cms/templates/asset_index.html
new file mode 100644
index 0000000000..0069cae9ba
--- /dev/null
+++ b/cms/templates/asset_index.html
@@ -0,0 +1,200 @@
+<%inherit file="base.html" />
+<%! from django.core.urlresolvers import reverse %>
+<%block name="bodyclass">assets%block>
+<%block name="title">CMS Courseware Overview%block>
+
+<%block name="content">
+
+
+
+
Asset Library
+
+
+
+
+
+
+
+
+
+
+
+
+%block>
diff --git a/cms/templates/index.html b/cms/templates/index.html
index fd4891c771..36ddd1044b 100644
--- a/cms/templates/index.html
+++ b/cms/templates/index.html
@@ -6,7 +6,7 @@
-
My Courses
+
My Courses
New Course
diff --git a/cms/urls.py b/cms/urls.py
index 7cbb912b06..6e773581ae 100644
--- a/cms/urls.py
+++ b/cms/urls.py
@@ -28,7 +28,9 @@ urlpatterns = ('',
url(r'^(?P[^/]+)/(?P[^/]+)/course/(?P[^/]+)/add_user$',
'contentstore.views.add_user', name='add_user'),
url(r'^(?P[^/]+)/(?P[^/]+)/course/(?P[^/]+)/remove_user$',
- 'contentstore.views.remove_user', name='remove_user')
+ 'contentstore.views.remove_user', name='remove_user'),
+ url(r'^assets/(?P.*?)$', 'contentstore.views.asset_index', name='asset_index')
+
)