diff --git a/.scss-lint.yml b/.scss-lint.yml
index b00e1678b..e652ce651 100644
--- a/.scss-lint.yml
+++ b/.scss-lint.yml
@@ -8,6 +8,8 @@ scss_files: '**/client/src/**/*.scss'
exclude:
- 'client/src/styles/legacy/*'
- 'admin/client/src/styles/legacy/*'
+ - 'admin/client/src/font/styles.css'
+
severity: error
diff --git a/admin/client/dist/fonts/silverstripe.eot b/admin/client/dist/fonts/silverstripe.eot
new file mode 100644
index 000000000..314fc077a
Binary files /dev/null and b/admin/client/dist/fonts/silverstripe.eot differ
diff --git a/admin/client/dist/fonts/silverstripe.ttf b/admin/client/dist/fonts/silverstripe.ttf
new file mode 100644
index 000000000..da2a3b0cf
Binary files /dev/null and b/admin/client/dist/fonts/silverstripe.ttf differ
diff --git a/admin/client/dist/fonts/silverstripe.woff b/admin/client/dist/fonts/silverstripe.woff
new file mode 100644
index 000000000..42127806b
Binary files /dev/null and b/admin/client/dist/fonts/silverstripe.woff differ
diff --git a/admin/client/dist/images/cms_content_header.png b/admin/client/dist/images/cms_content_header.png
new file mode 100644
index 000000000..d815a2654
Binary files /dev/null and b/admin/client/dist/images/cms_content_header.png differ
diff --git a/admin/client/dist/images/progressbar_blue.gif b/admin/client/dist/images/progressbar_blue.gif
new file mode 100644
index 000000000..5ccc3fee3
Binary files /dev/null and b/admin/client/dist/images/progressbar_blue.gif differ
diff --git a/admin/client/dist/images/silverstripe.svg b/admin/client/dist/images/silverstripe.svg
new file mode 100644
index 000000000..1dad92864
--- /dev/null
+++ b/admin/client/dist/images/silverstripe.svg
@@ -0,0 +1,85 @@
+
+
+
diff --git a/admin/client/dist/images/sprite-btn-icon.png b/admin/client/dist/images/sprite-btn-icon.png
new file mode 100644
index 000000000..53fe20a45
Binary files /dev/null and b/admin/client/dist/images/sprite-btn-icon.png differ
diff --git a/admin/client/dist/images/sprite-sprites-32x32.png b/admin/client/dist/images/sprite-sprites-32x32.png
new file mode 100644
index 000000000..304c3f69a
Binary files /dev/null and b/admin/client/dist/images/sprite-sprites-32x32.png differ
diff --git a/admin/client/src/font/LICENSE.txt b/admin/client/src/font/LICENSE.txt
new file mode 100644
index 000000000..32317d64c
--- /dev/null
+++ b/admin/client/src/font/LICENSE.txt
@@ -0,0 +1,27 @@
+Font license info
+The SilverStripe custom icon font set is a collection of hand crafted and sourced icons through http://app.fontastic.me/
+Fontastic allows us to package together icons from multiple sources for use as a single set.
+
+## Entypo
+
+ Author: Daniel Bruce
+ License: Creative Commons 3.0
+ Homepage: http://www.entypo.com
+
+## Picol
+
+ Author: Melih Bilgil
+ License: Creative Commons 3.0
+ Homepage: http://picol.org/
+
+## Foundation icons
+
+ Author: Zurb
+ License: Creative Commons 3.0
+ Homepage: http://zurb.com/playground/foundation-icons
+
+## Font Awesome
+
+ Author: Dave Gandy
+ License: MIT License (MIT)
+ Homepage: https://fortawesome.github.io/Font-Awesome/
diff --git a/admin/client/src/font/fonts/silverstripe.eot b/admin/client/src/font/fonts/silverstripe.eot
new file mode 100644
index 000000000..314fc077a
Binary files /dev/null and b/admin/client/src/font/fonts/silverstripe.eot differ
diff --git a/admin/client/src/font/fonts/silverstripe.svg b/admin/client/src/font/fonts/silverstripe.svg
new file mode 100644
index 000000000..1dad92864
--- /dev/null
+++ b/admin/client/src/font/fonts/silverstripe.svg
@@ -0,0 +1,85 @@
+
+
+
diff --git a/admin/client/src/font/fonts/silverstripe.ttf b/admin/client/src/font/fonts/silverstripe.ttf
new file mode 100644
index 000000000..da2a3b0cf
Binary files /dev/null and b/admin/client/src/font/fonts/silverstripe.ttf differ
diff --git a/admin/client/src/font/fonts/silverstripe.woff b/admin/client/src/font/fonts/silverstripe.woff
new file mode 100644
index 000000000..42127806b
Binary files /dev/null and b/admin/client/src/font/fonts/silverstripe.woff differ
diff --git a/admin/client/src/font/icon-reference.html b/admin/client/src/font/icon-reference.html
new file mode 100644
index 000000000..e5ed18abe
--- /dev/null
+++ b/admin/client/src/font/icon-reference.html
@@ -0,0 +1,640 @@
+
+
+
+
+
+
+ Font Reference - SilverStripe
+
+
+
+
+
+
+
SilverStripe
+
This font was created withFontastic
+
CSS mapping
+
+
Character mapping
+
+
+
+
+
diff --git a/admin/client/src/font/styles.css b/admin/client/src/font/styles.css
new file mode 100644
index 000000000..2e5a5a76c
--- /dev/null
+++ b/admin/client/src/font/styles.css
@@ -0,0 +1,265 @@
+@charset "UTF-8";
+
+@font-face {
+ font-family: "silverstripe";
+ src:url("fonts/silverstripe.eot");
+ src:url("fonts/silverstripe.eot?#iefix") format("embedded-opentype"),
+ url("fonts/silverstripe.woff") format("woff"),
+ url("fonts/silverstripe.ttf") format("truetype"),
+ url("fonts/silverstripe.svg#silverstripe") format("svg");
+ font-weight: normal;
+ font-style: normal;
+
+}
+
+[data-icon]:before {
+ font-family: "silverstripe" !important;
+ content: attr(data-icon);
+ font-style: normal !important;
+ font-weight: normal !important;
+ font-variant: normal !important;
+ text-transform: none !important;
+ speak: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+[class^="font-icon-"]:before,
+[class*=" font-icon-"]:before {
+ font-family: "silverstripe" !important;
+ font-style: normal !important;
+ font-weight: normal !important;
+ font-variant: normal !important;
+ text-transform: none !important;
+ speak: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.font-icon-search:before {
+ content: "\73";
+}
+.font-icon-sync:before {
+ content: "\63";
+}
+.font-icon-print:before {
+ content: "\64";
+}
+.font-icon-list:before {
+ content: "\65";
+}
+.font-icon-plus-circled:before {
+ content: "\66";
+}
+.font-icon-check-mark-2:before {
+ content: "\6b";
+}
+.font-icon-book:before {
+ content: "\6e";
+}
+.font-icon-book-open:before {
+ content: "\6f";
+}
+.font-icon-plus:before {
+ content: "\6a";
+}
+.font-icon-tree:before {
+ content: "\70";
+}
+.font-icon-flow-tree:before {
+ content: "\71";
+}
+.font-icon-info-circled:before {
+ content: "\79";
+}
+.font-icon-chart-line:before {
+ content: "\42";
+}
+.font-icon-graph-bar:before {
+ content: "\45";
+}
+.font-icon-torsos-all:before {
+ content: "\46";
+}
+.font-icon-torso:before {
+ content: "\48";
+}
+.font-icon-picture:before {
+ content: "\76";
+}
+.font-icon-chart-pie:before {
+ content: "\41";
+}
+.font-icon-sitemap:before {
+ content: "\43";
+}
+.font-icon-globe-1:before {
+ content: "\52";
+}
+.font-icon-chat:before {
+ content: "\74";
+}
+.font-icon-comment:before {
+ content: "\77";
+}
+.font-icon-logout:before {
+ content: "\7a";
+}
+.font-icon-cancel-circled:before {
+ content: "\51";
+}
+.font-icon-left-open:before {
+ content: "\54";
+}
+.font-icon-right-open:before {
+ content: "\55";
+}
+.font-icon-check-mark:before {
+ content: "\47";
+}
+.font-icon-check-mark-circle:before {
+ content: "\49";
+}
+.font-icon-back-in-time:before {
+ content: "\58";
+}
+.font-icon-cog:before {
+ content: "\59";
+}
+.font-icon-fast-forward:before {
+ content: "\68";
+}
+.font-icon-install:before {
+ content: "\61";
+}
+.font-icon-down-circled:before {
+ content: "\69";
+}
+.font-icon-eye:before {
+ content: "\6c";
+}
+.font-icon-columns:before {
+ content: "\72";
+}
+.font-icon-edit-write:before {
+ content: "\75";
+}
+.font-icon-monitor:before {
+ content: "\78";
+}
+.font-icon-mobile:before {
+ content: "\4a";
+}
+.font-icon-tablet:before {
+ content: "\4b";
+}
+.font-icon-resize:before {
+ content: "\4c";
+}
+.font-icon-pencil:before {
+ content: "\6d";
+}
+.font-icon-trash:before {
+ content: "\67";
+}
+.font-icon-edit:before {
+ content: "\4e";
+}
+.font-icon-tick:before {
+ content: "\4f";
+}
+.font-icon-upload:before {
+ content: "\62";
+}
+.font-icon-folder-add:before {
+ content: "\53";
+}
+.font-icon-silverstripe:before {
+ content: "\4d";
+}
+.font-icon-thumbnails:before {
+ content: "\57";
+}
+.font-icon-down-open:before {
+ content: "\30";
+}
+.font-icon-up-open:before {
+ content: "\31";
+}
+.font-icon-link:before {
+ content: "\32";
+}
+.font-icon-level-up:before {
+ content: "\56";
+}
+.font-icon-image:before {
+ content: "\34";
+}
+.font-icon-trash-bin:before {
+ content: "\50";
+}
+.font-icon-code:before {
+ content: "\33";
+}
+.font-icon-left-open-big:before {
+ content: "\35";
+}
+.font-icon-down-open-big:before {
+ content: "\36";
+}
+.font-icon-up-open-big:before {
+ content: "\37";
+}
+.font-icon-right-open-big:before {
+ content: "\38";
+}
+.font-icon-dot-3:before {
+ content: "\39";
+}
+.font-icon-save:before {
+ content: "\21";
+}
+.font-icon-rocket:before {
+ content: "\5a";
+}
+.font-icon-cancel:before {
+ content: "\44";
+}
+.font-icon-happy:before {
+ content: "\22";
+}
+.font-icon-sad:before {
+ content: "\23";
+}
+.font-icon-angle-double-right:before {
+ content: "\24";
+}
+.font-icon-angle-double-left:before {
+ content: "\25";
+}
+.font-icon-angle-right:before {
+ content: "\26";
+}
+.font-icon-angle-left:before {
+ content: "\27";
+}
+.font-icon-caret-up-down:before {
+ content: "\29";
+}
+.font-icon-caret-down-two:before {
+ content: "\28";
+}
+.font-icon-caret-up-two:before {
+ content: "\2a";
+}
+.font-icon-right-dir:before {
+ content: "\2b";
+}
+.font-icon-down-dir:before {
+ content: "\2c";
+}
+.font-icon-link-broken:before {
+ content: "\2d";
+}
diff --git a/admin/client/src/images/alert-bad.gif b/admin/client/src/images/alert-bad.gif
new file mode 100644
index 000000000..98529dd5e
Binary files /dev/null and b/admin/client/src/images/alert-bad.gif differ
diff --git a/admin/client/src/images/alert-good.gif b/admin/client/src/images/alert-good.gif
new file mode 100644
index 000000000..856fc40c6
Binary files /dev/null and b/admin/client/src/images/alert-good.gif differ
diff --git a/admin/client/src/images/arrow_refresh.gif b/admin/client/src/images/arrow_refresh.gif
new file mode 100644
index 000000000..70941393f
Binary files /dev/null and b/admin/client/src/images/arrow_refresh.gif differ
diff --git a/admin/client/src/images/arrows.png b/admin/client/src/images/arrows.png
new file mode 100644
index 000000000..69f48c5e9
Binary files /dev/null and b/admin/client/src/images/arrows.png differ
diff --git a/admin/client/src/images/btn_arrow_down_grey.png b/admin/client/src/images/btn_arrow_down_grey.png
new file mode 100644
index 000000000..1d769955a
Binary files /dev/null and b/admin/client/src/images/btn_arrow_down_grey.png differ
diff --git a/admin/client/src/images/chosen-sprite.png b/admin/client/src/images/chosen-sprite.png
new file mode 100644
index 000000000..c57da70b4
Binary files /dev/null and b/admin/client/src/images/chosen-sprite.png differ
diff --git a/admin/client/src/images/chosen-sprite@2x.png b/admin/client/src/images/chosen-sprite@2x.png
new file mode 100644
index 000000000..6b5054520
Binary files /dev/null and b/admin/client/src/images/chosen-sprite@2x.png differ
diff --git a/admin/client/src/images/content-header-tabs-sprite.png b/admin/client/src/images/content-header-tabs-sprite.png
new file mode 100644
index 000000000..5e53bcd14
Binary files /dev/null and b/admin/client/src/images/content-header-tabs-sprite.png differ
diff --git a/admin/client/src/images/drag_drop_opt.svg b/admin/client/src/images/drag_drop_opt.svg
new file mode 100644
index 000000000..4291f841c
--- /dev/null
+++ b/admin/client/src/images/drag_drop_opt.svg
@@ -0,0 +1,56 @@
+
+
+
+
diff --git a/admin/client/src/images/filter-icons.png b/admin/client/src/images/filter-icons.png
new file mode 100644
index 000000000..c5802cc39
Binary files /dev/null and b/admin/client/src/images/filter-icons.png differ
diff --git a/admin/client/src/images/link_arrows.png b/admin/client/src/images/link_arrows.png
new file mode 100644
index 000000000..d1cc76c64
Binary files /dev/null and b/admin/client/src/images/link_arrows.png differ
diff --git a/admin/client/src/images/logo.gif b/admin/client/src/images/logo.gif
new file mode 100644
index 000000000..77642f24a
Binary files /dev/null and b/admin/client/src/images/logo.gif differ
diff --git a/admin/client/src/images/logo_small.png b/admin/client/src/images/logo_small.png
new file mode 100644
index 000000000..0aa3d1d07
Binary files /dev/null and b/admin/client/src/images/logo_small.png differ
diff --git a/admin/client/src/images/logo_small@2x.png b/admin/client/src/images/logo_small@2x.png
new file mode 100644
index 000000000..e7e39e6bf
Binary files /dev/null and b/admin/client/src/images/logo_small@2x.png differ
diff --git a/admin/client/src/images/menu-arrow-deselected-up.png b/admin/client/src/images/menu-arrow-deselected-up.png
new file mode 100644
index 000000000..1d20e2ee1
Binary files /dev/null and b/admin/client/src/images/menu-arrow-deselected-up.png differ
diff --git a/admin/client/src/images/network-save-constructive.gif b/admin/client/src/images/network-save-constructive.gif
new file mode 100644
index 000000000..735c8b870
Binary files /dev/null and b/admin/client/src/images/network-save-constructive.gif differ
diff --git a/admin/client/src/images/network-save.gif b/admin/client/src/images/network-save.gif
new file mode 100644
index 000000000..1560b646c
Binary files /dev/null and b/admin/client/src/images/network-save.gif differ
diff --git a/admin/client/src/images/question.png b/admin/client/src/images/question.png
new file mode 100755
index 000000000..f51f15ba3
Binary files /dev/null and b/admin/client/src/images/question.png differ
diff --git a/admin/client/src/images/silverstripe_logo.png b/admin/client/src/images/silverstripe_logo.png
new file mode 100644
index 000000000..eae3feadd
Binary files /dev/null and b/admin/client/src/images/silverstripe_logo.png differ
diff --git a/admin/client/src/images/sitetree_ss_default_icons.png b/admin/client/src/images/sitetree_ss_default_icons.png
new file mode 100644
index 000000000..72f962f99
Binary files /dev/null and b/admin/client/src/images/sitetree_ss_default_icons.png differ
diff --git a/admin/client/src/images/sitetree_ss_default_icons@2x.png b/admin/client/src/images/sitetree_ss_default_icons@2x.png
new file mode 100644
index 000000000..570efdc23
Binary files /dev/null and b/admin/client/src/images/sitetree_ss_default_icons@2x.png differ
diff --git a/admin/client/src/images/sitetree_ss_pageclass_icons_default.png b/admin/client/src/images/sitetree_ss_pageclass_icons_default.png
new file mode 100644
index 000000000..1d65c24d8
Binary files /dev/null and b/admin/client/src/images/sitetree_ss_pageclass_icons_default.png differ
diff --git a/admin/client/src/images/spinner.gif b/admin/client/src/images/spinner.gif
new file mode 100644
index 000000000..bc8cf92e5
Binary files /dev/null and b/admin/client/src/images/spinner.gif differ
diff --git a/admin/client/src/images/spinner@2x.gif b/admin/client/src/images/spinner@2x.gif
new file mode 100644
index 000000000..f0684f69d
Binary files /dev/null and b/admin/client/src/images/spinner@2x.gif differ
diff --git a/admin/client/src/images/sprites/sprite-btn-icon.png b/admin/client/src/images/sprites/sprite-btn-icon.png
new file mode 100644
index 000000000..53fe20a45
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-btn-icon.png differ
diff --git a/admin/client/src/images/sprites/sprite-menu-icons-16x16-2x.png b/admin/client/src/images/sprites/sprite-menu-icons-16x16-2x.png
new file mode 100644
index 000000000..24fff118b
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-menu-icons-16x16-2x.png differ
diff --git a/admin/client/src/images/sprites/sprite-menu-icons-16x16.png b/admin/client/src/images/sprites/sprite-menu-icons-16x16.png
new file mode 100644
index 000000000..a7cc02524
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-menu-icons-16x16.png differ
diff --git a/admin/client/src/images/sprites/sprite-menu-icons-24x24-2x.png b/admin/client/src/images/sprites/sprite-menu-icons-24x24-2x.png
new file mode 100644
index 000000000..69c4140e6
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-menu-icons-24x24-2x.png differ
diff --git a/admin/client/src/images/sprites/sprite-menu-icons-24x24.png b/admin/client/src/images/sprites/sprite-menu-icons-24x24.png
new file mode 100644
index 000000000..cb4a4a8bf
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-menu-icons-24x24.png differ
diff --git a/admin/client/src/images/sprites/sprite-sprites-32x32-2x.png b/admin/client/src/images/sprites/sprite-sprites-32x32-2x.png
new file mode 100644
index 000000000..108e2ee76
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-sprites-32x32-2x.png differ
diff --git a/admin/client/src/images/sprites/sprite-sprites-32x32.png b/admin/client/src/images/sprites/sprite-sprites-32x32.png
new file mode 100644
index 000000000..304c3f69a
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-sprites-32x32.png differ
diff --git a/admin/client/src/images/sprites/sprite-sprites-64x64-2x.png b/admin/client/src/images/sprites/sprite-sprites-64x64-2x.png
new file mode 100644
index 000000000..3335eb772
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-sprites-64x64-2x.png differ
diff --git a/admin/client/src/images/sprites/sprite-sprites-64x64.png b/admin/client/src/images/sprites/sprite-sprites-64x64.png
new file mode 100644
index 000000000..510bb53df
Binary files /dev/null and b/admin/client/src/images/sprites/sprite-sprites-64x64.png differ
diff --git a/admin/client/src/images/sticky-toggle-off.png b/admin/client/src/images/sticky-toggle-off.png
new file mode 100644
index 000000000..a2ca12252
Binary files /dev/null and b/admin/client/src/images/sticky-toggle-off.png differ
diff --git a/admin/client/src/images/sticky-toggle-on.png b/admin/client/src/images/sticky-toggle-on.png
new file mode 100644
index 000000000..e41459f23
Binary files /dev/null and b/admin/client/src/images/sticky-toggle-on.png differ
diff --git a/admin/client/src/images/textures/bg_cms_main_content.png b/admin/client/src/images/textures/bg_cms_main_content.png
new file mode 100644
index 000000000..ce265dba1
Binary files /dev/null and b/admin/client/src/images/textures/bg_cms_main_content.png differ
diff --git a/admin/client/src/images/textures/bg_fieldset_elements_border b/admin/client/src/images/textures/bg_fieldset_elements_border
new file mode 100644
index 000000000..dae63ba4d
Binary files /dev/null and b/admin/client/src/images/textures/bg_fieldset_elements_border differ
diff --git a/admin/client/src/images/textures/bg_fieldset_elements_border.png b/admin/client/src/images/textures/bg_fieldset_elements_border.png
new file mode 100644
index 000000000..c22e2273c
Binary files /dev/null and b/admin/client/src/images/textures/bg_fieldset_elements_border.png differ
diff --git a/admin/client/src/images/textures/cms_content_header.png b/admin/client/src/images/textures/cms_content_header.png
new file mode 100644
index 000000000..d815a2654
Binary files /dev/null and b/admin/client/src/images/textures/cms_content_header.png differ
diff --git a/admin/client/src/images/textures/mce_editor.gif b/admin/client/src/images/textures/mce_editor.gif
new file mode 100644
index 000000000..313bd8b78
Binary files /dev/null and b/admin/client/src/images/textures/mce_editor.gif differ
diff --git a/admin/client/src/images/throbber.gif b/admin/client/src/images/throbber.gif
new file mode 100644
index 000000000..5b33f7e54
Binary files /dev/null and b/admin/client/src/images/throbber.gif differ
diff --git a/admin/client/src/sprites/README.md b/admin/client/src/sprites/README.md
new file mode 100644
index 000000000..562b17845
--- /dev/null
+++ b/admin/client/src/sprites/README.md
@@ -0,0 +1,14 @@
+Bitmap sprites will be phased out in the CMS UI in favour of web font icons
+as well as SVG graphics. During this transition, the sprites are still references,
+but there's no way to add new sprites to the system.
+
+*Original Instructions (no longer valid)*
+
+We use sprites to handle various icons and images throughout the CMS. These are automatically generated
+by running `npm run build` and can be found at `/admin/client/src/sprites/dist`. To add new
+images to the sprites, simply add the image to the folder matching the image's size in
+`/admin/client/sprites` then run `npm run sprites` to generate the sprite containing your image.
+Along with the new sprite containing your image, there will also be a new variable in
+`/admin/client/styles/legacy/_sprites.scss` which you can use in your .scss file by first extending the class matching
+the sprite (eg `@extend .icon-sprites-32x32;`), and then including your image using the variable
+matching your image (eg `@include sprite($sprites-32x32-my-image);`).
diff --git a/admin/client/src/styles/_fonts.scss b/admin/client/src/styles/_fonts.scss
index 8ab9de41a..abb49b09f 100644
--- a/admin/client/src/styles/_fonts.scss
+++ b/admin/client/src/styles/_fonts.scss
@@ -2,11 +2,11 @@
@font-face {
font-family: "silverstripe";
- src: url("../../dist/font/fonts/silverstripe.eot");
- src: url("../../dist/font/fonts/silverstripe.eot?#iefix") format("embedded-opentype"),
- url("../../dist/font/fonts/silverstripe.woff") format("woff"),
- url("../../dist/font/fonts/silverstripe.ttf") format("truetype"),
- url("../../dist/font/fonts/silverstripe.svg#silverstripe") format("svg");
+ src: url("../font/fonts/silverstripe.eot");
+ src: url("../font/fonts/silverstripe.eot?#iefix") format("embedded-opentype"),
+ url("../font/fonts/silverstripe.woff") format("woff"),
+ url("../font/fonts/silverstripe.ttf") format("truetype"),
+ url("../font/fonts/silverstripe.svg#silverstripe") format("svg");
font-weight: normal;
font-style: normal;
diff --git a/admin/client/src/styles/legacy/_forms.scss b/admin/client/src/styles/legacy/_forms.scss
index 7a3387279..a1b08ce63 100644
--- a/admin/client/src/styles/legacy/_forms.scss
+++ b/admin/client/src/styles/legacy/_forms.scss
@@ -369,7 +369,7 @@ form.small .field, .field.small {
border: none;
}
&.loading {
- background: transparent url(../images/network-save.gif) no-repeat $grid-x center;
+ background: transparent url("../../../../client/src/images/network-save.gif") no-repeat $grid-x center;
.ui-button-text {
padding-left: 16px /* icon */ + ($grid-x/2);
}
@@ -392,7 +392,7 @@ input.loading, button.loading,
input.ui-state-default.loading, .ui-widget-content input.ui-state-default.loading,
.ui-widget-header input.ui-state-default.loading {
.ui-icon {
- background: transparent url(../images/network-save.gif) no-repeat 0 0;
+ background: transparent url("../../../../client/src/images/network-save.gif") no-repeat 0 0;
}
color: lighten($color-text-dark, 20%);
@@ -403,7 +403,7 @@ input.ui-state-default.loading, .ui-widget-content input.ui-state-default.loadin
input.loading,
button.loading {
&.ss-ui-action-constructive .ui-icon {
- background: transparent url(../images/network-save-constructive.gif) no-repeat 0 0;
+ background: transparent url("../../../../client/src/images/network-save-constructive.gif") no-repeat 0 0;
}
}
@@ -580,7 +580,7 @@ button.loading {
}
.ss-ui-loading-icon {
- background: url(../images/network-save.gif) no-repeat;
+ background: url("../../../../client/src/images/network-save.gif") no-repeat;
display: block;
width: 16px;
height: 16px;
diff --git a/admin/client/src/styles/legacy/_retina.scss b/admin/client/src/styles/legacy/_retina.scss
index 96ca8c617..d2ae6d4cc 100644
--- a/admin/client/src/styles/legacy/_retina.scss
+++ b/admin/client/src/styles/legacy/_retina.scss
@@ -80,20 +80,20 @@
/* Loading spinner */
.cms-content-loading-spinner {
- background-image: url('../images/spinner@2x.gif');
+ background-image: url('../../images/spinner@2x.gif');
background-size: 43px 43px;
}
.ui-dialog {
.ui-dialog-content {
&.loading {
- background-image: url(../images/spinner@2x.gif);
+ background-image: url('../../images/spinner@2x.gif');
background-size: 43px 43px;
}
}
&.loading {
- background-image: url(../images/spinner@2x.gif);
+ background-image: url('../../images/spinner@2x.gif');
background-size: 43px 43px;
}
}
diff --git a/admin/client/src/styles/legacy/_style.scss b/admin/client/src/styles/legacy/_style.scss
index 316fe2d4c..4c0a618e0 100644
--- a/admin/client/src/styles/legacy/_style.scss
+++ b/admin/client/src/styles/legacy/_style.scss
@@ -702,7 +702,7 @@ body.cms {
width: 100%;
height: 100%;
z-index: 9999;
- background: url(../images/spinner.gif) no-repeat 50% 50%;
+ background: url("../../images/spinner.gif") no-repeat 50% 50%;
}
/** -----------------------------------------------
@@ -1626,7 +1626,7 @@ form.member-profile-form {
overflow: auto; // TODO Replace with proper $.layout grid
&.loading {
- background-image: url(../images/spinner.gif);
+ background-image: url("../../images/spinner.gif");
background-position: 50% 50%;
background-repeat: no-repeat;
}
@@ -1668,7 +1668,7 @@ form.member-profile-form {
}
&.loading {
- background-image: url(../images/spinner.gif);
+ background-image: url("../../images/spinner.gif");
background-position: 50% 50%;
background-repeat: no-repeat;
}
diff --git a/admin/code/LeftAndMain.php b/admin/code/LeftAndMain.php
index a7fa2ccfa..bc1c01f06 100644
--- a/admin/code/LeftAndMain.php
+++ b/admin/code/LeftAndMain.php
@@ -537,7 +537,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
");
Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/bundle-lib.js');
- Requirements::css(FRAMEWORK_ADMIN_DIR . '/client/dist/style/bundle.css');
+ Requirements::css(FRAMEWORK_ADMIN_DIR . '/client/dist/styles/bundle.css');
Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/bundle-legacy.js');
diff --git a/admin/code/MemberImportForm.php b/admin/code/MemberImportForm.php
index 781fb49ac..6f170f650 100644
--- a/admin/code/MemberImportForm.php
+++ b/admin/code/MemberImportForm.php
@@ -73,7 +73,7 @@ class MemberImportForm extends Form {
Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/bundle-lib.js');
Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/MemberImportForm.js');
- Requirements::css(FRAMEWORK_ADMIN_DIR . '/client/dist/style/bundle.css');
+ Requirements::css(FRAMEWORK_ADMIN_DIR . '/client/dist/styles/bundle.css');
$this->addExtraClass('cms');
$this->addExtraClass('import-form');
diff --git a/admin/code/SecurityAdmin.php b/admin/code/SecurityAdmin.php
index 45e1a4ba1..e88df0c79 100755
--- a/admin/code/SecurityAdmin.php
+++ b/admin/code/SecurityAdmin.php
@@ -240,7 +240,7 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider {
Requirements::clear();
Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/bundle-lib.js');
Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/MemberImportForm.js');
- Requirements::css(FRAMEWORK_ADMIN_DIR . '/client/dist/style/bundle.css');
+ Requirements::css(FRAMEWORK_ADMIN_DIR . '/client/dist/styles/bundle.css');
return $this->renderWith('BlankPage', array(
'Form' => $this->MemberImportForm()->forTemplate(),
@@ -274,7 +274,7 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider {
Requirements::clear();
Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/bundle-lib.js');
Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/MemberImportForm.js');
- Requirements::css(FRAMEWORK_ADMIN_DIR . '/client/dist/style/bundle.css');
+ Requirements::css(FRAMEWORK_ADMIN_DIR . '/client/dist/styles/bundle.css');
return $this->renderWith('BlankPage', array(
'Content' => ' ',
diff --git a/client/src/images/EditedOnStage.png b/client/src/images/EditedOnStage.png
new file mode 100644
index 000000000..b26916ab1
Binary files /dev/null and b/client/src/images/EditedOnStage.png differ
diff --git a/client/src/images/NewOnStage.png b/client/src/images/NewOnStage.png
new file mode 100644
index 000000000..a271127fe
Binary files /dev/null and b/client/src/images/NewOnStage.png differ
diff --git a/client/src/images/TrashedOnStage.png b/client/src/images/TrashedOnStage.png
new file mode 100644
index 000000000..ce0bb3ac1
Binary files /dev/null and b/client/src/images/TrashedOnStage.png differ
diff --git a/client/src/images/TreeDropdownField_button.gif b/client/src/images/TreeDropdownField_button.gif
new file mode 100644
index 000000000..65261c317
Binary files /dev/null and b/client/src/images/TreeDropdownField_button.gif differ
diff --git a/client/src/images/add.gif b/client/src/images/add.gif
new file mode 100644
index 000000000..7492335c9
Binary files /dev/null and b/client/src/images/add.gif differ
diff --git a/client/src/images/app_icons/audio_32.png b/client/src/images/app_icons/audio_32.png
new file mode 100644
index 000000000..c874d2d8b
Binary files /dev/null and b/client/src/images/app_icons/audio_32.png differ
diff --git a/client/src/images/app_icons/doc_32.png b/client/src/images/app_icons/doc_32.png
new file mode 100644
index 000000000..8296429d1
Binary files /dev/null and b/client/src/images/app_icons/doc_32.png differ
diff --git a/client/src/images/app_icons/folder_32.png b/client/src/images/app_icons/folder_32.png
new file mode 100644
index 000000000..a3672f243
Binary files /dev/null and b/client/src/images/app_icons/folder_32.png differ
diff --git a/client/src/images/app_icons/generic_32.png b/client/src/images/app_icons/generic_32.png
new file mode 100644
index 000000000..1073fae06
Binary files /dev/null and b/client/src/images/app_icons/generic_32.png differ
diff --git a/client/src/images/app_icons/mov_32.png b/client/src/images/app_icons/mov_32.png
new file mode 100644
index 000000000..8adbdf0da
Binary files /dev/null and b/client/src/images/app_icons/mov_32.png differ
diff --git a/client/src/images/app_icons/zip_32.png b/client/src/images/app_icons/zip_32.png
new file mode 100644
index 000000000..06518a1d3
Binary files /dev/null and b/client/src/images/app_icons/zip_32.png differ
diff --git a/client/src/images/arrows-01 copy.png b/client/src/images/arrows-01 copy.png
new file mode 100644
index 000000000..e03f0f831
Binary files /dev/null and b/client/src/images/arrows-01 copy.png differ
diff --git a/client/src/images/arrows-01.png b/client/src/images/arrows-01.png
new file mode 100644
index 000000000..ce51b8673
Binary files /dev/null and b/client/src/images/arrows-01.png differ
diff --git a/client/src/images/arrows.png b/client/src/images/arrows.png
new file mode 100644
index 000000000..a24f44db6
Binary files /dev/null and b/client/src/images/arrows.png differ
diff --git a/client/src/images/bullet_arrow_down.png b/client/src/images/bullet_arrow_down.png
new file mode 100644
index 000000000..7f33a1e10
Binary files /dev/null and b/client/src/images/bullet_arrow_down.png differ
diff --git a/client/src/images/bullet_arrow_up.png b/client/src/images/bullet_arrow_up.png
new file mode 100644
index 000000000..af5639c41
Binary files /dev/null and b/client/src/images/bullet_arrow_up.png differ
diff --git a/client/src/images/calendar-icon.gif b/client/src/images/calendar-icon.gif
new file mode 100644
index 000000000..5b3367bff
Binary files /dev/null and b/client/src/images/calendar-icon.gif differ
diff --git a/client/src/images/checkbox.png b/client/src/images/checkbox.png
new file mode 100644
index 000000000..71fbdd3b1
Binary files /dev/null and b/client/src/images/checkbox.png differ
diff --git a/client/src/images/clock-icon.gif b/client/src/images/clock-icon.gif
new file mode 100644
index 000000000..e5a04726d
Binary files /dev/null and b/client/src/images/clock-icon.gif differ
diff --git a/client/src/images/default_media.png b/client/src/images/default_media.png
new file mode 100644
index 000000000..c867d415e
Binary files /dev/null and b/client/src/images/default_media.png differ
diff --git a/client/src/images/delete.gif b/client/src/images/delete.gif
new file mode 100644
index 000000000..27dfea12f
Binary files /dev/null and b/client/src/images/delete.gif differ
diff --git a/client/src/images/delete_disabled.gif b/client/src/images/delete_disabled.gif
new file mode 100644
index 000000000..0e769c075
Binary files /dev/null and b/client/src/images/delete_disabled.gif differ
diff --git a/client/src/images/drag.gif b/client/src/images/drag.gif
new file mode 100644
index 000000000..b2d41d559
Binary files /dev/null and b/client/src/images/drag.gif differ
diff --git a/client/src/images/drag_readonly.gif b/client/src/images/drag_readonly.gif
new file mode 100644
index 000000000..cef9854c2
Binary files /dev/null and b/client/src/images/drag_readonly.gif differ
diff --git a/client/src/images/drive-upload-large.png b/client/src/images/drive-upload-large.png
new file mode 100644
index 000000000..f95014ee7
Binary files /dev/null and b/client/src/images/drive-upload-large.png differ
diff --git a/client/src/images/drive-upload-white.png b/client/src/images/drive-upload-white.png
new file mode 100755
index 000000000..dfc9cfa35
Binary files /dev/null and b/client/src/images/drive-upload-white.png differ
diff --git a/client/src/images/edit.gif b/client/src/images/edit.gif
new file mode 100644
index 000000000..c0e3d387f
Binary files /dev/null and b/client/src/images/edit.gif differ
diff --git a/client/src/images/edit_disabled.gif b/client/src/images/edit_disabled.gif
new file mode 100644
index 000000000..9e504000f
Binary files /dev/null and b/client/src/images/edit_disabled.gif differ
diff --git a/client/src/images/getfirefox.gif b/client/src/images/getfirefox.gif
new file mode 100644
index 000000000..4e1dace04
Binary files /dev/null and b/client/src/images/getfirefox.gif differ
diff --git a/client/src/images/gridfield-level-up.png b/client/src/images/gridfield-level-up.png
new file mode 100644
index 000000000..b3c7fa4fd
Binary files /dev/null and b/client/src/images/gridfield-level-up.png differ
diff --git a/client/src/images/icons/application.png b/client/src/images/icons/application.png
new file mode 100644
index 000000000..1dee9e366
Binary files /dev/null and b/client/src/images/icons/application.png differ
diff --git a/client/src/images/icons/decline.png b/client/src/images/icons/decline.png
new file mode 100644
index 000000000..b76cef717
Binary files /dev/null and b/client/src/images/icons/decline.png differ
diff --git a/client/src/images/icons/document--pencil.png b/client/src/images/icons/document--pencil.png
new file mode 100755
index 000000000..775dfcd76
Binary files /dev/null and b/client/src/images/icons/document--pencil.png differ
diff --git a/client/src/images/icons/document.png b/client/src/images/icons/document.png
new file mode 100644
index 000000000..a48f31d0b
Binary files /dev/null and b/client/src/images/icons/document.png differ
diff --git a/client/src/images/icons/filter-icons.png b/client/src/images/icons/filter-icons.png
new file mode 100644
index 000000000..09f0c3c6a
Binary files /dev/null and b/client/src/images/icons/filter-icons.png differ
diff --git a/client/src/images/icons/icon-jpg.gif b/client/src/images/icons/icon-jpg.gif
new file mode 100644
index 000000000..7f9313783
Binary files /dev/null and b/client/src/images/icons/icon-jpg.gif differ
diff --git a/client/src/images/icons/page_excel.png b/client/src/images/icons/page_excel.png
new file mode 100644
index 000000000..eb6158eb5
Binary files /dev/null and b/client/src/images/icons/page_excel.png differ
diff --git a/client/src/images/icons/page_white_acrobat.png b/client/src/images/icons/page_white_acrobat.png
new file mode 100644
index 000000000..8f8095e46
Binary files /dev/null and b/client/src/images/icons/page_white_acrobat.png differ
diff --git a/client/src/images/icons/page_white_zip.png b/client/src/images/icons/page_white_zip.png
new file mode 100644
index 000000000..fd4bbccdf
Binary files /dev/null and b/client/src/images/icons/page_white_zip.png differ
diff --git a/client/src/images/icons/page_word.png b/client/src/images/icons/page_word.png
new file mode 100644
index 000000000..834cdfaf4
Binary files /dev/null and b/client/src/images/icons/page_word.png differ
diff --git a/client/src/images/icons/pagination-arrows.png b/client/src/images/icons/pagination-arrows.png
new file mode 100644
index 000000000..28402a0c9
Binary files /dev/null and b/client/src/images/icons/pagination-arrows.png differ
diff --git a/client/src/images/lock2.png b/client/src/images/lock2.png
new file mode 100644
index 000000000..b0d9d4125
Binary files /dev/null and b/client/src/images/lock2.png differ
diff --git a/client/src/images/network-save-constructive.gif b/client/src/images/network-save-constructive.gif
new file mode 100644
index 000000000..735c8b870
Binary files /dev/null and b/client/src/images/network-save-constructive.gif differ
diff --git a/client/src/images/network-save.gif b/client/src/images/network-save.gif
new file mode 100644
index 000000000..1560b646c
Binary files /dev/null and b/client/src/images/network-save.gif differ
diff --git a/client/src/images/neverpublished.gif b/client/src/images/neverpublished.gif
new file mode 100644
index 000000000..d90d1a33e
Binary files /dev/null and b/client/src/images/neverpublished.gif differ
diff --git a/client/src/images/openid-small.gif b/client/src/images/openid-small.gif
new file mode 100644
index 000000000..cde836c89
Binary files /dev/null and b/client/src/images/openid-small.gif differ
diff --git a/client/src/images/pagination/record-export.png b/client/src/images/pagination/record-export.png
new file mode 100644
index 000000000..dd34cf6e5
Binary files /dev/null and b/client/src/images/pagination/record-export.png differ
diff --git a/client/src/images/pagination/record-first-g.png b/client/src/images/pagination/record-first-g.png
new file mode 100644
index 000000000..a3bfef6de
Binary files /dev/null and b/client/src/images/pagination/record-first-g.png differ
diff --git a/client/src/images/pagination/record-first.png b/client/src/images/pagination/record-first.png
new file mode 100644
index 000000000..a1a52cc4c
Binary files /dev/null and b/client/src/images/pagination/record-first.png differ
diff --git a/client/src/images/pagination/record-last-g.png b/client/src/images/pagination/record-last-g.png
new file mode 100644
index 000000000..ede7e36c4
Binary files /dev/null and b/client/src/images/pagination/record-last-g.png differ
diff --git a/client/src/images/pagination/record-last.png b/client/src/images/pagination/record-last.png
new file mode 100644
index 000000000..68448e35d
Binary files /dev/null and b/client/src/images/pagination/record-last.png differ
diff --git a/client/src/images/pagination/record-next-g.png b/client/src/images/pagination/record-next-g.png
new file mode 100644
index 000000000..f48422920
Binary files /dev/null and b/client/src/images/pagination/record-next-g.png differ
diff --git a/client/src/images/pagination/record-next.png b/client/src/images/pagination/record-next.png
new file mode 100644
index 000000000..f6c055063
Binary files /dev/null and b/client/src/images/pagination/record-next.png differ
diff --git a/client/src/images/pagination/record-prev-g.png b/client/src/images/pagination/record-prev-g.png
new file mode 100644
index 000000000..432558ad5
Binary files /dev/null and b/client/src/images/pagination/record-prev-g.png differ
diff --git a/client/src/images/pagination/record-prev.png b/client/src/images/pagination/record-prev.png
new file mode 100644
index 000000000..951e5229a
Binary files /dev/null and b/client/src/images/pagination/record-prev.png differ
diff --git a/client/src/images/pagination/record-print.png b/client/src/images/pagination/record-print.png
new file mode 100644
index 000000000..02926897c
Binary files /dev/null and b/client/src/images/pagination/record-print.png differ
diff --git a/client/src/images/progressbar_blue.gif b/client/src/images/progressbar_blue.gif
new file mode 100644
index 000000000..5ccc3fee3
Binary files /dev/null and b/client/src/images/progressbar_blue.gif differ
diff --git a/client/src/images/show.png b/client/src/images/show.png
new file mode 100644
index 000000000..921d07752
Binary files /dev/null and b/client/src/images/show.png differ
diff --git a/client/src/images/show_disabled.png b/client/src/images/show_disabled.png
new file mode 100644
index 000000000..f3c1191a2
Binary files /dev/null and b/client/src/images/show_disabled.png differ
diff --git a/client/src/images/sitetree_ss_default_icons.png b/client/src/images/sitetree_ss_default_icons.png
new file mode 100644
index 000000000..101351db9
Binary files /dev/null and b/client/src/images/sitetree_ss_default_icons.png differ
diff --git a/client/src/images/smilies/confused.gif b/client/src/images/smilies/confused.gif
new file mode 100644
index 000000000..1566e247a
Binary files /dev/null and b/client/src/images/smilies/confused.gif differ
diff --git a/client/src/images/smilies/cool.gif b/client/src/images/smilies/cool.gif
new file mode 100644
index 000000000..a103eaeba
Binary files /dev/null and b/client/src/images/smilies/cool.gif differ
diff --git a/client/src/images/smilies/grin.gif b/client/src/images/smilies/grin.gif
new file mode 100644
index 000000000..2bc39f28e
Binary files /dev/null and b/client/src/images/smilies/grin.gif differ
diff --git a/client/src/images/smilies/sad.gif b/client/src/images/smilies/sad.gif
new file mode 100644
index 000000000..68f5550c3
Binary files /dev/null and b/client/src/images/smilies/sad.gif differ
diff --git a/client/src/images/smilies/smile.gif b/client/src/images/smilies/smile.gif
new file mode 100644
index 000000000..c1ceec152
Binary files /dev/null and b/client/src/images/smilies/smile.gif differ
diff --git a/client/src/images/smilies/tongue.gif b/client/src/images/smilies/tongue.gif
new file mode 100644
index 000000000..19c9e765e
Binary files /dev/null and b/client/src/images/smilies/tongue.gif differ
diff --git a/client/src/images/spacer.gif b/client/src/images/spacer.gif
new file mode 100644
index 000000000..b26c0eb8c
Binary files /dev/null and b/client/src/images/spacer.gif differ
diff --git a/client/src/images/thead.png b/client/src/images/thead.png
new file mode 100644
index 000000000..7a46a7151
Binary files /dev/null and b/client/src/images/thead.png differ
diff --git a/client/src/images/toggle-closed.gif b/client/src/images/toggle-closed.gif
new file mode 100644
index 000000000..07daef067
Binary files /dev/null and b/client/src/images/toggle-closed.gif differ
diff --git a/client/src/images/toggle-open.gif b/client/src/images/toggle-open.gif
new file mode 100644
index 000000000..805e57d1d
Binary files /dev/null and b/client/src/images/toggle-open.gif differ
diff --git a/client/src/images/upload.png b/client/src/images/upload.png
new file mode 100644
index 000000000..3a319ff14
Binary files /dev/null and b/client/src/images/upload.png differ
diff --git a/client/src/styles/legacy/AssetUploadField.scss b/client/src/styles/legacy/AssetUploadField.scss
index b9b9ca8c3..56a51a77a 100644
--- a/client/src/styles/legacy/AssetUploadField.scss
+++ b/client/src/styles/legacy/AssetUploadField.scss
@@ -303,7 +303,7 @@ body.cms.ss-uploadfield-edit-iframe {
}
.ss-uploadfield-item-progressbarvalue {
width: 0;
- background: #60b3dd url(../images/progressbar_blue.gif) repeat left center;
+ background: #60b3dd url("../../images/progressbar_blue.gif") repeat left center;
}
}
@@ -317,7 +317,7 @@ body.cms.ss-uploadfield-edit-iframe {
width: 100%;
height: 22px;
padding: 15px 0;
- background: url(../../admin/client/dist/images/spinner.gif) no-repeat 50% 50%;
+ background: url("../../../../admin/client/src/images/spinner.gif") no-repeat 50% 50%;
iframe {
/* Old IE needs this or it'll give the iframe a white background, covering the spinner */
@@ -358,7 +358,7 @@ body.cms.ss-uploadfield-edit-iframe {
right: 0;
bottom: 0;
left: 0;
- background: rgba(236, 239, 241, .9) url('../../admin/client/dist/images/drag_drop_opt.svg') center center no-repeat;
+ background: rgba(236, 239, 241, .9) url('../../../../admin/client/src/images/drag_drop_opt.svg') center center no-repeat;
background-size: 312px 325px;
z-index: 100;
}
@@ -385,7 +385,7 @@ body.cms.ss-uploadfield-edit-iframe {
.ss-uploadfield-files {
.ss-uploadfield-item-editform {
&.loading {
- background-image: url(../../admin/client/dist/images/spinner@2x.gif);
+ background-image: url("../../../../admin/client/src/images/spinner@2x.gif");
background-size: 43px 43px;
}
}
diff --git a/client/src/styles/legacy/GridField.scss b/client/src/styles/legacy/GridField.scss
index 4126570ee..1bb059a08 100644
--- a/client/src/styles/legacy/GridField.scss
+++ b/client/src/styles/legacy/GridField.scss
@@ -197,7 +197,7 @@
}
a.view-link {
- background: url(../../../admin/client/src/sprites/btn-icon/magnifier.png) no-repeat 0 1px;
+ background: url(../../../../admin/client/src/sprites/btn-icon/magnifier.png) no-repeat 0 1px;
}
}
}
diff --git a/client/src/styles/legacy/TreeDropdownField.scss b/client/src/styles/legacy/TreeDropdownField.scss
index c3ea6af95..cb3bbe5a7 100755
--- a/client/src/styles/legacy/TreeDropdownField.scss
+++ b/client/src/styles/legacy/TreeDropdownField.scss
@@ -25,10 +25,10 @@ div.TreeDropdownField {
.treedropdownfield-search {
@extend .treedropdownfield-title;
- // Style search box to match chosen search
- background: url('../../../admin/client/dist/images/chosen-sprite.png') no-repeat 100% -22px; // For browsers that only support 1 background
+ //Style search box to match chosen search
+ background:url('../../../../admin/client/src/images/chosen-sprite.png') no-repeat 100% -22px; //For browers that only support 1 background
background:
- url('../../../admin/client/dist/images/chosen-sprite.png') no-repeat 100% -22px,
+ url('../../../../admin/client/src/images/chosen-sprite.png') no-repeat 100% -22px,
linear-gradient(to bottom, #eeeeee 1%, #ffffff 15%);
box-sizing: border-box;
position: relative;
@@ -69,8 +69,8 @@ div.TreeDropdownField {
border-bottom-right-radius: 3px;
&.loading {
- min-height: 16px + 14px; // icon + padding. Ensure there's room for loading indicator
- background: #fff url("../images/network-save.gif") 98% 7px no-repeat;
+ min-height: 16px /* icon */ + 14px /* padding */; // Ensure there's room for loading indicator
+ background: #fff url("../../images/network-save.gif") 98% 7px no-repeat;
}
.tree-holder {
@@ -137,6 +137,6 @@ div.TreeDropdownField {
a.jstree-loading .jstree-pageicon {
// Apply to .jstree-pageicon since .jstree-icon is hidden
- background: #fff url("../images/network-save.gif") center center no-repeat;
+ background: #fff url("../../images/network-save.gif") center center no-repeat;
}
}
diff --git a/client/src/styles/legacy/UploadField.scss b/client/src/styles/legacy/UploadField.scss
index b5a998f98..8b18d156f 100644
--- a/client/src/styles/legacy/UploadField.scss
+++ b/client/src/styles/legacy/UploadField.scss
@@ -214,7 +214,7 @@
.ss-uploadfield-item-progressbarvalue {
border: 0;
width: 0%;
- background: #60b3dd url(../images/progressbar_blue.gif) repeat-x left center;
+ background: #60b3dd url(../../images/progressbar_blue.gif) repeat-x left center;
}
.ss-uploadfield-item-cancel,
.ss-uploadfield-item-start {
@@ -264,7 +264,7 @@
width: 100%;
height: 22px;
margin: 15px 0 0;
- background: url(../admin/client/dist/images/spinner.gif) no-repeat 50% 0;
+ background: url(../../../../admin/client/src/images/spinner.gif) no-repeat 50% 0;
iframe {
/* Old IE needs this or it'll give the iframe a white background, covering the spinner */
@@ -310,7 +310,7 @@
.loader {
height: 94px; // Approxmiately matches the height of the field once a file is attached, avoids a 'jump' in size
- background: transparent url(../admin/client/dist/images/spinner.gif) no-repeat 50% 50%;
+ background: transparent url(../../../../admin/client/src/images/spinner.gif) no-repeat 50% 50%;
}
}
@@ -330,7 +330,7 @@
.ss-uploadfield-files {
.ss-uploadfield-item-editform {
&.loading {
- background-image: url(../admin/client/dist/images/spinner@2x.gif);
+ background-image: url("../../../../admin/client/src/images/spinner@2x.gif");
background-size: 43px 43px;
}
}
@@ -339,7 +339,7 @@
.ss-upload {
.loader {
- background-image: url(../admin/client/dist/images/spinner@2x.gif);
+ background-image: url("../../../../admin/client/src/images/spinner@2x.gif");
background-size: 43px 43px;
}
}
diff --git a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/02_CMS_Architecture.md b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/02_CMS_Architecture.md
index 032ecf0d0..4ba9be1a5 100644
--- a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/02_CMS_Architecture.md
+++ b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/02_CMS_Architecture.md
@@ -50,17 +50,6 @@ Please follow our [CSS](/contributing/css_coding_conventions)
and [JavaScript](/contributing/javascript_coding_conventions)
coding conventions.
-## Sprites
-
-We use sprites to handle various icons and images throughout the CMS. These are automatically generated
-by running `npm run build` and can be found at `/admin/client/src/sprites/dist`. To add new
-images to the sprites, simply add the image to the folder matching the image's size in
-`/admin/client/sprites` then run `npm run sprites` to generate the sprite containing your image.
-Along with the new sprite containing your image, there will also be a new variable in
-`/admin/client/styles/legacy/_sprites.scss` which you can use in your .scss file by first extending the class matching
-the sprite (eg `@extend .icon-sprites-32x32;`), and then including your image using the variable
-matching your image (eg `@include sprite($sprites-32x32-my-image);`).
-
## The Admin URL
The CMS interface can be accessed by default through the `admin/` URL. You can change this by setting your own [Director routing rule](director#routing-rules) to the `[api:AdminRootController]` and clear the old rule like in the example below.
diff --git a/docs/en/05_Contributing/13_CSS_Coding_Conventions.md b/docs/en/05_Contributing/13_CSS_Coding_Conventions.md
index 3da0136fd..11e29403a 100644
--- a/docs/en/05_Contributing/13_CSS_Coding_Conventions.md
+++ b/docs/en/05_Contributing/13_CSS_Coding_Conventions.md
@@ -51,6 +51,13 @@ which highlight any linting errors right in your code.
Naming and conventions in this folder follow
[ITCSS](https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/).
+## Icons and Graphics
+
+Most graphics used in the CMS are vector based, and stored as generated
+webfonts in `admin/client/src/font`, which also contains a HTML reference.
+The webfonts are generated through the [Fontastic](http://app.fontastic.me) service.
+If you need new icons to be added, please ping us on Github.
+
## Legacy conventions
CSS written prior to SilverStripe 4.0 is not following the conventions outlined above.
diff --git a/package.json b/package.json
index b103d7ad7..15c688feb 100644
--- a/package.json
+++ b/package.json
@@ -72,26 +72,24 @@
"babel-plugin-transform-object-rest-spread": "^6.8.0",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
- "coffee-loader": "^0.7.2",
"css-loader": "^0.23.1",
"eslint": "^2.5.3",
"eslint-config-airbnb": "^6.2.0",
"eslint-plugin-react": "^4.2.3",
- "exports-loader": "^0.6.3",
"expose-loader": "^0.7.1",
"extract-text-webpack-plugin": "^1.0.1",
"file-loader": "^0.9.0",
- "imports-loader": "^0.6.5",
"jest-cli": "^0.9.2",
"node-sass": "^3.8.0",
"npm-shrinkwrap": "^5.4.1",
"postcss-loader": "^0.10.1",
"react-addons-test-utils": "^15.3.1",
"redux-logger": "^2.6.1",
+ "resolve-url-loader": "^1.6.0",
"sass-loader": "^4.0.0",
"script-loader": "^0.7.0",
"semver": "^5.1.0",
- "sprity-webpack-plugin": "0.0.1",
+ "url-loader": "^0.5.7",
"webpack": "^1.13.2"
},
"jest": {
diff --git a/webpack.config.js b/webpack.config.js
index 27cc51a1c..5e6002a89 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -44,6 +44,8 @@ const config = [
'bundle-framework': `${PATHS.ADMIN_JS_SRC}/boot/index.js`,
'bundle-legacy': `${PATHS.ADMIN_JS_SRC}/bundles/legacy.js`,
'bundle-lib': `${PATHS.ADMIN_JS_SRC}/bundles/lib.js`,
+ 'LeftAndMain.Ping': `${PATHS.ADMIN_JS_SRC}/legacy/LeftAndMain.Ping.js`,
+ leaktools: `${PATHS.ADMIN_JS_SRC}/legacy/leaktools.js`,
MemberImportForm: `${PATHS.ADMIN_JS_SRC}/legacy/MemberImportForm.js`,
ModelAdmin: `${PATHS.ADMIN_JS_SRC}/legacy/ModelAdmin.js`,
SecurityAdmin: `${PATHS.ADMIN_JS_SRC}/legacy/SecurityAdmin.js`,
@@ -95,7 +97,7 @@ const config = [
{
test: /\.js$/,
exclude: /(node_modules|thirdparty)/,
- loader: 'babel-loader',
+ loader: 'babel',
query: {
presets: ['es2015', 'react'],
plugins: ['transform-object-assign', 'transform-object-rest-spread'],
@@ -104,30 +106,36 @@ const config = [
},
{
test: /\.scss$/,
- // We disable url handling because the SCSS files directly reference the
- // compiled sprite files
- loader: ExtractTextPlugin.extract(
- 'css?-url&minimize&sourceMap!postcss?sourceMap!sass?sourceMap'
- ),
- // loaders: ['style', 'css?-url&minimize', 'postcss', 'sass'],
+ loader: ExtractTextPlugin.extract([
+ 'css?sourceMap&minimize',
+ 'postcss?sourceMap',
+ 'resolve-url',
+ 'sass?sourceMap',
+ ], {
+ publicPath: '../', // needed because bundle.css is in a subfolder
+ }),
},
{
test: /\.css$/,
- // We disable url handling because the SCSS files directly reference the
- // compiled sprite files
- loader: ExtractTextPlugin.extract(
- 'css?-url&minimize&sourceMap!postcss?sourceMap'
- ),
- // loaders: ['style', 'css?-url&minimize', 'postcss'],
- },
- {
- test: /\.coffee$/,
- loader: 'coffee-loader',
+ loader: ExtractTextPlugin.extract([
+ 'css?sourceMap&minimize',
+ 'postcss?sourceMap',
+ ], {
+ publicPath: '../', // needed because bundle.css is in a subfolder
+ }),
},
{
test: '/i18n.js/',
loader: 'script-loader',
},
+ {
+ test: /\.(png|gif|jpg|svg)$/,
+ loader: 'url?limit=10000&name=images/[name].[ext]',
+ },
+ {
+ test: /\.(woff|eot|ttf)$/,
+ loader: 'file?name=fonts/[name].[ext]',
+ },
],
},
postcss: [
@@ -138,7 +146,6 @@ const config = [
jQuery: 'jQuery',
$: 'jQuery',
}),
- /*
new webpack.optimize.UglifyJsPlugin({
compress: {
unused: false,
@@ -146,12 +153,11 @@ const config = [
},
mangle: false,
}),
- */
new ExtractTextPlugin('styles/bundle.css', { allChunks: true }),
],
},
- // Much of the CSS is included in the javascript confiugration (bundle.scss)
+ // Much of the CSS is included in the javascript configuration (bundle.scss)
// These CSS files have not yet been inlined into the javascript include chain
{
name: 'css',
@@ -177,30 +183,28 @@ const config = [
loaders: [
{
test: /\.scss$/,
- // We disable url handling because the SCSS files directly reference the
- // compiled sprite files
loader: ExtractTextPlugin.extract([
- 'css-loader?-url&minimize',
- 'postcss-loader',
- 'sass-loader',
+ 'css?sourceMap&minimize',
+ 'postcss?sourceMap',
+ 'resolve-url',
+ 'sass?sourceMap',
]),
},
+ {
+ test: /\.(png|gif|jpg|svg)$/,
+ loader: 'url?limit=10000&name=client/dist/styles/images/[name].[ext]',
+ },
+ {
+ test: /\.(woff|eot|ttf)$/,
+ loader: 'file?name=fonts/[name].[ext]',
+ },
],
},
postcss: [
autoprefixer({ browsers: SUPPORTED_BROWSERS }),
],
plugins: [
- new ExtractTextPlugin('[name].css', {allChunks: true}),
- // new SprityWebpackPlugin({
- // src: `${PATHS.ADMIN_SPRITES_SRC}/**/*.{png,jpg}`,
- // out: PATHS.ADMIN_SPRITES_DIST,
- // cssPath: '../images/sprites',
- // style: './_sprity.scss',
- // processor: 'sass',
- // split: true,
- // margin: 0,
- // }),
+ new ExtractTextPlugin('[name].css', { allChunks: true }),
],
},
];