Merge branch 'wip-redesign'
# Conflicts: # src/templates/projects/view.pug
This commit is contained in:
commit
08bf63c2ee
37
gulpfile.js
37
gulpfile.js
@ -12,7 +12,7 @@ var pug = require('gulp-pug');
|
|||||||
var rename = require('gulp-rename');
|
var rename = require('gulp-rename');
|
||||||
var sass = require('gulp-sass');
|
var sass = require('gulp-sass');
|
||||||
var sourcemaps = require('gulp-sourcemaps');
|
var sourcemaps = require('gulp-sourcemaps');
|
||||||
var uglify = require('gulp-uglify');
|
var uglify = require('gulp-uglify-es').default;
|
||||||
|
|
||||||
var enabled = {
|
var enabled = {
|
||||||
uglify: argv.production,
|
uglify: argv.production,
|
||||||
@ -21,6 +21,7 @@ var enabled = {
|
|||||||
prettyPug: !argv.production,
|
prettyPug: !argv.production,
|
||||||
cachify: !argv.production,
|
cachify: !argv.production,
|
||||||
cleanup: argv.production,
|
cleanup: argv.production,
|
||||||
|
chmod: argv.production,
|
||||||
};
|
};
|
||||||
|
|
||||||
var destination = {
|
var destination = {
|
||||||
@ -29,6 +30,10 @@ var destination = {
|
|||||||
js: 'pillar/web/static/assets/js',
|
js: 'pillar/web/static/assets/js',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var source = {
|
||||||
|
bootstrap: 'node_modules/bootstrap/',
|
||||||
|
popper: 'node_modules/popper.js/'
|
||||||
|
}
|
||||||
|
|
||||||
/* CSS */
|
/* CSS */
|
||||||
gulp.task('styles', function() {
|
gulp.task('styles', function() {
|
||||||
@ -67,7 +72,7 @@ gulp.task('scripts', function() {
|
|||||||
.pipe(gulpif(enabled.uglify, uglify()))
|
.pipe(gulpif(enabled.uglify, uglify()))
|
||||||
.pipe(rename({suffix: '.min'}))
|
.pipe(rename({suffix: '.min'}))
|
||||||
.pipe(gulpif(enabled.maps, sourcemaps.write(".")))
|
.pipe(gulpif(enabled.maps, sourcemaps.write(".")))
|
||||||
.pipe(chmod(644))
|
.pipe(gulpif(enabled.chmod, chmod(644)))
|
||||||
.pipe(gulp.dest(destination.js))
|
.pipe(gulp.dest(destination.js))
|
||||||
.pipe(gulpif(argv.livereload, livereload()));
|
.pipe(gulpif(argv.livereload, livereload()));
|
||||||
});
|
});
|
||||||
@ -82,7 +87,7 @@ gulp.task('scripts_concat_tutti', function() {
|
|||||||
.pipe(concat("tutti.min.js"))
|
.pipe(concat("tutti.min.js"))
|
||||||
.pipe(gulpif(enabled.uglify, uglify()))
|
.pipe(gulpif(enabled.uglify, uglify()))
|
||||||
.pipe(gulpif(enabled.maps, sourcemaps.write(".")))
|
.pipe(gulpif(enabled.maps, sourcemaps.write(".")))
|
||||||
.pipe(chmod(644))
|
.pipe(gulpif(enabled.chmod, chmod(644)))
|
||||||
.pipe(gulp.dest(destination.js))
|
.pipe(gulp.dest(destination.js))
|
||||||
.pipe(gulpif(argv.livereload, livereload()));
|
.pipe(gulpif(argv.livereload, livereload()));
|
||||||
});
|
});
|
||||||
@ -94,7 +99,30 @@ gulp.task('scripts_concat_markdown', function() {
|
|||||||
.pipe(concat("markdown.min.js"))
|
.pipe(concat("markdown.min.js"))
|
||||||
.pipe(gulpif(enabled.uglify, uglify()))
|
.pipe(gulpif(enabled.uglify, uglify()))
|
||||||
.pipe(gulpif(enabled.maps, sourcemaps.write(".")))
|
.pipe(gulpif(enabled.maps, sourcemaps.write(".")))
|
||||||
.pipe(chmod(644))
|
.pipe(gulpif(enabled.chmod, chmod(644)))
|
||||||
|
.pipe(gulp.dest(destination.js))
|
||||||
|
.pipe(gulpif(argv.livereload, livereload()));
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Combine all needed Bootstrap JavaScript into a single file.
|
||||||
|
gulp.task('scripts_concat_bootstrap', function() {
|
||||||
|
|
||||||
|
toUglify = [
|
||||||
|
source.popper + 'dist/umd/popper.min.js',
|
||||||
|
source.bootstrap + 'js/dist/index.js',
|
||||||
|
source.bootstrap + 'js/dist/util.js',
|
||||||
|
source.bootstrap + 'js/dist/tooltip.js',
|
||||||
|
source.bootstrap + 'js/dist/dropdown.js',
|
||||||
|
];
|
||||||
|
|
||||||
|
gulp.src(toUglify)
|
||||||
|
.pipe(gulpif(enabled.failCheck, plumber()))
|
||||||
|
.pipe(gulpif(enabled.maps, sourcemaps.init()))
|
||||||
|
.pipe(concat("bootstrap.min.js"))
|
||||||
|
.pipe(gulpif(enabled.uglify, uglify()))
|
||||||
|
.pipe(gulpif(enabled.maps, sourcemaps.write(".")))
|
||||||
|
.pipe(gulpif(enabled.chmod, chmod(644)))
|
||||||
.pipe(gulp.dest(destination.js))
|
.pipe(gulp.dest(destination.js))
|
||||||
.pipe(gulpif(argv.livereload, livereload()));
|
.pipe(gulpif(argv.livereload, livereload()));
|
||||||
});
|
});
|
||||||
@ -137,4 +165,5 @@ gulp.task('default', tasks.concat([
|
|||||||
'scripts',
|
'scripts',
|
||||||
'scripts_concat_tutti',
|
'scripts_concat_tutti',
|
||||||
'scripts_concat_markdown',
|
'scripts_concat_markdown',
|
||||||
|
'scripts_concat_bootstrap',
|
||||||
]));
|
]));
|
||||||
|
35
package.json
35
package.json
@ -4,23 +4,28 @@
|
|||||||
"author": "Blender Institute",
|
"author": "Blender Institute",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/armadillica/pillar.git"
|
"url": "git://git.blender.org/pillar.git"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"gulp": "~3.9.1",
|
"gulp": "^3.9.1",
|
||||||
"gulp-autoprefixer": "~2.3.1",
|
"gulp-autoprefixer": "^6.0.0",
|
||||||
"gulp-cached": "~1.1.0",
|
"gulp-cached": "^1.1.1",
|
||||||
"gulp-chmod": "~1.3.0",
|
"gulp-chmod": "^2.0.0",
|
||||||
"gulp-concat": "~2.6.0",
|
"gulp-concat": "^2.6.1",
|
||||||
"gulp-if": "^2.0.1",
|
"gulp-if": "^2.0.2",
|
||||||
"gulp-git": "~2.4.2",
|
"gulp-git": "^2.8.0",
|
||||||
"gulp-livereload": "~3.8.1",
|
"gulp-livereload": "^4.0.0",
|
||||||
"gulp-plumber": "~1.1.0",
|
"gulp-plumber": "^1.2.0",
|
||||||
"gulp-pug": "~3.2.0",
|
"gulp-pug": "^4.0.1",
|
||||||
"gulp-rename": "~1.2.2",
|
"gulp-rename": "^1.4.0",
|
||||||
"gulp-sass": "~2.3.1",
|
"gulp-sass": "^4.0.1",
|
||||||
"gulp-sourcemaps": "~1.6.0",
|
"gulp-sourcemaps": "^2.6.4",
|
||||||
"gulp-uglify": "~1.5.3",
|
"gulp-uglify-es": "^1.0.4",
|
||||||
"minimist": "^1.2.0"
|
"minimist": "^1.2.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"bootstrap": "^4.1.3",
|
||||||
|
"jquery": "^3.3.1",
|
||||||
|
"popper.js": "^1.14.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,4 +64,13 @@
|
|||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// jQuery's show() sets display as 'inline', this utility sets it to whatever we want.
|
||||||
|
// Useful for buttons or links that need 'inline-block' or flex for correct padding and alignment.
|
||||||
|
$.fn.displayAs = function(display_type) {
|
||||||
|
if (typeof(display_type) === 'undefined') {
|
||||||
|
display_type = 'block';
|
||||||
|
}
|
||||||
|
|
||||||
|
this.css('display', display_type);
|
||||||
|
}
|
||||||
}(jQuery));
|
}(jQuery));
|
||||||
|
@ -453,12 +453,17 @@ $comments-width-max: 710px
|
|||||||
transition: background-color 150ms ease-in-out, color 150ms ease-in-out
|
transition: background-color 150ms ease-in-out, color 150ms ease-in-out
|
||||||
width: 100px
|
width: 100px
|
||||||
|
|
||||||
|
// The actual button for submitting the comment.
|
||||||
button.comment-action-submit
|
button.comment-action-submit
|
||||||
|
align-items: center
|
||||||
background: transparent
|
background: transparent
|
||||||
border: none
|
border: none
|
||||||
border-top-left-radius: 0
|
border-top-left-radius: 0
|
||||||
border-bottom-left-radius: 0
|
border-bottom-left-radius: 0
|
||||||
color: $color-success
|
color: $color-success
|
||||||
|
cursor: pointer
|
||||||
|
display: flex
|
||||||
|
justify-content: center
|
||||||
flex-direction: column
|
flex-direction: column
|
||||||
height: 100%
|
height: 100%
|
||||||
position: relative
|
position: relative
|
||||||
@ -466,8 +471,12 @@ $comments-width-max: 710px
|
|||||||
white-space: nowrap
|
white-space: nowrap
|
||||||
width: 100%
|
width: 100%
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
background: rgba($color-success, .1)
|
||||||
|
|
||||||
&:focus
|
&:focus
|
||||||
background: lighten($color-success, 10%)
|
background: lighten($color-success, 10%)
|
||||||
|
color: $white
|
||||||
|
|
||||||
&.submitting
|
&.submitting
|
||||||
color: $color-info
|
color: $color-info
|
||||||
|
@ -25,7 +25,7 @@ $color-text-light-primary: rgba($color-text-light, .87) !default
|
|||||||
$color-text-light-secondary: rgba($color-text-light, .54) !default
|
$color-text-light-secondary: rgba($color-text-light, .54) !default
|
||||||
$color-text-light-hint: rgba($color-text-light, .38) !default
|
$color-text-light-hint: rgba($color-text-light, .38) !default
|
||||||
|
|
||||||
$color-primary: #68B3C8 !default
|
$color-primary: #009eff !default
|
||||||
$color-primary-light: hsl(hue($color-primary), 30%, 90%) !default
|
$color-primary-light: hsl(hue($color-primary), 30%, 90%) !default
|
||||||
$color-primary-dark: hsl(hue($color-primary), 80%, 30%) !default
|
$color-primary-dark: hsl(hue($color-primary), 80%, 30%) !default
|
||||||
$color-primary-accent: hsl(hue($color-primary), 100%, 50%) !default
|
$color-primary-accent: hsl(hue($color-primary), 100%, 50%) !default
|
||||||
@ -100,13 +100,10 @@ $sidebar-width: 50px !default
|
|||||||
|
|
||||||
/* Project specifics */
|
/* Project specifics */
|
||||||
$project_nav-width: 250px !default
|
$project_nav-width: 250px !default
|
||||||
$project-sidebar-width: 50px !default
|
$project-sidebar-width: 40px !default
|
||||||
$project_header-height: 50px !default
|
$project_header-height: 37px !default
|
||||||
$project_footer-height: 30px !default
|
$project_footer-height: 30px !default
|
||||||
|
|
||||||
$navbar-height: 50px !default
|
|
||||||
$navbar-backdrop-height: 600px !default
|
|
||||||
|
|
||||||
$node-type-asset_image: #e87d86 !default
|
$node-type-asset_image: #e87d86 !default
|
||||||
$node-type-asset_file: #CC91C7 !default
|
$node-type-asset_file: #CC91C7 !default
|
||||||
$node-type-asset_video: #7dc5e8 !default
|
$node-type-asset_video: #7dc5e8 !default
|
||||||
@ -125,3 +122,29 @@ $z-index-base: 13 !default
|
|||||||
|
|
||||||
@media (min-width: $screen-lg-min)
|
@media (min-width: $screen-lg-min)
|
||||||
width: 1270px
|
width: 1270px
|
||||||
|
|
||||||
|
|
||||||
|
// Bootstrap overrides.
|
||||||
|
$enable-caret: false
|
||||||
|
|
||||||
|
$border-radius: .2rem
|
||||||
|
$btn-border-radius: $border-radius
|
||||||
|
|
||||||
|
$primary: $color-primary
|
||||||
|
|
||||||
|
$body-bg: $white
|
||||||
|
$body-color: $color-text
|
||||||
|
|
||||||
|
$color-background-nav: #fff
|
||||||
|
$link-color: $primary
|
||||||
|
|
||||||
|
$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"
|
||||||
|
$font-size-base: .9rem
|
||||||
|
|
||||||
|
$dropdown-border-width: 0
|
||||||
|
$dropdown-box-shadow: 0 10px 25px rgba($black, .1)
|
||||||
|
|
||||||
|
// Tooltips.
|
||||||
|
$tooltip-font-size: 0.83rem
|
||||||
|
$tooltip-max-width: auto
|
||||||
|
$tooltip-opacity: 1
|
||||||
|
@ -60,14 +60,13 @@
|
|||||||
|
|
||||||
#node-overlay
|
#node-overlay
|
||||||
#error-container
|
#error-container
|
||||||
position: fixed
|
|
||||||
top: $navbar-height
|
|
||||||
align-items: flex-start
|
align-items: flex-start
|
||||||
|
position: fixed
|
||||||
|
top: $nav-link-height
|
||||||
|
|
||||||
#error-box
|
#error-box
|
||||||
box-shadow: 0 0 25px rgba(black, .1), 0 0 50px rgba(black, .1)
|
|
||||||
width: auto
|
|
||||||
border-top-left-radius: 0
|
border-top-left-radius: 0
|
||||||
border-top-right-radius: 0
|
border-top-right-radius: 0
|
||||||
|
box-shadow: 0 0 25px rgba(black, .1), 0 0 50px rgba(black, .1)
|
||||||
position: relative
|
position: relative
|
||||||
width: 100%
|
width: 100%
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
color: $color-primary
|
color: $color-primary
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
float: right
|
float: right
|
||||||
font-family: $font-body
|
|
||||||
height: initial
|
height: initial
|
||||||
margin: 0
|
margin: 0
|
||||||
padding: 8px 10px 0 10px
|
padding: 8px 10px 0 10px
|
||||||
|
@ -1,20 +1,4 @@
|
|||||||
body.organizations
|
body.organizations
|
||||||
ul#sub-nav-tabs__list
|
|
||||||
align-items: center
|
|
||||||
display: flex
|
|
||||||
|
|
||||||
li.result
|
|
||||||
padding: 10px 20px
|
|
||||||
li.create
|
|
||||||
margin-left: auto
|
|
||||||
|
|
||||||
|
|
||||||
.dashboard-secondary
|
|
||||||
.box
|
|
||||||
+container-box
|
|
||||||
padding: 10px 20px
|
|
||||||
margin: 0
|
|
||||||
|
|
||||||
#item-details
|
#item-details
|
||||||
.organization
|
.organization
|
||||||
label
|
label
|
||||||
|
@ -409,7 +409,6 @@ a.page-card-cta
|
|||||||
display: block
|
display: block
|
||||||
+position-center-translate
|
+position-center-translate
|
||||||
|
|
||||||
|
|
||||||
+media-xs
|
+media-xs
|
||||||
display: none
|
display: none
|
||||||
+media-sm
|
+media-sm
|
||||||
@ -419,9 +418,6 @@ a.page-card-cta
|
|||||||
+media-lg
|
+media-lg
|
||||||
width: 100%
|
width: 100%
|
||||||
|
|
||||||
.services.navbar-backdrop-overlay
|
|
||||||
background: rgba(black, .5)
|
|
||||||
|
|
||||||
.services
|
.services
|
||||||
.page-card-side
|
.page-card-side
|
||||||
max-width: 500px
|
max-width: 500px
|
||||||
|
@ -1,22 +1,16 @@
|
|||||||
|
|
||||||
.dashboard-container
|
.dashboard-container
|
||||||
section#home,
|
section#home,
|
||||||
section#projects
|
section#projects
|
||||||
background-color: $color-background
|
|
||||||
border-bottom-left-radius: 3px
|
border-bottom-left-radius: 3px
|
||||||
border-bottom-right-radius: 3px
|
border-bottom-right-radius: 3px
|
||||||
|
|
||||||
nav#sub-nav-tabs.home,
|
nav#sub-nav-tabs.home,
|
||||||
nav#sub-nav-tabs.projects
|
nav#sub-nav-tabs.projects
|
||||||
background-color: white
|
|
||||||
border-bottom: thin solid $color-background-dark
|
border-bottom: thin solid $color-background-dark
|
||||||
|
|
||||||
li.nav-tabs__list-tab
|
li.nav-tabs__list-tab
|
||||||
padding: 15px 20px 10px 20px
|
padding: 15px 20px 10px 20px
|
||||||
|
|
||||||
section#home
|
|
||||||
background-color: $color-background-dark
|
|
||||||
|
|
||||||
nav.nav-tabs__tab
|
nav.nav-tabs__tab
|
||||||
display: none
|
display: none
|
||||||
background-color: $color-background-light
|
background-color: $color-background-light
|
||||||
@ -287,9 +281,8 @@
|
|||||||
flex-direction: column
|
flex-direction: column
|
||||||
|
|
||||||
.title
|
.title
|
||||||
font-size: 1.2em
|
|
||||||
padding-bottom: 2px
|
|
||||||
color: $color-text-dark-primary
|
color: $color-text-dark-primary
|
||||||
|
padding-bottom: 2px
|
||||||
|
|
||||||
ul.meta
|
ul.meta
|
||||||
font-size: .9em
|
font-size: .9em
|
||||||
|
@ -92,10 +92,6 @@ ul.sharing-users-list
|
|||||||
&:hover
|
&:hover
|
||||||
color: lighten($color-danger, 10%)
|
color: lighten($color-danger, 10%)
|
||||||
|
|
||||||
.sharing-users-intro,
|
|
||||||
.sharing-users-info
|
|
||||||
h4
|
|
||||||
font-family: $font-body
|
|
||||||
|
|
||||||
.sharing-users-info
|
.sharing-users-info
|
||||||
padding-left: 15px
|
padding-left: 15px
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
$project-sidebar-background: lighten($color-background, 5%)
|
|
||||||
$node-latest-thumbnail-size: 160px
|
$node-latest-thumbnail-size: 160px
|
||||||
|
|
||||||
body.open-projects,
|
body.open-projects,
|
||||||
@ -41,10 +40,6 @@ body.blog
|
|||||||
width: 100%
|
width: 100%
|
||||||
left: 0
|
left: 0
|
||||||
|
|
||||||
#project_context-header
|
|
||||||
span#status-bar
|
|
||||||
text-align: left
|
|
||||||
|
|
||||||
#project_nav-container
|
#project_nav-container
|
||||||
+media-lg
|
+media-lg
|
||||||
width: $project_nav-width * 1.33
|
width: $project_nav-width * 1.33
|
||||||
@ -63,16 +58,12 @@ body.blog
|
|||||||
#project_sidebar
|
#project_sidebar
|
||||||
width: $project-sidebar-width
|
width: $project-sidebar-width
|
||||||
z-index: $z-index-base + 6
|
z-index: $z-index-base + 6
|
||||||
|
box-shadow: inset -1px 0 0 0 $color-background
|
||||||
|
|
||||||
+media-xs
|
+media-xs
|
||||||
width: 100%
|
width: 100%
|
||||||
|
|
||||||
ul.project-tabs
|
ul.project-tabs
|
||||||
background-color: $color-background-nav
|
|
||||||
margin: 0
|
|
||||||
padding: 0
|
|
||||||
list-style: none
|
|
||||||
|
|
||||||
position: fixed
|
position: fixed
|
||||||
width: $project-sidebar-width
|
width: $project-sidebar-width
|
||||||
top: $project_header-height
|
top: $project_header-height
|
||||||
@ -85,16 +76,9 @@ body.blog
|
|||||||
width: 100%
|
width: 100%
|
||||||
|
|
||||||
li
|
li
|
||||||
display: flex
|
|
||||||
align-items: center
|
|
||||||
justify-content: center
|
|
||||||
width: $project-sidebar-width
|
width: $project-sidebar-width
|
||||||
height: $project-sidebar-width
|
height: $project-sidebar-width
|
||||||
position: relative
|
position: relative
|
||||||
color: white
|
|
||||||
background-color: $color-background-nav
|
|
||||||
border-left: 2px solid transparent
|
|
||||||
transition: all 100ms ease-in-out
|
|
||||||
|
|
||||||
+media-xs
|
+media-xs
|
||||||
border-bottom: 2px solid transparent
|
border-bottom: 2px solid transparent
|
||||||
@ -108,78 +92,33 @@ body.blog
|
|||||||
&:first-child
|
&:first-child
|
||||||
border-top: thin solid transparent
|
border-top: thin solid transparent
|
||||||
|
|
||||||
&:hover
|
&:hover,
|
||||||
background-color: $color-background-nav-light
|
&.active
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
|
|
||||||
+media-xs
|
a
|
||||||
border-bottom: 2px solid $color-background-nav-light
|
color: $primary
|
||||||
+media-sm
|
|
||||||
border-bottom: 2px solid $color-background-nav-light
|
|
||||||
+media-md
|
|
||||||
border-left: 2px solid $color-background-nav-light
|
|
||||||
+media-lg
|
|
||||||
border-left: 2px solid $color-background-nav-light
|
|
||||||
|
|
||||||
a
|
a
|
||||||
width: $project-sidebar-width
|
|
||||||
height: $project-sidebar-width
|
|
||||||
display: flex
|
|
||||||
align-items: center
|
align-items: center
|
||||||
|
color: $color-text
|
||||||
|
display: flex
|
||||||
justify-content: center
|
justify-content: center
|
||||||
color: $color-text-light-primary
|
height: $project-sidebar-width
|
||||||
|
width: $project-sidebar-width
|
||||||
i
|
|
||||||
font-size: 1.1em
|
|
||||||
|
|
||||||
&.active
|
|
||||||
background-color: $color-background-nav-light
|
|
||||||
|
|
||||||
// The tiny triangle
|
|
||||||
&:after
|
|
||||||
+media-xs
|
|
||||||
border-top-color: $project-sidebar-background
|
|
||||||
border-right-color: transparent
|
|
||||||
left: 50%
|
|
||||||
right: initial
|
|
||||||
transform: translateX(-50%)
|
|
||||||
top: 0
|
|
||||||
|
|
||||||
border: 7px solid transparent
|
|
||||||
border-right-color: $project-sidebar-background
|
|
||||||
content: ''
|
|
||||||
display: block
|
|
||||||
position: absolute
|
|
||||||
right: 0
|
|
||||||
top: 50%
|
|
||||||
transform: translateY(-50%)
|
|
||||||
|
|
||||||
a
|
|
||||||
color: white
|
|
||||||
|
|
||||||
&.tabs-thumbnail
|
&.tabs-thumbnail
|
||||||
height: $project-sidebar-width
|
|
||||||
border-bottom: 2px solid $color-background-nav-light
|
|
||||||
|
|
||||||
img
|
img
|
||||||
width: $project-sidebar-width
|
|
||||||
height: $project-sidebar-width
|
height: $project-sidebar-width
|
||||||
|
width: $project-sidebar-width
|
||||||
&.image
|
|
||||||
border-left: none
|
|
||||||
|
|
||||||
#project-loading
|
#project-loading
|
||||||
position: absolute
|
|
||||||
width: $project-sidebar-width
|
|
||||||
height: $project-sidebar-width
|
|
||||||
display: flex
|
|
||||||
align-items: center
|
align-items: center
|
||||||
|
display: flex
|
||||||
|
height: $project-sidebar-width
|
||||||
justify-content: center
|
justify-content: center
|
||||||
i
|
width: $project-sidebar-width
|
||||||
position: relative
|
|
||||||
top: -1px
|
|
||||||
font-size: 1em
|
|
||||||
color: white
|
|
||||||
|
|
||||||
#search-container #project_sidebar ul.project-tabs li.tabs-thumbnail
|
#search-container #project_sidebar ul.project-tabs li.tabs-thumbnail
|
||||||
background-color: $color-background-nav-dark
|
background-color: $color-background-nav-dark
|
||||||
@ -199,7 +138,6 @@ body.blog
|
|||||||
+media-xs
|
+media-xs
|
||||||
width: initial
|
width: initial
|
||||||
|
|
||||||
background-color: $project-sidebar-background
|
|
||||||
display: block
|
display: block
|
||||||
left: 0
|
left: 0
|
||||||
position: relative
|
position: relative
|
||||||
@ -221,53 +159,34 @@ body.blog
|
|||||||
|
|
||||||
#project_context-header
|
#project_context-header
|
||||||
align-items: center
|
align-items: center
|
||||||
background-color: white
|
|
||||||
background-color: $color-background-light
|
|
||||||
border-bottom: thin solid lighten($color-text-dark-hint, 10%)
|
|
||||||
box-shadow: none
|
|
||||||
color: $color-text-dark-secondary
|
color: $color-text-dark-secondary
|
||||||
display: flex
|
display: flex
|
||||||
height: $project_header-height
|
height: $project_header-height
|
||||||
min-height: $project_header-height
|
min-height: $project_header-height
|
||||||
position: fixed
|
position: fixed
|
||||||
top: $project_header-height
|
top: $project_header-height + 1
|
||||||
transition: box-shadow 250ms ease-in-out
|
transition: box-shadow 250ms ease-in-out
|
||||||
width: auto
|
|
||||||
z-index: $z-index-base + 3
|
z-index: $z-index-base + 3
|
||||||
|
|
||||||
&.is-offset
|
&.is-offset
|
||||||
box-shadow: 0 0 25px rgba(black, .2)
|
box-shadow: 0 0 25px rgba(black, .2)
|
||||||
|
|
||||||
|
span#status-bar
|
||||||
|
text-align: left
|
||||||
|
|
||||||
#project_nav-header
|
#project_nav-header
|
||||||
z-index: $z-index-base + 3
|
left: 0
|
||||||
position: absolute
|
position: absolute
|
||||||
top: 0
|
top: 0
|
||||||
left: 0
|
|
||||||
height: $project_header-height
|
|
||||||
min-height: $project_header-height
|
|
||||||
width: 100%
|
width: 100%
|
||||||
background-color: $color-background-light
|
z-index: $z-index-base + 3
|
||||||
border-bottom: thin solid $color-background-dark
|
|
||||||
|
|
||||||
/* Name of the project */
|
/* Name of the project */
|
||||||
.project-title
|
.project-title
|
||||||
width: 100%
|
+text-overflow-ellipsis
|
||||||
max-width: 100%
|
|
||||||
height: 100%
|
height: 100%
|
||||||
transition: background-color 150ms ease-in-out
|
max-width: 100%
|
||||||
|
width: 100%
|
||||||
a
|
|
||||||
display: block
|
|
||||||
width: 100%
|
|
||||||
color: $color-text-dark
|
|
||||||
padding: 15px
|
|
||||||
font-size: 1.1em
|
|
||||||
+text-overflow-ellipsis
|
|
||||||
|
|
||||||
&:hover, &:active
|
|
||||||
color: $color-primary
|
|
||||||
text-decoration: none
|
|
||||||
outline: none
|
|
||||||
|
|
||||||
span#status-bar
|
span#status-bar
|
||||||
position: absolute
|
position: absolute
|
||||||
@ -278,7 +197,6 @@ span#status-bar
|
|||||||
color: $color-text-dark
|
color: $color-text-dark
|
||||||
opacity: 0
|
opacity: 0
|
||||||
z-index: 1
|
z-index: 1
|
||||||
background-color: $color-background-light
|
|
||||||
font-weight: 400
|
font-weight: 400
|
||||||
white-space: nowrap
|
white-space: nowrap
|
||||||
transition: all 250ms ease-in-out
|
transition: all 250ms ease-in-out
|
||||||
@ -293,7 +211,7 @@ span#status-bar
|
|||||||
&.info
|
&.info
|
||||||
color: $color-info
|
color: $color-info
|
||||||
&.error
|
&.error
|
||||||
color: $color-danger
|
color: $danger
|
||||||
&.warning
|
&.warning
|
||||||
color: $color-warning
|
color: $color-warning
|
||||||
&.success
|
&.success
|
||||||
@ -320,71 +238,29 @@ span#project-edit-title
|
|||||||
display: none
|
display: none
|
||||||
|
|
||||||
ul.project-edit-tools
|
ul.project-edit-tools
|
||||||
display: flex
|
|
||||||
align-items: center
|
align-items: center
|
||||||
height: 100%
|
display: flex
|
||||||
padding: 0
|
|
||||||
margin:
|
|
||||||
top: 0
|
|
||||||
left: auto
|
|
||||||
right: 5px
|
|
||||||
bottom: 0
|
|
||||||
color: $color-text-dark-hint
|
|
||||||
|
|
||||||
list-style-type: none
|
list-style-type: none
|
||||||
font-size: .9em
|
margin: 0 0 0 auto
|
||||||
|
padding: 0
|
||||||
|
|
||||||
+media-xs
|
+media-xs
|
||||||
width: 100%
|
width: 100%
|
||||||
margin: 0 auto
|
margin: 0 auto
|
||||||
justify-content: space-around
|
justify-content: space-around
|
||||||
|
|
||||||
/* Bottons at the end of a form, like Save Changes */
|
|
||||||
&.bottom
|
|
||||||
+clearfix
|
|
||||||
padding: 20px 0 25px 0
|
|
||||||
border-top: thin solid $color-text-dark-hint
|
|
||||||
justify-content: flex-end
|
|
||||||
width: 100%
|
|
||||||
height: initial
|
|
||||||
|
|
||||||
li
|
li
|
||||||
margin: 0
|
a, button
|
||||||
padding: 0
|
padding: $dropdown-item-padding-y ($dropdown-item-padding-x / 2)
|
||||||
position: relative
|
|
||||||
float: left
|
|
||||||
user-select: none
|
|
||||||
|
|
||||||
a
|
i
|
||||||
min-width: 110px
|
padding-right: 10px
|
||||||
user-select: none
|
|
||||||
|
|
||||||
&:focus, &:active
|
|
||||||
text-decoration: none
|
|
||||||
outline: none
|
|
||||||
|
|
||||||
&.button-save
|
&.button-save
|
||||||
|
|
||||||
&.disabled
|
|
||||||
border-bottom: none
|
|
||||||
|
|
||||||
a
|
|
||||||
color: white
|
|
||||||
border-color: darken($color-success, 10%)
|
|
||||||
|
|
||||||
a
|
|
||||||
border-color: $color-success
|
|
||||||
background-color: $color-success
|
|
||||||
color: white
|
|
||||||
margin-right: 10px
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
background-color: lighten($color-success, 5%)
|
|
||||||
|
|
||||||
&.field-error
|
&.field-error
|
||||||
a
|
a
|
||||||
background-color: $color-danger
|
background-color: $danger
|
||||||
border-color: $color-danger
|
border-color: $danger
|
||||||
color: white
|
color: white
|
||||||
|
|
||||||
&.saving
|
&.saving
|
||||||
@ -411,31 +287,6 @@ ul.project-edit-tools
|
|||||||
&.button-edit
|
&.button-edit
|
||||||
min-width: 80px
|
min-width: 80px
|
||||||
|
|
||||||
|
|
||||||
&.button-dropdown
|
|
||||||
min-width: 50px
|
|
||||||
cursor: pointer
|
|
||||||
i
|
|
||||||
margin: auto
|
|
||||||
padding: 0
|
|
||||||
|
|
||||||
&.button-add-icon
|
|
||||||
margin-right: 5px
|
|
||||||
|
|
||||||
a.dropdown-toggle
|
|
||||||
display: inline-block
|
|
||||||
min-width: auto
|
|
||||||
|
|
||||||
&.open
|
|
||||||
a.dropdown-toggle
|
|
||||||
color: $color-text-light
|
|
||||||
background-color: $color-primary
|
|
||||||
border-color: darken($color-primary, 5%)
|
|
||||||
|
|
||||||
li.button-delete:hover
|
|
||||||
a
|
|
||||||
color: $color-danger
|
|
||||||
|
|
||||||
&.featured
|
&.featured
|
||||||
a
|
a
|
||||||
color: $color-warning
|
color: $color-warning
|
||||||
@ -445,132 +296,44 @@ ul.project-edit-tools
|
|||||||
background-color: rgba($color-warning, .1)
|
background-color: rgba($color-warning, .1)
|
||||||
|
|
||||||
&.disabled
|
&.disabled
|
||||||
cursor: not-allowed
|
+disabled-stripes
|
||||||
border-bottom: thin solid $color-text-dark-hint
|
|
||||||
|
|
||||||
a
|
a
|
||||||
pointer-events: none
|
+disabled-stripes
|
||||||
background: repeating-linear-gradient(-45deg, lighten($color-text-dark-hint, 15%), lighten($color-text-dark-hint, 15%) 10px, lighten($color-text-dark-hint, 5%) 10px, lighten($color-text-dark-hint, 5%) 20px)
|
|
||||||
border-color: darken($color-text-dark-hint, 5%)
|
|
||||||
opacity: .6
|
|
||||||
color: $color-text-dark
|
|
||||||
|
|
||||||
&.button-dropdown.disabled
|
&.dropdown
|
||||||
border-bottom: none
|
|
||||||
|
|
||||||
a
|
|
||||||
margin: 5px
|
|
||||||
padding: 5px 15px
|
|
||||||
color: $color-text-dark-primary
|
|
||||||
border-radius: 3px
|
|
||||||
border: thin solid $color-text-dark-primary
|
|
||||||
text-align: center
|
|
||||||
text-transform: uppercase
|
|
||||||
transition: background-color 150ms ease-in-out
|
|
||||||
background-color: $color-background-light
|
|
||||||
|
|
||||||
i
|
|
||||||
margin-right: 5px
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
background-color: $color-background-active-dark
|
|
||||||
border-color: darken($color-background-active-dark, 5%)
|
|
||||||
color: $color-text-light
|
|
||||||
text-decoration: none
|
|
||||||
|
|
||||||
&:focus, &:active
|
|
||||||
text-decoration: none
|
|
||||||
outline: none
|
|
||||||
|
|
||||||
|
|
||||||
&#item_save,
|
|
||||||
&#item_cancel
|
|
||||||
i
|
|
||||||
font-size: 1em
|
|
||||||
|
|
||||||
&#item_add,
|
|
||||||
&#item_edit,
|
|
||||||
&#item_move,
|
|
||||||
&#item_featured
|
|
||||||
li
|
li
|
||||||
i
|
padding: 0
|
||||||
margin-right: 10px
|
|
||||||
|
|
||||||
&#item_delete
|
a
|
||||||
li i
|
color: $body-color
|
||||||
margin-right: 0
|
display: block
|
||||||
// &:not(:last-of-type)
|
padding: $dropdown-item-padding-y $dropdown-item-padding-x
|
||||||
// border-right: thin solid darken($color-background, 50%)
|
padding-left: 15px
|
||||||
|
user-select: none
|
||||||
|
|
||||||
/* ul.project-edit-tools */
|
&:hover
|
||||||
|
color: $primary
|
||||||
|
text-decoration: none
|
||||||
|
|
||||||
/* Extra asset tools in dropdown */
|
/* Icons per asset type. */
|
||||||
ul.dropdown-menu
|
i
|
||||||
width: auto
|
&.icon-group:after
|
||||||
min-width: 180px
|
content: '\e80d'
|
||||||
padding: 0
|
&.icon-group_texture:after,
|
||||||
margin: 0
|
&.icon-group_hdri:after
|
||||||
top: 44px
|
content: '\e80b'
|
||||||
left: initial
|
font-size: 1.1em
|
||||||
right: 10px
|
&.icon-asset:after
|
||||||
bottom: initial
|
content: '\e825'
|
||||||
border: thin solid $color-text-dark-hint
|
&.icon-page:after
|
||||||
border-bottom-left-radius: 3px
|
content: '\e824'
|
||||||
border-bottom-right-radius: 3px
|
&.icon-texture:after
|
||||||
border-top-left-radius: 0
|
content: '\e80a'
|
||||||
border-top-right-radius: 0
|
&.icon-hdri:after
|
||||||
background-color: white
|
content: '\f019'
|
||||||
color: $color-text-dark-primary
|
|
||||||
box-shadow: 1px 1px 25px rgba(black, .2)
|
|
||||||
|
|
||||||
li
|
|
||||||
padding: 0
|
|
||||||
clear: both
|
|
||||||
display: flex
|
|
||||||
align-items: center
|
|
||||||
width: 100%
|
|
||||||
|
|
||||||
a
|
|
||||||
margin: 0
|
|
||||||
padding: 10px 15px
|
|
||||||
width: 100%
|
|
||||||
border: 0
|
|
||||||
font-size: .9em
|
|
||||||
width: 100%
|
|
||||||
text-align: left
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
color: $color-primary
|
|
||||||
background-color: transparent
|
|
||||||
&:active, &:focus
|
|
||||||
color: $color-primary
|
|
||||||
background-color: transparent
|
|
||||||
|
|
||||||
i
|
|
||||||
display: inline-block
|
|
||||||
margin: 0 15px 0 0
|
|
||||||
|
|
||||||
&.icon-group:after
|
|
||||||
content: '\e80d'
|
|
||||||
&.icon-group_texture:after,
|
|
||||||
&.icon-group_hdri:after
|
|
||||||
content: '\e80b'
|
|
||||||
font-size: 1.1em
|
|
||||||
&.icon-asset:after
|
|
||||||
content: '\e825'
|
|
||||||
&.icon-page:after
|
|
||||||
content: '\e824'
|
|
||||||
&.icon-texture:after
|
|
||||||
content: '\e80a'
|
|
||||||
&.icon-hdri:after
|
|
||||||
content: '\f019'
|
|
||||||
|
|
||||||
/* // Extra asset tools in dropdown */
|
/* // Extra asset tools in dropdown */
|
||||||
|
|
||||||
&.open
|
|
||||||
button
|
|
||||||
box-shadow: none
|
|
||||||
|
|
||||||
/* // Edit Asset buttons */
|
/* // Edit Asset buttons */
|
||||||
|
|
||||||
#project-loading
|
#project-loading
|
||||||
@ -607,9 +370,6 @@ ul.project_nav-edit-list
|
|||||||
li
|
li
|
||||||
background-color: $color-background
|
background-color: $color-background
|
||||||
border-bottom: 1px solid $color-background-dark
|
border-bottom: 1px solid $color-background-dark
|
||||||
font:
|
|
||||||
weight: 400
|
|
||||||
family: $font-body
|
|
||||||
color: $color-text-dark
|
color: $color-text-dark
|
||||||
position: relative
|
position: relative
|
||||||
|
|
||||||
@ -663,9 +423,8 @@ ul.project_nav-edit-list
|
|||||||
padding-top: $project_header-height
|
padding-top: $project_header-height
|
||||||
|
|
||||||
#node-container
|
#node-container
|
||||||
flex: 1
|
|
||||||
color: $color-text-dark
|
|
||||||
background-color: white
|
background-color: white
|
||||||
|
flex: 1
|
||||||
|
|
||||||
/* For error messages (403) and other overlaid text*/
|
/* For error messages (403) and other overlaid text*/
|
||||||
#node-overlay
|
#node-overlay
|
||||||
@ -687,8 +446,6 @@ ul.project_nav-edit-list
|
|||||||
/* Project context on the right of the navigation */
|
/* Project context on the right of the navigation */
|
||||||
/* Contains #project_context */
|
/* Contains #project_context */
|
||||||
#project_context-container
|
#project_context-container
|
||||||
background-color: $color-background-nav
|
|
||||||
|
|
||||||
iframe#server_error
|
iframe#server_error
|
||||||
width: 100%
|
width: 100%
|
||||||
min-height: 800px
|
min-height: 800px
|
||||||
@ -700,11 +457,9 @@ ul.project_nav-edit-list
|
|||||||
+media-xs
|
+media-xs
|
||||||
margin-top: 0
|
margin-top: 0
|
||||||
|
|
||||||
background-color: $project-sidebar-background
|
// margin-top: $project_header-height //so it's right below the project title.
|
||||||
border-right: thin solid $color-background
|
overflow-y: auto // show vertical scrollbars when needed.
|
||||||
margin-top: $project_header-height
|
padding: 0 0 5px 0 // some padding on top/bottom of jstree.
|
||||||
overflow-y: auto
|
|
||||||
padding: 0 0 5px 0// some padding on top/bottom of jstree
|
|
||||||
position: relative
|
position: relative
|
||||||
|
|
||||||
&.edit
|
&.edit
|
||||||
@ -713,9 +468,7 @@ ul.project_nav-edit-list
|
|||||||
|
|
||||||
/* Node Context */
|
/* Node Context */
|
||||||
=project-node-title
|
=project-node-title
|
||||||
font:
|
font-size: 1.5em
|
||||||
family: $font-body
|
|
||||||
size: 1.5em
|
|
||||||
color: $color-text-dark-primary
|
color: $color-text-dark-primary
|
||||||
|
|
||||||
$node-preview-max-height-sm: 300px
|
$node-preview-max-height-sm: 300px
|
||||||
@ -825,7 +578,7 @@ $node-preview-max-height-lg: 700px
|
|||||||
margin-left: auto
|
margin-left: auto
|
||||||
|
|
||||||
&.pending
|
&.pending
|
||||||
color: $color-danger
|
color: $danger
|
||||||
|
|
||||||
section.node-preview.texture
|
section.node-preview.texture
|
||||||
overflow: hidden
|
overflow: hidden
|
||||||
@ -897,7 +650,6 @@ $node-preview-max-height-lg: 700px
|
|||||||
.node-title
|
.node-title
|
||||||
color: $color-text-dark-primary
|
color: $color-text-dark-primary
|
||||||
font:
|
font:
|
||||||
family: $font-body
|
|
||||||
weight: 500
|
weight: 500
|
||||||
size: 1.5em
|
size: 1.5em
|
||||||
+text-overflow-ellipsis
|
+text-overflow-ellipsis
|
||||||
@ -1054,6 +806,7 @@ section.node-preview-forbidden
|
|||||||
justify-content: center
|
justify-content: center
|
||||||
min-height: 400px
|
min-height: 400px
|
||||||
position: relative
|
position: relative
|
||||||
|
overflow: hidden
|
||||||
|
|
||||||
img
|
img
|
||||||
height: 130%
|
height: 130%
|
||||||
@ -1075,13 +828,6 @@ section.node-preview-forbidden
|
|||||||
span
|
span
|
||||||
display: block
|
display: block
|
||||||
|
|
||||||
a
|
|
||||||
color: $color-text-light
|
|
||||||
|
|
||||||
&.btn
|
|
||||||
border-color: white
|
|
||||||
color: white
|
|
||||||
|
|
||||||
hr
|
hr
|
||||||
opacity: .5
|
opacity: .5
|
||||||
|
|
||||||
@ -1128,9 +874,6 @@ section.node-preview.group
|
|||||||
padding: 0
|
padding: 0
|
||||||
margin: 0
|
margin: 0
|
||||||
|
|
||||||
&.project
|
|
||||||
.node-details-title
|
|
||||||
padding: 10px 20px 0 20px
|
|
||||||
|
|
||||||
.node-details-description
|
.node-details-description
|
||||||
+node-details-description
|
+node-details-description
|
||||||
@ -1164,7 +907,7 @@ section.node-preview.group
|
|||||||
padding-left: 0
|
padding-left: 0
|
||||||
|
|
||||||
&.status-pending
|
&.status-pending
|
||||||
color: $color-danger
|
color: $danger
|
||||||
|
|
||||||
&.public
|
&.public
|
||||||
color: $color-success
|
color: $color-success
|
||||||
@ -1354,7 +1097,7 @@ section.node-details-container
|
|||||||
opacity: 1
|
opacity: 1
|
||||||
|
|
||||||
.error-node-type-not-found
|
.error-node-type-not-found
|
||||||
color: $color-danger
|
color: $danger
|
||||||
clear: both
|
clear: both
|
||||||
|
|
||||||
a.learn-more
|
a.learn-more
|
||||||
@ -1491,8 +1234,6 @@ a.learn-more
|
|||||||
|
|
||||||
|
|
||||||
section.node-children
|
section.node-children
|
||||||
background-color: white
|
|
||||||
|
|
||||||
&.group, &.storage
|
&.group, &.storage
|
||||||
flex: 1
|
flex: 1
|
||||||
padding: 10px 0 25px 20px
|
padding: 10px 0 25px 20px
|
||||||
@ -1911,7 +1652,6 @@ section.node-children
|
|||||||
|
|
||||||
.node_index-collection-name
|
.node_index-collection-name
|
||||||
font:
|
font:
|
||||||
family: $font-body
|
|
||||||
size: 4em
|
size: 4em
|
||||||
weight: 600
|
weight: 600
|
||||||
margin-bottom: -5px
|
margin-bottom: -5px
|
||||||
@ -2034,7 +1774,6 @@ section.node-children
|
|||||||
color: $color-text-dark
|
color: $color-text-dark
|
||||||
font:
|
font:
|
||||||
size: 1.5em
|
size: 1.5em
|
||||||
family: $font-body
|
|
||||||
weight: 500
|
weight: 500
|
||||||
text-decoration: none
|
text-decoration: none
|
||||||
|
|
||||||
@ -2101,15 +1840,15 @@ section.node-children
|
|||||||
text-transform: capitalize
|
text-transform: capitalize
|
||||||
|
|
||||||
&.error
|
&.error
|
||||||
color: $color-danger
|
color: $danger
|
||||||
background-color: $color-background-light
|
background-color: $color-background-light
|
||||||
padding: 10px 15px
|
padding: 10px 15px
|
||||||
border: thin solid lighten($color-danger, 10%)
|
border: thin solid lighten($danger, 10%)
|
||||||
border-top: 2px solid $color-danger
|
border-top: 2px solid $danger
|
||||||
border-bottom-left-radius: 3px
|
border-bottom-left-radius: 3px
|
||||||
border-bottom-right-radius: 3px
|
border-bottom-right-radius: 3px
|
||||||
label
|
label
|
||||||
color: $color-danger
|
color: $danger
|
||||||
font-weight: 500
|
font-weight: 500
|
||||||
|
|
||||||
&.file
|
&.file
|
||||||
@ -2176,7 +1915,7 @@ section.node-children
|
|||||||
outline: none
|
outline: none
|
||||||
|
|
||||||
&.field-error
|
&.field-error
|
||||||
border-color: $color-danger
|
border-color: $danger
|
||||||
|
|
||||||
.md-preview-loading
|
.md-preview-loading
|
||||||
position: absolute
|
position: absolute
|
||||||
@ -2423,7 +2162,7 @@ section.node-children
|
|||||||
.cancel
|
.cancel
|
||||||
+button($color-warning, 3px)
|
+button($color-warning, 3px)
|
||||||
.delete
|
.delete
|
||||||
+button($color-danger, 3px)
|
+button($danger, 3px)
|
||||||
.toggle
|
.toggle
|
||||||
margin: 0 20px
|
margin: 0 20px
|
||||||
|
|
||||||
@ -2434,7 +2173,7 @@ section.node-children
|
|||||||
&.cancel
|
&.cancel
|
||||||
+button($color-warning, 3px)
|
+button($color-warning, 3px)
|
||||||
&.delete
|
&.delete
|
||||||
+button($color-danger, 3px)
|
+button($danger, 3px)
|
||||||
|
|
||||||
&.create
|
&.create
|
||||||
+button($color-success, 3px)
|
+button($color-success, 3px)
|
||||||
|
@ -29,7 +29,6 @@ $search-hit-width_grid: 100px
|
|||||||
font:
|
font:
|
||||||
size: .9em
|
size: .9em
|
||||||
weight: 400
|
weight: 400
|
||||||
family: $font-body
|
|
||||||
style: initial
|
style: initial
|
||||||
width: 100%
|
width: 100%
|
||||||
+text-overflow-ellipsis
|
+text-overflow-ellipsis
|
||||||
@ -416,9 +415,7 @@ $search-hit-width_grid: 100px
|
|||||||
|
|
||||||
&.texture
|
&.texture
|
||||||
.texture-title
|
.texture-title
|
||||||
font:
|
font-size: 2em
|
||||||
size: 2em
|
|
||||||
family: $font-body
|
|
||||||
padding: 15px 10px 10px 15px
|
padding: 15px 10px 10px 15px
|
||||||
.node-row
|
.node-row
|
||||||
background: white
|
background: white
|
||||||
|
@ -68,13 +68,6 @@
|
|||||||
background-color: lighten($provider-color-google, 7%)
|
background-color: lighten($provider-color-google, 7%)
|
||||||
|
|
||||||
#settings
|
#settings
|
||||||
+media-xs
|
|
||||||
flex-direction: column
|
|
||||||
|
|
||||||
align-items: stretch
|
|
||||||
display: flex
|
|
||||||
margin: 25px auto
|
|
||||||
|
|
||||||
#settings-sidebar
|
#settings-sidebar
|
||||||
+media-xs
|
+media-xs
|
||||||
width: 100%
|
width: 100%
|
||||||
|
@ -26,7 +26,6 @@
|
|||||||
display: inline-flex
|
display: inline-flex
|
||||||
align-items: center
|
align-items: center
|
||||||
justify-content: center
|
justify-content: center
|
||||||
font-family: $font-body
|
|
||||||
padding: 5px 12px
|
padding: 5px 12px
|
||||||
border-radius: $roundness
|
border-radius: $roundness
|
||||||
|
|
||||||
@ -83,6 +82,15 @@
|
|||||||
text-shadow: none
|
text-shadow: none
|
||||||
|
|
||||||
|
|
||||||
|
=disabled-stripes
|
||||||
|
color: $color-text-dark
|
||||||
|
cursor: not-allowed
|
||||||
|
background: repeating-linear-gradient(-45deg, lighten($color-text-dark-hint, 15%), lighten($color-text-dark-hint, 15%) 10px, lighten($color-text-dark-hint, 5%) 10px, lighten($color-text-dark-hint, 5%) 20px)
|
||||||
|
border-color: darken($color-text-dark-hint, 5%)
|
||||||
|
pointer-events: none
|
||||||
|
opacity: .6
|
||||||
|
|
||||||
|
|
||||||
@mixin overlay($from-color, $from-percentage, $to-color, $to-percentage)
|
@mixin overlay($from-color, $from-percentage, $to-color, $to-percentage)
|
||||||
position: absolute
|
position: absolute
|
||||||
top: 0
|
top: 0
|
||||||
@ -122,24 +130,17 @@
|
|||||||
transform: translate(-50%, -50%)
|
transform: translate(-50%, -50%)
|
||||||
|
|
||||||
=input-generic
|
=input-generic
|
||||||
padding: 5px 5px 5px 0
|
// padding: 5px 5px 5px 0
|
||||||
color: $color-text-dark
|
color: $color-text-dark
|
||||||
box-shadow: none
|
|
||||||
font-family: $font-body
|
|
||||||
border: thin solid transparent
|
|
||||||
border-radius: 0
|
|
||||||
border-bottom-color: $color-background-dark
|
|
||||||
background-color: transparent
|
background-color: transparent
|
||||||
transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out
|
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
border-bottom-color: $color-background
|
border-bottom-color: $color-background
|
||||||
|
|
||||||
&:focus
|
&:focus
|
||||||
outline: 0
|
outline: 0
|
||||||
border: thin solid transparent
|
border-color: $primary
|
||||||
border-bottom-color: $color-primary
|
box-shadow: none
|
||||||
box-shadow: 0 1px 0 0 $color-primary
|
|
||||||
|
|
||||||
=label-generic
|
=label-generic
|
||||||
color: $color-text-dark-primary
|
color: $color-text-dark-primary
|
||||||
@ -354,7 +355,6 @@
|
|||||||
+clearfix
|
+clearfix
|
||||||
color: darken($color-text-dark, 5%)
|
color: darken($color-text-dark, 5%)
|
||||||
font:
|
font:
|
||||||
family: $font-body
|
|
||||||
weight: 300
|
weight: 300
|
||||||
size: 1.2em
|
size: 1.2em
|
||||||
|
|
||||||
@ -660,3 +660,17 @@
|
|||||||
transition: all 1s ease-out
|
transition: all 1s ease-out
|
||||||
img
|
img
|
||||||
transition: all 1s ease-out
|
transition: all 1s ease-out
|
||||||
|
|
||||||
|
.cursor-pointer
|
||||||
|
cursor: pointer
|
||||||
|
|
||||||
|
.user-select-none
|
||||||
|
user-select: none
|
||||||
|
|
||||||
|
// Bootstrap has .img-fluid, a class to limit the width of an image to 100%.
|
||||||
|
// .imgs-fluid below is to be applied on a parent container when we can't add
|
||||||
|
// classes to the images themselves. e.g. the blog.
|
||||||
|
.imgs-fluid
|
||||||
|
img
|
||||||
|
// Just re-use Bootstrap's mixin here.
|
||||||
|
+img-fluid
|
||||||
|
1290
src/styles/base.sass
1290
src/styles/base.sass
File diff suppressed because it is too large
Load Diff
@ -1,21 +1,96 @@
|
|||||||
@import _normalize
|
// Bootstrap variables and utilities.
|
||||||
|
@import "../../node_modules/bootstrap/scss/functions"
|
||||||
|
@import "../../node_modules/bootstrap/scss/variables"
|
||||||
|
@import "../../node_modules/bootstrap/scss/mixins"
|
||||||
|
|
||||||
@import _config
|
@import _config
|
||||||
@import _utils
|
@import _utils
|
||||||
|
|
||||||
|
// Bootstrap components.
|
||||||
|
@import "../../node_modules/bootstrap/scss/root"
|
||||||
|
@import "../../node_modules/bootstrap/scss/reboot"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/type"
|
||||||
|
@import "../../node_modules/bootstrap/scss/images"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/code"
|
||||||
|
@import "../../node_modules/bootstrap/scss/grid"
|
||||||
|
@import "../../node_modules/bootstrap/scss/tables"
|
||||||
|
@import "../../node_modules/bootstrap/scss/forms"
|
||||||
|
@import "../../node_modules/bootstrap/scss/buttons"
|
||||||
|
@import "../../node_modules/bootstrap/scss/transitions"
|
||||||
|
@import "../../node_modules/bootstrap/scss/dropdown"
|
||||||
|
@import "../../node_modules/bootstrap/scss/button-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/input-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/custom-forms"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/nav"
|
||||||
|
@import "../../node_modules/bootstrap/scss/navbar"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/card"
|
||||||
|
@import "../../node_modules/bootstrap/scss/breadcrumb"
|
||||||
|
@import "../../node_modules/bootstrap/scss/pagination"
|
||||||
|
@import "../../node_modules/bootstrap/scss/badge"
|
||||||
|
@import "../../node_modules/bootstrap/scss/jumbotron"
|
||||||
|
@import "../../node_modules/bootstrap/scss/alert"
|
||||||
|
@import "../../node_modules/bootstrap/scss/progress"
|
||||||
|
@import "../../node_modules/bootstrap/scss/media"
|
||||||
|
@import "../../node_modules/bootstrap/scss/list-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/close"
|
||||||
|
@import "../../node_modules/bootstrap/scss/modal"
|
||||||
|
@import "../../node_modules/bootstrap/scss/tooltip"
|
||||||
|
@import "../../node_modules/bootstrap/scss/popover"
|
||||||
|
@import "../../node_modules/bootstrap/scss/carousel"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/utilities"
|
||||||
|
@import "../../node_modules/bootstrap/scss/print"
|
||||||
|
|
||||||
|
// Pillar components.
|
||||||
|
@import "apps_base"
|
||||||
|
@import "components/base"
|
||||||
|
|
||||||
|
@import "components/jumbotron"
|
||||||
|
@import "components/alerts"
|
||||||
|
@import "components/navbar"
|
||||||
|
@import "components/dropdown"
|
||||||
|
@import "components/footer"
|
||||||
|
@import "components/shortcode"
|
||||||
|
@import "components/statusbar"
|
||||||
|
@import "components/search"
|
||||||
|
@import "components/flyout"
|
||||||
|
@import "components/forms"
|
||||||
|
@import "components/inputs"
|
||||||
|
@import "components/buttons"
|
||||||
|
@import "components/popover"
|
||||||
|
@import "components/tooltip"
|
||||||
|
@import "components/checkbox"
|
||||||
|
@import "components/overlay"
|
||||||
|
@import "components/card"
|
||||||
|
|
||||||
@import _comments
|
@import _comments
|
||||||
@import _error
|
@import _error
|
||||||
@import _search
|
@import _search
|
||||||
|
|
||||||
.container-fluid.blog
|
@import components/base
|
||||||
padding: 0
|
@import components/alerts
|
||||||
|
@import components/navbar
|
||||||
|
@import components/footer
|
||||||
|
@import components/shortcode
|
||||||
|
@import components/statusbar
|
||||||
|
@import components/search
|
||||||
|
@import components/flyout
|
||||||
|
@import components/forms
|
||||||
|
@import components/inputs
|
||||||
|
@import components/buttons
|
||||||
|
@import components/popover
|
||||||
|
@import components/tooltip
|
||||||
|
@import components/checkbox
|
||||||
|
@import components/overlay
|
||||||
|
|
||||||
#blog_container
|
#blog_container
|
||||||
+media-xs
|
+media-xs
|
||||||
flex-direction: column
|
flex-direction: column
|
||||||
padding-top: 0
|
padding-top: 0
|
||||||
display: flex
|
|
||||||
padding:
|
|
||||||
bottom: 15px
|
|
||||||
|
|
||||||
video
|
video
|
||||||
max-width: 100%
|
max-width: 100%
|
||||||
@ -26,7 +101,6 @@
|
|||||||
.form-group
|
.form-group
|
||||||
position: relative
|
position: relative
|
||||||
margin: 0 auto 30px auto
|
margin: 0 auto 30px auto
|
||||||
font-family: $font-body
|
|
||||||
|
|
||||||
input, textarea, select
|
input, textarea, select
|
||||||
+input-generic
|
+input-generic
|
||||||
@ -167,6 +241,56 @@
|
|||||||
#blog_post-edit-container
|
#blog_post-edit-container
|
||||||
padding: 25px
|
padding: 25px
|
||||||
|
|
||||||
|
.blog_index-item
|
||||||
|
.item-picture
|
||||||
|
position: relative
|
||||||
|
width: 100%
|
||||||
|
max-height: 350px
|
||||||
|
min-height: 200px
|
||||||
|
height: auto
|
||||||
|
overflow: hidden
|
||||||
|
border-top-left-radius: 3px
|
||||||
|
border-top-right-radius: 3px
|
||||||
|
+clearfix
|
||||||
|
|
||||||
|
img
|
||||||
|
+position-center-translate
|
||||||
|
width: 100%
|
||||||
|
border-top-left-radius: 3px
|
||||||
|
border-top-right-radius: 3px
|
||||||
|
|
||||||
|
+media-xs
|
||||||
|
min-height: 150px
|
||||||
|
+media-sm
|
||||||
|
min-height: 150px
|
||||||
|
+media-md
|
||||||
|
min-height: 250px
|
||||||
|
+media-lg
|
||||||
|
min-height: 250px
|
||||||
|
|
||||||
|
.item-content
|
||||||
|
+node-details-description
|
||||||
|
|
||||||
|
+media-xs
|
||||||
|
padding:
|
||||||
|
left: 0
|
||||||
|
right: 0
|
||||||
|
|
||||||
|
img
|
||||||
|
display: block
|
||||||
|
margin: 0 auto
|
||||||
|
|
||||||
|
.item-meta
|
||||||
|
color: $color-text-dark-secondary
|
||||||
|
padding:
|
||||||
|
left: 25px
|
||||||
|
right: 25px
|
||||||
|
|
||||||
|
+media-xs
|
||||||
|
padding:
|
||||||
|
left: 10px
|
||||||
|
right: 10px
|
||||||
|
|
||||||
#blog_index-container,
|
#blog_index-container,
|
||||||
#blog_post-create-container,
|
#blog_post-create-container,
|
||||||
#blog_post-edit-container
|
#blog_post-edit-container
|
||||||
@ -185,133 +309,11 @@
|
|||||||
+media-lg
|
+media-lg
|
||||||
width: 100%
|
width: 100%
|
||||||
|
|
||||||
.blog_index-header
|
|
||||||
border-top-left-radius: 3px
|
|
||||||
border-top-right-radius: 3px
|
|
||||||
display: block
|
|
||||||
overflow: hidden
|
|
||||||
position: relative
|
|
||||||
text-align: center
|
|
||||||
width: 100%
|
|
||||||
|
|
||||||
img
|
|
||||||
width: 100%
|
|
||||||
|
|
||||||
.blog_index-item
|
|
||||||
+media-lg
|
|
||||||
max-width: 780px
|
|
||||||
+media-md
|
|
||||||
max-width: 780px
|
|
||||||
+media-sm
|
|
||||||
max-width: 780px
|
|
||||||
|
|
||||||
margin: 15px auto
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
.item-info a
|
|
||||||
color: $color-primary
|
|
||||||
|
|
||||||
.item-picture
|
|
||||||
position: relative
|
|
||||||
width: 100%
|
|
||||||
max-height: 350px
|
|
||||||
min-height: 200px
|
|
||||||
height: auto
|
|
||||||
overflow: hidden
|
|
||||||
border-top-left-radius: 3px
|
|
||||||
border-top-right-radius: 3px
|
|
||||||
+clearfix
|
|
||||||
|
|
||||||
img
|
|
||||||
+position-center-translate
|
|
||||||
width: 100%
|
|
||||||
border-top-left-radius: 3px
|
|
||||||
border-top-right-radius: 3px
|
|
||||||
|
|
||||||
+media-xs
|
|
||||||
min-height: 150px
|
|
||||||
+media-sm
|
|
||||||
min-height: 150px
|
|
||||||
+media-md
|
|
||||||
min-height: 250px
|
|
||||||
+media-lg
|
|
||||||
min-height: 250px
|
|
||||||
|
|
||||||
.item-title
|
|
||||||
color: $color-text-dark
|
|
||||||
display: block
|
|
||||||
font:
|
|
||||||
family: $font-body
|
|
||||||
size: 1.8em
|
|
||||||
|
|
||||||
padding: 10px 25px 10px
|
|
||||||
|
|
||||||
ul.meta
|
|
||||||
+list-meta
|
|
||||||
font-size: .9em
|
|
||||||
padding: 0px 25px 5px
|
|
||||||
|
|
||||||
.item-content
|
|
||||||
+node-details-description
|
|
||||||
font-size: 1.3em
|
|
||||||
padding: 15px 25px 25px
|
|
||||||
|
|
||||||
+media-xs
|
|
||||||
padding:
|
|
||||||
left: 0
|
|
||||||
right: 0
|
|
||||||
|
|
||||||
img
|
|
||||||
display: block
|
|
||||||
margin: 0 auto
|
|
||||||
|
|
||||||
.item-meta
|
|
||||||
color: $color-text-dark-secondary
|
|
||||||
padding:
|
|
||||||
left: 25px
|
|
||||||
right: 25px
|
|
||||||
|
|
||||||
+media-xs
|
|
||||||
padding:
|
|
||||||
left: 10px
|
|
||||||
right: 10px
|
|
||||||
|
|
||||||
.button-create,
|
|
||||||
.button-edit
|
|
||||||
+button($color-success, 3px, true)
|
|
||||||
|
|
||||||
.item-picture+.button-back+.button-edit
|
.item-picture+.button-back+.button-edit
|
||||||
right: 20px
|
right: 20px
|
||||||
top: 20px
|
top: 20px
|
||||||
|
|
||||||
.comments-container
|
|
||||||
padding:
|
|
||||||
left: 20px
|
|
||||||
right: 20px
|
|
||||||
max-width: 680px
|
|
||||||
margin: 0 auto
|
|
||||||
|
|
||||||
+media-lg
|
|
||||||
padding:
|
|
||||||
left: 0
|
|
||||||
right: 0
|
|
||||||
|
|
||||||
.comment-reply-container
|
|
||||||
background-color: transparent
|
|
||||||
|
|
||||||
.comment-reply-field
|
|
||||||
textarea, .comment-reply-meta
|
|
||||||
background-color: $color-background-light
|
|
||||||
|
|
||||||
&.filled
|
|
||||||
.comment-reply-meta
|
|
||||||
background-color: $color-success
|
|
||||||
|
|
||||||
.comment-reply-form
|
|
||||||
+media-xs
|
|
||||||
padding:
|
|
||||||
left: 0
|
|
||||||
|
|
||||||
#blog_post-edit-form
|
#blog_post-edit-form
|
||||||
padding: 0
|
padding: 0
|
||||||
|
|
||||||
@ -371,12 +373,6 @@
|
|||||||
+media-lg
|
+media-lg
|
||||||
width: 25%
|
width: 25%
|
||||||
|
|
||||||
.button-create
|
|
||||||
display: block
|
|
||||||
width: 100%
|
|
||||||
+button($color-success, 6px)
|
|
||||||
margin: 0
|
|
||||||
|
|
||||||
.button-back
|
.button-back
|
||||||
+button($color-info, 6px, true)
|
+button($color-info, 6px, true)
|
||||||
display: block
|
display: block
|
||||||
@ -475,105 +471,6 @@
|
|||||||
text-decoration: none
|
text-decoration: none
|
||||||
color: $color-primary
|
color: $color-primary
|
||||||
|
|
||||||
|
|
||||||
#blog_container
|
|
||||||
&.cloud-blog
|
|
||||||
#blog_index-container,
|
|
||||||
#blog_post-create-container,
|
|
||||||
#blog_post-edit-container
|
|
||||||
width: 100%
|
|
||||||
padding: 25px 30px 20px 30px
|
|
||||||
|
|
||||||
#blog_index-container+#blog_index-sidebar
|
|
||||||
display: none
|
|
||||||
|
|
||||||
#blog_index-container,
|
|
||||||
&.cloud-blog #blog_index-container
|
|
||||||
+media-sm
|
|
||||||
width: 100%
|
|
||||||
|
|
||||||
+media-xs
|
|
||||||
width: 100%
|
|
||||||
|
|
||||||
padding: 0 0 50px 0
|
|
||||||
margin: 0 auto
|
|
||||||
|
|
||||||
.blog_index-item
|
|
||||||
+media-xs
|
|
||||||
width: 100%
|
|
||||||
padding: 10px 25px
|
|
||||||
|
|
||||||
&.list
|
|
||||||
margin: 0 auto
|
|
||||||
padding: 15px 0
|
|
||||||
margin: 0 auto
|
|
||||||
border-bottom: thin solid $color-background
|
|
||||||
|
|
||||||
&:last-child
|
|
||||||
border-bottom: none
|
|
||||||
|
|
||||||
+media-xs
|
|
||||||
width: 100%
|
|
||||||
padding: 15px 10px
|
|
||||||
margin: 0
|
|
||||||
|
|
||||||
a.item-title
|
|
||||||
padding:
|
|
||||||
top: 0
|
|
||||||
bottom: 5px
|
|
||||||
font:
|
|
||||||
size: 1.6em
|
|
||||||
weight: 400
|
|
||||||
family: $font-body
|
|
||||||
|
|
||||||
.item-info
|
|
||||||
color: $color-text-dark-secondary
|
|
||||||
font-size: .9em
|
|
||||||
padding:
|
|
||||||
left: 25px
|
|
||||||
right: 25px
|
|
||||||
|
|
||||||
.item-header
|
|
||||||
width: 50px
|
|
||||||
height: 50px
|
|
||||||
position: absolute
|
|
||||||
top: 20px
|
|
||||||
border-radius: 3px
|
|
||||||
background-color: $color-background
|
|
||||||
overflow: hidden
|
|
||||||
|
|
||||||
img
|
|
||||||
+position-center-translate
|
|
||||||
width: 100%
|
|
||||||
|
|
||||||
i
|
|
||||||
+position-center-translate
|
|
||||||
font-size: 1.2em
|
|
||||||
color: $color-text-dark-hint
|
|
||||||
|
|
||||||
&.nothumb
|
|
||||||
border-radius: 50%
|
|
||||||
|
|
||||||
a.item-title, .item-info
|
|
||||||
padding-left: 70px
|
|
||||||
|
|
||||||
#blog_index-container
|
|
||||||
.blog_index-item
|
|
||||||
position: relative
|
|
||||||
|
|
||||||
+media-xs
|
|
||||||
padding: 25px 0 20px 0
|
|
||||||
|
|
||||||
&.list
|
|
||||||
padding: 15px 10px
|
|
||||||
margin: 0
|
|
||||||
|
|
||||||
+media-xs
|
|
||||||
width: 100%
|
|
||||||
padding: 15px 10px
|
|
||||||
margin: 0
|
|
||||||
|
|
||||||
|
|
||||||
.blog-archive-navigation
|
.blog-archive-navigation
|
||||||
+media-xs
|
+media-xs
|
||||||
font-size: 1em
|
font-size: 1em
|
||||||
@ -603,16 +500,7 @@
|
|||||||
color: $color-text-dark-secondary
|
color: $color-text-dark-secondary
|
||||||
pointer-events: none
|
pointer-events: none
|
||||||
|
|
||||||
.blog-action
|
// Specific tweaks for blogs in the context of a project.
|
||||||
display: flex
|
|
||||||
padding: 10px
|
|
||||||
position: absolute
|
|
||||||
right: 0
|
|
||||||
top: 0
|
|
||||||
z-index: 1
|
|
||||||
|
|
||||||
|
|
||||||
// Specific tweaks for blogs in the context of a project
|
|
||||||
#project_context
|
#project_context
|
||||||
.blog_index-item
|
.blog_index-item
|
||||||
+media-xs
|
+media-xs
|
||||||
@ -637,3 +525,29 @@
|
|||||||
|
|
||||||
.blog-archive-navigation
|
.blog-archive-navigation
|
||||||
margin-left: 35px
|
margin-left: 35px
|
||||||
|
|
||||||
|
// Used on the blog.
|
||||||
|
.comments-compact
|
||||||
|
.comments-list
|
||||||
|
border: none
|
||||||
|
padding: 0 0 15px 0
|
||||||
|
|
||||||
|
.comments-container
|
||||||
|
max-width: 680px
|
||||||
|
margin: 0 auto
|
||||||
|
|
||||||
|
.comment-reply-container
|
||||||
|
background-color: transparent
|
||||||
|
|
||||||
|
.comment-reply-field
|
||||||
|
textarea, .comment-reply-meta
|
||||||
|
background-color: $color-background-light
|
||||||
|
|
||||||
|
&.filled
|
||||||
|
.comment-reply-meta
|
||||||
|
background-color: $color-success
|
||||||
|
|
||||||
|
.comment-reply-form
|
||||||
|
+media-xs
|
||||||
|
padding:
|
||||||
|
left: 0
|
||||||
|
72
src/styles/components/_alerts.sass
Normal file
72
src/styles/components/_alerts.sass
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
.alert
|
||||||
|
margin-bottom: 0
|
||||||
|
text-align: center
|
||||||
|
padding: 10px 20px
|
||||||
|
z-index: 16
|
||||||
|
|
||||||
|
// overriden by alert types
|
||||||
|
color: $color-text-dark
|
||||||
|
background-color: $color-background
|
||||||
|
|
||||||
|
&.alert-danger,
|
||||||
|
&.alert-error
|
||||||
|
background-color: lighten($color-danger, 35%)
|
||||||
|
color: $color-danger
|
||||||
|
.alert-icon, .close
|
||||||
|
color: $color-danger
|
||||||
|
|
||||||
|
&.alert-warning
|
||||||
|
background-color: lighten($color-warning, 20%)
|
||||||
|
color: darken($color-warning, 20%)
|
||||||
|
.alert-icon, .close
|
||||||
|
color: darken($color-warning, 20%)
|
||||||
|
|
||||||
|
&.alert-success
|
||||||
|
background-color: lighten($color-success, 45%)
|
||||||
|
color: $color-success
|
||||||
|
|
||||||
|
.alert-icon, .close
|
||||||
|
color: $color-success
|
||||||
|
|
||||||
|
&.alert-info
|
||||||
|
background-color: lighten($color-info, 30%)
|
||||||
|
color: darken($color-info, 10%)
|
||||||
|
.alert-icon, .close
|
||||||
|
color: darken($color-info, 10%)
|
||||||
|
|
||||||
|
button.close
|
||||||
|
position: absolute
|
||||||
|
right: 10px
|
||||||
|
|
||||||
|
i
|
||||||
|
font-size: .8em
|
||||||
|
|
||||||
|
i.alert-icon
|
||||||
|
&:before
|
||||||
|
font-family: "pillar-font"
|
||||||
|
padding-right: 10px
|
||||||
|
|
||||||
|
&.success:before
|
||||||
|
content: '\e801'
|
||||||
|
&.info:before
|
||||||
|
content: "\e80c"
|
||||||
|
&.warning:before
|
||||||
|
content: "\e80b"
|
||||||
|
&.danger:before,
|
||||||
|
&.error:before
|
||||||
|
content: "\e83d"
|
||||||
|
|
||||||
|
|
||||||
|
/* When there's an alert, disable the fixed top */
|
||||||
|
.alert+.navbar-fixed-top
|
||||||
|
position: relative
|
||||||
|
margin-bottom: 0
|
||||||
|
|
||||||
|
&+.container
|
||||||
|
padding-top: 0
|
||||||
|
|
||||||
|
.alert+.navbar
|
||||||
|
position: relative
|
||||||
|
|
||||||
|
.alert+.navbar+.page-content
|
||||||
|
padding-top: 0
|
29
src/styles/components/_base.sass
Normal file
29
src/styles/components/_base.sass
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
body
|
||||||
|
height: 100%
|
||||||
|
|
||||||
|
+media-sm
|
||||||
|
width: 100%
|
||||||
|
max-width: 100%
|
||||||
|
min-width: auto
|
||||||
|
|
||||||
|
+media-xs
|
||||||
|
width: 100%
|
||||||
|
max-width: 100%
|
||||||
|
min-width: auto
|
||||||
|
|
||||||
|
.container
|
||||||
|
+media-xs
|
||||||
|
max-width: 100%
|
||||||
|
min-width: auto
|
||||||
|
padding:
|
||||||
|
left: 0
|
||||||
|
right: 0
|
||||||
|
|
||||||
|
&.box
|
||||||
|
+container-box
|
||||||
|
|
||||||
|
.page-content
|
||||||
|
background-color: $white
|
||||||
|
|
||||||
|
.container-box
|
||||||
|
+container-box
|
14
src/styles/components/_buttons.sass
Normal file
14
src/styles/components/_buttons.sass
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
.btn-outline
|
||||||
|
background-color: transparent
|
||||||
|
border-width: 1px
|
||||||
|
transition: background-color .1s
|
||||||
|
|
||||||
|
&:focus, &:active
|
||||||
|
box-shadow: none
|
||||||
|
|
||||||
|
.btn-empty
|
||||||
|
background-color: transparent
|
||||||
|
border-color: transparent
|
||||||
|
|
||||||
|
&:focus, &:active
|
||||||
|
box-shadow: none
|
23
src/styles/components/_card.sass
Normal file
23
src/styles/components/_card.sass
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
.card-deck
|
||||||
|
// Custom, as of bootstrap 4.1.3 there is no way to do this.
|
||||||
|
&.card-3-columns
|
||||||
|
.card
|
||||||
|
min-width: 30%
|
||||||
|
max-width: 30%
|
||||||
|
|
||||||
|
|
||||||
|
.card-padless
|
||||||
|
.card
|
||||||
|
border: none
|
||||||
|
|
||||||
|
.card-body
|
||||||
|
padding: 15px 0
|
||||||
|
|
||||||
|
.card-fade
|
||||||
|
img
|
||||||
|
opacity: .8
|
||||||
|
transition: opacity ease-in-out 150ms
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
img
|
||||||
|
opacity: 1
|
8
src/styles/components/_checkbox.sass
Normal file
8
src/styles/components/_checkbox.sass
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
.checkbox label label
|
||||||
|
padding-left: 0
|
||||||
|
|
||||||
|
.checkbox label input[type=checkbox] + label
|
||||||
|
transition: color 100ms ease-in-out
|
||||||
|
|
||||||
|
.checkbox label input[type=checkbox]:checked + label
|
||||||
|
color: $color-success !important
|
13
src/styles/components/_dropdown.sass
Normal file
13
src/styles/components/_dropdown.sass
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// Global, we want all menus to look like this.
|
||||||
|
.dropdown-menu
|
||||||
|
box-shadow: $dropdown-box-shadow
|
||||||
|
top: 95% // So there is less gap between the dropdown and the item.
|
||||||
|
|
||||||
|
> li
|
||||||
|
> a
|
||||||
|
padding: $dropdown-item-padding-y
|
||||||
|
|
||||||
|
// Open dropdown on mouse hover dropdowns in the navbar.
|
||||||
|
nav .dropdown:hover
|
||||||
|
ul.dropdown-menu
|
||||||
|
display: block
|
25
src/styles/components/_flyout.sass
Normal file
25
src/styles/components/_flyout.sass
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* Flyouts (only used on notifications for now) */
|
||||||
|
.flyout
|
||||||
|
background-color: $color-background
|
||||||
|
border-radius: 3px
|
||||||
|
border: thin solid darken($color-background, 3%)
|
||||||
|
box-shadow: 1px 2px 2px rgba(black, .2)
|
||||||
|
display: block
|
||||||
|
font-size: .9em
|
||||||
|
|
||||||
|
& .flyout-title
|
||||||
|
cursor: default
|
||||||
|
display: block
|
||||||
|
float: left
|
||||||
|
font-size: 1.1em
|
||||||
|
font-weight: 600
|
||||||
|
padding: 8px 10px 5px 10px
|
||||||
|
|
||||||
|
&.notifications
|
||||||
|
max-height: 1000%
|
||||||
|
overflow-x: hidden
|
||||||
|
position: absolute
|
||||||
|
right: 0
|
||||||
|
top: 60px
|
||||||
|
width: 420px
|
||||||
|
z-index: 9999
|
117
src/styles/components/_footer.sass
Normal file
117
src/styles/components/_footer.sass
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
/* FOOTER */
|
||||||
|
.footer-wrapper
|
||||||
|
background-color: $color-background
|
||||||
|
position: relative
|
||||||
|
|
||||||
|
&:after
|
||||||
|
background-color: $color-background
|
||||||
|
bottom: 0
|
||||||
|
content: ''
|
||||||
|
position: fixed
|
||||||
|
left: 0
|
||||||
|
right: 0
|
||||||
|
top: 0
|
||||||
|
pointer-events: none
|
||||||
|
z-index: -1
|
||||||
|
|
||||||
|
/* Footer Navigation */
|
||||||
|
footer
|
||||||
|
font-size: .75em
|
||||||
|
padding: 0 0 10px 0
|
||||||
|
|
||||||
|
a
|
||||||
|
color: $color-text-dark-primary
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color: $color-primary
|
||||||
|
|
||||||
|
ul.links
|
||||||
|
float: left
|
||||||
|
padding: 0
|
||||||
|
margin: 0
|
||||||
|
list-style-type: none
|
||||||
|
|
||||||
|
li
|
||||||
|
padding: 0 15px 0 0
|
||||||
|
margin: 0
|
||||||
|
float: left
|
||||||
|
|
||||||
|
#hop
|
||||||
|
display: flex
|
||||||
|
align-items: center
|
||||||
|
justify-content: center
|
||||||
|
visibility: hidden
|
||||||
|
position: fixed
|
||||||
|
right: 25px
|
||||||
|
bottom: 25px
|
||||||
|
z-index: 999
|
||||||
|
cursor: pointer
|
||||||
|
opacity: 0
|
||||||
|
background: $color-background-light
|
||||||
|
width: 32px
|
||||||
|
height: 32px
|
||||||
|
border-radius: 50%
|
||||||
|
color: $color-text-dark-secondary
|
||||||
|
font-size: 2em
|
||||||
|
box-shadow: 0 0 15px rgba(black, .2)
|
||||||
|
transform: scale(0.5)
|
||||||
|
transition: all 150ms ease-in-out
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
transform: scale(1.2)
|
||||||
|
background-color: $color-background-nav
|
||||||
|
|
||||||
|
&.active
|
||||||
|
visibility: visible
|
||||||
|
opacity: 1
|
||||||
|
transform: scale(1)
|
||||||
|
|
||||||
|
|
||||||
|
.footer-navigation
|
||||||
|
font-size: .85em
|
||||||
|
margin-bottom: 5px
|
||||||
|
color: lighten($color-text, 30%)
|
||||||
|
border-top: thick solid lighten($color-text, 60%)
|
||||||
|
padding:
|
||||||
|
top: 15px
|
||||||
|
bottom: 15px
|
||||||
|
|
||||||
|
a
|
||||||
|
color: lighten($color-text, 35%)
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color: $color-primary
|
||||||
|
|
||||||
|
.footer-links
|
||||||
|
i
|
||||||
|
font-size: 80%
|
||||||
|
position: absolute
|
||||||
|
left: -14px
|
||||||
|
top: 20%
|
||||||
|
|
||||||
|
.special
|
||||||
|
padding:
|
||||||
|
top: 10px
|
||||||
|
bottom: 15px
|
||||||
|
font-size: .9em
|
||||||
|
border-left: thin solid darken($color-background, 20%)
|
||||||
|
|
||||||
|
|
||||||
|
img
|
||||||
|
max-width: 100%
|
||||||
|
opacity: .6
|
||||||
|
|
||||||
|
ul.footer-social
|
||||||
|
width: 100%
|
||||||
|
text-align:center
|
||||||
|
margin: 0 auto
|
||||||
|
display: flex
|
||||||
|
align-items: center
|
||||||
|
justify-content: space-around
|
||||||
|
|
||||||
|
li
|
||||||
|
display: inline-block
|
||||||
|
padding: 30px 0
|
||||||
|
|
||||||
|
i
|
||||||
|
font-size: 3em
|
132
src/styles/components/_forms.sass
Normal file
132
src/styles/components/_forms.sass
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
/* File Upload forms */
|
||||||
|
.fieldlist
|
||||||
|
list-style: none
|
||||||
|
padding: 0
|
||||||
|
margin: 10px 0 0 0
|
||||||
|
|
||||||
|
li.fieldlist-item
|
||||||
|
background-color: $color-background-light
|
||||||
|
border: thin solid $color-background
|
||||||
|
border-left: 3px solid $color-primary
|
||||||
|
border-top-right-radius: 3px
|
||||||
|
border-bottom-right-radius: 3px
|
||||||
|
|
||||||
|
margin-bottom: 10px
|
||||||
|
padding: 10px
|
||||||
|
+clearfix
|
||||||
|
|
||||||
|
.form-group
|
||||||
|
margin-bottom: 0 !important // override bs
|
||||||
|
width: 100%
|
||||||
|
|
||||||
|
input.form-control
|
||||||
|
background-color: white !important
|
||||||
|
padding: 0 10px !important
|
||||||
|
border: thin solid $color-background-dark !important
|
||||||
|
|
||||||
|
div[class$="slug"]
|
||||||
|
width: 50%
|
||||||
|
float: left
|
||||||
|
display: flex
|
||||||
|
align-items: center
|
||||||
|
|
||||||
|
label
|
||||||
|
margin-right: 10px
|
||||||
|
|
||||||
|
.fieldlist-action-button
|
||||||
|
+button($color-success, 3px)
|
||||||
|
margin: 0 0 0 10px
|
||||||
|
padding: 5px 10px
|
||||||
|
text-transform: initial
|
||||||
|
|
||||||
|
.form-upload-file
|
||||||
|
margin-bottom: 10px
|
||||||
|
display: flex
|
||||||
|
flex-direction: column
|
||||||
|
|
||||||
|
.form-upload-progress
|
||||||
|
margin-top: 10px
|
||||||
|
|
||||||
|
.form-upload-progress-bar
|
||||||
|
margin-top: 5px
|
||||||
|
background-color: $color-success
|
||||||
|
height: 5px
|
||||||
|
min-width: 0
|
||||||
|
border-radius: 3px
|
||||||
|
|
||||||
|
&.progress-uploading
|
||||||
|
background-color: hsl(hue($color-success), 80%, 65%) !important
|
||||||
|
|
||||||
|
&.progress-processing
|
||||||
|
+stripes($color-success, lighten($color-success, 15%), -45deg, 25px)
|
||||||
|
+stripes-animate
|
||||||
|
animation-duration: 1s
|
||||||
|
|
||||||
|
&.progress-error
|
||||||
|
background-color: $color-danger !important
|
||||||
|
|
||||||
|
.preview-thumbnail
|
||||||
|
width: 50px
|
||||||
|
height: 50px
|
||||||
|
min-width: 50px
|
||||||
|
min-height: 50px
|
||||||
|
margin-right: 10px
|
||||||
|
margin-top: 5px
|
||||||
|
border-radius: 3px
|
||||||
|
background-color: $color-background
|
||||||
|
|
||||||
|
.form-upload-file-meta-container
|
||||||
|
display: flex
|
||||||
|
|
||||||
|
.form-upload-file-meta
|
||||||
|
list-style: none
|
||||||
|
padding: 0
|
||||||
|
margin: 0
|
||||||
|
width: 100%
|
||||||
|
display: flex
|
||||||
|
flex-wrap: wrap
|
||||||
|
flex: 1
|
||||||
|
|
||||||
|
li
|
||||||
|
display: inline-block
|
||||||
|
padding: 5px 10px
|
||||||
|
|
||||||
|
&:first-child
|
||||||
|
padding-left: 0
|
||||||
|
|
||||||
|
&.dimensions, &.size
|
||||||
|
color: $color-text-dark-secondary
|
||||||
|
|
||||||
|
&.delete
|
||||||
|
margin-left: auto
|
||||||
|
|
||||||
|
&.name
|
||||||
|
+text-overflow-ellipsis
|
||||||
|
|
||||||
|
.file_delete
|
||||||
|
color: $color-danger
|
||||||
|
|
||||||
|
.form-upload-file-actions
|
||||||
|
list-style: none
|
||||||
|
padding: 0
|
||||||
|
margin: 0
|
||||||
|
display: flex
|
||||||
|
flex-wrap: wrap
|
||||||
|
|
||||||
|
li
|
||||||
|
display: inline-block
|
||||||
|
padding: 5px 10px
|
||||||
|
|
||||||
|
.file_delete
|
||||||
|
color: $color-danger
|
||||||
|
|
||||||
|
.form-group
|
||||||
|
&.error
|
||||||
|
.form-control, input
|
||||||
|
border-color: $color-danger !important
|
||||||
|
|
||||||
|
ul.error
|
||||||
|
padding: 5px 0 0 0
|
||||||
|
margin: 0
|
||||||
|
color: $color-danger
|
||||||
|
list-style-type: none
|
38
src/styles/components/_inputs.sass
Normal file
38
src/styles/components/_inputs.sass
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/* Inputs */
|
||||||
|
input, input.form-control,
|
||||||
|
textarea, textarea.form-control,
|
||||||
|
select, select.form-control
|
||||||
|
+input-generic
|
||||||
|
|
||||||
|
label, label.control-label
|
||||||
|
+label-generic
|
||||||
|
|
||||||
|
select, select.form-control
|
||||||
|
border-top-left-radius: 3px
|
||||||
|
border-top-right-radius: 3px
|
||||||
|
background-color: $color-background-light
|
||||||
|
|
||||||
|
option
|
||||||
|
background-color: white
|
||||||
|
|
||||||
|
input.fileupload
|
||||||
|
background-color: transparent
|
||||||
|
display: block
|
||||||
|
margin-top: 10px
|
||||||
|
|
||||||
|
textarea
|
||||||
|
resize: vertical
|
||||||
|
|
||||||
|
button, .btn
|
||||||
|
&.disabled
|
||||||
|
opacity: .5 !important
|
||||||
|
pointer-events: none !important
|
||||||
|
text-shadow: none !important
|
||||||
|
user-select: none !important
|
||||||
|
|
||||||
|
.input-group-flex
|
||||||
|
display: flex
|
||||||
|
|
||||||
|
.input-group-separator
|
||||||
|
margin: 10px 0
|
||||||
|
border-top: thin solid $color-background
|
28
src/styles/components/_jumbotron.sass
Normal file
28
src/styles/components/_jumbotron.sass
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// Mainly overrides bootstrap jumbotron settings
|
||||||
|
.jumbotron
|
||||||
|
background-size: cover
|
||||||
|
border-radius: 0
|
||||||
|
padding-top: 10em
|
||||||
|
padding-bottom: 10em
|
||||||
|
|
||||||
|
// Black-transparent gradient from left to right to better read the overlay text.
|
||||||
|
&.jumbotron-overlay
|
||||||
|
position: relative
|
||||||
|
|
||||||
|
&:after
|
||||||
|
background-image: linear-gradient(45deg, rgba(black, .5) 25%, transparent 50%)
|
||||||
|
bottom: 0
|
||||||
|
content: ''
|
||||||
|
left: 0
|
||||||
|
position: absolute
|
||||||
|
right: 0
|
||||||
|
top: 0
|
||||||
|
|
||||||
|
*
|
||||||
|
z-index: 1
|
||||||
|
|
||||||
|
h2, p
|
||||||
|
text-shadow: 1px 1px rgba(black, .2), 1px 1px 25px rgba(black, .5)
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
text-decoration: none
|
201
src/styles/components/_navbar.sass
Normal file
201
src/styles/components/_navbar.sass
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
// Navigation.
|
||||||
|
|
||||||
|
.navbar
|
||||||
|
box-shadow: inset 0 -2px $color-background
|
||||||
|
|
||||||
|
.navbar,
|
||||||
|
nav.sidebar
|
||||||
|
border: none
|
||||||
|
color: $color-text-dark-secondary
|
||||||
|
padding: 0
|
||||||
|
z-index: $z-index-base + 5 /* Flowplayer seems to take up to 11, project container is 12 */
|
||||||
|
|
||||||
|
nav
|
||||||
|
margin-left: auto
|
||||||
|
margin-right: 0
|
||||||
|
|
||||||
|
.navbar-nav
|
||||||
|
margin-right: 0
|
||||||
|
+media-xs
|
||||||
|
margin: 0
|
||||||
|
width: 100%
|
||||||
|
|
||||||
|
.navbar-item
|
||||||
|
align-items: center
|
||||||
|
display: flex
|
||||||
|
user-select: none
|
||||||
|
color: inherit
|
||||||
|
|
||||||
|
+media-sm
|
||||||
|
padding-left: 10px
|
||||||
|
padding-right: 10px
|
||||||
|
|
||||||
|
&:hover, &:focus
|
||||||
|
color: $primary
|
||||||
|
background-color: transparent
|
||||||
|
box-shadow: inset 0 -3px 0 $primary
|
||||||
|
text-decoration: none
|
||||||
|
|
||||||
|
&:focus
|
||||||
|
box-shadow: inset 0 -3px 0 $primary
|
||||||
|
|
||||||
|
&.active
|
||||||
|
color: $primary
|
||||||
|
box-shadow: inset 0 -3px 0 $primary
|
||||||
|
|
||||||
|
li
|
||||||
|
user-select: none
|
||||||
|
position: relative
|
||||||
|
|
||||||
|
img.gravatar
|
||||||
|
border-radius: 999em
|
||||||
|
height: 32px
|
||||||
|
width: 32px
|
||||||
|
box-shadow: 1px 1px 0 rgba(black, .2)
|
||||||
|
position: relative
|
||||||
|
|
||||||
|
.special
|
||||||
|
width: 18px
|
||||||
|
height: 18px
|
||||||
|
border-radius: 999em
|
||||||
|
position: absolute
|
||||||
|
background-color: white
|
||||||
|
z-index: 2
|
||||||
|
display: inline-block
|
||||||
|
top: 10px
|
||||||
|
left: 38px
|
||||||
|
font-size: 1.2em
|
||||||
|
box-shadow: 1px 1px 1px rgba(black, .2)
|
||||||
|
|
||||||
|
&.subscriber
|
||||||
|
background-color: $color-success
|
||||||
|
color: white
|
||||||
|
font-size: .6em
|
||||||
|
|
||||||
|
&.demo
|
||||||
|
background-color: $color-info
|
||||||
|
color: white
|
||||||
|
font-size: .6em
|
||||||
|
|
||||||
|
&.none
|
||||||
|
color: $color-danger
|
||||||
|
|
||||||
|
i
|
||||||
|
+position-center-translate
|
||||||
|
|
||||||
|
.dropdown
|
||||||
|
min-width: 60px // navbar avatar size
|
||||||
|
|
||||||
|
span.fa-stack
|
||||||
|
position: absolute
|
||||||
|
top: 50%
|
||||||
|
left: 50%
|
||||||
|
transform: translate(-50%, -50%)
|
||||||
|
|
||||||
|
ul.dropdown-menu
|
||||||
|
li
|
||||||
|
a
|
||||||
|
white-space: nowrap
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
box-shadow: none // removes underline
|
||||||
|
|
||||||
|
&.subitem // e.g. "Not Sintel? Log out"
|
||||||
|
font-size: .8em
|
||||||
|
padding-top: 0
|
||||||
|
text-transform: initial
|
||||||
|
|
||||||
|
i
|
||||||
|
width: 30px
|
||||||
|
|
||||||
|
&.subscription-status
|
||||||
|
&.none a
|
||||||
|
color: $color-danger
|
||||||
|
|
||||||
|
&.subscriber a
|
||||||
|
color: $color-success
|
||||||
|
|
||||||
|
&.demo a
|
||||||
|
color: $color-info
|
||||||
|
|
||||||
|
span.info
|
||||||
|
display: block
|
||||||
|
|
||||||
|
span.renew
|
||||||
|
display: block
|
||||||
|
color: $color-text-dark-primary
|
||||||
|
font-size: .9em
|
||||||
|
|
||||||
|
|
||||||
|
// Secondary navigation for
|
||||||
|
.nav-secondary
|
||||||
|
align-items: center
|
||||||
|
box-shadow: inset 0 -2px 0 0 $color-background
|
||||||
|
|
||||||
|
.nav-link
|
||||||
|
color: $color-text
|
||||||
|
cursor: pointer
|
||||||
|
transition: box-shadow 150ms ease-in-out
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&.active
|
||||||
|
box-shadow: inset 0 -2px 0 0 $primary
|
||||||
|
|
||||||
|
|
||||||
|
.navbar-overlay
|
||||||
|
+media-lg
|
||||||
|
display: block
|
||||||
|
bottom: 0
|
||||||
|
display: none
|
||||||
|
left: 0
|
||||||
|
height: 100%
|
||||||
|
position: absolute
|
||||||
|
right: 0
|
||||||
|
top: 0
|
||||||
|
transition: background-color 350ms ease-in-out
|
||||||
|
width: 100%
|
||||||
|
z-index: 0
|
||||||
|
|
||||||
|
&.is-active
|
||||||
|
background-color: $color-background-nav
|
||||||
|
text-shadow: none
|
||||||
|
|
||||||
|
.navbar-brand
|
||||||
|
color: inherit
|
||||||
|
padding-left: 4px
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color: $primary
|
||||||
|
|
||||||
|
nav.navbar
|
||||||
|
.navbar-collapse
|
||||||
|
> ul > li > .navbar-item
|
||||||
|
padding: $navbar-nav-link-padding-x
|
||||||
|
height: $nav-link-height
|
||||||
|
|
||||||
|
|
||||||
|
.navbar-backdrop-container
|
||||||
|
width: 100%
|
||||||
|
height: 100%
|
||||||
|
position: absolute
|
||||||
|
top: 0
|
||||||
|
left: 0
|
||||||
|
right: 0
|
||||||
|
bottom: 0
|
||||||
|
|
||||||
|
img
|
||||||
|
display: none
|
||||||
|
position: fixed
|
||||||
|
width: 100%
|
||||||
|
align-self: flex-start
|
||||||
|
+media-md
|
||||||
|
display: block
|
||||||
|
+media-lg
|
||||||
|
display: block
|
||||||
|
|
||||||
|
|
||||||
|
.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu
|
||||||
|
margin-top: 0
|
||||||
|
|
||||||
|
.navbar+.page-content
|
||||||
|
padding-top: $nav-link-height
|
75
src/styles/components/_overlay.sass
Normal file
75
src/styles/components/_overlay.sass
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#page-overlay
|
||||||
|
background-color: rgba(black, .8)
|
||||||
|
position: fixed
|
||||||
|
top: 0
|
||||||
|
bottom: 0
|
||||||
|
right: 0
|
||||||
|
left: 0
|
||||||
|
z-index: $z-index-base + 15
|
||||||
|
visibility: hidden
|
||||||
|
opacity: 0
|
||||||
|
transition: opacity 150ms ease-in-out
|
||||||
|
|
||||||
|
display: flex
|
||||||
|
align-items: center
|
||||||
|
justify-content: center
|
||||||
|
|
||||||
|
img
|
||||||
|
user-select: none
|
||||||
|
display: block
|
||||||
|
max-height: 96%
|
||||||
|
max-width: 96%
|
||||||
|
z-index: 0
|
||||||
|
|
||||||
|
box-shadow: 0 0 15px rgba(black, .2), 0 0 100px rgba(black, .5)
|
||||||
|
p.caption
|
||||||
|
position: absolute
|
||||||
|
bottom: 1%
|
||||||
|
|
||||||
|
&.active
|
||||||
|
visibility: visible
|
||||||
|
opacity: 1
|
||||||
|
|
||||||
|
.no-preview
|
||||||
|
user-select: none
|
||||||
|
z-index: 0
|
||||||
|
color: $color-text-light-secondary
|
||||||
|
|
||||||
|
.nav-prev, .nav-next
|
||||||
|
display: block
|
||||||
|
font:
|
||||||
|
family: 'pillar-font'
|
||||||
|
size: 2em
|
||||||
|
height: 80%
|
||||||
|
width: 50px
|
||||||
|
cursor: pointer
|
||||||
|
color: $color-text-light-secondary
|
||||||
|
z-index: 1
|
||||||
|
+position-center-translate
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color: $color-text-light
|
||||||
|
|
||||||
|
&:before, &:after
|
||||||
|
+position-center-translate
|
||||||
|
|
||||||
|
.nav-prev
|
||||||
|
left: 50px
|
||||||
|
&:before
|
||||||
|
content: '\e839'
|
||||||
|
|
||||||
|
.nav-next
|
||||||
|
left: initial
|
||||||
|
right: 0
|
||||||
|
&:before
|
||||||
|
content: '\e83a'
|
||||||
|
|
||||||
|
|
||||||
|
&.video
|
||||||
|
.video-embed
|
||||||
|
+position-center-translate
|
||||||
|
position: fixed
|
||||||
|
|
||||||
|
iframe
|
||||||
|
width: 853px
|
||||||
|
height: 480px
|
26
src/styles/components/_popover.sass
Normal file
26
src/styles/components/_popover.sass
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
.popover
|
||||||
|
background-color: lighten($color-background-nav, 5%)
|
||||||
|
border-radius: 3px
|
||||||
|
box-shadow: 1px 1px 2px rgba(black, .2)
|
||||||
|
border: thin solid lighten($color-background-nav, 10%)
|
||||||
|
|
||||||
|
&.in
|
||||||
|
opacity: 1
|
||||||
|
|
||||||
|
.popover-title
|
||||||
|
background-color: lighten($color-background-nav, 10%)
|
||||||
|
border-bottom: thin solid lighten($color-background-nav, 3%)
|
||||||
|
color: $color-text-light-primary
|
||||||
|
|
||||||
|
.popover-content
|
||||||
|
color: $color-text-light
|
||||||
|
font-size: .9em
|
||||||
|
|
||||||
|
&.top .arrow:after
|
||||||
|
border-top-color: lighten($color-background-nav, 5%)
|
||||||
|
&.bottom .arrow:after
|
||||||
|
border-bottom-color: lighten($color-background-nav, 5%)
|
||||||
|
&.left .arrow:after
|
||||||
|
border-left-color: lighten($color-background-nav, 5%)
|
||||||
|
&.right .arrow:after
|
||||||
|
border-right-color: lighten($color-background-nav, 5%)
|
87
src/styles/components/_search.sass
Normal file
87
src/styles/components/_search.sass
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#search-overlay
|
||||||
|
position: absolute
|
||||||
|
top: 0
|
||||||
|
left: 0
|
||||||
|
right: 0
|
||||||
|
bottom: 0
|
||||||
|
width: 100%
|
||||||
|
height: 100%
|
||||||
|
pointer-events: none
|
||||||
|
visibility: hidden
|
||||||
|
opacity: 0
|
||||||
|
z-index: $z-index-base + 4
|
||||||
|
transition: opacity 150ms ease-in-out
|
||||||
|
|
||||||
|
&.active
|
||||||
|
opacity: 1
|
||||||
|
visibility: visible
|
||||||
|
background-color: rgba($color-background-nav, .7)
|
||||||
|
|
||||||
|
.search-input
|
||||||
|
+media-lg
|
||||||
|
max-width: 350px
|
||||||
|
+media-md
|
||||||
|
max-width: 350px
|
||||||
|
+media-sm
|
||||||
|
max-width: 120px
|
||||||
|
+media-xs
|
||||||
|
display: block
|
||||||
|
margin: 0 10px
|
||||||
|
position: absolute
|
||||||
|
z-index: $z-index-base
|
||||||
|
right: 5px
|
||||||
|
position: relative
|
||||||
|
float: left
|
||||||
|
padding: 0
|
||||||
|
margin: 0
|
||||||
|
|
||||||
|
.search-icon
|
||||||
|
position: absolute
|
||||||
|
top: 4px
|
||||||
|
left: 10px
|
||||||
|
cursor: pointer
|
||||||
|
|
||||||
|
&:after
|
||||||
|
@extend .tooltip-inner
|
||||||
|
|
||||||
|
content: 'Use advanced search...'
|
||||||
|
font-size: .85em
|
||||||
|
font-style: normal
|
||||||
|
left: -10px
|
||||||
|
opacity: 0
|
||||||
|
pointer-events: none
|
||||||
|
position: absolute
|
||||||
|
top: 30px
|
||||||
|
transition: top 150ms ease-in-out, opacity 150ms ease-in-out
|
||||||
|
width: 150px
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
&:after
|
||||||
|
opacity: 1
|
||||||
|
top: 35px
|
||||||
|
|
||||||
|
|
||||||
|
#cloud-search, .tt-hint
|
||||||
|
+text-overflow-ellipsis
|
||||||
|
border: thin solid $color-background
|
||||||
|
border-radius: 3px
|
||||||
|
font:
|
||||||
|
size: 1em
|
||||||
|
weight: 400
|
||||||
|
margin: 0
|
||||||
|
min-height: 32px
|
||||||
|
outline: none
|
||||||
|
padding: 0 20px 0 40px
|
||||||
|
transition: border 100ms ease-in-out
|
||||||
|
|
||||||
|
&:focus
|
||||||
|
box-shadow: none
|
||||||
|
border: none
|
||||||
|
|
||||||
|
&::placeholder
|
||||||
|
color: rgba($color-text, .5)
|
||||||
|
transition: color 150ms ease-in-out
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
&::placeholder
|
||||||
|
color: rgba($color-text, .6)
|
6
src/styles/components/_shortcode.sass
Normal file
6
src/styles/components/_shortcode.sass
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
p.shortcode.nocap
|
||||||
|
padding: 0.6em 3em
|
||||||
|
font-size: .8em
|
||||||
|
color: $color-text-dark-primary
|
||||||
|
background-color: $color-background-dark
|
||||||
|
border-radius: 3px
|
21
src/styles/components/_statusbar.sass
Normal file
21
src/styles/components/_statusbar.sass
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#status-bar
|
||||||
|
opacity: 0
|
||||||
|
transition: all 250ms ease-in-out
|
||||||
|
|
||||||
|
i
|
||||||
|
margin-right: 5px
|
||||||
|
|
||||||
|
&.info
|
||||||
|
color: $color-info
|
||||||
|
&.error
|
||||||
|
color: $color-danger
|
||||||
|
&.warning
|
||||||
|
color: $color-warning
|
||||||
|
&.success
|
||||||
|
color: $color-success
|
||||||
|
&.default
|
||||||
|
color: $color-text-light
|
||||||
|
|
||||||
|
&.active
|
||||||
|
opacity: 1
|
||||||
|
|
5
src/styles/components/_tooltip.sass
Normal file
5
src/styles/components/_tooltip.sass
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
.tooltip
|
||||||
|
transition: none
|
||||||
|
|
||||||
|
.tooltip-inner
|
||||||
|
white-space: nowrap
|
@ -1,6 +1,71 @@
|
|||||||
/* So it's possible to override the path before importing font-pillar.sass */
|
/* SCROLL TO READ ABOUT UPDATING THIS FILE FROM FONTELLO */
|
||||||
|
|
||||||
|
/* Makes it possible to override the path before importing font-pillar.sass */
|
||||||
$pillar-font-path: "../font" !default
|
$pillar-font-path: "../font" !default
|
||||||
|
|
||||||
|
/* Font aliases */
|
||||||
|
.pi /* blank item with the right spacing */
|
||||||
|
&:after
|
||||||
|
content: ''
|
||||||
|
font-family: "pillar-font"
|
||||||
|
font-style: normal
|
||||||
|
font-weight: normal
|
||||||
|
speak: none
|
||||||
|
display: inline-block
|
||||||
|
text-decoration: inherit
|
||||||
|
width: 1em
|
||||||
|
margin-right: .2em
|
||||||
|
text-align: center
|
||||||
|
font-variant: normal
|
||||||
|
text-transform: none
|
||||||
|
line-height: 1em
|
||||||
|
margin-left: .2em
|
||||||
|
-webkit-font-smoothing: antialiased
|
||||||
|
-moz-osx-font-smoothing: grayscale
|
||||||
|
position: relative
|
||||||
|
|
||||||
|
&:before
|
||||||
|
position: relative
|
||||||
|
|
||||||
|
.pi-license-cc-zero:before
|
||||||
|
content: '\e85a'
|
||||||
|
.pi-license-cc-sa:before
|
||||||
|
content: '\e858'
|
||||||
|
.pi-license-cc-nd:before
|
||||||
|
content: '\e859'
|
||||||
|
.pi-license-cc-nc:before
|
||||||
|
content: '\e857'
|
||||||
|
|
||||||
|
.pi-license-cc-0
|
||||||
|
@extend .pi-license-cc-zero
|
||||||
|
position: relative
|
||||||
|
top: 1px
|
||||||
|
.pi-license-cc-by-sa
|
||||||
|
@extend .pi-license-cc-sa
|
||||||
|
.pi-license-cc-by-nd
|
||||||
|
@extend .pi-license-cc-nd
|
||||||
|
.pi-license-cc-by-nc
|
||||||
|
@extend .pi-license-cc-nc
|
||||||
|
|
||||||
|
.pi-license-cc-by-sa,
|
||||||
|
.pi-license-cc-by-nd,
|
||||||
|
.pi-license-cc-by-nc
|
||||||
|
@extend .pi
|
||||||
|
|
||||||
|
&:after
|
||||||
|
content: '\e807'
|
||||||
|
left: -27px
|
||||||
|
|
||||||
|
&:before
|
||||||
|
left: 27px
|
||||||
|
|
||||||
|
/*
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Here begins the CSS code generated by fontello.com, converted to *
|
||||||
|
* Sass and replaced the path with our variable $pillar-font-path. *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
*/
|
||||||
|
|
||||||
@font-face
|
@font-face
|
||||||
font-family: 'pillar-font'
|
font-family: 'pillar-font'
|
||||||
src: url('#{$pillar-font-path}/pillar-font.woff?55726379') format("woff"), url('#{$pillar-font-path}/pillar-font.woff2?55726379') format("woff2")
|
src: url('#{$pillar-font-path}/pillar-font.woff?55726379') format("woff"), url('#{$pillar-font-path}/pillar-font.woff2?55726379') format("woff2")
|
||||||
|
@ -1,15 +1,84 @@
|
|||||||
@import _normalize
|
// Bootstrap variables and utilities.
|
||||||
|
@import "../../node_modules/bootstrap/scss/functions"
|
||||||
|
@import "../../node_modules/bootstrap/scss/variables"
|
||||||
|
@import "../../node_modules/bootstrap/scss/mixins"
|
||||||
|
|
||||||
@import _config
|
@import _config
|
||||||
@import _utils
|
@import _utils
|
||||||
|
|
||||||
|
// Bootstrap components.
|
||||||
|
@import "../../node_modules/bootstrap/scss/root"
|
||||||
|
@import "../../node_modules/bootstrap/scss/reboot"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/type"
|
||||||
|
@import "../../node_modules/bootstrap/scss/images"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/code"
|
||||||
|
@import "../../node_modules/bootstrap/scss/grid"
|
||||||
|
@import "../../node_modules/bootstrap/scss/tables"
|
||||||
|
@import "../../node_modules/bootstrap/scss/forms"
|
||||||
|
@import "../../node_modules/bootstrap/scss/buttons"
|
||||||
|
@import "../../node_modules/bootstrap/scss/transitions"
|
||||||
|
@import "../../node_modules/bootstrap/scss/dropdown"
|
||||||
|
@import "../../node_modules/bootstrap/scss/button-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/input-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/custom-forms"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/nav"
|
||||||
|
@import "../../node_modules/bootstrap/scss/navbar"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/card"
|
||||||
|
@import "../../node_modules/bootstrap/scss/breadcrumb"
|
||||||
|
@import "../../node_modules/bootstrap/scss/pagination"
|
||||||
|
@import "../../node_modules/bootstrap/scss/badge"
|
||||||
|
@import "../../node_modules/bootstrap/scss/jumbotron"
|
||||||
|
@import "../../node_modules/bootstrap/scss/alert"
|
||||||
|
@import "../../node_modules/bootstrap/scss/progress"
|
||||||
|
@import "../../node_modules/bootstrap/scss/media"
|
||||||
|
@import "../../node_modules/bootstrap/scss/list-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/close"
|
||||||
|
@import "../../node_modules/bootstrap/scss/modal"
|
||||||
|
@import "../../node_modules/bootstrap/scss/tooltip"
|
||||||
|
@import "../../node_modules/bootstrap/scss/popover"
|
||||||
|
@import "../../node_modules/bootstrap/scss/carousel"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/utilities"
|
||||||
|
@import "../../node_modules/bootstrap/scss/print"
|
||||||
|
|
||||||
|
// Pillar components.
|
||||||
|
@import "apps_base"
|
||||||
|
@import "components/base"
|
||||||
|
|
||||||
|
@import "components/jumbotron"
|
||||||
|
@import "components/alerts"
|
||||||
|
@import "components/navbar"
|
||||||
|
@import "components/dropdown"
|
||||||
|
@import "components/footer"
|
||||||
|
@import "components/shortcode"
|
||||||
|
@import "components/statusbar"
|
||||||
|
@import "components/search"
|
||||||
|
|
||||||
|
@import "components/flyout"
|
||||||
|
@import "components/forms"
|
||||||
|
@import "components/inputs"
|
||||||
|
@import "components/buttons"
|
||||||
|
@import "components/popover"
|
||||||
|
@import "components/tooltip"
|
||||||
|
@import "components/checkbox"
|
||||||
|
@import "components/overlay"
|
||||||
|
@import "components/card"
|
||||||
|
|
||||||
|
|
||||||
/* Generic styles (comments, notifications, etc) come from base.css */
|
/* Generic styles (comments, notifications, etc) come from base.css */
|
||||||
|
@import _notifications
|
||||||
|
@import _comments
|
||||||
|
|
||||||
@import _project
|
@import _project
|
||||||
@import _project-sharing
|
@import _project-sharing
|
||||||
@import _project-dashboard
|
@import _project-dashboard
|
||||||
@import _user
|
@import _user
|
||||||
@import _search
|
|
||||||
@import _organizations
|
@import _organizations
|
||||||
|
@import _search
|
||||||
|
|
||||||
/* services, about, etc */
|
/* services, about, etc */
|
||||||
@import _pages
|
@import _pages
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
/* jsTree overrides */
|
/* jsTree overrides */
|
||||||
|
|
||||||
$tree-color-text: $color-text-dark-primary
|
$tree-color-text: $color-text-dark-primary
|
||||||
$tree-color-highlight: hsl(hue($color-background-active), 40%, 50%)
|
$tree-color-highlight: $color-primary-accent
|
||||||
$tree-color-highlight-background: hsl(hue($color-background-active), 40%, 50%)
|
$tree-color-highlight-background: $white
|
||||||
$tree-color-highlight-background-text: white
|
$tree-color-highlight-background-text: $primary
|
||||||
|
|
||||||
.jstree-default
|
.jstree-default
|
||||||
/* list item */
|
/* list item */
|
||||||
@ -63,49 +62,48 @@ $tree-color-highlight-background-text: white
|
|||||||
&.jstree-open
|
&.jstree-open
|
||||||
/* Text of children for an open tree (like a folder) */
|
/* Text of children for an open tree (like a folder) */
|
||||||
.jstree-children > .jstree-node
|
.jstree-children > .jstree-node
|
||||||
padding-left: 15px !important
|
padding-left: 16px !important
|
||||||
|
|
||||||
.jstree-icon:empty
|
.jstree-icon:empty
|
||||||
left: 20px !important
|
left: 20px !important
|
||||||
|
|
||||||
// Tweaks for specific icons
|
// Tweaks for specific icons
|
||||||
&.pi-file-archive
|
&.pi-file-archive
|
||||||
left: 22px !important
|
left: 25px !important
|
||||||
&.pi-folder
|
&.pi-folder
|
||||||
left: 21px !important
|
left: 20px !important
|
||||||
font-size: .9em !important
|
font-size: .9em !important
|
||||||
&.pi-film-thick
|
&.pi-splay
|
||||||
left: 22px !important
|
left: 20px !important
|
||||||
font-size: .85em !important
|
font-size: .85em !important
|
||||||
|
|
||||||
.jstree-anchor
|
.jstree-anchor
|
||||||
box-shadow: inset 1px 0 0 0 rgba($tree-color-text, .2)
|
// box-shadow: inset 1px 0 0 0 $color-background
|
||||||
|
|
||||||
/* Closed Folder */
|
/* Closed Folder */
|
||||||
// &.jstree-closed
|
// &.jstree-closed
|
||||||
|
|
||||||
&.jstree-open .jstree-icon.jstree-ocl,
|
&.jstree-open .jstree-icon.jstree-ocl,
|
||||||
&.jstree-closed .jstree-icon.jstree-ocl
|
&.jstree-closed .jstree-icon.jstree-ocl
|
||||||
|
float: left
|
||||||
|
min-width: 30px
|
||||||
|
opacity: 0
|
||||||
position: absolute
|
position: absolute
|
||||||
z-index: 1
|
z-index: 1
|
||||||
opacity: 0
|
|
||||||
min-width: 30px
|
|
||||||
float: left
|
|
||||||
|
|
||||||
/* The text of the last level item */
|
/* The text of the last level item */
|
||||||
.jstree-anchor
|
.jstree-anchor
|
||||||
+media-xs
|
+media-xs
|
||||||
width: 98%
|
|
||||||
padding: 0 !important
|
padding: 0 !important
|
||||||
|
width: 98%
|
||||||
border: none
|
border: none
|
||||||
|
font-size: 13px
|
||||||
height: inherit
|
height: inherit
|
||||||
line-height: 26px
|
line-height: 24px
|
||||||
overflow: hidden
|
overflow: hidden
|
||||||
padding-left: 28px
|
padding-left: 28px
|
||||||
padding-right: 10px
|
padding-right: 10px
|
||||||
text-overflow: ellipsis
|
text-overflow: ellipsis
|
||||||
transition: none
|
|
||||||
transition: color 50ms ease-in-out, background-color 100ms ease-in-out
|
|
||||||
white-space: nowrap
|
white-space: nowrap
|
||||||
width: 100%
|
width: 100%
|
||||||
|
|
||||||
@ -113,7 +111,7 @@ $tree-color-highlight-background-text: white
|
|||||||
&:after
|
&:after
|
||||||
content: '\e83a' !important
|
content: '\e83a' !important
|
||||||
font-family: 'pillar-font'
|
font-family: 'pillar-font'
|
||||||
color: white
|
color: $tree-color-highlight-background-text
|
||||||
display: none
|
display: none
|
||||||
position: absolute
|
position: absolute
|
||||||
right: 7px
|
right: 7px
|
||||||
@ -121,31 +119,31 @@ $tree-color-highlight-background-text: white
|
|||||||
|
|
||||||
// Icon, not selected
|
// Icon, not selected
|
||||||
.jstree-icon
|
.jstree-icon
|
||||||
color: $color-text-dark-secondary
|
color: $tree-color-text
|
||||||
font-size: 95% !important
|
|
||||||
margin: 0 !important
|
margin: 0 !important
|
||||||
|
|
||||||
/* Selected item */
|
/* Selected item */
|
||||||
&.jstree-clicked
|
&.jstree-clicked
|
||||||
background-color: $tree-color-highlight-background !important
|
background-color: $tree-color-highlight-background !important
|
||||||
color: white !important
|
color: $tree-color-highlight-background-text !important
|
||||||
|
font-weight: bold
|
||||||
|
|
||||||
&:after
|
&:after
|
||||||
display: block
|
display: block
|
||||||
color: white !important
|
color: $tree-color-highlight-background-text !important
|
||||||
|
|
||||||
.jstree-ocl,
|
.jstree-ocl,
|
||||||
.jstree-icon
|
.jstree-icon
|
||||||
color: white
|
color: $tree-color-highlight-background-text
|
||||||
|
|
||||||
/* hover an active item */
|
/* hover an active item */
|
||||||
&.jstree-hovered
|
&.jstree-hovered
|
||||||
background-color: lighten($tree-color-highlight-background, 10%) !important
|
background-color: lighten($tree-color-highlight-background, 10%) !important
|
||||||
box-shadow: none
|
box-shadow: none
|
||||||
color: white !important
|
color: $tree-color-highlight-background-text !important
|
||||||
|
|
||||||
&.jstree-hovered .jstree-icon
|
&.jstree-hovered .jstree-icon
|
||||||
color: white !important
|
color: $tree-color-highlight-background-text !important
|
||||||
|
|
||||||
.jstree-hovered
|
.jstree-hovered
|
||||||
background-color: rgba($tree-color-highlight, .1) !important
|
background-color: rgba($tree-color-highlight, .1) !important
|
||||||
@ -184,8 +182,8 @@ $tree-color-highlight-background-text: white
|
|||||||
position: absolute
|
position: absolute
|
||||||
|
|
||||||
&:empty
|
&:empty
|
||||||
line-height: 26px
|
line-height: 24px
|
||||||
left: 5px
|
left: 3px
|
||||||
|
|
||||||
&.is_subscriber
|
&.is_subscriber
|
||||||
.jstree-node
|
.jstree-node
|
||||||
@ -269,7 +267,7 @@ $tree-color-highlight-background-text: white
|
|||||||
|
|
||||||
.jstree-default .jstree-node.jstree-closed .jstree-icon.jstree-ocl + .jstree-anchor,
|
.jstree-default .jstree-node.jstree-closed .jstree-icon.jstree-ocl + .jstree-anchor,
|
||||||
.jstree-default .jstree-node.jstree-open .jstree-icon.jstree-ocl + .jstree-anchor
|
.jstree-default .jstree-node.jstree-open .jstree-icon.jstree-ocl + .jstree-anchor
|
||||||
padding-left: 28px !important
|
padding-left: 24px !important
|
||||||
|
|
||||||
/* hovered text */
|
/* hovered text */
|
||||||
.jstree-default .jstree-hovered,
|
.jstree-default .jstree-hovered,
|
||||||
@ -280,11 +278,11 @@ $tree-color-highlight-background-text: white
|
|||||||
|
|
||||||
a.jstree-anchor.jstree-clicked+ul li a.jstree-anchor.jstree-clicked
|
a.jstree-anchor.jstree-clicked+ul li a.jstree-anchor.jstree-clicked
|
||||||
background-color: rgba($tree-color-highlight-background, .8) !important
|
background-color: rgba($tree-color-highlight-background, .8) !important
|
||||||
color: white !important
|
color: $tree-color-highlight-background-text !important
|
||||||
|
|
||||||
a.jstree-anchor.jstree-clicked+ul li a.jstree-anchor.jstree-clicked+ul li a.jstree-anchor.jstree-clicked
|
a.jstree-anchor.jstree-clicked+ul li a.jstree-anchor.jstree-clicked+ul li a.jstree-anchor.jstree-clicked
|
||||||
background-color: rgba($tree-color-highlight-background, .8) !important
|
background-color: rgba($tree-color-highlight-background, .8) !important
|
||||||
color: white !important
|
color: $tree-color-highlight-background-text !important
|
||||||
|
|
||||||
i.jstree-icon.jstree-ocl
|
i.jstree-icon.jstree-ocl
|
||||||
color: rgba($tree-color-text, .5) !important
|
color: rgba($tree-color-text, .5) !important
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
$videoplayer-controls-color: white
|
$videoplayer-controls-color: white
|
||||||
$videoplayer-background-color: $color-background-nav
|
$videoplayer-background-color: $black
|
||||||
|
|
||||||
.video-js
|
.video-js
|
||||||
.vjs-big-play-button:before, .vjs-control:before, .vjs-modal-dialog
|
.vjs-big-play-button:before, .vjs-control:before, .vjs-modal-dialog
|
||||||
|
@ -1,8 +1,76 @@
|
|||||||
@import _normalize
|
// Bootstrap variables and utilities.
|
||||||
|
@import "../../node_modules/bootstrap/scss/functions"
|
||||||
|
@import "../../node_modules/bootstrap/scss/variables"
|
||||||
|
@import "../../node_modules/bootstrap/scss/mixins"
|
||||||
|
|
||||||
@import _config
|
@import _config
|
||||||
@import _utils
|
@import _utils
|
||||||
|
|
||||||
|
// Bootstrap components.
|
||||||
|
@import "../../node_modules/bootstrap/scss/root"
|
||||||
|
@import "../../node_modules/bootstrap/scss/reboot"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/type"
|
||||||
|
@import "../../node_modules/bootstrap/scss/images"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/code"
|
||||||
|
@import "../../node_modules/bootstrap/scss/grid"
|
||||||
|
@import "../../node_modules/bootstrap/scss/tables"
|
||||||
|
@import "../../node_modules/bootstrap/scss/forms"
|
||||||
|
@import "../../node_modules/bootstrap/scss/buttons"
|
||||||
|
@import "../../node_modules/bootstrap/scss/transitions"
|
||||||
|
@import "../../node_modules/bootstrap/scss/dropdown"
|
||||||
|
@import "../../node_modules/bootstrap/scss/button-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/input-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/custom-forms"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/nav"
|
||||||
|
@import "../../node_modules/bootstrap/scss/navbar"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/card"
|
||||||
|
@import "../../node_modules/bootstrap/scss/breadcrumb"
|
||||||
|
@import "../../node_modules/bootstrap/scss/pagination"
|
||||||
|
@import "../../node_modules/bootstrap/scss/badge"
|
||||||
|
@import "../../node_modules/bootstrap/scss/jumbotron"
|
||||||
|
@import "../../node_modules/bootstrap/scss/alert"
|
||||||
|
@import "../../node_modules/bootstrap/scss/progress"
|
||||||
|
@import "../../node_modules/bootstrap/scss/media"
|
||||||
|
@import "../../node_modules/bootstrap/scss/list-group"
|
||||||
|
@import "../../node_modules/bootstrap/scss/close"
|
||||||
|
@import "../../node_modules/bootstrap/scss/modal"
|
||||||
|
@import "../../node_modules/bootstrap/scss/tooltip"
|
||||||
|
@import "../../node_modules/bootstrap/scss/popover"
|
||||||
|
@import "../../node_modules/bootstrap/scss/carousel"
|
||||||
|
|
||||||
|
@import "../../node_modules/bootstrap/scss/utilities"
|
||||||
|
@import "../../node_modules/bootstrap/scss/print"
|
||||||
|
|
||||||
|
// Pillar components.
|
||||||
|
@import "apps_base"
|
||||||
|
@import "components/base"
|
||||||
|
|
||||||
|
@import "components/jumbotron"
|
||||||
|
@import "components/alerts"
|
||||||
|
@import "components/navbar"
|
||||||
|
@import "components/dropdown"
|
||||||
|
@import "components/footer"
|
||||||
|
@import "components/shortcode"
|
||||||
|
@import "components/statusbar"
|
||||||
|
@import "components/search"
|
||||||
|
|
||||||
|
@import "components/flyout"
|
||||||
|
@import "components/forms"
|
||||||
|
@import "components/inputs"
|
||||||
|
@import "components/buttons"
|
||||||
|
@import "components/popover"
|
||||||
|
@import "components/tooltip"
|
||||||
|
@import "components/checkbox"
|
||||||
|
@import "components/overlay"
|
||||||
|
@import "components/card"
|
||||||
|
|
||||||
|
@import _notifications
|
||||||
@import _comments
|
@import _comments
|
||||||
|
|
||||||
@import _project
|
@import _project
|
||||||
@import _project-sharing
|
@import _project-sharing
|
||||||
@import _project-dashboard
|
@import _project-dashboard
|
||||||
|
@ -7,8 +7,7 @@ $color-theatre-background-dark: darken($color-theatre-background, 5%)
|
|||||||
|
|
||||||
$theatre-width: 350px
|
$theatre-width: 350px
|
||||||
|
|
||||||
body.theatre,
|
body.theatre
|
||||||
body.theatre .container-page
|
|
||||||
background-color: $color-theatre-background
|
background-color: $color-theatre-background
|
||||||
nav.navbar
|
nav.navbar
|
||||||
+media-lg
|
+media-lg
|
||||||
@ -26,6 +25,7 @@ body.theatre .container-page
|
|||||||
display: flex
|
display: flex
|
||||||
align-items: center
|
align-items: center
|
||||||
justify-content: center
|
justify-content: center
|
||||||
|
|
||||||
.page-body
|
.page-body
|
||||||
height: 100%
|
height: 100%
|
||||||
width: 100%
|
width: 100%
|
||||||
|
@ -6,20 +6,21 @@
|
|||||||
| {% if node_type_name == 'group' %}
|
| {% if node_type_name == 'group' %}
|
||||||
| {% set node_type_name = 'folder' %}
|
| {% set node_type_name = 'folder' %}
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
li(class="button-{{ node_type['name'] }}")
|
li.dropdown-item(class="button-{{ node_type['name'] }}")
|
||||||
a.item_add_node(
|
a.item_add_node(
|
||||||
href="#",
|
href="#",
|
||||||
title="{{ node_type['description'] }}",
|
title="{{ node_type['description'] }}",
|
||||||
data-node-type-name="{{ node_type['name'] }}",
|
data-node-type-name="{{ node_type['name'] }}",
|
||||||
data-toggle="tooltip",
|
data-toggle="tooltip",
|
||||||
data-placement="left")
|
data-placement="left")
|
||||||
i.pi(class="icon-{{ node_type['name'] }}")
|
i.pi(class="icon-{{ node_type['name'] }}")
|
||||||
| {% if node_type_name == 'group_texture' %}
|
| {% if node_type_name == 'group_texture' %}
|
||||||
| Texture Folder
|
| Texture Folder
|
||||||
| {% elif node_type_name == 'group_hdri' %}
|
| {% elif node_type_name == 'group_hdri' %}
|
||||||
| HDRi Folder
|
| HDRi Folder
|
||||||
| {% else %}
|
| {% else %}
|
||||||
| {{ node_type_name }}
|
span.text-capitalize
|
||||||
|
|{{ node_type_name }}
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
| {% endfor %}
|
| {% endfor %}
|
||||||
|
@ -28,15 +28,15 @@
|
|||||||
span Add files...
|
span Add files...
|
||||||
input(type='file', name='file', multiple='')
|
input(type='file', name='file', multiple='')
|
||||||
|
|
||||||
button.btn.btn-primary.start(type='submit')
|
button.btn.btn-outline-primary.start(type='submit')
|
||||||
i.pi-upload
|
i.pi-upload
|
||||||
span Start upload
|
span Start Upload
|
||||||
|
|
||||||
button.btn.btn-warning.cancel(type='reset')
|
button.btn.btn-outline-warning.cancel(type='reset')
|
||||||
i.pi-cancel
|
i.pi-cancel
|
||||||
span Cancel upload
|
span Cancel Upload
|
||||||
|
|
||||||
button.btn.btn-danger.delete(type='button')
|
button.btn.btn-outline-danger.delete(type='button')
|
||||||
i.pi-trash
|
i.pi-trash
|
||||||
span Delete
|
span Delete
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ script#template-upload(type="text/x-tmpl").
|
|||||||
</button>
|
</button>
|
||||||
{% } %}
|
{% } %}
|
||||||
{% if (!i) { %}
|
{% if (!i) { %}
|
||||||
<button class="btn btn-warning cancel">
|
<button class="btn btn-outline-secondary cancel">
|
||||||
<i class="ion-close-round"></i>
|
<i class="ion-close-round"></i>
|
||||||
<span>Cancel</span>
|
<span>Cancel</span>
|
||||||
</button>
|
</button>
|
||||||
@ -61,7 +61,7 @@ script#template-download(type="text/x-tmpl").
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% if (file.deleteUrl) { %}
|
{% if (file.deleteUrl) { %}
|
||||||
<button class="btn btn-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
|
<button class="btn btn-outline-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
|
||||||
<i class="ion-trash-b"></i>
|
<i class="ion-trash-b"></i>
|
||||||
<span>Delete</span>
|
<span>Delete</span>
|
||||||
</button>
|
</button>
|
||||||
@ -71,7 +71,7 @@ script#template-download(type="text/x-tmpl").
|
|||||||
Create
|
Create
|
||||||
</div>
|
</div>
|
||||||
{% } else { %}
|
{% } else { %}
|
||||||
<button class="btn btn-warning cancel">
|
<button class="btn btn-outline-secondary cancel">
|
||||||
<i class="ion-close-round"></i>
|
<i class="ion-close-round"></i>
|
||||||
<span>Cancel</span>
|
<span>Cancel</span>
|
||||||
</button>
|
</button>
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
| {% macro navigation_tabs(title) %}
|
|
||||||
|
|
||||||
nav#nav-tabs
|
|
||||||
ul#nav-tabs__list
|
|
||||||
li.nav-tabs__list-tab(
|
|
||||||
class="{% if title == 'homepage' %}active{% endif %}")
|
|
||||||
a(href="{{ url_for('main.homepage') }}") Activity
|
|
||||||
|
|
||||||
li.nav-tabs__list-tab(
|
|
||||||
class="{% if title == 'home' %}active{% endif %}")
|
|
||||||
a(href="{{ url_for('projects.home_project') }}") Home
|
|
||||||
|
|
||||||
li.nav-tabs__list-tab(
|
|
||||||
class="{% if title == 'dashboard' %}active{% endif %}")
|
|
||||||
a(href="{{ url_for('projects.index') }}") My Projects
|
|
||||||
|
|
||||||
| {% if current_user.has_organizations() %}
|
|
||||||
li.nav-tabs__list-tab(
|
|
||||||
class="{% if title == 'organizations' %}active{% endif %}")
|
|
||||||
a(
|
|
||||||
href="{{ url_for('pillar.web.organizations.index') }}",
|
|
||||||
title="My Organizations")
|
|
||||||
| My Organizations
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% endmacro %}
|
|
@ -9,5 +9,5 @@
|
|||||||
.modal-body
|
.modal-body
|
||||||
| ...
|
| ...
|
||||||
.modal-footer
|
.modal-footer
|
||||||
button.btn.btn-default(type='button', data-dismiss='modal') Close
|
button.btn.btn-outline-secondary(type='button', data-dismiss='modal') Close
|
||||||
button.btn.btn-primary(type='button') Save changes
|
button.btn.btn-primary(type='button') Save changes
|
||||||
|
@ -66,10 +66,9 @@ html(lang="en")
|
|||||||
| {% if not title %}{% set title="default" %}{% endif %}
|
| {% if not title %}{% set title="default" %}{% endif %}
|
||||||
|
|
||||||
body(class="{{ title }}")
|
body(class="{{ title }}")
|
||||||
.container-page
|
.page-content
|
||||||
.page-content
|
.page-body
|
||||||
.page-body
|
| {% block body %}{% endblock %}
|
||||||
| {% block body %}{% endblock %}
|
|
||||||
|
|
||||||
| {% block footer_container %}
|
| {% block footer_container %}
|
||||||
#footer-container
|
#footer-container
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
| {% block menu_body %}
|
| {% block menu_body %}
|
||||||
| {% if current_user.is_authenticated %}
|
| {% if current_user.is_authenticated %}
|
||||||
|
|
||||||
li(class="dropdown")
|
li.dropdown
|
||||||
| {% block menu_avatar %}
|
| {% block menu_avatar %}
|
||||||
a.navbar-item.dropdown-toggle(href="#", data-toggle="dropdown", title="{{ current_user.email }}")
|
a.navbar-item.dropdown-toggle(href="#", data-toggle="dropdown", title="{{ current_user.email }}")
|
||||||
img.gravatar(
|
img.gravatar(
|
||||||
@ -9,42 +9,38 @@ li(class="dropdown")
|
|||||||
alt="Avatar")
|
alt="Avatar")
|
||||||
| {% endblock menu_avatar %}
|
| {% endblock menu_avatar %}
|
||||||
|
|
||||||
ul.dropdown-menu
|
ul.dropdown-menu.dropdown-menu-right
|
||||||
| {% if not current_user.has_role('protected') %}
|
| {% if not current_user.has_role('protected') %}
|
||||||
| {% block menu_list %}
|
| {% block menu_list %}
|
||||||
li
|
li
|
||||||
a.navbar-item(
|
a.navbar-item(
|
||||||
href="{{ url_for('projects.home_project') }}"
|
href="{{ url_for('projects.home_project') }}"
|
||||||
title="Home")
|
title="Home")
|
||||||
i.pi-home
|
| #[i.pi-home] Home
|
||||||
| Home
|
|
||||||
|
|
||||||
li
|
li
|
||||||
a.navbar-item(
|
a.navbar-item(
|
||||||
href="{{ url_for('projects.index') }}"
|
href="{{ url_for('projects.index') }}"
|
||||||
title="My Projects")
|
title="My Projects")
|
||||||
i.pi-star
|
| #[i.pi-star] My Projects
|
||||||
| My Projects
|
|
||||||
|
|
||||||
| {% if current_user.has_organizations() %}
|
| {% if current_user.has_organizations() %}
|
||||||
li
|
li
|
||||||
a.navbar-item(
|
a.navbar-item(
|
||||||
href="{{ url_for('pillar.web.organizations.index') }}"
|
href="{{ url_for('pillar.web.organizations.index') }}"
|
||||||
title="My Organizations")
|
title="My Organizations")
|
||||||
i.pi-users
|
| #[i.pi-users] My Organizations
|
||||||
| My Organizations
|
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
|
||||||
li
|
li
|
||||||
a.navbar-item(
|
a.navbar-item(
|
||||||
href="{{ url_for('settings.profile') }}"
|
href="{{ url_for('settings.profile') }}"
|
||||||
title="Settings")
|
title="Settings")
|
||||||
i.pi-cog
|
| #[i.pi-cog] Settings
|
||||||
| Settings
|
|
||||||
|
|
||||||
| {% endblock menu_list %}
|
| {% endblock menu_list %}
|
||||||
|
|
||||||
li.divider(role="separator")
|
li.dropdown-divider(role="separator")
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
|
||||||
li
|
li
|
||||||
@ -59,8 +55,9 @@ li(class="dropdown")
|
|||||||
|
|
||||||
| {% else %}
|
| {% else %}
|
||||||
|
|
||||||
li.nav-item-sign-in
|
li.pt-1.pr-1
|
||||||
a.navbar-item(href="{{ url_for('users.login') }}")
|
a.btn.btn-sm.btn-outline-primary.px-3(
|
||||||
| Log in
|
href="{{ url_for('users.login') }}")
|
||||||
|
| Log In
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
| {% endblock menu_body %}
|
| {% endblock menu_body %}
|
||||||
|
@ -5,21 +5,21 @@ section.node-preview-forbidden
|
|||||||
|
|
||||||
div
|
div
|
||||||
p Available to Blender Cloud subscribers
|
p Available to Blender Cloud subscribers
|
||||||
hr
|
hr.bg-white
|
||||||
| {% if current_user.has_cap('can-renew-subscription') %}
|
| {% if current_user.has_cap('can-renew-subscription') %}
|
||||||
p
|
p
|
||||||
small You have a subscription, it just needs to be renewed.
|
small You have a subscription, it just needs to be renewed.
|
||||||
a.btn(href="/renew")
|
a.btn.btn-light(href="/renew")
|
||||||
| #[i.pi-heart] Renew Subscription
|
| #[i.pi-heart] Renew Subscription
|
||||||
| {% else %}
|
| {% else %}
|
||||||
p
|
p
|
||||||
small Support Blender and get awesome stuff!
|
small Support Blender and get awesome stuff!
|
||||||
a.btn(href="{{ url_for('cloud.join') }}")
|
a.btn.btn-light(href="{{ url_for('cloud.join') }}")
|
||||||
| #[i.pi-heart] Get a Subscription
|
| #[i.pi-heart] Get a Subscription
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
|
||||||
| {% if current_user.is_anonymous %}
|
| {% if current_user.is_anonymous %}
|
||||||
p(style="margin-top: 15px")
|
p(style="margin-top: 15px")
|
||||||
small
|
small
|
||||||
a(href="{{ url_for('users.login') }}") Already a subscriber? Log in
|
a.text-white(href="{{ url_for('users.login') }}") Already a subscriber? Log in
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
@ -61,7 +61,7 @@ script(type="text/javascript").
|
|||||||
}
|
}
|
||||||
|
|
||||||
{% if node.has_method('PUT') %}
|
{% if node.has_method('PUT') %}
|
||||||
$('.project-mode-view').show();
|
$('.project-mode-view').displayAs('inline-block');
|
||||||
{% else %}
|
{% else %}
|
||||||
$('.project-mode-view').hide();
|
$('.project-mode-view').hide();
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -23,7 +23,7 @@ section.node-preview.video
|
|||||||
|
|
||||||
| {% block node_download %}
|
| {% block node_download %}
|
||||||
| {% if node.file_variations %}
|
| {% if node.file_variations %}
|
||||||
button.btn.btn-default.dropdown-toggle(
|
button.btn.btn-outline-secondary.dropdown-toggle(
|
||||||
type="button",
|
type="button",
|
||||||
data-toggle="dropdown",
|
data-toggle="dropdown",
|
||||||
aria-haspopup="true",
|
aria-haspopup="true",
|
||||||
|
@ -1,142 +0,0 @@
|
|||||||
//- ******************************************************* -//
|
|
||||||
| {% import 'projects/_macros.html' as projectmacros %}
|
|
||||||
| {% macro render_blog_post(node, project=None, pages=None) %}
|
|
||||||
| {% if node.picture %}
|
|
||||||
a.blog_index-header(href="{{ node.url }}")
|
|
||||||
img(src="{{ node.picture.thumbnail('h', api=api) }}")
|
|
||||||
| {% endif %}
|
|
||||||
| {% if project and project._id != config.MAIN_PROJECT_ID %}
|
|
||||||
| {{ projectmacros.render_secondary_navigation(project, pages=pages) }}
|
|
||||||
| {% endif %}
|
|
||||||
.blog_index-item
|
|
||||||
a.item-title(
|
|
||||||
href="{{ node.url }}")
|
|
||||||
| {{ node.name }}
|
|
||||||
ul.meta
|
|
||||||
| {% if node.project.name %}
|
|
||||||
li {{ node.project.name }}
|
|
||||||
| {% endif %}
|
|
||||||
| {% if node.user.full_name%}
|
|
||||||
li.who
|
|
||||||
| by {{ node.user.full_name }}
|
|
||||||
| {% endif %}
|
|
||||||
li.when
|
|
||||||
a(href="{{ node.url }}",
|
|
||||||
title="Updated {{ node._updated | pretty_date }}")
|
|
||||||
| {{ node._created | pretty_date }}
|
|
||||||
li
|
|
||||||
a(href="{{ node.url }}#comments")
|
|
||||||
| comment
|
|
||||||
|
|
||||||
|
|
||||||
.item-content
|
|
||||||
| {{ node.properties | markdowned('content') }}
|
|
||||||
|
|
||||||
| {% endmacro %}
|
|
||||||
|
|
||||||
//- ******************************************************* -//
|
|
||||||
| {% macro render_blog_list_item(node) %}
|
|
||||||
.blog_index-item.list
|
|
||||||
|
|
||||||
| {% if node.picture %}
|
|
||||||
a.item-header(href="{{ node.url }}")
|
|
||||||
img.image(src="{{ node.picture.thumbnail('s', api=api) }}")
|
|
||||||
| {% else %}
|
|
||||||
a.item-header.nothumb(href="{{ node.url }}")
|
|
||||||
i.pi-document-text
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
a.item-title(
|
|
||||||
href="{{ node.url }}")
|
|
||||||
| {{node.name}}
|
|
||||||
|
|
||||||
.item-info.
|
|
||||||
#[span(title="{{node._created}}") {{node._created | pretty_date }}]
|
|
||||||
{% if node._created != node._updated %}
|
|
||||||
#[span(title="{{node._updated}}") (updated {{node._updated | pretty_date }})]
|
|
||||||
{% endif %}
|
|
||||||
{% if node.properties.category %} · {{node.properties.category}}{% endif %}
|
|
||||||
· {{node.user.full_name}}
|
|
||||||
{% if node.properties.status != 'published' %} · {{ node.properties.status}} {% endif %}
|
|
||||||
|
|
||||||
| {% endmacro %}
|
|
||||||
|
|
||||||
|
|
||||||
//- ******************************************************* -//
|
|
||||||
| {% macro render_blog_index(project, posts, can_create_blog_posts, api, more_posts_available, posts_meta, pages=None) %}
|
|
||||||
| {% if can_create_blog_posts %}
|
|
||||||
.blog-action
|
|
||||||
a.btn.btn-default.button-create(href="{{url_for('nodes.posts_create', project_id=project._id)}}")
|
|
||||||
i.pi-plus
|
|
||||||
| Create New Post
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% if posts %}
|
|
||||||
| {{ render_blog_post(posts[0], project=project, pages=pages) }}
|
|
||||||
|
|
||||||
| {% for node in posts[1:] %}
|
|
||||||
| {% if loop.first %}
|
|
||||||
.blog-archive-navigation
|
|
||||||
span Blasts from the past
|
|
||||||
| {% endif %}
|
|
||||||
| {{ render_blog_list_item(node) }}
|
|
||||||
| {% endfor %}
|
|
||||||
|
|
||||||
| {% if more_posts_available %}
|
|
||||||
.blog-archive-navigation
|
|
||||||
a(href="{{ project.blog_archive_url }}")
|
|
||||||
| {{posts_meta.total - posts|length}} more blog posts over here
|
|
||||||
i.pi-angle-right
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% else %}
|
|
||||||
|
|
||||||
.blog_index-item
|
|
||||||
.item-content No posts... yet!
|
|
||||||
|
|
||||||
| {% endif %} {# posts #}
|
|
||||||
| {% endmacro %}
|
|
||||||
|
|
||||||
|
|
||||||
//- Macro for rendering the navigation buttons for prev/next pages -//
|
|
||||||
| {% macro render_archive_pagination(project) %}
|
|
||||||
.blog-archive-navigation
|
|
||||||
| {% if project.blog_archive_prev %}
|
|
||||||
a.archive-nav-button(
|
|
||||||
href="{{ project.blog_archive_prev }}", rel="prev")
|
|
||||||
i.pi-angle-left
|
|
||||||
| Previous page
|
|
||||||
| {% else %}
|
|
||||||
span.archive-nav-button
|
|
||||||
i.pi-angle-left
|
|
||||||
| Previous page
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
a.archive-nav-button(
|
|
||||||
href="{{ url_for('main.project_blog', project_url=project.url) }}")
|
|
||||||
| Blog Index
|
|
||||||
|
|
||||||
| {% if project.blog_archive_next %}
|
|
||||||
a.archive-nav-button(
|
|
||||||
href="{{ project.blog_archive_next }}", rel="next")
|
|
||||||
| Next page
|
|
||||||
i.pi-angle-right
|
|
||||||
| {% else %}
|
|
||||||
span.archive-nav-button
|
|
||||||
| Next page
|
|
||||||
i.pi-angle-right
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% endmacro %}
|
|
||||||
|
|
||||||
| {% macro render_archive(project, posts, posts_meta) %}
|
|
||||||
|
|
||||||
| {{ render_archive_pagination(project) }}
|
|
||||||
|
|
||||||
| {% for node in posts %}
|
|
||||||
| {{ render_blog_list_item(node) }}
|
|
||||||
| {% endfor %}
|
|
||||||
|
|
||||||
| {{ render_archive_pagination(project) }}
|
|
||||||
|
|
||||||
| {% endmacro %}
|
|
@ -2,11 +2,8 @@
|
|||||||
| {% import 'nodes/custom/blog/_macros.html' as blogmacros %}
|
| {% import 'nodes/custom/blog/_macros.html' as blogmacros %}
|
||||||
|
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
.container-fluid
|
.container
|
||||||
#blog_container.cloud-blog
|
h3 Blog Archive
|
||||||
#blog_index-container
|
|
||||||
.blog_index-header
|
|
||||||
h3 Blog Archive
|
|
||||||
|
|
||||||
| {{ blogmacros.render_archive(project, posts, posts_meta) }}
|
| {{ blogmacros.render_archive(project, posts, posts_meta) }}
|
||||||
| {% endblock body %}
|
| {% endblock body %}
|
||||||
|
@ -9,9 +9,7 @@ link(href="{{ url_for('static_pillar', filename='assets/css/blog.css') }}", rel=
|
|||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
| {% block project_context %}
|
| {% block project_context %}
|
||||||
#blog_container
|
| {{ blogmacros.render_blog_index(project, posts, can_create_blog_posts, api, more_posts_available, posts_meta) }}
|
||||||
#blog_index-container.expand-image-links
|
|
||||||
| {{ blogmacros.render_blog_index(project, posts, can_create_blog_posts, api, more_posts_available, posts_meta) }}
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
| {% block project_tree %}
|
| {% block project_tree %}
|
||||||
|
@ -10,10 +10,7 @@ link(href="{{ url_for('static_cloud', filename='assets/css/project-landing.css')
|
|||||||
| {% endblock css %}
|
| {% endblock css %}
|
||||||
|
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
.container-fluid.blog
|
| {{ blogmacros.render_blog_index(project, posts, can_create_blog_posts, api, more_posts_available, posts_meta, pages=pages) }}
|
||||||
#blog_container.cloud-blog
|
|
||||||
#blog_index-container.expand-image-links
|
|
||||||
| {{ blogmacros.render_blog_index(project, posts, can_create_blog_posts, api, more_posts_available, posts_meta, pages=pages) }}
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
| {% block footer_scripts %}
|
| {% block footer_scripts %}
|
||||||
@ -25,7 +22,7 @@ script.
|
|||||||
/* Expand images when their link points to a jpg/png/gif */
|
/* Expand images when their link points to a jpg/png/gif */
|
||||||
/* TODO: De-duplicate code from view post */
|
/* TODO: De-duplicate code from view post */
|
||||||
var page_overlay = document.getElementById('page-overlay');
|
var page_overlay = document.getElementById('page-overlay');
|
||||||
$('.blog_index-item .item-content a img').on('click', function(e){
|
$('.item-content a img').on('click', function(e){
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
var href = $(this).parent().attr('href');
|
var href = $(this).parent().attr('href');
|
||||||
|
@ -32,7 +32,6 @@
|
|||||||
.comment-reply-preview-md
|
.comment-reply-preview-md
|
||||||
.comment-reply-info
|
.comment-reply-info
|
||||||
.comment-action-cancel(
|
.comment-action-cancel(
|
||||||
type="button",
|
|
||||||
title="{{ _('cancel') }}")
|
title="{{ _('cancel') }}")
|
||||||
span {{ _('cancel') }}
|
span {{ _('cancel') }}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ li.node-details-meta-list-item
|
|||||||
|
|
||||||
| {% block node_download %}
|
| {% block node_download %}
|
||||||
| {% if node.properties.files %}
|
| {% if node.properties.files %}
|
||||||
button.btn.btn-default.dropdown-toggle(
|
button.btn.btn-outline-secondary.dropdown-toggle(
|
||||||
title="Download HDRI",
|
title="Download HDRI",
|
||||||
type="button",
|
type="button",
|
||||||
data-toggle="dropdown",
|
data-toggle="dropdown",
|
||||||
|
@ -68,9 +68,9 @@
|
|||||||
| {% endif %}
|
| {% endif %}
|
||||||
| {% endfor %}
|
| {% endfor %}
|
||||||
|
|
||||||
input.btn.btn-default.button-create(type='submit', value='Create {{ node_type.name }}')
|
input.btn.btn-outline-secondary(type='submit', value='Create {{ node_type.name }}')
|
||||||
|
|
||||||
a.btn.btn-default.button-back(href="{{ url_for('projects.view', project_url=project.url) }}blog")
|
a.btn.btn-link.button-back(href="{{ url_for('projects.view', project_url=project.url) }}blog")
|
||||||
| Back to Blog
|
| Back to Blog
|
||||||
|
|
||||||
#blog_post-create-container
|
#blog_post-create-container
|
||||||
|
@ -1,19 +1,9 @@
|
|||||||
| {% import 'nodes/custom/blog/_macros.html' as blogmacros %}
|
| {% import 'nodes/custom/blog/_macros.html' as blogmacros %}
|
||||||
|
|
||||||
#blog_container(class="{% if project and project._id == config.MAIN_PROJECT_ID %}cloud-blog{% endif %}")
|
| {{ blogmacros.render_blog_post(node, project=project) }}
|
||||||
|
|
||||||
#blog_index-container.expand-image-links
|
#comments-embed.comments-compact
|
||||||
.blog-action
|
.comments-list-loading
|
||||||
| {% if node.has_method('PUT') %}
|
i.pi-spin
|
||||||
a.btn.btn-default.button-edit(href="{{url_for('nodes.edit', node_id=node._id)}}")
|
|
||||||
i.pi-edit
|
|
||||||
| Edit Post
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {{ blogmacros.render_blog_post(node, project=project) }}
|
|
||||||
|
|
||||||
#comments-embed
|
|
||||||
.comments-list-loading
|
|
||||||
i.pi-spin
|
|
||||||
|
|
||||||
include ../_scripts
|
include ../_scripts
|
||||||
|
@ -26,8 +26,7 @@ link(href="{{ url_for('static_cloud', filename='assets/css/project-landing.css')
|
|||||||
| {% set title = 'blog' %}
|
| {% set title = 'blog' %}
|
||||||
|
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
.container-fluid.blog
|
| {% include 'nodes/custom/post/view_embed.html' %}
|
||||||
| {% include 'nodes/custom/post/view_embed.html' %}
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
@ -91,11 +91,11 @@
|
|||||||
a(href="{{ f.file.link }}",,
|
a(href="{{ f.file.link }}",,
|
||||||
title="Download texture",
|
title="Download texture",
|
||||||
download="{{ f.file.filename }}")
|
download="{{ f.file.filename }}")
|
||||||
button.btn.btn-default(type="button")
|
button.btn.btn-outline-secondary(type="button")
|
||||||
i.pi-download
|
i.pi-download
|
||||||
| Download
|
| Download
|
||||||
| {% else %}
|
| {% else %}
|
||||||
button.btn.btn-default.disabled.sorry(type="button")
|
button.btn.btn-outline-secondary.disabled.sorry(type="button")
|
||||||
i.pi-lock
|
i.pi-lock
|
||||||
| Download
|
| Download
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
@ -38,18 +38,21 @@
|
|||||||
|
|
||||||
| {% elif field.type == 'HiddenField' %}
|
| {% elif field.type == 'HiddenField' %}
|
||||||
| {{ field }}
|
| {{ field }}
|
||||||
|
|
||||||
| {% elif field.name == 'attachments' %}
|
| {% elif field.name == 'attachments' %}
|
||||||
|
hr
|
||||||
#attachments-actions
|
#attachments-actions
|
||||||
.btn.btn-info#attachments-action-add
|
.btn.btn-info#attachments-action-add
|
||||||
i.pi-plus
|
i.pi-plus
|
||||||
| Add New Attachment
|
| Add New Attachment
|
||||||
|
|
||||||
p.text-muted
|
p.text-muted.mt-3
|
||||||
| Attachments can be included in any MarkDown field by using the #[code {attachment slug}] shortcode
|
| Attachments can be included in any MarkDown field by using the #[code {attachment slug}] shortcode
|
||||||
| (#[a(href='https://pillarframework.org/shortcodes/#attachments', target='_blank') help]).
|
| (#[a(href='https://pillarframework.org/shortcodes/#attachments', target='_blank') help]).
|
||||||
| This shortcode is placed on your copy-paste buffer by clicking "Copy to clipboard".
|
| This shortcode is placed on your copy-paste buffer by clicking "Copy to clipboard".
|
||||||
|
|
||||||
| {{ render_field(field, field.name) }}
|
| {{ render_field(field, field.name) }}
|
||||||
|
hr
|
||||||
|
|
||||||
| {% elif field.name == 'files' %}
|
| {% elif field.name == 'files' %}
|
||||||
#files-actions
|
#files-actions
|
||||||
@ -66,20 +69,23 @@
|
|||||||
|
|
||||||
| {% endfor %}
|
| {% endfor %}
|
||||||
|
|
||||||
ul.project-edit-tools.bottom
|
hr
|
||||||
|
|
||||||
|
ul.project-edit-tools.justify-content-end.h-auto
|
||||||
li.button-cancel
|
li.button-cancel
|
||||||
a#item_cancel.item-cancel.project-mode-edit(
|
a#item_cancel.item-cancel.project-mode-edit.btn.btn-outline-secondary(
|
||||||
href="javascript:void(0);",
|
href="javascript:void(0);",
|
||||||
title="Cancel changes")
|
title="Cancel changes")
|
||||||
i.button-cancel-icon.pi-cancel
|
i.button-cancel-icon.pi-cancel
|
||||||
| Cancel
|
| Cancel
|
||||||
|
|
||||||
li.button-save
|
li.button-save
|
||||||
a#item_save.item-save.project-mode-edit(
|
a#item_save.item-save.project-mode-edit.btn.btn-outline-success.ml-2(
|
||||||
href="javascript:void(0);",
|
href="javascript:void(0);",
|
||||||
title="Save changes")
|
title="Save changes")
|
||||||
i.button-save-icon.pi-check
|
i.button-save-icon.pi-check
|
||||||
| Save Changes
|
| Save Changes
|
||||||
|
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.ui.widget.min.js') }}")
|
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.ui.widget.min.js') }}")
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.iframe-transport.min.js') }}")
|
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.iframe-transport.min.js') }}")
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.fileupload.min.js') }}")
|
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.fileupload.min.js') }}")
|
||||||
|
@ -1,210 +1,10 @@
|
|||||||
| {% extends 'layout.html' %}
|
| {% extends 'layout.html' %}
|
||||||
| {% from '_macros/_navigation.html' import navigation_tabs %}
|
|
||||||
|
|
||||||
| {% set title = 'organizations' %}
|
| {% set title = 'organizations' %}
|
||||||
| {% block page_title %}Organizations{% endblock %}
|
| {% block page_title %}Organizations{% endblock %}
|
||||||
|
|
||||||
| {% block og %}
|
|
||||||
meta(property="og:title", content="Dashboard")
|
|
||||||
meta(name="twitter:title", content="Blender Cloud")
|
|
||||||
|
|
||||||
meta(property="og:url", content="https://cloud.blender.org/{{ request.path }}")
|
|
||||||
meta(property="og:type", content="website")
|
|
||||||
|
|
||||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/cloud_services_oti.jpg')}}")
|
|
||||||
meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/backgrounds/cloud_services_oti.jpg')}}")
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
.dashboard-container
|
.p-5.text-center
|
||||||
section.dashboard-main
|
h2 Organizations Index
|
||||||
| {{ navigation_tabs(title) }}
|
.lead.
|
||||||
|
See Blender Cloud template for reference.
|
||||||
section#projects
|
|
||||||
|
|
||||||
| {% if can_create_organization %}
|
|
||||||
nav#sub-nav-tabs.projects
|
|
||||||
ul#sub-nav-tabs__list
|
|
||||||
li.result#create_organization_result_panel
|
|
||||||
li.create
|
|
||||||
button.btn.btn-success(onclick='createNewOrganization(this)')
|
|
||||||
i.pi-plus
|
|
||||||
| Create Organization
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
nav.nav-tabs__tab.active#own_projects
|
|
||||||
ul.projects__list
|
|
||||||
| {% if organizations %}
|
|
||||||
| {% for organization in organizations['_items'] %}
|
|
||||||
| {% set link_url = url_for('pillar.web.organizations.view_embed', organization_id=organization._id) %}
|
|
||||||
li.projects__list-item(
|
|
||||||
data-url="{{ link_url }}",
|
|
||||||
id="organization-{{ organization._id }}")
|
|
||||||
a.projects__list-thumbnail(
|
|
||||||
href="{{ link_url }}")
|
|
||||||
i.pi-users
|
|
||||||
.projects__list-details
|
|
||||||
a.title(href="{{ link_url }}")
|
|
||||||
| {{ organization.name }}
|
|
||||||
|
|
||||||
ul.meta
|
|
||||||
li(title="Members")
|
|
||||||
| {{ organization.members|hide_none|count }} Member{{ organization.members|hide_none|count|pluralize }}
|
|
||||||
| {% if (organization.unknown_members|count) != 0 %}
|
|
||||||
| ({{ organization.unknown_members|hide_none|count }} pending)
|
|
||||||
| {% endif %}
|
|
||||||
li(title="Seats")
|
|
||||||
| {{ organization.seat_count }} Seat{{ organization.seat_count|pluralize }}
|
|
||||||
|
|
||||||
| {% endfor %}
|
|
||||||
| {% else %}
|
|
||||||
li.projects__list-item
|
|
||||||
a.projects__list-thumbnail
|
|
||||||
i.pi-blender-cloud
|
|
||||||
.projects__list-details
|
|
||||||
span Create an Organization to get started!
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
section.dashboard-secondary
|
|
||||||
section.box
|
|
||||||
#item-details
|
|
||||||
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
|
|
||||||
| {% block footer_scripts %}
|
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.typeahead-0.11.1.min.js')}}")
|
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.autocomplete-0.22.0.min.js') }}", async=true)
|
|
||||||
|
|
||||||
script.
|
|
||||||
|
|
||||||
/* Returns a more-or-less reasonable message given an error response object. */
|
|
||||||
function xhrErrorResponseMessage(err) {
|
|
||||||
if (typeof err.responseJSON == 'undefined')
|
|
||||||
return err.statusText;
|
|
||||||
|
|
||||||
if (typeof err.responseJSON._error != 'undefined' && typeof err.responseJSON._error.message != 'undefined')
|
|
||||||
return err.responseJSON._error.message;
|
|
||||||
|
|
||||||
if (typeof err.responseJSON._message != 'undefined')
|
|
||||||
return err.responseJSON._message
|
|
||||||
|
|
||||||
return err.statusText;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Open an organization in the #item-details div.
|
|
||||||
*/
|
|
||||||
function item_open(item_id, pushState)
|
|
||||||
{
|
|
||||||
if (item_id === undefined ) {
|
|
||||||
throw new ReferenceError("item_open(" + item_id + ") called.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Style elements starting with item_type and dash, e.g. "#job-uuid"
|
|
||||||
var clean_classes = 'active processing';
|
|
||||||
var current_item = $('#organization-' + item_id);
|
|
||||||
|
|
||||||
$('[id^="organization-"]').removeClass(clean_classes);
|
|
||||||
current_item
|
|
||||||
.removeClass(clean_classes)
|
|
||||||
.addClass('processing');
|
|
||||||
|
|
||||||
var item_url = '/o/' + item_id;
|
|
||||||
|
|
||||||
$.get(item_url, function(item_data) {
|
|
||||||
$('#item-details').html(item_data);
|
|
||||||
|
|
||||||
current_item
|
|
||||||
.removeClass(clean_classes)
|
|
||||||
.addClass('active');
|
|
||||||
|
|
||||||
}).fail(function(xhr) {
|
|
||||||
if (console) {
|
|
||||||
console.log('Error fetching organization', item_id, 'from', item_url);
|
|
||||||
console.log('XHR:', xhr);
|
|
||||||
}
|
|
||||||
|
|
||||||
current_item.removeClass(clean_classes);
|
|
||||||
toastr.error('Failed to open organization');
|
|
||||||
|
|
||||||
if (xhr.status) {
|
|
||||||
$('#item-details').html(xhr.responseText);
|
|
||||||
} else {
|
|
||||||
$('#item-details').html('<p class="text-danger">Opening ' + item_type + ' failed. There possibly was ' +
|
|
||||||
'an error connecting to the server. Please check your network connection and ' +
|
|
||||||
'try again.</p>');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Determine whether we should push the new state or not.
|
|
||||||
pushState = (typeof pushState !== 'undefined') ? pushState : true;
|
|
||||||
if (!pushState) return;
|
|
||||||
|
|
||||||
// Push the correct URL onto the history.
|
|
||||||
var push_state = {itemId: item_id};
|
|
||||||
|
|
||||||
window.history.pushState(
|
|
||||||
push_state,
|
|
||||||
'Organization: ' + item_id,
|
|
||||||
item_url
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$('li.projects__list-item').click(function(e){
|
|
||||||
url = $(this).data('url');
|
|
||||||
if (typeof url === 'undefined') return;
|
|
||||||
|
|
||||||
window.location.href = url;
|
|
||||||
if (console) console.log(url);
|
|
||||||
|
|
||||||
$(this).addClass('active');
|
|
||||||
$(this).find('.projects__list-thumbnail i')
|
|
||||||
.removeAttr('class')
|
|
||||||
.addClass('pi-spin spin');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
{% if open_organization_id %}
|
|
||||||
$(function() { item_open('{{ open_organization_id }}', false); });
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if can_create_organization %}
|
|
||||||
function createNewOrganization(button) {
|
|
||||||
$(button)
|
|
||||||
.attr('disabled', 'disabled')
|
|
||||||
.fadeTo(200, 0.1);
|
|
||||||
$('#create_organization_result_panel').html('');
|
|
||||||
|
|
||||||
// TODO: create a form to get the initial info from the user.
|
|
||||||
$.post(
|
|
||||||
'{{ url_for('pillar.web.organizations.create_new') }}',
|
|
||||||
{
|
|
||||||
name: 'New Organization',
|
|
||||||
seat_count: 1,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.done(function(result) {
|
|
||||||
var $p = $('<p>').text('organization created, reloading list.')
|
|
||||||
$('#create_organization_result_panel').html($p);
|
|
||||||
|
|
||||||
window.location.href = result.location;
|
|
||||||
})
|
|
||||||
.fail(function(err) {
|
|
||||||
var msg = xhrErrorResponseMessage(err);
|
|
||||||
$('#create_organization_result_panel').html('Error creating organization: ' + msg);
|
|
||||||
|
|
||||||
$(button)
|
|
||||||
.fadeTo(1000, 1.0)
|
|
||||||
.queue(function() {
|
|
||||||
$(this)
|
|
||||||
.removeAttr('disabled')
|
|
||||||
.dequeue()
|
|
||||||
;
|
|
||||||
})
|
|
||||||
})
|
|
||||||
;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
@ -75,7 +75,7 @@
|
|||||||
script $('#admin-picker').hide();
|
script $('#admin-picker').hide();
|
||||||
|
|
||||||
.input-group
|
.input-group
|
||||||
button#item-save.btn.btn-success.btn-block(type='submit')
|
button#item-save.btn.btn-outline-success.btn-block(type='submit')
|
||||||
i.pi-check
|
i.pi-check
|
||||||
| Save Changes
|
| Save Changes
|
||||||
| {% else %}
|
| {% else %}
|
||||||
|
@ -1,42 +1,41 @@
|
|||||||
| {% macro render_secondary_navigation(project, pages=None) %}
|
| {% macro render_secondary_navigation(project, pages=None) %}
|
||||||
nav.navbar-secondary
|
nav.navbar-secondary
|
||||||
.navbar-container
|
nav.collapse.navbar-collapse
|
||||||
nav.collapse.navbar-collapse
|
ul.navbar-nav.navbar-right
|
||||||
ul.nav.navbar-nav.navbar-right
|
li
|
||||||
li
|
a.navbar-item(
|
||||||
a.navbar-item(
|
href="{{ url_for('projects.view', project_url=project.url) }}",
|
||||||
href="{{ url_for('projects.view', project_url=project.url) }}",
|
title="{{ project.name }} Homepage")
|
||||||
title="{{ project.name }} Homepage")
|
span
|
||||||
span
|
b {{ project.name }}
|
||||||
b {{ project.name }}
|
li
|
||||||
li
|
a.navbar-item(
|
||||||
a.navbar-item(
|
href="{{ url_for('main.project_blog', project_url=project.url) }}",
|
||||||
href="{{ url_for('main.project_blog', project_url=project.url) }}",
|
title="Project Blog",
|
||||||
title="Project Blog",
|
class="{% if category == 'blog' %}active{% endif %}")
|
||||||
class="{% if category == 'blog' %}active{% endif %}")
|
span Blog
|
||||||
span Blog
|
| {% if pages %}
|
||||||
| {% if pages %}
|
| {% for p in pages %}
|
||||||
| {% for p in pages %}
|
li
|
||||||
li
|
a.navbar-item(
|
||||||
a.navbar-item(
|
href="{{ url_for('projects.view_node', project_url=project.url, node_id=p._id) }}",
|
||||||
href="{{ url_for('projects.view_node', project_url=project.url, node_id=p._id) }}",
|
title="{{ p.name }}",
|
||||||
title="{{ p.name }}",
|
class="{% if category == 'page' %}active{% endif %}")
|
||||||
class="{% if category == 'page' %}active{% endif %}")
|
span {{ p.name }}
|
||||||
span {{ p.name }}
|
| {% endfor %}
|
||||||
| {% endfor %}
|
| {% endif %}
|
||||||
| {% endif %}
|
| {% if project.nodes_featured %}
|
||||||
| {% if project.nodes_featured %}
|
| {# In some cases featured_nodes might might be embedded #}
|
||||||
| {# In some cases featured_nodes might might be embedded #}
|
| {% if '_id' in project.nodes_featured[0] %}
|
||||||
| {% if '_id' in project.nodes_featured[0] %}
|
| {% set featured_node_id=project.nodes_featured[0]._id %}
|
||||||
| {% set featured_node_id=project.nodes_featured[0]._id %}
|
| {% else %}
|
||||||
| {% else %}
|
| {% set featured_node_id=project.nodes_featured[0] %}
|
||||||
| {% set featured_node_id=project.nodes_featured[0] %}
|
| {% endif %}
|
||||||
| {% endif %}
|
li
|
||||||
li
|
a.navbar-item(
|
||||||
a.navbar-item(
|
href="{{ url_for('projects.view_node', project_url=project.url, node_id=featured_node_id) }}",
|
||||||
href="{{ url_for('projects.view_node', project_url=project.url, node_id=featured_node_id) }}",
|
title="Explore {{ project.name }}",
|
||||||
title="Explore {{ project.name }}",
|
class="{% if category == 'blog' %}active{% endif %}")
|
||||||
class="{% if category == 'blog' %}active{% endif %}")
|
span Explore
|
||||||
span Explore
|
| {% endif %}
|
||||||
| {% endif %}
|
|
||||||
| {% endmacro %}
|
| {% endmacro %}
|
||||||
|
@ -7,17 +7,16 @@ span#project-edit-title
|
|||||||
| Edit Project
|
| Edit Project
|
||||||
|
|
||||||
ul.project-edit-tools
|
ul.project-edit-tools
|
||||||
|
|
||||||
// Edit Mode
|
// Edit Mode
|
||||||
li.button-cancel
|
li.button-cancel
|
||||||
a#item_cancel.project-mode-edit(
|
a#item_cancel.project-mode-edit.btn.btn-sm.btn-link(
|
||||||
href="{{url_for('projects.view', project_url=project.url, _external=True)}}",
|
href="{{url_for('projects.view', project_url=project.url, _external=True)}}",
|
||||||
title="Cancel changes")
|
title="Cancel changes")
|
||||||
i.button-cancel-icon.pi-back
|
i.button-cancel-icon.pi-angle-left
|
||||||
| Go to Project
|
| Go to Project
|
||||||
|
|
||||||
li.button-save
|
li.button-save
|
||||||
a#item_save.project-mode-edit(
|
a#item_save.project-mode-edit.btn.btn-sm.btn-outline-success.mx-2(
|
||||||
href="#",
|
href="#",
|
||||||
title="Save changes")
|
title="Save changes")
|
||||||
i.button-save-icon.pi-check
|
i.button-save-icon.pi-check
|
||||||
@ -80,16 +79,18 @@ ul.project-edit-tools
|
|||||||
|
|
||||||
| {% endfor %}
|
| {% endfor %}
|
||||||
|
|
||||||
ul.project-edit-tools.bottom
|
hr
|
||||||
|
|
||||||
|
ul.project-edit-tools.justify-content-end.h-auto
|
||||||
li.button-cancel
|
li.button-cancel
|
||||||
a#item_cancel.project-mode-edit(
|
a#item_cancel.project-mode-edit.btn.btn-link(
|
||||||
href="{{url_for('projects.view', project_url=project.url, _external=True)}}",
|
href="{{url_for('projects.view', project_url=project.url, _external=True)}}",
|
||||||
title="Cancel changes")
|
title="Cancel changes")
|
||||||
i.button-cancel-icon.pi-back
|
i.button-cancel-icon.pi-angle-left
|
||||||
| Go to Project
|
| Go to Project
|
||||||
|
|
||||||
li.button-save
|
li.button-save
|
||||||
a#item_save.project-mode-edit(
|
a#item_save.project-mode-edit.btn.btn-outline-success.ml-2(
|
||||||
href="#",
|
href="#",
|
||||||
title="Save changes")
|
title="Save changes")
|
||||||
i.button-save-icon.pi-check
|
i.button-save-icon.pi-check
|
||||||
@ -97,6 +98,8 @@ ul.project-edit-tools
|
|||||||
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
|
| {% block footer_container %}{% endblock %}
|
||||||
|
|
||||||
| {% block footer_scripts %}
|
| {% block footer_scripts %}
|
||||||
script(type='text/javascript', src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.ui.widget.min.js') }}")
|
script(type='text/javascript', src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.ui.widget.min.js') }}")
|
||||||
script(type='text/javascript', src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.iframe-transport.min.js') }}")
|
script(type='text/javascript', src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.iframe-transport.min.js') }}")
|
||||||
@ -105,7 +108,8 @@ script(type='text/javascript', src="{{ url_for('static_pillar', filename='assets
|
|||||||
|
|
||||||
script(type="text/javascript").
|
script(type="text/javascript").
|
||||||
|
|
||||||
$('.project-mode-edit').show();
|
// Show edit mode buttons (save, cancel).
|
||||||
|
$('.project-mode-edit').displayAs('inline-block');
|
||||||
|
|
||||||
ProjectUtils.setProjectAttributes({projectId: "{{project._id}}", isProject: true, nodeId: ''});
|
ProjectUtils.setProjectAttributes({projectId: "{{project._id}}", isProject: true, nodeId: ''});
|
||||||
var convert = new Markdown.getSanitizingConverter().makeHtml;
|
var convert = new Markdown.getSanitizingConverter().makeHtml;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#project-container
|
#project-container
|
||||||
#project-side-container
|
#project-side-container
|
||||||
#project_sidebar
|
#project_sidebar
|
||||||
ul.project-tabs
|
ul.project-tabs.p-0
|
||||||
li.tabs-thumbnail(
|
li.tabs-thumbnail(
|
||||||
title="About",
|
title="About",
|
||||||
data-toggle="tooltip",
|
data-toggle="tooltip",
|
||||||
@ -51,13 +51,13 @@
|
|||||||
|
|
||||||
#project_nav
|
#project_nav
|
||||||
#project_nav-container
|
#project_nav-container
|
||||||
#project_nav-header
|
#project_nav-header.bg-white
|
||||||
.project-title
|
a.project-title.p-2.font-weight-bold.text-dark(
|
||||||
a(href="{{url_for('projects.view', project_url=project.url, _external=True)}}")
|
href="{{url_for('projects.view', project_url=project.url, _external=True)}}")
|
||||||
| {{ project.name }}
|
| {{ project.name }}
|
||||||
|
|
||||||
// TODO - make list a macro
|
// TODO - make list a macro
|
||||||
#project_tree.edit
|
#project_tree.edit.bg-white
|
||||||
ul.project_nav-edit-list
|
ul.project_nav-edit-list
|
||||||
li(class="{% if title == 'edit' %}active{% endif %}")
|
li(class="{% if title == 'edit' %}active{% endif %}")
|
||||||
a(href="{{ url_for('projects.edit', project_url=project.url) }}")
|
a(href="{{ url_for('projects.edit', project_url=project.url) }}")
|
||||||
@ -77,10 +77,9 @@
|
|||||||
i(class="pi-{{ext.icon}}")
|
i(class="pi-{{ext.icon}}")
|
||||||
| {{ext.name | title}}
|
| {{ext.name | title}}
|
||||||
| {% endfor %}
|
| {% endfor %}
|
||||||
.project_split(title="Toggle Navigation [T]")
|
|
||||||
|
|
||||||
#project_context-container
|
#project_context-container
|
||||||
#project_context-header
|
#project_context-header.bg-white
|
||||||
span#status-bar
|
span#status-bar
|
||||||
| {% block project_context_header %}
|
| {% block project_context_header %}
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
@ -19,7 +19,7 @@ form(
|
|||||||
.col-md-9
|
.col-md-9
|
||||||
h3 Editing: {{ node_type['name'] }}
|
h3 Editing: {{ node_type['name'] }}
|
||||||
.col-md-3
|
.col-md-3
|
||||||
button.js-form-save.btn.btn-success.pull-right(style="margin-top: 15px;")
|
button.js-form-save.btn.btn-outline-success.pull-right(style="margin-top: 15px;")
|
||||||
| Save Changes
|
| Save Changes
|
||||||
|
|
||||||
.row
|
.row
|
||||||
@ -46,7 +46,7 @@ form(
|
|||||||
| {% endif %}
|
| {% endif %}
|
||||||
| {% endfor %}
|
| {% endfor %}
|
||||||
|
|
||||||
button.js-form-save.btn.btn-success.pull-right
|
button.js-form-save.btn.btn-outline-success.pull-right
|
||||||
| Save Changes
|
| Save Changes
|
||||||
|
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ section.nav-tabs__tab.active#tab-images
|
|||||||
Image Sharing requires a Blender Cloud subscription.
|
Image Sharing requires a Blender Cloud subscription.
|
||||||
|
|
||||||
.buttons
|
.buttons
|
||||||
a.btn.btn-default.btn-outline.green(href="https://store.blender.org/product/membership/")
|
a.btn.btn-outline-primary(href="https://store.blender.org/product/membership/")
|
||||||
| Join Now
|
| Join Now
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
@ -1,43 +1,8 @@
|
|||||||
| {% extends 'projects/home_layout.html' %}
|
| {% extends 'projects/home_layout.html' %}
|
||||||
| {% set subtab = 'blender_sync' %}
|
|
||||||
| {% set learn_more_btn_url = '/blog/introducing-blender-sync' %}
|
|
||||||
| {% block currenttab %}
|
| {% block currenttab %}
|
||||||
section.nav-tabs__tab.active#tab-blender_sync
|
.p-5.text-center
|
||||||
.tab_header-container
|
h2 Home Index
|
||||||
.tab_header-intro(
|
p.lead.
|
||||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_01.jpg')}})")
|
See Blender Cloud for reference.
|
||||||
.tab_header-intro_text
|
|
||||||
h2 Connect Blender with the Cloud
|
|
||||||
p
|
|
||||||
| Save your Blender preferences once, load them anywhere.
|
|
||||||
<br/>
|
|
||||||
| Use the
|
|
||||||
=' '
|
|
||||||
a(href='https://cloud.blender.org/r/downloads/blender_cloud-latest-bundle.zip') Blender Cloud add-on
|
|
||||||
=' '
|
|
||||||
| to synchronise your settings from within Blender.
|
|
||||||
.tab_header-intro_icons
|
|
||||||
i.pi-blender
|
|
||||||
i.pi-heart-filled
|
|
||||||
i.pi-blender-cloud
|
|
||||||
|
|
||||||
| {% for version in synced_versions %}
|
|
||||||
.blender_sync-main
|
|
||||||
.blender_sync-main-header
|
|
||||||
h2.blender_sync-main-title
|
|
||||||
i.pi-blender
|
|
||||||
| Blender {{ version.version }}
|
|
||||||
.blender_sync-main-last
|
|
||||||
| Last synced on: {{ version.date|pretty_date }}
|
|
||||||
| {% else %}
|
|
||||||
.blender_sync-main.empty
|
|
||||||
.blender_sync-main-header
|
|
||||||
span.blender_sync-main-title
|
|
||||||
| No settings synced yet
|
|
||||||
<hr/>
|
|
||||||
a.download(
|
|
||||||
href='https://cloud.blender.org/r/downloads/blender_cloud-latest-bundle.zip')
|
|
||||||
| Download add-on
|
|
||||||
| {% endfor %}
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
|
@ -1,77 +1,15 @@
|
|||||||
| {% extends 'layout.html' %}
|
| {% extends 'layout.html' %}
|
||||||
| {% from '_macros/_navigation.html' import navigation_tabs %}
|
|
||||||
|
|
||||||
| {% set title = 'home' %}
|
| {% set title = 'home' %}
|
||||||
|
|
||||||
| {% block og %}
|
|
||||||
meta(property="og:type", content="website")
|
|
||||||
meta(property="og:url", content="https://cloud.blender.org{{ request.path }}")
|
|
||||||
|
|
||||||
meta(property="og:title", content="Blender Cloud - Home")
|
|
||||||
meta(name="twitter:title", content="Blender Cloud")
|
|
||||||
|
|
||||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/cloud_services_oti.jpg')}}")
|
|
||||||
meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/backgrounds/cloud_services_oti.jpg')}}")
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block page_title %}
|
| {% block page_title %}
|
||||||
| {{current_user.full_name}}
|
| {{current_user.full_name}}
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
.dashboard-container
|
.p-5.text-center
|
||||||
section.dashboard-main
|
h2 Home Layout
|
||||||
| {{ navigation_tabs(title) }}
|
p.lead.
|
||||||
|
See Blender Cloud for reference.
|
||||||
|
|
||||||
section#projects
|
| {% block currenttab %}{% endblock currenttab %}
|
||||||
|
|
||||||
nav#sub-nav-tabs.home
|
|
||||||
ul#sub-nav-tabs__list
|
|
||||||
li.nav-tabs__list-tab#subtab-blender_sync(data-tab-url="{{ url_for('projects.home_project')}}")
|
|
||||||
i.pi-blender
|
|
||||||
| Blender Sync
|
|
||||||
|
|
||||||
li.nav-tabs__list-tab#subtab-images(data-tab-url="{{ url_for('projects.home_project_shared_images')}}")
|
|
||||||
i.pi-picture
|
|
||||||
| Images
|
|
||||||
| {% block currenttab %}{% endblock %}
|
|
||||||
|
|
||||||
section.dashboard-secondary
|
|
||||||
section.announcement
|
|
||||||
img.header(
|
|
||||||
src="{{ url_for('static', filename='assets/img/blender_sync_header.jpg') }}")
|
|
||||||
.text
|
|
||||||
| {% block side_announcement %}
|
|
||||||
.title
|
|
||||||
a(href="https://cloud.blender.org/blog/introducing-blender-sync") Blender Sync
|
|
||||||
|
|
||||||
.lead
|
|
||||||
span.
|
|
||||||
Save your settings once. Use them anywhere.
|
|
||||||
Carry your Blender configuration with you, use our free add-on to sync your keymaps and preferences.
|
|
||||||
<hr/>
|
|
||||||
Syncing is free for everyone. No subscription required.
|
|
||||||
| {% endblock %}
|
|
||||||
| {% if show_addon_download_buttons %}
|
|
||||||
.buttons
|
|
||||||
a.btn.btn-default.btn-outline.orange(
|
|
||||||
href="https://cloud.blender.org/r/downloads/blender_cloud-latest-bundle.zip")
|
|
||||||
i.pi-download
|
|
||||||
| Download <small>v</small>{{ config.BLENDER_CLOUD_ADDON_VERSION }}
|
|
||||||
a.btn.btn-default.btn-outline.blue(
|
|
||||||
href="{{ learn_more_btn_url }}")
|
|
||||||
| Learn More
|
|
||||||
| {% endif %}
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
|
|
||||||
| {% block footer_scripts %}
|
|
||||||
script.
|
|
||||||
$(document).ready(function () {
|
|
||||||
$('#subtab-{{ subtab }}').addClass('active');
|
|
||||||
var $nav_tabs = $('#sub-nav-tabs__list').find('li.nav-tabs__list-tab');
|
|
||||||
$nav_tabs.on('click', function (e) {
|
|
||||||
window.location = $(this).attr('data-tab-url');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
@ -1,347 +1,16 @@
|
|||||||
| {% extends 'layout.html' %}
|
| {% extends 'layout.html' %}
|
||||||
| {% from '_macros/_navigation.html' import navigation_tabs %}
|
|
||||||
|
|
||||||
| {% set title = 'dashboard' %}
|
| {% set title = 'dashboard' %}
|
||||||
|
|
||||||
| {% block og %}
|
|
||||||
meta(property="og:title", content="Dashboard")
|
|
||||||
meta(name="twitter:title", content="Blender Cloud")
|
|
||||||
|
|
||||||
meta(property="og:url", content="https://cloud.blender.org/{{ request.path }}")
|
|
||||||
meta(property="og:type", content="website")
|
|
||||||
|
|
||||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/cloud_services_oti.jpg')}}")
|
|
||||||
meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/backgrounds/cloud_services_oti.jpg')}}")
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block page_title %}
|
| {% block page_title %}
|
||||||
| {{current_user.full_name}}
|
| {{current_user.full_name}}
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
| {% block css %}
|
|
||||||
| {{ super() }}
|
|
||||||
style.
|
|
||||||
.deleted-projects-toggle {
|
|
||||||
z-index: 10;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
font-size: 20px;
|
|
||||||
padding: 3px;
|
|
||||||
text-shadow: 0 0 2px white;
|
|
||||||
}
|
|
||||||
.deleted-projects-toggle .show-deleted {
|
|
||||||
color: #aaa;
|
|
||||||
}
|
|
||||||
.deleted-projects-toggle .hide-deleted {
|
|
||||||
color: #bbb;
|
|
||||||
}
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
.dashboard-container
|
.p-5.text-center
|
||||||
section.dashboard-main
|
h2 Index Dashboard
|
||||||
| {{ navigation_tabs(title) }}
|
p.lead.
|
||||||
|
See Blender Cloud template for reference.
|
||||||
section#projects
|
|
||||||
|
|
||||||
nav#sub-nav-tabs.projects
|
|
||||||
ul#sub-nav-tabs__list
|
|
||||||
li.nav-tabs__list-tab.active(data-tab-toggle='own_projects')
|
|
||||||
| Own Projects
|
|
||||||
| {% if projects_user|length != 0 %}
|
|
||||||
span ({{ projects_user|length }})
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
li.nav-tabs__list-tab(data-tab-toggle='shared')
|
|
||||||
| Shared with me
|
|
||||||
| {% if projects_shared|length != 0 %}
|
|
||||||
span ({{ projects_shared|length }})
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% if current_user.has_cap('subscriber') %}
|
|
||||||
li.create#project-create(
|
|
||||||
data-url="{{ url_for('projects.create') }}")
|
|
||||||
a.btn.btn-success(
|
|
||||||
href="{{ url_for('projects.create') }}")
|
|
||||||
i.pi-plus
|
|
||||||
| Create Project
|
|
||||||
| {% elif current_user.has_cap('can-renew-subscription') %}
|
|
||||||
li.create
|
|
||||||
a.btn(href="/renew", target="_blank")
|
|
||||||
i.pi-heart
|
|
||||||
| Renew subscription to create a project
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
nav.nav-tabs__tab.active#own_projects
|
|
||||||
.deleted-projects-toggle
|
|
||||||
| {% if show_deleted_projects %}
|
|
||||||
a.hide-deleted(href="{{ request.base_url }}", title='Hide deleted projects')
|
|
||||||
i.pi-trash
|
|
||||||
| {% else %}
|
|
||||||
a.show-deleted(href="{{ request.base_url }}?deleted=1", title='Show deleted projects')
|
|
||||||
i.pi-trash
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
ul.projects__list
|
|
||||||
| {% for project in projects_deleted %}
|
|
||||||
li.projects__list-item.deleted
|
|
||||||
span.projects__list-thumbnail
|
|
||||||
| {% if project.picture_square %}
|
|
||||||
img(src="{{ project.picture_square.thumbnail('s', api=api) }}")
|
|
||||||
| {% else %}
|
|
||||||
i.pi-blender-cloud
|
|
||||||
| {% endif %}
|
|
||||||
.projects__list-details
|
|
||||||
span.title {{ project.name }}
|
|
||||||
ul.meta
|
|
||||||
li.status.deleted Deleted
|
|
||||||
li.edit
|
|
||||||
a(href="javascript:undelete_project('{{ project._id }}')") Restore project
|
|
||||||
| {% else %}
|
|
||||||
| {% if show_deleted_projects %}
|
|
||||||
li.projects__list-item.deleted You have no recenly deleted projects. Deleted projects can be restored within a month after deletion.
|
|
||||||
| {% endif %}
|
|
||||||
| {% endfor %}
|
|
||||||
|
|
||||||
| {% for project in projects_user %}
|
|
||||||
li.projects__list-item(
|
|
||||||
data-url="{{ url_for('projects.view', project_url=project.url) }}")
|
|
||||||
a.projects__list-thumbnail(
|
|
||||||
href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
||||||
| {% if project.picture_square %}
|
|
||||||
img(src="{{ project.picture_square.thumbnail('s', api=api) }}")
|
|
||||||
| {% else %}
|
|
||||||
i.pi-blender-cloud
|
|
||||||
| {% endif %}
|
|
||||||
.projects__list-details
|
|
||||||
a.title(href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
||||||
| {{ project.name }}
|
|
||||||
|
|
||||||
ul.meta
|
|
||||||
li.status(
|
|
||||||
class="{{ project.is_private | yesno('private,public,') }}",
|
|
||||||
title="{{ project.is_private | yesno('Private Project,Public Project,') }}")
|
|
||||||
| {{ project.is_private | yesno('Private,Public,') }}
|
|
||||||
li.when(title="{{ project._created }}") {{ project._created | pretty_date }}
|
|
||||||
li.edit
|
|
||||||
a(href="{{ url_for('projects.edit', project_url=project.url) }}") Edit
|
|
||||||
| {% if project.status == 'pending' and current_user.has_cap('view-pending-nodes') %}
|
|
||||||
li.pending Not Published
|
|
||||||
| {% endif %}
|
|
||||||
| {% else %}
|
|
||||||
| {% if current_user.has_cap('subscriber') %}
|
|
||||||
li.projects__list-item(data-url="{{ url_for('projects.create') }}")
|
|
||||||
a.projects__list-thumbnail
|
|
||||||
i.pi-plus
|
|
||||||
.projects__list-details
|
|
||||||
a.title(href="{{ url_for('projects.create') }}")
|
|
||||||
| Create a project to get started!
|
|
||||||
| {% elif current_user.has_cap('can-renew-subscription') %}
|
|
||||||
li.projects__list-item(data-url="https://store.blender.org/renew-my-subscription.php")
|
|
||||||
a.projects__list-thumbnail
|
|
||||||
i.pi-plus
|
|
||||||
.projects__list-details
|
|
||||||
a.title(href="https://store.blender.org/renew-my-subscription.php")
|
|
||||||
| Renew your Blender Cloud subscription to create your own projects!
|
|
||||||
| {% else %}
|
|
||||||
li.projects__list-item(data-url="/join")
|
|
||||||
a.projects__list-thumbnail
|
|
||||||
i.pi-plus
|
|
||||||
.projects__list-details
|
|
||||||
a.title(href="/join")
|
|
||||||
| Join Blender Cloud to create your own projects!
|
|
||||||
| {% endif %}
|
|
||||||
| {% endfor %}
|
|
||||||
|
|
||||||
section.nav-tabs__tab#shared(style='display: none')
|
|
||||||
ul.projects__list
|
|
||||||
| {% if projects_shared %}
|
|
||||||
| {% for project in projects_shared %}
|
|
||||||
li.projects__list-item(
|
|
||||||
data-url="{{ url_for('projects.view', project_url=project.url) }}")
|
|
||||||
a.projects__list-thumbnail(
|
|
||||||
href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
||||||
| {% if project.picture_square %}
|
|
||||||
img(src="{{ project.picture_square.thumbnail('s', api=api) }}")
|
|
||||||
| {% else %}
|
|
||||||
i.pi-blender-cloud
|
|
||||||
| {% endif %}
|
|
||||||
.projects__list-details
|
|
||||||
a.title(href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
||||||
| {{ project.name }}
|
|
||||||
|
|
||||||
ul.meta
|
|
||||||
li.status(
|
|
||||||
class="{{ project.is_private | yesno('private,public,') }}",
|
|
||||||
title="{{ project.is_private | yesno('Private Project,Public Project,') }}")
|
|
||||||
| {{ project.is_private | yesno('Private,Public,') }}
|
|
||||||
li.when {{ project._created | pretty_date }}
|
|
||||||
li.who by {{ project.user.full_name }}
|
|
||||||
li.edit
|
|
||||||
a(href="{{ url_for('projects.edit', project_url=project.url) }}") Edit
|
|
||||||
| {% if project.status == 'pending' and current_user.has_cap('view-pending-nodes') %}
|
|
||||||
li.pending Not Published
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
li.leave
|
|
||||||
span.user-remove-prompt
|
|
||||||
| Leave Project
|
|
||||||
|
|
||||||
span.user-remove
|
|
||||||
| Are you sure?
|
|
||||||
span.user-remove-confirm(
|
|
||||||
user-id="{{ current_user.objectid }}",
|
|
||||||
project-url="{{url_for('projects.sharing', project_url=project.url)}}")
|
|
||||||
i.pi-check
|
|
||||||
| Yes, leave
|
|
||||||
span.user-remove-cancel
|
|
||||||
i.pi-cancel
|
|
||||||
| No, cancel
|
|
||||||
|
|
||||||
| {% endfor %}
|
|
||||||
| {% else %}
|
|
||||||
li.projects__list-item
|
|
||||||
a.projects__list-thumbnail
|
|
||||||
i.pi-heart-broken
|
|
||||||
.projects__list-details
|
|
||||||
.title
|
|
||||||
| No projects shared with you... yet!
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
section.dashboard-secondary
|
|
||||||
section.announcement
|
|
||||||
img.header(
|
|
||||||
src="{{ url_for('static', filename='assets/img/backgrounds/services_projects.jpg')}}")
|
|
||||||
.text
|
|
||||||
.title Projects
|
|
||||||
.lead
|
|
||||||
span.
|
|
||||||
Create and manage your own personal projects.
|
|
||||||
Upload assets and collaborate with other Blender Cloud members.
|
|
||||||
.buttons
|
|
||||||
a.btn.btn-default.btn-outline.blue(
|
|
||||||
href="https://cloud.blender.org/blog/introducing-private-projects")
|
|
||||||
| Learn More
|
|
||||||
|
|
||||||
section.announcement
|
|
||||||
a(href="https://cloud.blender.org/blog/introducing-blender-sync")
|
|
||||||
img.header(
|
|
||||||
src="{{ url_for('static', filename='assets/img/blender_sync_header.jpg') }}")
|
|
||||||
.text
|
|
||||||
.title
|
|
||||||
a(href="https://cloud.blender.org/blog/introducing-blender-sync") Textures Browser & Settings Sync
|
|
||||||
|
|
||||||
.lead
|
|
||||||
span.
|
|
||||||
Get the official Blender Cloud add-on:
|
|
||||||
ul
|
|
||||||
li Save your Blender settings online, use them anywhere
|
|
||||||
li Browse over 800 textures & HDRIs within Blender
|
|
||||||
li Share Screenshots & Renders directly to Blender Cloud
|
|
||||||
|
|
||||||
.buttons
|
|
||||||
a.btn.btn-default.btn-outline.orange(
|
|
||||||
href="https://cloud.blender.org/r/downloads/blender_cloud-latest-bundle.zip")
|
|
||||||
i.pi-download
|
|
||||||
| Download Add-on <small>v</small> {{ config.BLENDER_CLOUD_ADDON_VERSION }}
|
|
||||||
a.btn.btn-default.btn-outline.blue(
|
|
||||||
href="https://cloud.blender.org/blog/introducing-blender-sync")
|
|
||||||
| Learn More
|
|
||||||
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
|
|
||||||
| {% block footer_scripts %}
|
| {% block footer_scripts %}
|
||||||
script.
|
|
||||||
$(document).ready(function() {
|
|
||||||
|
|
||||||
$('li.projects__list-item').click(function(e){
|
|
||||||
url = $(this).data('url');
|
|
||||||
if (typeof url === 'undefined') return;
|
|
||||||
|
|
||||||
window.location.href = url;
|
|
||||||
if (console) console.log(url);
|
|
||||||
|
|
||||||
$(this).addClass('active');
|
|
||||||
$(this).find('.projects__list-thumbnail i')
|
|
||||||
.removeAttr('class')
|
|
||||||
.addClass('pi-spin spin');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Tabs behavior
|
|
||||||
var $nav_tabs_list = $('#sub-nav-tabs__list');
|
|
||||||
var $nav_tabs = $nav_tabs_list.find('li.nav-tabs__list-tab');
|
|
||||||
$nav_tabs.on('click', function(e){
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
$nav_tabs.removeClass('active');
|
|
||||||
$(this).addClass('active');
|
|
||||||
|
|
||||||
$('.nav-tabs__tab').hide();
|
|
||||||
$('#' + $(this).attr('data-tab-toggle')).show();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create project
|
|
||||||
$('#project-create').on('click', function(e){
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
$(this).addClass('disabled');
|
|
||||||
$('a', this).html('<i class="pi-spin spin"></i> Creating project...');
|
|
||||||
|
|
||||||
window.location.href = $(this).data('url');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Leave project
|
|
||||||
var $projects_list = $('ul.projects__list');
|
|
||||||
$projects_list.find('span.user-remove-prompt').on('click', function(e){
|
|
||||||
e.stopPropagation();
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
$(this).next().show();
|
|
||||||
$(this).hide();
|
|
||||||
});
|
|
||||||
|
|
||||||
$projects_list.find('span.user-remove-cancel').on('click', function(e){
|
|
||||||
e.stopPropagation();
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
$(this).parent().prev().show();
|
|
||||||
$(this).parent().hide();
|
|
||||||
});
|
|
||||||
|
|
||||||
$projects_list.find('span.user-remove-confirm').on('click', function(e){
|
|
||||||
e.stopPropagation();
|
|
||||||
e.preventDefault();
|
|
||||||
var parent = $(this).closest('.projects__list-item');
|
|
||||||
|
|
||||||
function removeUser(userId, projectUrl){
|
|
||||||
$.post(projectUrl, {user_id: userId, action: 'remove'})
|
|
||||||
.done(function (data) {
|
|
||||||
parent.remove();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
removeUser($(this).attr('user-id'), $(this).attr('project-url'));
|
|
||||||
});
|
|
||||||
|
|
||||||
hopToTop(); // Display jump to top button
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
var patch_url = '{{ url_for('projects.patch.patch_project', project_id='PROJECTID') }}';
|
|
||||||
function undelete_project(project_id) {
|
|
||||||
console.log('undeleting project', project_id);
|
|
||||||
$.ajax({
|
|
||||||
url: patch_url.replace('PROJECTID', project_id),
|
|
||||||
method: 'PATCH',
|
|
||||||
data: JSON.stringify({'op': 'undelete'}),
|
|
||||||
contentType: 'application/json'
|
|
||||||
})
|
|
||||||
.done(function(data, textStatus, jqXHR) {
|
|
||||||
location.href = jqXHR.getResponseHeader('Location');
|
|
||||||
})
|
|
||||||
.fail(function(err) {
|
|
||||||
toastr.error(xhrErrorResponseMessage(err), 'Undeletion failed');
|
|
||||||
})
|
|
||||||
}
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
@ -1,642 +1,10 @@
|
|||||||
| {% extends 'layout.html' %}
|
| {% extends 'layout.html' %}
|
||||||
| {% from '_macros/_add_new_menu.html' import add_new_menu %}
|
|
||||||
|
|
||||||
| {% block page_title %}{{ project.name }}{% endblock%}
|
| {% block page_title %}{{ project.name }}{% endblock%}
|
||||||
|
| {% set title = 'project' %}
|
||||||
| {% block og %}
|
|
||||||
meta(property="og:type", content="website")
|
|
||||||
|
|
||||||
| {% if og_picture %}
|
|
||||||
meta(property="og:image", content="{{ og_picture.thumbnail('l', api=api) }}")
|
|
||||||
meta(name="twitter:image", content="{{ og_picture.thumbnail('l', api=api) }}")
|
|
||||||
| {% elif node and node.picture %}
|
|
||||||
meta(property="og:image", content="{{ node.picture.thumbnail('l', api=api) }}")
|
|
||||||
meta(name="twitter:image", content="{{ node.picture.thumbnail('l', api=api) }}")
|
|
||||||
| {% elif project.picture_header %}
|
|
||||||
meta(property="og:image", content="{{ project.picture_header.thumbnail('l', api=api) }}")
|
|
||||||
meta(name="twitter:image", content="{{ project.picture_header.thumbnail('l', api=api) }}")
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% if show_project %}
|
|
||||||
meta(property="og:title", content="{{ project.name }} - Blender Cloud")
|
|
||||||
meta(name="twitter:title", content="{{ project.name }} - Blender Cloud")
|
|
||||||
meta(property="og:description", content="{{ project.summary }}")
|
|
||||||
meta(name="twitter:description", content="{{ project.summary }}")
|
|
||||||
|
|
||||||
meta(property="og:url", content="{{ url_for('projects.view', project_url=project.url, _external=True) }}")
|
|
||||||
| {% else %}
|
|
||||||
|
|
||||||
| {% if node %}
|
|
||||||
meta(property="og:title", content="{{ node.name }} - Blender Cloud")
|
|
||||||
meta(name="twitter:title", content="{{ node.name }} on Blender Cloud")
|
|
||||||
|
|
||||||
| {% if node.node_type == 'post' %}
|
|
||||||
|
|
||||||
| {% if node.properties.content %}
|
|
||||||
meta(property="og:description", content="{{ node.properties.content | truncate(180) }}")
|
|
||||||
meta(name="twitter:description", content="{{ node.properties.content | truncate(180) }}")
|
|
||||||
| {% else %}
|
|
||||||
meta(property="og:description", content="Blender Cloud, your source for open content and training")
|
|
||||||
meta(name="twitter:description", content="Blender Cloud, your source for open content and training")
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% else %}
|
|
||||||
|
|
||||||
| {% if node.description %}
|
|
||||||
meta(property="og:description", content="{{ node.description | truncate(180) }}")
|
|
||||||
meta(name="twitter:description", content="{{ node.description | truncate(180) }}")
|
|
||||||
| {% else %}
|
|
||||||
meta(property="og:description", content="Blender Cloud, your source for open content and training")
|
|
||||||
meta(name="twitter:description", content="Blender Cloud, your source for open content and training")
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
meta(property="og:url", content="{{url_for('projects.view_node', project_url=project.url, node_id=node._id)}}")
|
|
||||||
| {% else %}
|
|
||||||
meta(property="og:title", content="{{ project.name }} Blog on Blender Cloud")
|
|
||||||
meta(name="twitter:title", content="{{ project.name }} Blog on Blender Cloud")
|
|
||||||
meta(property="og:description", content="{{ project.summary }}")
|
|
||||||
meta(name="twitter:description", content="{{ project.summary }}")
|
|
||||||
|
|
||||||
meta(property="og:url", content="{{url_for('projects.view', project_url=project.url, _external=True)}}")
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% endif %}
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block head %}
|
|
||||||
link(href="{{ url_for('static_pillar', filename='assets/jstree/themes/default/style.min.css') }}", rel="stylesheet")
|
|
||||||
| {% if node %}
|
|
||||||
link(rel="amphtml", href="{{ url_for('nodes.view', node_id=node._id, _external=True, format='amp') }}")
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/videojs-6.2.8.min.js') }}")
|
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/videojs-ga-0.4.2.min.js') }}")
|
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/videojs-hotkeys-0.2.20.min.js') }}")
|
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/js/video_plugins.min.js') }}")
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block css %}
|
|
||||||
link(href="{{ url_for('static_pillar', filename='assets/css/font-pillar.css') }}", rel="stylesheet")
|
|
||||||
link(href="{{ url_for('static_pillar', filename='assets/css/base.css') }}", rel="stylesheet")
|
|
||||||
link(href="{{ url_for('static_pillar', filename='assets/css/project-main.css') }}", rel="stylesheet")
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
#project-container
|
.p-5.text-center
|
||||||
#project-side-container
|
h2 Project View
|
||||||
#project_sidebar
|
.lead.
|
||||||
ul.project-tabs
|
See Blender Cloud for reference.
|
||||||
li.tabs-thumbnail(class="{% if project.picture_square %}image{% endif %}")
|
|
||||||
a(href="{{url_for('projects.view', project_url=project.url)}}")
|
|
||||||
#project-loading
|
|
||||||
i.pi-spin
|
|
||||||
| {% if project.picture_square %}
|
|
||||||
img(src="{{ project.picture_square.thumbnail('b', api=api) }}")
|
|
||||||
| {% else %}
|
|
||||||
i.pi-home
|
|
||||||
| {% endif %}
|
|
||||||
li.tabs-browse(
|
|
||||||
title="Browse",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="right",
|
|
||||||
class="active")
|
|
||||||
a(href="{{url_for('projects.view', project_url=project.url, _external=True)}}")
|
|
||||||
i.pi-folder
|
|
||||||
| {% if not project.is_private %}
|
|
||||||
| {% if current_user_is_subscriber %}
|
|
||||||
li.tabs-search(
|
|
||||||
title="Search",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="right")
|
|
||||||
a(href="{{ url_for('projects.search', project_url=project.url, _external=True)}} ")
|
|
||||||
i.pi-search
|
|
||||||
| {% else %}
|
|
||||||
li.tabs-search(
|
|
||||||
title="Search (subscribers only)",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="right")
|
|
||||||
a(href="{{ url_for('cloud.join') }}")
|
|
||||||
i.pi-search
|
|
||||||
| {% endif %}
|
|
||||||
| {% endif %}
|
|
||||||
| {{ extension_sidebar_links }}
|
|
||||||
|
|
||||||
| {% if project.has_method('PUT') %}
|
|
||||||
li(
|
|
||||||
title="Edit Project",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="right")
|
|
||||||
a(href="{{ url_for('projects.edit', project_url=project.url) }}")
|
|
||||||
i.pi-cog
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
#project_nav(class="{{ title }}")
|
|
||||||
#project_nav-container
|
|
||||||
| {% if title != 'about' %}
|
|
||||||
#project_nav-header
|
|
||||||
.project-title
|
|
||||||
a(href="{{url_for('projects.view', project_url=project.url, _external=True)}}")
|
|
||||||
| {{ project.name }}
|
|
||||||
|
|
||||||
| {% block project_tree %}
|
|
||||||
#project_tree
|
|
||||||
| {% endblock project_tree %}
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
|
|
||||||
#project_context-container
|
|
||||||
| {% if project.has_method('PUT') %}
|
|
||||||
#project_context-header
|
|
||||||
span#status-bar
|
|
||||||
|
|
||||||
ul.project-edit-tools.disabled
|
|
||||||
li.button-dropdown
|
|
||||||
a#item_add.dropdown-toggle.project-mode-view(
|
|
||||||
type="button",
|
|
||||||
data-toggle="dropdown",
|
|
||||||
aria-haspopup="true",
|
|
||||||
aria-expanded="false")
|
|
||||||
i.button-add-icon.pi-collection-plus
|
|
||||||
| New...
|
|
||||||
|
|
||||||
ul.dropdown-menu.add_new-menu
|
|
||||||
| {{ add_new_menu(project.node_types) }}
|
|
||||||
|
|
||||||
li.button-edit
|
|
||||||
a#item_edit.project-mode-view(
|
|
||||||
href="javascript:void(0);",
|
|
||||||
title="Edit",
|
|
||||||
data-project_id="{{project._id}}")
|
|
||||||
i.button-edit-icon.pi-edit
|
|
||||||
| Edit Project
|
|
||||||
|
|
||||||
li.button-dropdown
|
|
||||||
a.dropdown-toggle.project-mode-view(
|
|
||||||
type="button",
|
|
||||||
data-toggle="dropdown",
|
|
||||||
aria-haspopup="true",
|
|
||||||
aria-expanded="false")
|
|
||||||
i.pi-more-vertical
|
|
||||||
|
|
||||||
ul.dropdown-menu
|
|
||||||
| {% if current_user.has_cap('admin') %}
|
|
||||||
li.button-featured
|
|
||||||
a#item_featured(
|
|
||||||
href="javascript:void(0);",
|
|
||||||
title="Feature on project's homepage",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="left")
|
|
||||||
i.button-featured-icon.pi-star
|
|
||||||
| Toggle Featured
|
|
||||||
|
|
||||||
li.button-toggle-public
|
|
||||||
a#item_toggle_public(
|
|
||||||
href="javascript:void(0);",
|
|
||||||
title="Make it accessible to anyone",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="left")
|
|
||||||
i.pi-lock-open
|
|
||||||
| Toggle public
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
li.button-toggle-projheader
|
|
||||||
a#item_toggle_projheader(
|
|
||||||
href="javascript:void(0);",
|
|
||||||
title="Feature as project's header",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="left")
|
|
||||||
i.button-featured-icon.pi-star
|
|
||||||
| Toggle Project Header video
|
|
||||||
|
|
||||||
li.button-move
|
|
||||||
a#item_move(
|
|
||||||
href="javascript:void(0);",
|
|
||||||
title="Move into a folder...",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="left")
|
|
||||||
i.button-move-icon.pi-move
|
|
||||||
| Move
|
|
||||||
|
|
||||||
li.button-delete
|
|
||||||
a#item_delete(
|
|
||||||
href="javascript:void(0);",
|
|
||||||
title="Can be undone within a month",
|
|
||||||
data-toggle="tooltip",
|
|
||||||
data-placement="left")
|
|
||||||
i.pi-trash
|
|
||||||
| Delete Project
|
|
||||||
|
|
||||||
// Edit Mode
|
|
||||||
li.button-cancel
|
|
||||||
a#item_cancel.project-mode-edit(
|
|
||||||
href="javascript:void(0);",
|
|
||||||
title="Cancel changes")
|
|
||||||
i.button-cancel-icon.pi-cancel
|
|
||||||
| Cancel
|
|
||||||
|
|
||||||
li.button-save
|
|
||||||
a#item_save.project-mode-edit(
|
|
||||||
href="javascript:void(0);",
|
|
||||||
title="Save changes")
|
|
||||||
i.button-save-icon.pi-check
|
|
||||||
| Save Changes
|
|
||||||
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% set utm_source = request.args.get('utm_source') %}
|
|
||||||
| {% if config.UTM_LINKS and utm_source in config.UTM_LINKS %}
|
|
||||||
#utm_container
|
|
||||||
a(href="{{config.UTM_LINKS[utm_source]['link']}}")
|
|
||||||
img(src="{{config.UTM_LINKS[utm_source]['image']}}", alt="gift", class="img-responsive")
|
|
||||||
| {% endif %}
|
|
||||||
#project_context
|
|
||||||
| {% block project_context %}
|
|
||||||
| {% if show_project %}
|
|
||||||
| {% include "projects/view_embed.html" %}
|
|
||||||
| {% endif %}
|
|
||||||
| {% endblock project_context %}
|
|
||||||
|
|
||||||
#overlay-mode-move-container
|
|
||||||
.overlay-container
|
|
||||||
.title
|
|
||||||
i.pi-angle-left
|
|
||||||
| Select the <strong>folder</strong> where you want to move it
|
|
||||||
.buttons
|
|
||||||
button#item_move_accept.move.disabled
|
|
||||||
| Select a Folder
|
|
||||||
button#item_move_cancel.cancel
|
|
||||||
i.pi-cancel
|
|
||||||
| Cancel
|
|
||||||
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
| {% block footer_navigation %}{% endblock %}
|
|
||||||
| {% block footer %}{% endblock %}
|
|
||||||
|
|
||||||
|
|
||||||
| {% block footer_scripts_pre %}
|
|
||||||
|
|
||||||
| {% if project.has_method('PUT') %}
|
|
||||||
| {# JS containing the Edit, Add, Featured, and Move functions #}
|
|
||||||
script(type="text/javascript", src="{{ url_for('static_pillar', filename='assets/js/project-edit.min.js') }}")
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
script.
|
|
||||||
function updateToggleProjHeaderMenuItem() {
|
|
||||||
var $toggle_projheader = $('#item_toggle_projheader');
|
|
||||||
|
|
||||||
if (ProjectUtils.isProject()) {
|
|
||||||
$toggle_projheader.hide();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (ProjectUtils.nodeType() == 'asset') {
|
|
||||||
$toggle_projheader.show();
|
|
||||||
} else {
|
|
||||||
$toggle_projheader.hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$(updateToggleProjHeaderMenuItem);
|
|
||||||
|
|
||||||
// Function to update the interface on loadNodeContent, and edit/saving assets
|
|
||||||
function updateUi(nodeId, mode) {
|
|
||||||
|
|
||||||
if (mode === 'view') {
|
|
||||||
$('.project-mode-view').show();
|
|
||||||
$('.project-mode-edit').hide();
|
|
||||||
|
|
||||||
$("#node-edit-form").unbind("submit");
|
|
||||||
$("#item_save").unbind("click");
|
|
||||||
$("#item_cancel").unbind("click");
|
|
||||||
} else if (mode === 'edit') {
|
|
||||||
$('.project-mode-view').hide();
|
|
||||||
$('.project-mode-edit').show();
|
|
||||||
} else {
|
|
||||||
if (console) console.log('Invalid mode:', mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent flicker by scrolling to top
|
|
||||||
$("#project_context-container").scrollTop(0);
|
|
||||||
|
|
||||||
// Enable specific items under the Add New dropdown
|
|
||||||
if (ProjectUtils.nodeType() === 'group') {
|
|
||||||
addMenuEnable(['asset', 'group']);
|
|
||||||
|
|
||||||
} else if (ProjectUtils.nodeType() === 'group_texture') {
|
|
||||||
addMenuEnable(['group_texture', 'texture']);
|
|
||||||
|
|
||||||
} else if (ProjectUtils.nodeType() === 'group_hdri') {
|
|
||||||
addMenuEnable(['group_hdri', 'hdri']);
|
|
||||||
|
|
||||||
} else if (!ProjectUtils.isProject()) {
|
|
||||||
addMenuEnable(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateToggleProjHeaderMenuItem();
|
|
||||||
|
|
||||||
// Set the page title on the document
|
|
||||||
var page_title = $('#node-title').text() + " - {{ project.name }} — Blender Cloud";
|
|
||||||
DocumentTitleAPI.set_page_title(page_title);
|
|
||||||
|
|
||||||
// TODO: Maybe remove this, now it's also in loadNodeContent(), but double-check
|
|
||||||
// it's done like that in all users of updateUi().
|
|
||||||
$('#project-loading').removeAttr('class');
|
|
||||||
}
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block footer_scripts %}
|
|
||||||
script(src="{{ url_for('static_pillar', filename='assets/jstree/jstree.min.js') }}")
|
|
||||||
|
|
||||||
script.
|
|
||||||
{% if show_project %}
|
|
||||||
ProjectUtils.setProjectAttributes({projectId: "{{project._id}}", isProject: true, nodeId: ''});
|
|
||||||
{% else %}
|
|
||||||
{% if node %}
|
|
||||||
ProjectUtils.setProjectAttributes({projectId: "{{project._id}}", isProject: false, nodeId: '{{node._id}}'});
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
var projectTree = document.getElementById('project_tree');
|
|
||||||
|
|
||||||
var urlNodeMove = "{{url_for('projects.move_node')}}";
|
|
||||||
var urlNodeFeature = "{{url_for('projects.add_featured_node')}}";
|
|
||||||
var urlNodeDelete = "{{url_for('projects.delete_node')}}";
|
|
||||||
var urlNodeTogglePublic = "{{url_for('projects.toggle_node_public')}}";
|
|
||||||
var urlNodeToggleProjHeader = "{{url_for('projects.toggle_node_project_header')}}";
|
|
||||||
var urlProjectDelete = "{{url_for('projects.delete')}}";
|
|
||||||
var urlProjectEdit = "{{url_for('projects.edit', project_url=project.url)}}";
|
|
||||||
|
|
||||||
|
|
||||||
function loadNodeContent(url, nodeId) {
|
|
||||||
$('#project-loading').addClass('active');
|
|
||||||
$.get(url, function(dataHtml) {
|
|
||||||
// Update the DOM injecting the generate HTML into the page
|
|
||||||
$('#project_context').html(dataHtml);
|
|
||||||
})
|
|
||||||
.done(function(){
|
|
||||||
updateUi(nodeId, 'view');
|
|
||||||
})
|
|
||||||
.fail(function(dataResponse) {
|
|
||||||
$('#project_context').html($('<iframe id="server_error"/>'));
|
|
||||||
$('#server_error').attr('src', url);
|
|
||||||
})
|
|
||||||
.always(function(){
|
|
||||||
$('#project-loading').removeAttr('class');
|
|
||||||
$('.button-edit-icon').addClass('pi-edit').removeClass('pi-spin spin');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function loadProjectContent(url) {
|
|
||||||
$('#project-loading').addClass('active');
|
|
||||||
|
|
||||||
$.get(url, function(dataHtml) {
|
|
||||||
// Update the DOM injecting the generated HTML into the page
|
|
||||||
$('#project_context').html(dataHtml);
|
|
||||||
})
|
|
||||||
.done(function() {
|
|
||||||
updateUi('', 'view');
|
|
||||||
addMenuEnable();
|
|
||||||
addMenuDisable(['texture']);
|
|
||||||
})
|
|
||||||
.fail(function(dataResponse) {
|
|
||||||
$('#project_context').html($('<iframe id="server_error"/>'));
|
|
||||||
$('#server_error').attr('src', url);
|
|
||||||
})
|
|
||||||
.always(function(){
|
|
||||||
$('#project-loading').removeAttr('class');
|
|
||||||
$('.button-edit-icon').addClass('pi-edit').removeClass('pi-spin spin');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function displayStorage(storageNodeId, path) {
|
|
||||||
var url = '/nodes/' + storageNodeId + '/view?path=' + path;
|
|
||||||
loadNodeContent(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function displayNode(nodeId, pushState) {
|
|
||||||
// Remove the 'n_' suffix from the id
|
|
||||||
if (nodeId.substring(0, 2) == 'n_') {
|
|
||||||
nodeId = nodeId.substr(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
var url = '/nodes/' + nodeId + '/view';
|
|
||||||
loadNodeContent(url, nodeId);
|
|
||||||
|
|
||||||
// Determine whether we should push the new state or not.
|
|
||||||
pushState = (typeof pushState !== 'undefined') ? pushState : true;
|
|
||||||
if (!pushState) return;
|
|
||||||
|
|
||||||
// Push the correct URL onto the history.
|
|
||||||
var push_state = {nodeId: nodeId, url: url};
|
|
||||||
var push_url = '{{url_for("projects.view", project_url=project.url)}}' + nodeId;
|
|
||||||
// console.log('Pushing state ', push_state, ' with URL ', push_url);
|
|
||||||
window.history.pushState(
|
|
||||||
push_state,
|
|
||||||
'Node ' + nodeId, // TODO: use sensible title
|
|
||||||
push_url
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function redirectToNode(nodeId) {
|
|
||||||
var generic_url = '{{ url_for("projects.view_node", project_url=project.url, node_id="theNodeId") }}';
|
|
||||||
var node_url = generic_url.replace('theNodeId', nodeId);
|
|
||||||
|
|
||||||
// This makes the user skip the current page when using the 'back' button,
|
|
||||||
// i.e. it works as a proper redirect.
|
|
||||||
location.replace(node_url);
|
|
||||||
}
|
|
||||||
|
|
||||||
window.onpopstate = function(event) {
|
|
||||||
var state = event.state;
|
|
||||||
// console.log('State popped. location:', document.location, 'state:', state);
|
|
||||||
|
|
||||||
// Deselect any selected node. We'll select the visited node (if any) later on.
|
|
||||||
var jstreeAPI = $(projectTree).jstree(true);
|
|
||||||
jstreeAPI.deselect_all(true);
|
|
||||||
|
|
||||||
if (state == null) {
|
|
||||||
// Went back to the project.
|
|
||||||
displayProject();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Went back to a node.
|
|
||||||
loadNodeContent(state.url, state.nodeId);
|
|
||||||
|
|
||||||
// Annoying hack because jstreeAPI.select_node() can only suppress the
|
|
||||||
// changed.jstree event, and NOT the selected_node.jstree event.
|
|
||||||
projectTree.dataset.ignoreSelectNode = true;
|
|
||||||
jstreeAPI.select_node('n_' + state.nodeId, true);
|
|
||||||
delete projectTree.dataset.ignoreSelectNode;
|
|
||||||
};
|
|
||||||
|
|
||||||
function displayProject() {
|
|
||||||
var url = "{{url_for('projects.view', project_url=project.url, embed=1)}}";
|
|
||||||
loadProjectContent(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function getHashId() {
|
|
||||||
if (console)
|
|
||||||
console.log('getHashId() should not be used any more!');
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loaded once, on page load */
|
|
||||||
function loadContent() {
|
|
||||||
|
|
||||||
var nodeId = ProjectUtils.nodeId();
|
|
||||||
var isProject = ProjectUtils.isProject();
|
|
||||||
if (isProject) {
|
|
||||||
// No need to asynchronously load the project, as it's embedded by Jinja.
|
|
||||||
// displayProject() is still needed, though, when people use 'back' to go there.
|
|
||||||
if (location.hash) {
|
|
||||||
// Handle old-style /p/{url}/#node-ID links, and redirect them to the correct spot.
|
|
||||||
redirectToNode(location.hash.substr(1));
|
|
||||||
}
|
|
||||||
$('.project-mode-view').show();
|
|
||||||
$('.project-mode-edit').hide();
|
|
||||||
} else {
|
|
||||||
displayNode(nodeId, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(projectTree).jstree({
|
|
||||||
'core': {
|
|
||||||
'data': function (obj, callback) {
|
|
||||||
if(obj.id === '#') { //tree root
|
|
||||||
if (isProject) {
|
|
||||||
$.getJSON("{{url_for('projects.jstree', project_url=project.url)}}", function (jsonObject) {
|
|
||||||
callback.call(this, jsonObject['items']);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
$.getJSON('/nodes/' + nodeId + '/jstree', function(jsonObject) {
|
|
||||||
callback.call(this, jsonObject['items']);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else { //normal node
|
|
||||||
var childNodeId;
|
|
||||||
if (obj.original.type == 'group_storage') {
|
|
||||||
childNodeId = obj.original.storage_node;
|
|
||||||
$.getJSON('/nodes/' + childNodeId + '/jstree?children=1&path=' + obj.original.path, function(jsonObject) {
|
|
||||||
callback.call(this, jsonObject.children);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// Remove the 'n_' suffix from the id
|
|
||||||
childNodeId = obj.id.substring(2);
|
|
||||||
$.getJSON('/nodes/' + childNodeId + '/jstree?children=1', function(jsonObject) {
|
|
||||||
callback.call(this, jsonObject.children);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"types" : {
|
|
||||||
"#": {"valid_children": ["collection"]},
|
|
||||||
"chapter" : {"icon": "pi-folder"},
|
|
||||||
"group" : {"icon": "pi-folder"},
|
|
||||||
"group_texture" : {"icon": "pi-folder-texture"},
|
|
||||||
"group_hdri" : {"icon": "pi-folder-texture", "max_children": 0},
|
|
||||||
"group_storage" : {"icon": "pi-folder"},
|
|
||||||
"filesystem_node" : {"icon": "pi-folder"},
|
|
||||||
"file" : {"icon": "pi-file-archive", "max_children": 0},
|
|
||||||
"filesystem_file" : {"icon": "pi-document", "max_children": 0},
|
|
||||||
"image" : {"icon": "pi-image", "max_children": 0},
|
|
||||||
"hdri" : {"icon": "pi-globe", "max_children": 0},
|
|
||||||
"texture" : {"icon": "pi-texture", "max_children": 0},
|
|
||||||
"video" : {"icon": "pi-film-thick", "max_children": 0},
|
|
||||||
"blog" : {"icon": "pi-newspaper", "max_children": 0},
|
|
||||||
"page" : {"icon": "pi-document-text", "max_children": 0},
|
|
||||||
"default" : {"icon": "pi-document"}
|
|
||||||
},
|
|
||||||
"plugins": ["types",] //, "state", "sort"
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
var jstreeAPI = $(projectTree).jstree(true);
|
|
||||||
|
|
||||||
$(projectTree).on("select_node.jstree", function (e, data) {
|
|
||||||
var selectedNodeId = data.node.id.substr(2);
|
|
||||||
|
|
||||||
// Ignore events that can't be suppressed otherwise.
|
|
||||||
// This can be removed if jstreeAPI.select_node() allows suppressing
|
|
||||||
// the select_node.jstree event.
|
|
||||||
if (e.target.dataset.ignoreSelectNode === 'true') return;
|
|
||||||
|
|
||||||
if (typeof(data.node.original.path) === 'undefined') {
|
|
||||||
var movingMode = Cookies.getJSON('bcloud_moving_node');
|
|
||||||
|
|
||||||
// Check if we are in the process of moving a node
|
|
||||||
if (movingMode) {
|
|
||||||
// Allow moving nodes only inside of node_type group
|
|
||||||
if (data.node.original.type != 'group' || movingMode.node_id === selectedNodeId || movingMode.node_id === ProjectUtils.parentNodeId()) {
|
|
||||||
|
|
||||||
if (movingMode.node_type === 'texture') {
|
|
||||||
|
|
||||||
if (data.node.original.type === 'group_texture') {
|
|
||||||
$('#item_move_accept').html('<i class="pi-check"></i>Move Here').removeClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#item_move_accept').html('Select a Texture Folder').addClass('disabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (movingMode.node_type === 'hdri') {
|
|
||||||
|
|
||||||
if (data.node.original.type === 'group_hdri') {
|
|
||||||
$('#item_move_accept').html('<i class="pi-check"></i>Move Here').removeClass('disabled');
|
|
||||||
} else {
|
|
||||||
$('#item_move_accept').html('Select an HDRi Folder').addClass('disabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$('#item_move_accept').html('Select a Folder').addClass('disabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$('#item_move_accept').html('<i class="pi-check"></i>Move Here').removeClass('disabled');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check the type of node and act accordingly
|
|
||||||
if (data.node.original.custom_view) {
|
|
||||||
window.location = data.node.a_attr.href;
|
|
||||||
} else {
|
|
||||||
var currentNodeId = ProjectUtils.nodeId();
|
|
||||||
if (currentNodeId != selectedNodeId) {
|
|
||||||
displayNode(selectedNodeId);
|
|
||||||
}
|
|
||||||
|
|
||||||
jstreeAPI.open_node(data.node);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
displayStorage(data.node.original.storage_node, data.node.original.path);
|
|
||||||
jstreeAPI.toggle_node(data.node);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
{% if is_embedded_edit is not defined or is_embedded_edit %}
|
|
||||||
// Initialize the page if we are not directly editing a node (most of the time)
|
|
||||||
loadContent();
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
var project_container = document.getElementById('project-container');
|
|
||||||
|
|
||||||
/* UI Stuff */
|
|
||||||
$(window).on("load resize",function(){
|
|
||||||
containerResizeY($(window).height());
|
|
||||||
|
|
||||||
if ($(window).width() > 480) {
|
|
||||||
project_container.style.height = (window.innerHeight - project_container.offsetTop) + "px";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
{% if current_user_is_subscriber %}
|
|
||||||
$(projectTree).addClass('is_subscriber');
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block comment_scripts %} {% endblock%}
|
|
||||||
|
@ -22,9 +22,8 @@
|
|||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
|
||||||
section.node-details-container.project
|
section.node-details-container.project
|
||||||
.node-details-title
|
h2.px-3.pt-3
|
||||||
h1
|
a.text-muted(href="{{ url_for( 'projects.view', project_url=project.url) }}") {{ project.name }}
|
||||||
a(href="{{ url_for( 'projects.view', project_url=project.url) }}") {{ project.name }}
|
|
||||||
|
|
||||||
| {% if project.description %}
|
| {% if project.description %}
|
||||||
.node-details-description
|
.node-details-description
|
||||||
@ -127,5 +126,4 @@ script.
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
h3.
|
h3.
|
||||||
Now only $10 per month
|
Now only $10 per month
|
||||||
|
|
||||||
.btn.btn-default
|
.btn.btn-outline-primary
|
||||||
| Join the Cloud
|
| Join the Cloud
|
||||||
|
|
||||||
hr
|
hr
|
||||||
|
@ -72,9 +72,9 @@
|
|||||||
| none
|
| none
|
||||||
| {% endif %}
|
| {% endif %}
|
||||||
|
|
||||||
a.btn.btn-default(href="javascript:update_from_bid()") Update from Blender ID
|
a.btn.btn-outline-secondary(href="javascript:update_from_bid()") Update from Blender ID
|
||||||
|
|
||||||
input#submit_edit_user.btn.btn-default(
|
input#submit_edit_user.btn.btn-outline-success(
|
||||||
data-user-id="{{user.user_id}}",
|
data-user-id="{{user.user_id}}",
|
||||||
type="submit" value="Submit")
|
type="submit" value="Submit")
|
||||||
|
|
||||||
|
@ -18,11 +18,11 @@
|
|||||||
.buttons
|
.buttons
|
||||||
.login-button-container
|
.login-button-container
|
||||||
//a.forgot(href="https://blender.org/id/reset") forgot your password?
|
//a.forgot(href="https://blender.org/id/reset") forgot your password?
|
||||||
button.btn.btn-success.btn-block.button-login(type="submit")
|
button.btn.btn-outline-success.btn-block.button-login(type="submit")
|
||||||
i.pi-log-in
|
i.pi-log-in
|
||||||
| Login
|
| Login
|
||||||
|
|
||||||
//a.btn.btn-default.button-register(href="https://blender.org/id/register", target="_blank")
|
//a.btn.btn-outline-secondary.button-register(href="https://blender.org/id/register", target="_blank")
|
||||||
// i.pi-star-outline
|
// i.pi-star-outline
|
||||||
// | Create Account
|
// | Create Account
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
//- can provide overrides.
|
//- can provide overrides.
|
||||||
| {% block body %}
|
| {% block body %}
|
||||||
.container
|
.container
|
||||||
#settings
|
#settings.d-flex.py-4.flex-xs-column
|
||||||
#settings-sidebar
|
#settings-sidebar
|
||||||
| {% block settings_sidebar %}
|
| {% block settings_sidebar %}
|
||||||
.settings-header
|
.settings-header
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
span {{ _("Change Gravatar") }}
|
span {{ _("Change Gravatar") }}
|
||||||
|
|
||||||
.buttons
|
.buttons
|
||||||
button.btn.btn-default.button-submit(type='submit')
|
button.btn.btn-outline-success.button-submit(type='submit')
|
||||||
i.pi-check
|
i.pi-check
|
||||||
| {{ _("Save Changes") }}
|
| {{ _("Save Changes") }}
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
@ -137,7 +137,7 @@ script().
|
|||||||
$('td', row).eq(4).html(render_timing(data.timing));
|
$('td', row).eq(4).html(render_timing(data.timing));
|
||||||
$('td', row).eq(5).html(render_status_label(data, data.name));
|
$('td', row).eq(5).html(render_status_label(data, data.name));
|
||||||
|
|
||||||
var view_tag = '<span class="btn btn-default btn-xs load-shot-view" shot-view-url="' + data.url_edit + '"><i class="glyphicon glyphicon-edit"></i> View</span>';
|
var view_tag = '<span class="btn btn-outline-secondary btn-xs load-shot-view" shot-view-url="' + data.url_edit + '"><i class="glyphicon glyphicon-edit"></i> View</span>';
|
||||||
$('td', row).eq(6).html(view_tag);
|
$('td', row).eq(6).html(view_tag);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user