Files
edx-platform/cms/static/sass/views/_certificates.scss
Matt Drayer af7277cdd9 New Feature: Certificates Web View
- SOL-465: Initial implementation of certificates web view and signatories (names/titles)

- SOL-718 Close button is working properly

- SOL-801 Backbone Signatories Modeling

- SOL-803 Underscore template: Editor (Add)

- SOL-802 Signatories: Underscore template - Details

- SOL-804 Signatories: Underscore template: Editor (Edit)

- Add signatory delete Django view

- SOL-805 Signatory editor (Delete)

- Add Coffeescript router

- SOL-716 Jasmine Tests

- Added missing minified JS library

- client side validation of signatory fields

- SOL-390 signatories names

- Remove obsolete extends Sass files

- input maxlength limiting for signatory information

- SOL-389: Course title override

- SOL-466: Add capability to upload digitized signatures in Studio

- ziafazal: fixed css for upload signature image

- ziafazal: completed deletion of signature images

- UX-1741: Add initial static rendering/styling for Open edX web certs
  * creating new global static dir
  * adding static version of edX UX pattern library assets
  * adding web certificates static assets
  * adding static (+abstracted) web certificates rendering
  * creating two tiers of rendering (base + distinguished)
  * providing sample assets for certificate rendering
  * supporting RTL layouts
  * adding certifcates assests to edX static asset pipeline
  * temporarily hiding the mozilla open badges share action
  * wiring print button to print view/page
  * fixup! addressing conflict artifact in valid cert template
  * fixup! adding missing %hd-subsection sass extend + components comment clean up
  * fixup! correcting pattern library .hd-4 font-weight value

- SOL-468 Linked Student View for Web View Credential

- SOL-467: Add capability to upload organization logos for certificates

- SOL-391 / SOL-387: Signatory related info (assets) in certificates web view

- kelketek: Fixes for static asset collection in certificate HTML view.

- SOL-398 Web View: Public Access

- mattdrayer: Post-merge branch stabilization

- catong: Initial changes to Studio template and Help config file

- ziafazal: Branch stabilizations

- SOL-387: Display organization logo on LMS web view

- talbs/mattdrayer: Branch Stabilizations

- talbs: converting backpack action to use a button HTML element

- talbs: revising placeholder assets + their rendering in cert view

- mattdrayer: Username web view wireup

- SOL-386 Certificate Mode Previews

- SOL-905: Make organization logo and signatory signature uneditable

- SOL-922: Improve test coverage

- SOL-765: Add LinkedIn sharing

- [marco] temporary styling adjustment to account for smaller linkedin share image / fake button

- SOL-921: Address hardcoded template items

- SOL-927: Deleting certificate should delete org logo image also
  * updated invalid template
  * removed hr
  * fix invalid certificate error

- clrux: Add i18n to certificate templates and partials

- mattdrayer: Pylint violations

- SOL-920 Certificate Activation/Deactivation

- mattdrayer: Added LMS support

- SOL-932: Fix preview mode support in certificate view

- SOL-934: Fixed bug reported and broken tests

- SOL-935 removed the 'valid' word from web view title

- talbs: RTL support updates/fixes
  * revising certificate type icon/name vertical alignment
  * removing unused older certificate template
  * revising styling for message/banner actions
  * abstracting accomplishment type to use course mode + adding in honor/verified-specific placeholders

- mattdrayer: JSHint violations
2015-06-01 19:48:04 -04:00

726 lines
14 KiB
SCSS

// studio - views - certificates
// ====================
// Table of Contents
// * +Layout - Certificates
// * +Main - Collection
// * +Main - Certificate
// * +Signatories -Certificate
// * +Layout - Certificates
// ====================
.view-certificates {
.content-primary, .content-supplementary {
@include box-sizing(border-box);
float: left;
}
.content-primary {
width: flex-grid(9, 12);
margin-right: flex-gutter();
.notice-moduledisabled {
@extend %ui-well;
@extend %t-copy-base;
background-color: $white;
padding: ($baseline*1.5) $baseline;
text-align: center;
}
.no-content {
@extend %no-content;
}
.wrapper-certificate {
.title {
@extend %t-title4;
@extend %t-strong;
margin-bottom: ($baseline/2);
}
.copy {
@extend %t-copy-sub1;
}
}
}
.content-supplementary {
width: flex-grid(3, 12);
}
}
// * +Main - Collection
// ====================
.view-certificates {
.wrapper-collection {
@extend %ui-window;
position: relative;
outline: none;
&:hover .collection .actions {
opacity: 1.0;
}
.collection-details {
padding: $baseline ($baseline*1.5);
}
.collection-header {
margin-bottom: 0;
border-bottom: 0;
padding-bottom: 0;
}
.collection-info {
@extend %t-copy-sub1;
&.certificate-info-inline {
margin: ($baseline/2) 0;
}
&.collection-info-inline {
display: table;
width: 70%;
margin: ($baseline/4) 0 ($baseline/2) $baseline;
li {
@include box-sizing(border-box);
display: table-cell;
margin-right: 1%;
padding: ($baseline/4) 0;
}
}
}
.collection-items {
margin-left: $baseline;
margin-bottom: ($baseline*0.75);
.item {
@extend %t-copy-lead1;
padding: ($baseline/7) 0 ($baseline/4);
border-top: 1px solid $gray-l4;
white-space: nowrap;
&:first-child {
border-top: none;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
vertical-align: middle;
width: 75%;
margin-right: 5%;
}
}
}
.collection-details {
.actions {
@include transition(opacity .15s .25s ease-in-out);
position: absolute;
top: $baseline;
right: $baseline;
opacity: 0.0;
.action {
display: inline-block;
vertical-align: middle;
margin-right: ($baseline/4);
.edit {
@extend %ui-btn-non-blue;
}
.edit-signatory {
@extend %ui-btn-non-blue;
}
.delete {
@extend %ui-btn-non;
&.is-disabled {
background-color: $gray-l3;
color: $gray-l6;
}
}
}
}
}
.collection-references {
@extend %t-copy-sub1;
box-shadow: 0 2px 2px 0 $shadow inset;
padding: $baseline ($baseline*1.5) $baseline ($baseline*2.5);
color: $gray-l1;
.usage {
margin-left: $baseline;
.usage-unit {
padding: ($baseline/4) 0;
a {
@extend %t-strong;
}
.fa-warning {
margin: ($baseline/4) ($baseline/2) 0 ($baseline*1.5);
color: $orange;
}
.fa-times-circle {
margin: ($baseline/4) ($baseline/2) 0 ($baseline*1.5);
color: $red-l2;
}
}
}
}
.collection-edit {
@include box-sizing(border-box);
border-radius: 2px;
width: 100%;
background: $white;
.message {
margin-bottom: 0;
}
.wrapper-form {
padding: $baseline ($baseline*1.5);
}
.action-add-signatory {
@extend %ui-btn-flat-outline;
display: block;
width: 100%;
margin-top: ($baseline*0.75);
padding: ($baseline/2) $baseline;
}
.disableClick {
@extend %ui-disabled;
color: $gray-l1;
}
.tip {
@extend %t-copy-sub2;
@include transition(color, 0.15s, ease-in-out);
display: block;
margin-top: ($baseline/2);
color: $gray-l2;
}
.is-focused .tip {
color: $gray;
}
.collection-fields {
@extend %cont-no-list;
margin-bottom: $baseline;
}
.field {
margin: 0 0 ($baseline*0.75) 0;
&:last-child {
@extend %wipe-last-child;
}
&.required {
label {
@extend %t-strong;
}
label:after {
margin-left: ($baseline/4);
content: "*";
}
}
label, input, textarea {
display: block;
}
textarea {
resize: vertical;
}
label {
@extend %t-copy-sub1;
@include transition(color, 0.15s, ease-in-out);
margin: 0 0 ($baseline/4) 0;
&.is-focused {
color: $blue;
}
}
//this section is borrowed from _account.scss - we should clean up and unify later
input, textarea {
@extend %t-copy-base;
height: 100%;
width: 100%;
padding: ($baseline/2);
&.long {
width: 100%;
}
&.short {
width: 25%;
}
::-webkit-input-placeholder {
color: $gray-l4;
}
:-moz-placeholder {
color: $gray-l3;
}
::-moz-placeholder {
color: $gray-l3;
}
:-ms-input-placeholder {
color: $gray-l3;
}
&:focus {
+ .tip {
color: $gray;
}
}
}
&.error {
label {
color: $red;
}
input {
border-color: $red;
}
}
.org-logo-upload-wrapper {
@include clearfix();
width: flex-grid(12,12);
.org-logo-upload-input-wrapper {
float: left;
width: flex-grid(7,12);
margin-right: flex-gutter();
}
.action-upload-org-logo {
@extend %ui-btn-flat-outline;
float: right;
width: flex-grid(4,12);
margin-top: ($baseline/4);
padding: ($baseline/2) $baseline;
}
}
.current-org-logo {
margin-bottom: ($baseline/2);
padding: ($baseline/2) $baseline;
background: $gray-l5;
text-align: center;
.wrapper-org-logo {
display: block;
width: 375px;
height: 200px;
overflow: hidden;
margin: 0 auto;
border: 1px solid $gray-l4;
box-shadow: 0 1px 1px $shadow-l1;
padding: ($baseline/2);
background: $white;
}
.org-logo {
display: block;
width: 100%;
min-height: 100%;
}
}
}
label.required {
@extend %t-strong;
&:after {
margin-left: ($baseline/4);
content: "*";
}
}
.field.add-collection-name {
label {
width: 50%;
@extend %t-title5;
display: inline-block;
vertical-align: bottom;
}
.certificate-id {
display: inline-block;
width: 45%;
text-align: right;
vertical-align: top;
color: $gray-l1;
.certificate-value {
@extend %t-strong;
white-space: nowrap;
margin-left: ($baseline*0.5);
}
}
}
.actions {
box-shadow: inset 0 1px 2px $shadow;
border-top: 1px solid $gray-l1;
padding: ($baseline*0.75) $baseline;
background: $gray-l6;
.action {
margin-right: ($baseline/4);
&:last-child {
margin-right: 0;
}
}
.action-primary {
@extend %btn-primary-blue;
padding: ($baseline/4) $baseline;
}
.action-secondary {
@extend %btn-secondary-gray;
padding: ($baseline/4) $baseline;
}
.wrapper-delete-button {
float: right;
padding: ($baseline/4) ($baseline/2);
.is-disabled {
color: $gray-l3;
}
}
}
.copy {
@extend %t-copy-sub2;
margin: ($baseline) 0 ($baseline/2) 0;
color: $gray;
strong {
@extend %t-strong;
}
}
}
.action-add-item {
@extend %ui-btn-flat-outline;
@extend %t-action2;
@extend %t-strong;
display: block;
width: 100%;
margin: ($baseline*1.5) 0 0 0;
padding: ($baseline/2);
}
}
// add/new collection
.action-add {
@extend %ui-btn-flat-outline;
display: block;
width: 100%;
margin-top: ($baseline*0.75);
padding: ($baseline/2) $baseline;
&.is-hidden {
display: none;
}
.icon {
display: inline-block;
vertical-align: middle;
@include margin-right($baseline/2);
}
}
.action-add-hidden {
visibility: hidden;
}
}
// * +Main - Certificate
// ====================
// TO-DO: refactor to use collection styling where possible.
.view-certificates .certificates {
.certificate-details, .certificate-edit {
.title {
@extend %t-title4;
@extend %t-strong;
margin-bottom: ($baseline/2);
}
}
.certificate-edit {
.add-collection-name label {
padding-right: 5%;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: bottom;
}
.field-group {
@include clearfix();
margin: 0 0 ($baseline/2) 0;
padding: ($baseline/4) 0 0 0;
.group-allocation,
.field {
display: inline-block;
vertical-align: middle;
margin: 0 3% 0 0;
}
.group-allocation {
max-width: 10%;
min-width: 5%;
color: $gray-l1;
}
.field {
position: relative;
&.long {
width: 80%;
}
&.short {
width: 10%;
}
}
.action-close {
@include transition(color $tmg-f2 ease-in-out);
@extend %t-action1;
display: inline-block;
border: 0;
padding: 0;
background: transparent;
color: $blue-l3;
vertical-align: middle;
&:hover {
color: $blue;
}
}
}
}
}
// * +Signatories -Certificate
// ====================
// TO-DO: refactor to use collection styling where possible.
.view-certificates .certificates {
.signatory-details, .signatory-edit {
@extend %ui-window;
border-color: $gray-l4;
.signatory-panel-header {
@extend %t-strong;
background-color: $gray-l5;
padding: ($baseline/2) ($baseline*0.75);
border-bottom: 1px solid $gray-l5;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.signatory-panel-body {
padding: $baseline;
}
.signatory-panel-body label {
font-weight: 600;
}
.signatory-panel-edit {
float:right;
padding: 8px;
position: inherit;
}
}
.signatory-edit {
// TO-DO: remove icon styling, use save / cancel pattern for Studio
.signatory-panel-close, .signatory-panel-save, .signatory-panel-delete {
float:right;
padding:10px;
}
.tip {
@extend %t-copy-sub2;
@include transition(color, 0.15s, ease-in-out);
display: block;
margin-top: ($baseline/4);
color: $gray-l3;
}
.field {
margin-bottom: $baseline;
&:last-child {
@extend %wipe-last-child;
}
&.required {
label {
@extend %t-strong;
}
label:after {
margin-left: ($baseline/4);
content: "*";
}
}
label, input, textarea {
display: block;
}
textarea {
resize: vertical;
}
label {
@extend %t-copy-sub1;
@include transition(color, 0.15s, ease-in-out);
margin: 0 0 ($baseline/4) 0;
&.is-focused {
color: $blue;
}
}
//TO-DO: this section is borrowed from _account.scss - we should clean up and unify later
input, textarea {
@extend %t-copy-base;
height: 100%;
width: 100%;
padding: ($baseline/2);
&.long {
width: 100%;
}
&.short {
width: 25%;
}
::-webkit-input-placeholder {
color: $gray-l4;
}
:-moz-placeholder {
color: $gray-l3;
}
::-moz-placeholder {
color: $gray-l3;
}
:-ms-input-placeholder {
color: $gray-l3;
}
&:focus {
+ .tip {
color: $gray;
}
}
}
&.error {
label {
color: $red;
}
input {
border-color: $red;
}
.message-error{
color: $red;
}
}
.signature-upload-wrapper {
@include clearfix();
width: flex-grid(12,12);
.signature-upload-input-wrapper {
float: left;
width: flex-grid(7,12);
margin-right: flex-gutter();
}
.action-upload-signature {
@extend %ui-btn-flat-outline;
float: right;
width: flex-grid(4,12);
margin-top: ($baseline/4);
padding: ($baseline/2) $baseline;
}
}
.current-signature-image {
margin-bottom: ($baseline/2);
padding: ($baseline/2) $baseline;
background: $gray-l5;
text-align: center;
.wrapper-signature-image {
display: block;
width: 375px;
height: 200px;
overflow: hidden;
margin: 0 auto;
border: 1px solid $gray-l4;
box-shadow: 0 1px 1px $shadow-l1;
padding: ($baseline/2);
background: $white;
}
.signature-image {
display: block;
width: 100%;
min-height: 100%;
}
}
}
}
}