diff --git a/.gitignore b/.gitignore index 4b114324f..48125b238 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .sass-cache .DS_Store +css/GridField_print.css \ No newline at end of file diff --git a/admin/code/ModelAdmin.php b/admin/code/ModelAdmin.php index e644b2fb3..2a1d787a0 100644 --- a/admin/code/ModelAdmin.php +++ b/admin/code/ModelAdmin.php @@ -115,7 +115,7 @@ abstract class ModelAdmin extends LeftAndMain { function getEditForm($id = null, $fields = null) { $list = $this->getList(); - $exportButton = new GridFieldExportButton(); + $exportButton = new GridFieldExportButton('before'); $exportButton->setExportColumns($this->getExportFields()); $listField = GridField::create( $this->modelClass, @@ -124,6 +124,7 @@ abstract class ModelAdmin extends LeftAndMain { $fieldConfig = GridFieldConfig_RecordEditor::create($this->stat('page_length')) ->addComponent($exportButton) ->removeComponentsByType('GridFieldFilterHeader') + ->addComponents(new GridFieldPrintButton('before')) ); // Validation diff --git a/admin/css/ie7.css b/admin/css/ie7.css index ceca283a5..759149480 100644 --- a/admin/css/ie7.css +++ b/admin/css/ie7.css @@ -50,7 +50,6 @@ html { overflow: hidden; } table.ss-gridfield-table tr.title th h2 { float: left; } -table.ss-gridfield-table { table-layout: fixed; } table.ss-gridfield-table tr.ss-gridfield-item.odd { background: white; } table.ss-gridfield-table tr.ss-gridfield-item.even { background: #F0F4F7; } @@ -59,3 +58,6 @@ table.ss-gridfield-table tr.ss-gridfield-item.even { background: #F0F4F7; } .ModelAdmin .cms-content-fields .cms-content-tools .cms-panel-content #Form_ImportForm div.file { margin: 0px; } .ModelAdmin .cms-content-fields .cms-content-tools .cms-panel-content #Form_ImportForm div.file input.file { margin-left: -132px; } .ModelAdmin .cms-content-fields .cms-content-tools .cms-panel-content #Form_ImportForm div.checkbox { padding: 0px; } + +.cms .ss-gridfield table.ss-gridfield-table tbody td.col-listChildrenLink { width: 16px; } +.cms .ss-gridfield table.ss-gridfield-table tbody td.col-listChildrenLink .list-children-link { background: transparent url(../images/sitetree_ss_default_icons.png) no-repeat 4px -4px; display: block; } diff --git a/admin/css/ie8.css b/admin/css/ie8.css index 359237a14..5393cfb0d 100644 --- a/admin/css/ie8.css +++ b/admin/css/ie8.css @@ -10,6 +10,8 @@ .cms-content-toolbar { border-bottom: 1px solid #c9cdce; } +.cms-content-tools .cms-panel-content .dropdown select { width: 152px; } + .ss-ui-button.cms-page-add-button.ui-state-hover, .cms .ss-ui-button.cms-page-add-button:hover { background: #80bf40 url("../images/btn-icon/add.png") 0px 0px no-repeat; } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { background-image: none; } diff --git a/admin/css/screen.css b/admin/css/screen.css index ffbe3a9a0..e17667f82 100644 --- a/admin/css/screen.css +++ b/admin/css/screen.css @@ -35,7 +35,7 @@ If more variables exist in the future, consider creating a variables file.*/ /** ---------------------------------------------------- Double tone borders http://daverupert.com/2011/06/two-tone-borders-with-css3/ ----------------------------------------------------- */ /** ----------------------------- Sprite images ----------------------------- */ /** Helper SCSS file for generating sprites for the interface. */ -.btn-icon-sprite, .ui-state-default .btn-icon-accept, .ui-state-default .btn-icon-accept_disabled, .ui-state-default .btn-icon-add, .ui-state-default .btn-icon-add_disabled, .ui-state-default .btn-icon-addpage, .ui-state-default .btn-icon-addpage_disabled, .ui-state-default .btn-icon-arrow-circle-135-left, .ui-state-default .btn-icon-back, .ui-state-default .btn-icon-back_disabled, .ui-state-default .btn-icon-chain--arrow, .ui-state-default .btn-icon-chain--exclamation, .ui-state-default .btn-icon-chain--minus, .ui-state-default .btn-icon-chain--pencil, .ui-state-default .btn-icon-chain--plus, .ui-state-default .btn-icon-chain-small, .ui-state-default .btn-icon-chain-unchain, .ui-state-default .btn-icon-chain, .ui-state-default .btn-icon-cross-circle, .ui-state-default .btn-icon-cross-circle_disabled, .ui-state-default .btn-icon-decline, .ui-state-default .btn-icon-decline_disabled, .ui-state-default .btn-icon-download-csv, .ui-state-default .btn-icon-drive-upload, .ui-state-default .btn-icon-drive-upload_disabled, .ui-state-default .btn-icon-magnifier, .ui-state-default .btn-icon-minus-circle, .ui-state-default .btn-icon-minus-circle_disabled, .ui-state-default .btn-icon-navigation, .ui-state-default .btn-icon-navigation_disabled, .ui-state-default .btn-icon-network-cloud, .ui-state-default .btn-icon-network-cloud_disabled, .ui-state-default .btn-icon-pencil, .ui-state-default .btn-icon-pencil_disabled, .ui-state-default .btn-icon-plug-disconnect-prohibition, .ui-state-default .btn-icon-plug-disconnect-prohibition_disabled, .ui-state-default .btn-icon-preview, .ui-state-default .btn-icon-preview_disabled, .ui-state-default .btn-icon-settings, .ui-state-default .btn-icon-settings_disabled, .ui-state-default .btn-icon-unpublish, .ui-state-default .btn-icon-unpublish_disabled { background: url('../images/btn-icon-s41050dc384.png') no-repeat; } +.btn-icon-sprite, .ui-state-default .btn-icon-accept, .ui-state-default .btn-icon-accept_disabled, .ui-state-default .btn-icon-add, .ui-state-default .btn-icon-add_disabled, .ui-state-default .btn-icon-addpage, .ui-state-default .btn-icon-addpage_disabled, .ui-state-default .btn-icon-arrow-circle-135-left, .ui-state-default .btn-icon-back, .ui-state-default .btn-icon-back_disabled, .ui-state-default .btn-icon-chain--arrow, .ui-state-default .btn-icon-chain--exclamation, .ui-state-default .btn-icon-chain--minus, .ui-state-default .btn-icon-chain--pencil, .ui-state-default .btn-icon-chain--plus, .ui-state-default .btn-icon-chain-small, .ui-state-default .btn-icon-chain-unchain, .ui-state-default .btn-icon-chain, .ui-state-default .btn-icon-cross-circle, .ui-state-default .btn-icon-cross-circle_disabled, .ui-state-default .btn-icon-decline, .ui-state-default .btn-icon-decline_disabled, .ui-state-default .btn-icon-document--pencil, .ui-state-default .btn-icon-download-csv, .ui-state-default .btn-icon-drive-upload, .ui-state-default .btn-icon-drive-upload_disabled, .ui-state-default .btn-icon-grid_print, .ui-state-default .btn-icon-magnifier, .ui-state-default .btn-icon-minus-circle, .ui-state-default .btn-icon-minus-circle_disabled, .ui-state-default .btn-icon-navigation, .ui-state-default .btn-icon-navigation_disabled, .ui-state-default .btn-icon-network-cloud, .ui-state-default .btn-icon-network-cloud_disabled, .ui-state-default .btn-icon-pencil, .ui-state-default .btn-icon-pencil_disabled, .ui-state-default .btn-icon-plug-disconnect-prohibition, .ui-state-default .btn-icon-plug-disconnect-prohibition_disabled, .ui-state-default .btn-icon-preview, .ui-state-default .btn-icon-preview_disabled, .ui-state-default .btn-icon-settings, .ui-state-default .btn-icon-settings_disabled, .ui-state-default .btn-icon-unpublish, .ui-state-default .btn-icon-unpublish_disabled { background: url('../images/btn-icon-s9416553f5b.png') no-repeat; } .ui-state-default .btn-icon-accept { background-position: 0 0; } .ui-state-default .btn-icon-accept_disabled { background-position: 0 -17px; } @@ -58,26 +58,28 @@ If more variables exist in the future, consider creating a variables file.*/ .ui-state-default .btn-icon-cross-circle_disabled { background-position: 0 -293px; } .ui-state-default .btn-icon-decline { background-position: 0 -309px; } .ui-state-default .btn-icon-decline_disabled { background-position: 0 -326px; } -.ui-state-default .btn-icon-download-csv { background-position: 0 -343px; } -.ui-state-default .btn-icon-drive-upload { background-position: 0 -361px; } -.ui-state-default .btn-icon-drive-upload_disabled { background-position: 0 -377px; } -.ui-state-default .btn-icon-magnifier { background-position: 0 -393px; } -.ui-state-default .btn-icon-minus-circle { background-position: 0 -409px; } -.ui-state-default .btn-icon-minus-circle_disabled { background-position: 0 -425px; } -.ui-state-default .btn-icon-navigation { background-position: 0 -441px; } -.ui-state-default .btn-icon-navigation_disabled { background-position: 0 -457px; } -.ui-state-default .btn-icon-network-cloud { background-position: 0 -473px; } -.ui-state-default .btn-icon-network-cloud_disabled { background-position: 0 -489px; } -.ui-state-default .btn-icon-pencil { background-position: 0 -505px; } -.ui-state-default .btn-icon-pencil_disabled { background-position: 0 -521px; } -.ui-state-default .btn-icon-plug-disconnect-prohibition { background-position: 0 -537px; } -.ui-state-default .btn-icon-plug-disconnect-prohibition_disabled { background-position: 0 -553px; } -.ui-state-default .btn-icon-preview { background-position: 0 -569px; } -.ui-state-default .btn-icon-preview_disabled { background-position: 0 -586px; } -.ui-state-default .btn-icon-settings { background-position: 0 -603px; } -.ui-state-default .btn-icon-settings_disabled { background-position: 0 -619px; } -.ui-state-default .btn-icon-unpublish { background-position: 0 -635px; } -.ui-state-default .btn-icon-unpublish_disabled { background-position: 0 -653px; } +.ui-state-default .btn-icon-document--pencil { background-position: 0 -343px; } +.ui-state-default .btn-icon-download-csv { background-position: 0 -359px; } +.ui-state-default .btn-icon-drive-upload { background-position: 0 -377px; } +.ui-state-default .btn-icon-drive-upload_disabled { background-position: 0 -393px; } +.ui-state-default .btn-icon-grid_print { background-position: 0 -409px; } +.ui-state-default .btn-icon-magnifier { background-position: 0 -425px; } +.ui-state-default .btn-icon-minus-circle { background-position: 0 -441px; } +.ui-state-default .btn-icon-minus-circle_disabled { background-position: 0 -457px; } +.ui-state-default .btn-icon-navigation { background-position: 0 -473px; } +.ui-state-default .btn-icon-navigation_disabled { background-position: 0 -489px; } +.ui-state-default .btn-icon-network-cloud { background-position: 0 -505px; } +.ui-state-default .btn-icon-network-cloud_disabled { background-position: 0 -521px; } +.ui-state-default .btn-icon-pencil { background-position: 0 -537px; } +.ui-state-default .btn-icon-pencil_disabled { background-position: 0 -553px; } +.ui-state-default .btn-icon-plug-disconnect-prohibition { background-position: 0 -569px; } +.ui-state-default .btn-icon-plug-disconnect-prohibition_disabled { background-position: 0 -585px; } +.ui-state-default .btn-icon-preview { background-position: 0 -601px; } +.ui-state-default .btn-icon-preview_disabled { background-position: 0 -618px; } +.ui-state-default .btn-icon-settings { background-position: 0 -635px; } +.ui-state-default .btn-icon-settings_disabled { background-position: 0 -651px; } +.ui-state-default .btn-icon-unpublish { background-position: 0 -667px; } +.ui-state-default .btn-icon-unpublish_disabled { background-position: 0 -685px; } .icon { text-indent: -9999px; border: none; outline: none; } .icon.icon-24 { width: 24px; height: 24px; background: url('../images/menu-icons/24x24-s546fcae8fd.png'); } @@ -247,13 +249,15 @@ body.cms { overflow: hidden; } /** -------------------------------------------- Helpers -------------------------------------------- */ .cms-helper-hide-actions .Actions { display: none; } +.hide { display: none; } + /** -------------------------------------------- Panels Styles -------------------------------------------- */ .cms-container { height: 100%; background: #f0f3f4 url(../images/textures/bg_cms_main_content.png) repeat top left; } .cms-preview, .cms-menu, .cms-content, .cms-content-header, .cms-content-tools, .cms-content-fields, .cms-edit-form, .cms-preview, .cms-preview iframe, .cms-preview-controls { display: -moz-inline-box; -moz-box-orient: vertical; display: inline-block; vertical-align: middle; *vertical-align: auto; } .cms-preview, .cms-menu, .cms-content, .cms-content-header, .cms-content-tools, .cms-content-fields, .cms-edit-form, .cms-preview, .cms-preview iframe, .cms-preview-controls { *display: inline; } -.cms-content-header { padding: 0px 8px 8px; height: 32px; z-index: 60; background-image: url(../images/textures/cms_content_header.png); background-repeat: repeat; } +.cms-content-header { padding: 0px 8px 8px; height: 32px; z-index: 60; -moz-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; -webkit-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; -o-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; background-image: url(../images/textures/cms_content_header.png); background-repeat: repeat; } .cms-content-header a { color: #1556b2; } .cms-content-header .backlink { float: left; margin-top: 7px; } .cms-content-header .backlink span.btn-icon-back { height: 16px; } @@ -272,7 +276,7 @@ body.cms { overflow: hidden; } /** -------------------------------------------- Tabs -------------------------------------------- */ .cms-content-header .ui-tabs-nav li, .cms-dialog .ui-tabs-nav li { margin: 0; } .cms-content-header .ui-tabs-nav li a, .cms-dialog .ui-tabs-nav li a { font-weight: bold; line-height: 16px; padding: 12px 20px 11px; } -.cms-content-header .ui-tabs-nav .ui-state-default, .cms-content-header .ui-tabs-nav .ui-widget-content .ui-state-default, .cms-content-header .ui-tabs-nav .ui-widget-header .ui-state-default, .cms-dialog .ui-tabs-nav .ui-state-default, .cms-dialog .ui-tabs-nav .ui-widget-content .ui-state-default, .cms-dialog .ui-tabs-nav .ui-widget-header .ui-state-default { background-color: #b0bec7; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2IwYmVjNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzhjYTFhZSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b0bec7), color-stop(100%, #8ca1ae)); background-image: -webkit-linear-gradient(#b0bec7, #8ca1ae); background-image: -moz-linear-gradient(#b0bec7, #8ca1ae); background-image: -o-linear-gradient(#b0bec7, #8ca1ae); background-image: -ms-linear-gradient(#b0bec7, #8ca1ae); background-image: linear-gradient(#b0bec7, #8ca1ae); border-right-color: #a6a6a6; border-left-color: #d9d9d9; border-bottom: none; text-shadow: white 0 1px 0; } +.cms-content-header .ui-tabs-nav .ui-state-default, .cms-content-header .ui-tabs-nav .ui-widget-content .ui-state-default, .cms-content-header .ui-tabs-nav .ui-widget-header .ui-state-default, .cms-dialog .ui-tabs-nav .ui-state-default, .cms-dialog .ui-tabs-nav .ui-widget-content .ui-state-default, .cms-dialog .ui-tabs-nav .ui-widget-header .ui-state-default { background-color: #b0bec7; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2IwYmVjNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzhjYTFhZSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b0bec7), color-stop(100%, #8ca1ae)); background-image: -webkit-linear-gradient(#b0bec7, #8ca1ae); background-image: -moz-linear-gradient(#b0bec7, #8ca1ae); background-image: -o-linear-gradient(#b0bec7, #8ca1ae); background-image: -ms-linear-gradient(#b0bec7, #8ca1ae); background-image: linear-gradient(#b0bec7, #8ca1ae); border-right-color: #a6a6a6; border-left-color: #d9d9d9; border-bottom: none; text-shadow: #e6e6e6 0 1px 0; } .cms-content-header .ui-tabs-nav .ui-state-active, .cms-content-header .ui-tabs-nav .ui-widget-content .ui-state-active, .cms-content-header .ui-tabs-nav .ui-widget-header .ui-state-active, .cms-dialog .ui-tabs-nav .ui-state-active, .cms-dialog .ui-tabs-nav .ui-widget-content .ui-state-active, .cms-dialog .ui-tabs-nav .ui-widget-header .ui-state-active { background: #eceff1; border-right-color: #a6a6a6; border-left-color: #a6a6a6; margin-right: -1px; margin-left: -1px; z-index: 2; } .cms-content-header .ui-tabs-nav .ui-state-active a, .cms-content-header .ui-tabs-nav .ui-widget-content .ui-state-active a, .cms-content-header .ui-tabs-nav .ui-widget-header .ui-state-active a, .cms-dialog .ui-tabs-nav .ui-state-active a, .cms-dialog .ui-tabs-nav .ui-widget-content .ui-state-active a, .cms-dialog .ui-tabs-nav .ui-widget-header .ui-state-active a { border-bottom: none; } @@ -280,7 +284,7 @@ body.cms { overflow: hidden; } .CMSPagesController .cms-content-header-tabs .ui-tabs-nav li a.content-treeview { background: url(../images/content-header-tabs-sprite.png) no-repeat 2px 0px; } .CMSPagesController .cms-content-header-tabs .ui-tabs-nav li a.content-galleryview { background: url(../images/content-header-tabs-sprite.png) no-repeat -87px 0px; } .CMSPagesController .cms-content-header-tabs .ui-tabs-nav li a.content-listview { background: url(../images/content-header-tabs-sprite.png) no-repeat -38px 0px; } -.CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-state-active, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-content .ui-state-active, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-header .ui-state-active { border-top: none; } +.CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-state-active, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-content .ui-state-active, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-header .ui-state-active { border-top: none; padding-bottom: 1px; } .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-state-active a.content-treeview, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-content .ui-state-active a.content-treeview, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-header .ui-state-active a.content-treeview { background: url(../images/content-header-tabs-sprite.png) no-repeat 2px -40px; } .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-state-active a.content-galleryview, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-content .ui-state-active a.content-galleryview, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-header .ui-state-active a.content-galleryview { background: url(../images/content-header-tabs-sprite.png) no-repeat -87px -40px; } .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-state-active a.content-listview, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-content .ui-state-active a.content-listview, .CMSPagesController .cms-content-header-tabs .ui-tabs-nav .ui-widget-header .ui-state-active a.content-listview { background: url(../images/content-header-tabs-sprite.png) no-repeat -38px -40px; } @@ -349,13 +353,7 @@ body.cms { overflow: hidden; } .cms-content-tools { background-color: #dde3e7; width: 192px; border-right: 1px solid #bfcad2; overflow-y: auto; overflow-x: hidden; z-index: 70; -moz-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px; -webkit-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px; -o-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px; box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px; float: left; position: relative; } .cms-content-tools .cms-panel-header { clear: both; margin: 0 0 7px; line-height: 24px; border-bottom: 1px solid rgba(201, 205, 206, 0.8); -webkit-box-shadow: 0 1px 0 rgba(228, 230, 230, 0.8); -moz-box-shadow: 0 1px 0 rgba(228, 230, 230, 0.8); -o-box-shadow: 0 1px 0 rgba(228, 230, 230, 0.8); box-shadow: 0 1px 0 rgba(228, 230, 230, 0.8); } .cms-content-tools .cms-panel-content { width: 176px; padding: 8px 8px; overflow: auto; height: 100%; } -.cms-content-tools .cms-panel-content #LastEditedFrom { -moz-box-shadow: none; -webkit-box-shadow: none; -o-box-shadow: none; box-shadow: none; } -.cms-content-tools .cms-panel-content #LastEditedFrom input { width: 160px; } -.cms-content-tools .cms-panel-content #LastEditedFrom input.hasDatepicker { max-width: 160px; } -.cms-content-tools .cms-panel-content #LastEditedTo { -moz-box-shadow: none; -webkit-box-shadow: none; -o-box-shadow: none; box-shadow: none; } -.cms-content-tools .cms-panel-content #LastEditedTo input { width: 160px; } -.cms-content-tools .cms-panel-content #LastEditedTo input.hasDatepicker { max-width: 160px; } -.cms-content-tools .cms-panel-content .Actions .ss-ui-action-constructive { margin-right: 5px; } +.cms-content-tools .cms-panel-content .dropdown select { width: 160px; } .cms-content-tools .cms-content-header { background-color: #748d9d; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2IwYmVjNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzc0OGQ5ZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b0bec7), color-stop(100%, #748d9d)); background-image: -webkit-linear-gradient(#b0bec7, #748d9d); background-image: -moz-linear-gradient(#b0bec7, #748d9d); background-image: -o-linear-gradient(#b0bec7, #748d9d); background-image: -ms-linear-gradient(#b0bec7, #748d9d); background-image: linear-gradient(#b0bec7, #748d9d); } .cms-content-tools .cms-content-header h2 { text-shadow: #5c7382 -1px -1px 0; width: 176px; color: white; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; o-text-overflow: ellipsis; } .cms-content-tools h3, .cms-content-tools h4, .cms-content-tools h5 { font-weight: bold; line-height: 16px; } @@ -406,9 +404,12 @@ body.cms { overflow: hidden; } /** -------------------------------------------- Member Profile -------------------------------------------- */ form.member-profile-form { padding: 0 16px 0 0; } +form.member-profile-form .ui-tabs-nav { margin-right: 40px !important; float: right; } +form.member-profile-form .ui-tabs-nav .ui-state-active, form.member-profile-form .ui-tabs-nav .ui-widget-content .ui-state-active, form.member-profile-form .ui-tabs-nav .ui-widget-header .ui-state-active { padding-bottom: 1px; margin-bottom: -1px; } form.member-profile-form .ui-tabs-nav .ui-state-default, form.member-profile-form .ui-tabs-nav .ui-widget-content .ui-state-default, form.member-profile-form .ui-tabs-nav .ui-widget-header .ui-state-default { border-top: none; } -form.member-profile-form #Root_Permissions { clear: both; padding: 16px; } -form.member-profile-form #Root_Main { clear: both; padding: 16px; } +form.member-profile-form .ui-tabs-nav .ui-state-default a, form.member-profile-form .ui-tabs-nav .ui-widget-content .ui-state-default a, form.member-profile-form .ui-tabs-nav .ui-widget-header .ui-state-default a { padding: 12px 20px 11px; } +form.member-profile-form #Root_Permissions { clear: both; border-top: 1px solid #a6a6a6; } +form.member-profile-form #Root_Main { clear: both; border-top: 1px solid #a6a6a6; padding-top: 16px; } form.member-profile-form #Root_Main .cms-help-toggle { text-indent: -9999em; display: inline-block; width: 20px; background: url(../images/question.png) no-repeat 0px 0px; } form.member-profile-form #FavouritePageID { margin-top: 8px; } form.member-profile-form #CsvFile .middleColumn { background: none !important; } @@ -473,34 +474,41 @@ form.member-profile-form .ui-tabs-nav .ui-corner-all, form.member-profile-form . .cms .ui-dialog .ss-ui-dialog.ui-dialog-content { padding-top: 0px; } .ui-dialog { background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; border: 3px solid #000 !important; border-radius: 8px; overflow: visible; padding: 0; } -.ui-dialog .ui-dialog-titlebar.ui-widget-header { font-size: 14px; background-color: #92a5b2; padding: 4px 4px 4px 16px; border-bottom: 2px solid #8399a7; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2NlZDdkYyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzkyYTViMiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ced7dc), color-stop(100%, #92a5b2)); background-image: -webkit-linear-gradient(#ced7dc, #92a5b2); background-image: -moz-linear-gradient(#ced7dc, #92a5b2); background-image: -o-linear-gradient(#ced7dc, #92a5b2); background-image: -ms-linear-gradient(#ced7dc, #92a5b2); background-image: linear-gradient(#ced7dc, #92a5b2); } +.ui-dialog .ui-dialog-titlebar.ui-widget-header { font-size: 14px; padding: 0; border: none; background-color: transparent; background-image: url(../images/textures/cms_content_header.png); background-repeat: repeat; -moz-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; -webkit-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; -o-box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; box-shadow: rgba(107, 120, 123, 0.5) 0 0 4px inset; } +.ui-dialog .ui-dialog-titlebar.ui-widget-header .ui-dialog-title { position: absolute; } +.ui-dialog .cms-dialog-content { background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; padding-bottom: 8px; padding-top: 0px; } +.ui-dialog .cms-dialog-content .Actions { overflow: auto; margin: 8px 0; padding-bottom: 8px; float: right; } +.ui-dialog .cms-dialog-content .ss-tabset { -moz-border-radius: none; -webkit-border-radius: none; -o-border-radius: none; -ms-border-radius: none; -khtml-border-radius: none; border-radius: none; } +.ui-dialog .cms-dialog-content .ss-tabset .tab { background: none; overflow-y: auto; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs { background: none; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav { border: none; padding: 0 40px 0 0; float: right; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav li { margin: 0; font-weight: bold; line-height: 16px; padding: 12px 12px 10px; border-bottom: 2px solid #B3B3B3; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: -1px; padding-bottom: 11px; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav li:first-child { margin-left: 15px; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-state-focus a { outline: none; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-state-default, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-widget-content .ui-state-default, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-widget-header .ui-state-default { background-color: #b0bec7; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2IwYmVjNyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzhjYTFhZSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b0bec7), color-stop(100%, #8ca1ae)); background-image: -webkit-linear-gradient(#b0bec7, #8ca1ae); background-image: -moz-linear-gradient(#b0bec7, #8ca1ae); background-image: -o-linear-gradient(#b0bec7, #8ca1ae); background-image: -ms-linear-gradient(#b0bec7, #8ca1ae); background-image: linear-gradient(#b0bec7, #8ca1ae); border-right-color: #a6a6a6; border-left-color: #d9d9d9; border-bottom: none; border-top: none; text-shadow: white 0 1px 0; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-state-active, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-widget-content .ui-state-active, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-widget-header .ui-state-active { background: #eceff1; border-right-color: #a6a6a6; border-left-color: #a6a6a6; margin-right: -1px; margin-left: -3px; z-index: 2; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-state-active a, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-widget-content .ui-state-active a, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-widget-header .ui-state-active a { border-bottom: none; border-top: none; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-corner-all, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-corner-top, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-corner-right, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-corner-tr { border-radius: 0; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-corner-all, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-corner-top, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-corner-left, .ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav .ui-corner-tl { border-radius: 0; } +.ui-dialog .cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-panel { background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; overflow-x: hidden; clear: both; border-top: 1px solid #a6a6a6; } +.ui-dialog .cms-dialog-content .clear { clear: both; } .ui-dialog.loading { background-image: url(../images/spinner.gif); background-position: 50% 50%; background-repeat: no-repeat; } body.cms-dialog { overflow: auto; background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; } -.cms-dialog-content { background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; padding-bottom: 8px; } -.cms-dialog-content .Actions { overflow: auto; margin: 8px 0; padding-bottom: 8px; float: right; } -.cms-dialog-content .ss-tabset { z-index: 60; -moz-border-radius: none; -webkit-border-radius: none; -o-border-radius: none; -ms-border-radius: none; -khtml-border-radius: none; border-radius: none; } -.cms-dialog-content .ss-tabset .tab { background: none; overflow-y: auto; } -.cms-dialog-content .ss-tabset.ui-tabs { background: none; } -.cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav { border: none; padding: 0 40px 0 0; float: right; } -.cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav li { font-weight: bold; line-height: 16px; padding: 11px 12px 9px; border-bottom: 2px solid #B3B3B3; } -.cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: -1px; } -.cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-nav li:first-child { margin-left: 15px; } -.cms-dialog-content .ss-tabset.ui-tabs .ui-tabs-panel { border: 1px solid #AAAAAA; background: url("../images/textures/bg_cms_main_content.png") repeat left top #f0f3f4; } -.cms-dialog-content .clear { clear: both; } - /** -------------------------------------------- "Insert X" forms -------------------------------------------- */ .htmleditorfield-linkform .step2 { margin-bottom: 16px; } .htmleditorfield-mediaform .ss-gridfield tbody td:first-child img { max-height: 30px; } +.htmleditorfield-mediaform .ss-uploadfield-editandorganize { display: none; } .htmleditorfield-mediaform .ss-htmleditorfield-file { border: 1px solid #b3b3b3; -moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; -ms-border-radius: 5px; -khtml-border-radius: 5px; border-radius: 5px; -moz-background-clip: padding; -webkit-background-clip: padding; -o-background-clip: padding-box; -ms-background-clip: padding-box; -khtml-background-clip: padding-box; background-clip: padding-box; background: #E2E2E2; margin-bottom: 16px; } .htmleditorfield-mediaform .ss-htmleditorfield-file.loading { width: 100%; height: 100px; background-image: url(../images/spinner.gif); background-position: 50% 50%; background-repeat: no-repeat; } .htmleditorfield-mediaform .ss-htmleditorfield-file .overview { background-color: #5db4df; background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzVkYjRkZiIvPjxzdG9wIG9mZnNldD0iOCUiIHN0b3AtY29sb3I9IiM1ZGIxZGQiLz48c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iIzQzOWJjYiIvPjxzdG9wIG9mZnNldD0iNTQlIiBzdG9wLWNvbG9yPSIjM2Y5OWNkIi8+PHN0b3Agb2Zmc2V0PSI5NiUiIHN0b3AtY29sb3I9IiMyMDdkYjYiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMxZTdjYmEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5db4df), color-stop(8%, #5db1dd), color-stop(50%, #439bcb), color-stop(54%, #3f99cd), color-stop(96%, #207db6), color-stop(100%, #1e7cba)); background-image: -webkit-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -moz-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -o-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -ms-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); } .htmleditorfield-mediaform .ss-htmleditorfield-file .overview .thumbnail { display: inline-block; vertical-align: middle; padding: 4px; } .htmleditorfield-mediaform .ss-htmleditorfield-file .overview .thumbnail img { max-height: 24px; } .htmleditorfield-mediaform .ss-htmleditorfield-file .overview .title { display: inline-block; vertical-align: middle; background: #fff; border: 1px solid #b3b3b3; -moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; -ms-border-radius: 5px; -khtml-border-radius: 5px; border-radius: 5px; margin-left: 16px; padding: 4px; } -.htmleditorfield-mediaform .ss-htmleditorfield-file .overview .action-delete { display: inline-block; } +.htmleditorfield-mediaform .ss-htmleditorfield-file .overview .action-delete { float: right; padding: 8px; background: none; border: none; } .htmleditorfield-mediaform .ss-htmleditorfield-file .details { padding: 16px; } /** -------------------------------------------- Search forms (used in AssetAdmin, ModelAdmin, etc) -------------------------------------------- */ @@ -711,7 +719,7 @@ li.class-ErrorPage > a .jstree-pageicon { background-position: 0 -112px; } .cms-menu-list.collapsed li > li { display: none; } .ModelAdmin .cms-content-fields { overflow: hidden; } -.ModelAdmin .cms-content-fields .cms-edit-form { overflow-y: auto; } +.ModelAdmin .cms-content-fields .cms-edit-form { overflow-y: scroll; overflow-x: hidden; } .ModelAdmin .cms-content-fields .cms-content-tools .cms-panel-content .cms-search-form .resetformaction { margin-right: 0px; } .ModelAdmin .cms-content-fields .cms-content-tools .cms-panel-content #Form_ImportForm { overflow: hidden; } diff --git a/admin/images/btn-icon-s9416553f5b.png b/admin/images/btn-icon-s9416553f5b.png new file mode 100644 index 000000000..c9a18eeef Binary files /dev/null and b/admin/images/btn-icon-s9416553f5b.png differ diff --git a/admin/images/btn-icon/grid_print.png b/admin/images/btn-icon/grid_print.png new file mode 100755 index 000000000..1b15e6384 Binary files /dev/null and b/admin/images/btn-icon/grid_print.png differ diff --git a/admin/javascript/LeftAndMain.js b/admin/javascript/LeftAndMain.js index 1196371e7..bd9b950b8 100644 --- a/admin/javascript/LeftAndMain.js +++ b/admin/javascript/LeftAndMain.js @@ -332,11 +332,11 @@ jQuery.noConflict(); * "opt in" to panel loading, while by default links still exhibit their default behaviour. * Same goes for breadcrumbs in the CMS. */ - $('.cms .cms-panel-link, .cms a.crumb').entwine({ + $('.cms .cms-panel-link').entwine({ onclick: function(e) { var href = this.attr('href'), url = href ? href : this.data('href'), data = (this.data('targetPanel')) ? {selector: this.data('targetPanel')} : null; - + $('.cms-container').loadPanel(url, null, data); e.preventDefault(); } @@ -401,18 +401,19 @@ jQuery.noConflict(); this._super(); var self = this, id = 'ss-ui-dialog-' + this.getUUID(); - var dialog = $('#' + id); if(!dialog.length) { dialog = $('<div class="ss-ui-dialog" id="' + id + '" />'); $('body').append(dialog); } - - dialog.ssdialog({iframeUrl: this.attr('href'), autoOpen: true}); + + var extraClass = this.data('popupclass')?this.data('popupclass'):''; + + dialog.ssdialog({iframeUrl: this.attr('href'), autoOpen: true, dialogExtraClass: extraClass}); return false; } }); - + /** * Add styling to all contained buttons, and create buttonsets if required. */ diff --git a/admin/javascript/ssui.core.js b/admin/javascript/ssui.core.js index 281d439f2..b071f6e74 100644 --- a/admin/javascript/ssui.core.js +++ b/admin/javascript/ssui.core.js @@ -55,6 +55,7 @@ // Custom properties iframeUrl: '', reloadOnOpen: true, + dialogExtraClass: '', // Defaults width: '80%', @@ -78,6 +79,8 @@ self._resizeIframe(); self.uiDialog.removeClass('loading'); }).hide(); + + if(this.options.dialogExtraClass) this.uiDialog.addClass(this.options.dialogExtraClass); this.element.append(iframe); // Let the iframe handle its scrolling diff --git a/admin/scss/_ModelAdmin.scss b/admin/scss/_ModelAdmin.scss index 5f029e4c0..950114358 100644 --- a/admin/scss/_ModelAdmin.scss +++ b/admin/scss/_ModelAdmin.scss @@ -1,7 +1,8 @@ .ModelAdmin .cms-content-fields { overflow:hidden; //removes scrolling from filter panel .cms-edit-form { - overflow-y:auto; //adds scrolling only to the datagrid + overflow-y:scroll; //adds scrolling only to the datagrid + overflow-x:hidden; } .cms-content-tools .cms-panel-content { .cms-search-form { diff --git a/admin/scss/_style.scss b/admin/scss/_style.scss index d6eb650ee..9d0ec4509 100644 --- a/admin/scss/_style.scss +++ b/admin/scss/_style.scss @@ -60,6 +60,10 @@ body.cms { } } +.hide { + display: none; +} + /** -------------------------------------------- * Panels Styles * -------------------------------------------- */ @@ -86,7 +90,7 @@ body.cms { padding: ($grid-y - 8) $grid-x $grid-y; height: $grid-y * 4; z-index: 60; - + @include box-shadow($color-shadow-dark 0 0 ($grid-x / 2) inset); background: { image:url(../images/textures/cms_content_header.png); repeat:repeat; @@ -206,7 +210,7 @@ body.cms { bottom:none; } - text-shadow: lighten($color-tab, 60%) 0 1px 0; + text-shadow: lighten($color-tab, 5%) 0 1px 0; } .ui-state-active, @@ -255,6 +259,7 @@ body.cms { border: { top:none; } + padding-bottom:1px; a { &.content-treeview { @@ -598,10 +603,13 @@ body.cms { } .cms-panel-content { - width: ($grid-x * 22); + width: $grid-x * 22; padding: $grid-y $grid-x; overflow: auto; height:100%; + .dropdown select { + width:$grid-x * 20; + } #LastEditedFrom { @include box-shadow(none); input { @@ -865,23 +873,35 @@ body.cms { form.member-profile-form { padding: 0 $grid-x*2 0 0; .ui-tabs-nav { + margin-right:40px !important; //adds a 40px gap to the right of the tabs to match designs on main CMS + float:right; + .ui-state-active, + .ui-widget-content .ui-state-active, + .ui-widget-header .ui-state-active { + padding-bottom: 1px; + margin-bottom:-1px; + } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: { top:none; } + a { + padding:12px 20px 11px; + } } } #Root_Permissions { clear:both; - padding: $grid-x*2; + border-top: 1px solid darken($color-tab, 20%); } #Root_Main { clear:both; - padding: $grid-x*2; + border-top: 1px solid darken($color-tab, 20%); + padding-top:$grid-y*2; .cms-help-toggle { text-indent: -9999em; display: inline-block; @@ -1190,15 +1210,131 @@ form.member-profile-form { border-radius: $grid-y; overflow: visible; padding: 0; - + // Titlebar for pop-up dialog. .ui-dialog-titlebar.ui-widget-header { - font-size: $font-base-size+2; - background-color: #92a5b2; - padding: $grid-y/2 $grid-x/2 $grid-y/2 $grid-x*2; - border-bottom: 2px solid #8399a7; + font-size: $font-base-size+2; + padding: 0; + border:none; + background: { + color:transparent; + image:url(../images/textures/cms_content_header.png); + repeat:repeat; + } + @include box-shadow($color-shadow-dark 0 0 ($grid-x / 2) inset); + .ui-dialog-title { + position:absolute; + } + } - @include background-image(linear-gradient(#ced7dc, #92a5b2)); + .cms-dialog-content { + background: url("../images/textures/bg_cms_main_content.png") repeat left top #F0F3F4; + padding-bottom: $grid-y; + padding-top:0px; + + .Actions { + overflow: auto; + margin: $grid-y 0; + padding-bottom: $grid-y; + float: right; + } + + .ss-tabset { + @include border-radius(none); + + .tab { + background: none; + overflow-y: auto; + } + + &.ui-tabs { + background: none; + + .ui-tabs-nav { + border: none; + padding: 0 $grid-x*5 0 0; //allows for 40px gap to the right of tabs to match the tabs on main CMS + float:right; + + li { + margin:0; + &.ui-tabs-selected { + margin-bottom: -1px; + padding-bottom:11px; + } + + &:first-child { + margin-left: 15px; + } + font-weight: bold; + line-height: 16px; + padding: 12px 12px 10px; + border-bottom: 2px solid #B3B3B3; + } + + .ui-state-focus a { + outline:none; + } + + .ui-state-default, + .ui-widget-content .ui-state-default, + .ui-widget-header .ui-state-default { + background-color: $color-base; + @include background-image( + linear-gradient($color-base, darken($color-base, 12%)) + ); + + border: { + right-color: darken($color-tab, 20%); + left-color: $color-tab; + bottom:none; + top:none; + } + + text-shadow: lighten($color-tab, 60%) 0 1px 0; + } + + .ui-state-active, + .ui-widget-content .ui-state-active, + .ui-widget-header .ui-state-active { + background: $color-widget-bg; + border: { + right-color: darken($color-tab, 20%); + left-color: darken($color-tab, 20%); + } + margin-right:-1px; + margin-left:-3px; + z-index:2; + + a { + border: { + bottom:none; + top:none; + } + + } + } + .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { + border-radius:0; + } + + .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { + border-radius:0; + } + } + + + .ui-tabs-panel { + background: url("../images/textures/bg_cms_main_content.png") repeat left top #F0F3F4; + overflow-x:hidden; + clear:both; + border-top: 1px solid darken($color-tab, 20%); + } + } + } + .clear { + clear: both; + } + } &.loading { @@ -1213,61 +1349,6 @@ body.cms-dialog { background: url("../images/textures/bg_cms_main_content.png") repeat left top #F0F3F4; } -.cms-dialog-content { - background: url("../images/textures/bg_cms_main_content.png") repeat left top #F0F3F4; - padding-bottom: $grid-y; - - .Actions { - overflow: auto; - margin: $grid-y 0; - padding-bottom: $grid-y; - float: right; - } - - .ss-tabset { - z-index: 60; - @include border-radius(none); - - .tab { - background: none; - overflow-y: auto; - } - - &.ui-tabs { - background: none; - - .ui-tabs-nav { - border: none; - padding: 0 $grid-x*5 0 0; //allows for 40px gap to the right of tabs to match the tabs on main CMS - float: right; - - li { - &.ui-tabs-selected { - margin-bottom: -1px; - } - - &:first-child { - margin-left: 15px; - } - font-weight: bold; - line-height: 16px; - padding: 11px 12px 9px; - border-bottom: 2px solid #B3B3B3; - } - } - - .ui-tabs-panel { - border: 1px solid #AAAAAA; - background: url("../images/textures/bg_cms_main_content.png") repeat left top #F0F3F4; - } - } - } - .clear { - clear: both; - } - -} - /** -------------------------------------------- * "Insert X" forms * -------------------------------------------- */ @@ -1285,6 +1366,10 @@ body.cms-dialog { } } + .ss-uploadfield-editandorganize { + display: none; + } + // TODO Consolidate with .assetuploadfield and .ss-uploadfield styles .ss-htmleditorfield-file { border: 1px solid lighten($color-medium-separator, 20%); @@ -1326,7 +1411,10 @@ body.cms-dialog { } .action-delete { - display: inline-block; + float:right; + padding:$grid-x; + background:none; + border:none; } } diff --git a/admin/scss/ie7.scss b/admin/scss/ie7.scss index 375db128e..1790a45ed 100644 --- a/admin/scss/ie7.scss +++ b/admin/scss/ie7.scss @@ -183,7 +183,6 @@ table.ss-gridfield-table tr.title th h2 { //fix for alternate colors on rows in datagrid table.ss-gridfield-table { - table-layout:fixed; //fix for uneven column widths and hidden filter buttons tr { &.ss-gridfield-item.odd { background: white; @@ -213,4 +212,17 @@ table.ss-gridfield-table { padding:0px; //stops clear database text from overflowing onto two lines. } } -} \ No newline at end of file +} + +//fix for view children arrow in pages list view +.cms .ss-gridfield table.ss-gridfield-table tbody { + td { + &.col-listChildrenLink { + width:16px; + .list-children-link { + background: transparent url(../images/sitetree_ss_default_icons.png) no-repeat 4px -4px; + display:block; + } + } + } +} diff --git a/admin/scss/ie8.scss b/admin/scss/ie8.scss index 48d87b20a..d3f344d78 100644 --- a/admin/scss/ie8.scss +++ b/admin/scss/ie8.scss @@ -31,6 +31,11 @@ border-bottom:1px solid rgb(201, 205, 206); } +//fix for width of dropdowns in filter panel +.cms-content-tools .cms-panel-content .dropdown select { + width:152px; +} + //fix for the button icon shifting on hover .ss-ui-button.cms-page-add-button.ui-state-hover, .cms .ss-ui-button.cms-page-add-button:hover { background: #80bf40 url('../images/btn-icon/add.png') 0px 0px no-repeat; diff --git a/admin/templates/CMSBreadcrumbs.ss b/admin/templates/CMSBreadcrumbs.ss index 78c7de5ca..64855fe2a 100644 --- a/admin/templates/CMSBreadcrumbs.ss +++ b/admin/templates/CMSBreadcrumbs.ss @@ -1,7 +1,7 @@ <% control Breadcrumbs %> <% if Last %> - <span class="crumb">$Title.XML</span> + <span class="cms-panel-link crumb">$Title.XML</span> <% else %> - <a class="crumb" href="$Link">$Title.XML</a> / + <a class="cms-panel-link crumb" href="$Link">$Title.XML</a> / <% end_if %> <% end_control %> \ No newline at end of file diff --git a/admin/templates/Includes/LeftAndMain_Menu.ss b/admin/templates/Includes/LeftAndMain_Menu.ss index 45b5d6cb9..0cd4bee8f 100644 --- a/admin/templates/Includes/LeftAndMain_Menu.ss +++ b/admin/templates/Includes/LeftAndMain_Menu.ss @@ -12,7 +12,7 @@ <% control CurrentMember %> <span> <% _t('Hello','Hi') %> - <a href="{$AbsoluteBaseURL}admin/myprofile" class="profile-link ss-ui-dialog-link"> + <a href="{$AbsoluteBaseURL}admin/myprofile" class="profile-link ss-ui-dialog-link" data-popupclass="edit-profile-popup"> <% if FirstName && Surname %>$FirstName $Surname<% else_if FirstName %>$FirstName<% else %>$Email<% end_if %> </a> </span> diff --git a/admin/templates/LeftAndMain.ss b/admin/templates/LeftAndMain.ss index 0e4d67392..d2644dcf9 100644 --- a/admin/templates/LeftAndMain.ss +++ b/admin/templates/LeftAndMain.ss @@ -24,7 +24,7 @@ </div> - <div id="cms-editor-dialogs"> + <div id="cms-editor-dialogs" class="hide"> <% control EditorToolbar %> $MediaForm $LinkForm diff --git a/css/AssetUploadField.css b/css/AssetUploadField.css index d4d9b52b5..e01cd5b40 100644 --- a/css/AssetUploadField.css +++ b/css/AssetUploadField.css @@ -9,9 +9,9 @@ body.cms.ss-uploadfield-edit-iframe { padding: 16px; overflow: auto; } .ss-assetuploadfield h3 { border-bottom: 1px solid rgba(201, 205, 206, 0.8); -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); -o-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); margin: 0 0 8px; padding: 0 0 7px; clear: both; } -.ss-assetuploadfield .field { border-bottom: 0; } +.ss-assetuploadfield .field { border-bottom: 0; box-shadow: none; } .ss-assetuploadfield .ss-uploadfield-files { margin: 0; padding: 0; } -.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item { border: 1px solid #b3b3b3; -moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; -ms-border-radius: 5px; -khtml-border-radius: 5px; border-radius: 5px; -moz-background-clip: padding; -webkit-background-clip: padding; -o-background-clip: padding-box; -ms-background-clip: padding-box; -khtml-background-clip: padding-box; background-clip: padding-box; background: #E2E2E2; margin: 0 0 5px; padding: 0; overflow: hidden; position: relative; } +.ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item { border: 1px solid #b3b3b3; border-bottom: 0; -moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; -ms-border-radius: 5px; -khtml-border-radius: 5px; border-radius: 5px; -moz-background-clip: padding; -webkit-background-clip: padding; -o-background-clip: padding-box; -ms-background-clip: padding-box; -khtml-background-clip: padding-box; background-clip: padding-box; background: #E2E2E2; margin: 0 0 5px; padding: 0; overflow: hidden; position: relative; } .ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-preview { position: absolute; height: 30px; width: 40px; overflow: hidden; z-index: 1; } .ss-assetuploadfield .ss-uploadfield-files .ss-uploadfield-item-info { position: relative; height: 30px; overflow: hidden; background-color: #5db4df; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5db4df), color-stop(8%, #5db1dd), color-stop(50%, #439bcb), color-stop(54%, #3f99cd), color-stop(96%, #207db6), color-stop(100%, #1e7cba)); background-image: -webkit-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -moz-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -o-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: -ms-linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); background-image: linear-gradient(top, #5db4df 0%, #5db1dd 8%, #439bcb 50%, #3f99cd 54%, #207db6 96%, #1e7cba 100%); } .ss-assetuploadfield .ss-uploadfield-files .ui-state-error .ss-uploadfield-item-info { background-color: #c11f1d; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c11f1d), color-stop(4%, #bf1d1b), color-stop(8%, #b71b1c), color-stop(15%, #b61e1d), color-stop(27%, #b11d1d), color-stop(31%, #ab1d1c), color-stop(42%, #a51b1b), color-stop(46%, #9f1b19), color-stop(50%, #9f1b19), color-stop(54%, #991c1a), color-stop(58%, #971a18), color-stop(62%, #911b1b), color-stop(65%, #911b1b), color-stop(88%, #7e1816), color-stop(92%, #771919), color-stop(100%, #731817)); background-image: -webkit-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: -moz-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: -o-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: -ms-linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); background-image: linear-gradient(top, #c11f1d 0%, #bf1d1b 4%, #b71b1c 8%, #b61e1d 15%, #b11d1d 27%, #ab1d1c 31%, #a51b1b 42%, #9f1b19 46%, #9f1b19 50%, #991c1a 54%, #971a18 58%, #911b1b 62%, #911b1b 65%, #7e1816 88%, #771919 92%, #731817 100%); } diff --git a/css/GridField.css b/css/GridField.css index 9466eeaa2..d17ce34a2 100644 --- a/css/GridField.css +++ b/css/GridField.css @@ -8,20 +8,33 @@ .cms .ss-gridfield p button#action_export span.ui-button-text { padding-left: 26px; } .cms .ss-gridfield .add-existing-autocompleter { width: 500px; } .cms .ss-gridfield .add-existing-autocompleter input.relation-search { width: 380px; } +.cms .ss-gridfield .grid-print-button { display: inline-block; } +.cms .ss-gridfield .grid-csv-button { display: inline-block; } .cms table.ss-gridfield-table { display: table; box-shadow: none; padding: 0; border-collapse: separate; border-bottom: 0 none; width: 100%; } .cms table.ss-gridfield-table thead { color: #1d2224; background: transparent; } .cms table.ss-gridfield-table thead tr.filter-header .fieldgroup { max-width: 512px; } +.cms table.ss-gridfield-table thead tr:first-child th:first-child { -moz-border-radius-topleft: 7px; -webkit-border-top-left-radius: 7px; -o-border-top-left-radius: 7px; -ms-border-top-left-radius: 7px; -khtml-border-top-left-radius: 7px; border-top-left-radius: 7px; } +.cms table.ss-gridfield-table thead tr:first-child th:last-child { -moz-border-radius-topright: 7px; -webkit-border-top-right-radius: 7px; -o-border-top-right-radius: 7px; -ms-border-top-right-radius: 7px; -khtml-border-top-right-radius: 7px; border-top-right-radius: 7px; } .cms table.ss-gridfield-table tbody { background: #FFF; } -.cms table.ss-gridfield-table tbody td { width: 100%; } -.cms table.ss-gridfield-table tbody td.col-buttons { width: auto; text-align: right; white-space: nowrap; } +.cms table.ss-gridfield-table tbody td { width: auto; white-space: nowrap; } +.cms table.ss-gridfield-table tbody td.col-buttons { width: auto; text-align: right; } +.cms table.ss-gridfield-table tbody td.col-description { width: auto; } +.cms table.ss-gridfield-table tbody td.col-listChildrenLink { width: 16px; border-right: none; text-indent: -9999em; padding: 0; } +.cms table.ss-gridfield-table tbody td.col-listChildrenLink .list-children-link { background: transparent url(../images/sitetree_ss_default_icons.png) no-repeat 12px -4px; display: block; } +.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.item { color: #1556b2; } +.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge { clear: both; text-transform: uppercase; display: inline-block; padding: 0px 3px; font-size: 0.75em; line-height: 1em; margin-left: 10px; margin-right: 6px; margin-top: -1px; -webkit-border-radius: 2px 2px; -moz-border-radius: 2px / 2px; -o-border-radius: 2px / 2px; -ms-border-radius: 2px / 2px; -khtml-border-radius: 2px / 2px; border-radius: 2px / 2px; } +.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge.modified { color: #7E7470; border: 1px solid #C9B800; background-color: #FFF0BC; } +.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge.addedtodraft { color: #7E7470; border: 1px solid #C9B800; background-color: #FFF0BC; } +.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge.deletedonlive { color: #636363; border: 1px solid #E49393; background-color: #F2DADB; } +.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge.removedfromdraft { color: #636363; border: 1px solid #E49393; background-color: #F2DADB; } +.cms table.ss-gridfield-table tbody td.col-getTreeTitle span.badge.workflow-approval { color: #56660C; border: 1px solid #7C8816; background-color: #DAE79A; } .cms table.ss-gridfield-table tbody td button { border: none; background: none; margin: 0 0 0 2px; padding: 0; width: auto; text-shadow: none; } .cms table.ss-gridfield-table tbody td button.ui-state-hover { background: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } .cms table.ss-gridfield-table tbody td button.ui-state-active { border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } .cms table.ss-gridfield-table tbody td a.edit-link { display: inline-block; width: 16px; height: 20px; text-indent: 9999em; overflow: hidden; vertical-align: middle; background: url(../images/icons/document--pencil.png) no-repeat 0 1px; } .cms table.ss-gridfield-table tfoot { color: #1d2224; } .cms table.ss-gridfield-table tfoot tr td { background: #95a5ab; padding: .7em; border-bottom: 1px solid rgba(0, 0, 0, 0.1); } -.cms table.ss-gridfield-table tr.title { -moz-border-radius-topleft: 7px; -webkit-border-top-left-radius: 7px; -o-border-top-left-radius: 7px; -ms-border-top-left-radius: 7px; -khtml-border-top-left-radius: 7px; border-top-left-radius: 7px; -moz-border-radius-topright: 7px; -webkit-border-top-right-radius: 7px; -o-border-top-right-radius: 7px; -ms-border-top-right-radius: 7px; -khtml-border-top-right-radius: 7px; border-top-right-radius: 7px; } -.cms table.ss-gridfield-table tr.title th { position: relative; background: #7f9198; border-top: 1px solid rgba(0, 0, 0, 0.1); padding: 5px; min-height: 40px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b1c0c5), color-stop(100%, #7f9198)); background-image: -webkit-linear-gradient(#b1c0c5, #7f9198); background-image: -moz-linear-gradient(#b1c0c5, #7f9198); background-image: -o-linear-gradient(#b1c0c5, #7f9198); background-image: -ms-linear-gradient(#b1c0c5, #7f9198); background-image: linear-gradient(#b1c0c5, #7f9198); -moz-border-radius-topleft: 7px; -webkit-border-top-left-radius: 7px; -o-border-top-left-radius: 7px; -ms-border-top-left-radius: 7px; -khtml-border-top-left-radius: 7px; border-top-left-radius: 7px; -moz-border-radius-topright: 7px; -webkit-border-top-right-radius: 7px; -o-border-top-right-radius: 7px; -ms-border-top-right-radius: 7px; -khtml-border-top-right-radius: 7px; border-top-right-radius: 7px; text-shadow: rgba(0, 0, 0, 0.3) 0px -1px 0; } +.cms table.ss-gridfield-table tr.title th { position: relative; background: #7f9198; border-top: 1px solid rgba(0, 0, 0, 0.1); padding: 5px; min-height: 40px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b1c0c5), color-stop(100%, #7f9198)); background-image: -webkit-linear-gradient(#b1c0c5, #7f9198); background-image: -moz-linear-gradient(#b1c0c5, #7f9198); background-image: -o-linear-gradient(#b1c0c5, #7f9198); background-image: -ms-linear-gradient(#b1c0c5, #7f9198); background-image: linear-gradient(#b1c0c5, #7f9198); text-shadow: rgba(0, 0, 0, 0.3) 0px -1px 0; } .cms table.ss-gridfield-table tr.title th h2 { padding: 0px; font-size: 16.8px; color: #fff; margin: 3px 8px 0; display: inline-block; } .cms table.ss-gridfield-table tr.title th .right > * { float: right; font-size: 14.4px; } .cms table.ss-gridfield-table tr.title th .left > * { float: left; font-size: 14.4px; } @@ -36,20 +49,19 @@ .cms table.ss-gridfield-table tr th div.fieldgroup, .cms table.ss-gridfield-table tr th div.fieldgroup-field { width: 100%; position: relative; } .cms table.ss-gridfield-table tr th div.fieldgroup { min-width: 200px; padding-right: 0; } .cms table.ss-gridfield-table tr th.extra, .cms table.ss-gridfield-table tr th.action { padding: 0; cursor: default; } -.cms table.ss-gridfield-table tr th.extra button.ss-ui-button, .cms table.ss-gridfield-table tr th.extra button:hover.ss-ui-button, .cms table.ss-gridfield-table tr th.action button.ss-ui-button, .cms table.ss-gridfield-table tr th.action button:hover.ss-ui-button { margin-left: .9em; color: #222; } -.cms table.ss-gridfield-table tr th.main { border-top: 1px solid rgba(0, 0, 0, 0.1); color: #fff; background: #9cb0b9; border-bottom: 1px solid rgba(0, 0, 0, 0.1); } +.cms table.ss-gridfield-table tr th.main { white-space: nowrap; border-top: 1px solid rgba(0, 0, 0, 0.1); color: #fff; background: #9cb0b9; border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .cms table.ss-gridfield-table tr th.main span { text-shadow: rgba(0, 0, 0, 0.3) 0px -1px 0; } +.cms table.ss-gridfield-table tr th.main.col-listChildrenLink { border-right: none; } .cms table.ss-gridfield-table tr th.extra { background: #bac8ce; padding: 5px; border-top: rgba(0, 0, 0, 0.3); } .cms table.ss-gridfield-table tr th.extra span { width: auto; display: inline; position: static; } .cms table.ss-gridfield-table tr th.extra span input { height: 28px; } .cms table.ss-gridfield-table tr th.extra button.ss-ui-button { padding: .3em; line-height: 1; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; position: relative; border-bottom-width: 0; -webkit-border-radius: 2px 2px; -moz-border-radius: 2px / 2px; -o-border-radius: 2px / 2px; -ms-border-radius: 2px / 2px; -khtml-border-radius: 2px / 2px; border-radius: 2px / 2px; } -.cms table.ss-gridfield-table tr th.action { border-right: 0; } .cms table.ss-gridfield-table tr th.first { -moz-border-radius-topleft: 7px; -webkit-border-top-left-radius: 7px; -o-border-top-left-radius: 7px; -ms-border-top-left-radius: 7px; -khtml-border-top-left-radius: 7px; border-top-left-radius: 7px; } .cms table.ss-gridfield-table tr th.last { -moz-border-radius-topright: 7px; -webkit-border-top-right-radius: 7px; -o-border-top-right-radius: 7px; -ms-border-top-right-radius: 7px; -khtml-border-top-right-radius: 7px; border-top-right-radius: 7px; } .cms table.ss-gridfield-table tr th button#action_gridfield_relationadd:hover { color: #444 !important; /* Not sure why IE think it needs this */ } .cms table.ss-gridfield-table tr th button:hover { color: #ccc !important; /* Not sure why IE think it needs this */ } .cms table.ss-gridfield-table tr th button.ss-gridfield-sort:hover { color: #fff !important; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } -.cms table.ss-gridfield-table tr th button.ss-gridfield-sort { background: transparent url(../images/arrows.png) no-repeat right 6px; border: none; width: 100%; text-align: left; padding: 4px 0; text-shadow: rgba(0, 0, 0, 0.3) 0px -1px 0; color: #fff; -moz-border-radius: 0; -webkit-border-radius: 0; -o-border-radius: 0; -ms-border-radius: 0; -khtml-border-radius: 0; border-radius: 0; } +.cms table.ss-gridfield-table tr th button.ss-gridfield-sort { background: transparent url(../images/arrows.png) no-repeat right 6px; border: none; width: 100%; text-align: left; padding: 4px 8px 4px 0; text-shadow: rgba(0, 0, 0, 0.3) 0px -1px 0; color: #fff; -moz-border-radius: 0; -webkit-border-radius: 0; -o-border-radius: 0; -ms-border-radius: 0; -khtml-border-radius: 0; border-radius: 0; } .cms table.ss-gridfield-table tr th button.ss-gridfield-sort:hover { background-position: right -34px; } .cms table.ss-gridfield-table tr th button.ss-gridfield-sort.ss-gridfield-sorted-desc { background-position: right -72px; } .cms table.ss-gridfield-table tr th button.ss-gridfield-sort.ss-gridfield-sorted-asc { background-position: right -116px; } diff --git a/css/GridField_print.css b/css/GridField_print.css new file mode 100644 index 000000000..5f28eac4c --- /dev/null +++ b/css/GridField_print.css @@ -0,0 +1,7 @@ +h3 { font-family: Arial, sans-serif; } + +table { border-collapse: collapse; font-family: Arial, sans-serif; color: #333; font-size: 12pt; } +table th { border-bottom: 2px solid #333; padding: 5px 10px; font-weight: bold; text-align: left; } +table th:first-child { padding-left: 0px; } +table td { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; text-align: left; padding: 5px 10px; } +table td:first-child { padding-left: 0px; } diff --git a/dev/DebugView.php b/dev/DebugView.php index 3ca978c2c..67d33cf20 100644 --- a/dev/DebugView.php +++ b/dev/DebugView.php @@ -93,7 +93,7 @@ class DebugView extends Object { echo '<!DOCTYPE html><html><head><title>' . $url . '</title>'; echo '<style type="text/css">'; echo 'body { background-color:#eee; margin:0; padding:0; font-family:Helvetica,Arial,sans-serif; }'; - echo '.info { border-bottom:1px dotted #333; background-color:#ccdef3; margin:0; padding:6px 12px; }'; + echo '.info { margin:15px 0 0 0; padding:6px 12px; }'; echo '.info h1 { margin:0; padding:0; color:#333; letter-spacing:-2px; }'; echo '.header { margin:0; border-bottom:6px solid #ccdef3; height:23px; background-color:#666673; padding:4px 0 2px 6px; background-image:url('.Director::absoluteBaseURL().'cms/images/mainmenu/top-bg.gif); }'; echo '.trace { padding:6px 12px; }'; @@ -101,8 +101,8 @@ class DebugView extends Object { echo 'pre { margin-left:18px; }'; echo 'pre span { color:#999;}'; echo 'pre .error { color:#f00; }'; - echo '.pass { margin-top:18px; padding:2px 20px 2px 40px; color:#006600; background:#E2F9E3 url('.Director::absoluteBaseURL() .'cms/images/alert-good.gif) no-repeat scroll 7px 50%; border:1px solid #8DD38D; }'; - echo '.fail { margin-top:18px; padding:2px 20px 2px 40px; color:#C80700; background:#FFE9E9 url('.Director::absoluteBaseURL() .'cms/images/alert-bad.gif) no-repeat scroll 7px 50%; border:1px solid #C80700; }'; + echo '.pass { margin-top:18px; padding:2px 20px 2px 40px; color:#006600; background:#E2F9E3 url('.Director::absoluteBaseURL() .'cms/images/alert-good.gif) no-repeat scroll 7px 50%; border:1px solid #8DD38D; border-radius:4px; }'; + echo '.fail { margin-top:18px; padding:2px 20px 2px 40px; color:#C80700; background:#FFE9E9 url('.Director::absoluteBaseURL() .'cms/images/alert-bad.gif) no-repeat scroll 7px 50%; border:1px solid #C80700; border-radius:4px; }'; echo '.failure span { color:#C80700; font-weight:bold; }'; echo '</style></head>'; echo '<body>'; diff --git a/dev/install/images/ss-logo.png b/dev/install/images/ss-logo.png new file mode 100644 index 000000000..a5c45fa3b Binary files /dev/null and b/dev/install/images/ss-logo.png differ diff --git a/dev/install/install.css b/dev/install/install.css new file mode 100644 index 000000000..18e5110b8 --- /dev/null +++ b/dev/install/install.css @@ -0,0 +1,392 @@ +.header { + padding-bottom:10px; +} + +.header p { + color:#fff; +} + +.install-header +{ + padding-bottom:10px; + background:#161616; +} + +.install-header .inner{ + padding-top:55px; + position:relative; +} + +.brand { + float:none; +} + +.brand h1 { + float:left; +} + +.brand .logo { + float:left; + margin-right:15px; + height:55px; + width:55px; + background:url(../install/images/ss-logo.png) center center no-repeat; +} + +#Navigation { + display:none; +} + +.main .inner ul { + padding-left:20px; +} + +ul#Themes{ + list-style: none; + margin: 0 5px 20px 5px; + float: left; + width: 320px; + padding:0; +} + ul#Themes li { + clear: both; + padding: 3px 0; + margin-left: 0; + padding-left: 0; + } + ul#Themes input { + float: left; + margin-right: 5px; + } + ul#Themes label { + margin: -2px 5px 0 15px; + } + +h1.sectionHeading { + margin-top: 20px; +} + +.error { + padding: 0.5em; + background-color: #fdf5f5; + border: 1px #ff8e8e solid; + border-radius:4px; + color: #f03838; +} + .main p.error { color: #f03838;} +.warning { + padding: 0.5em; + background-color: #fcf8f2; + border-radius:4px; + border: 1px #ffc28b solid; + color: #cb6a1c; +} + .warning label { + display: inline; + margin-left: 5px; + color: #cb6a1c + } + .warning p { + font-size: 12px; + margin-bottom: 0; + } + .warning .warning_actions { + margin: 5px 0 5px 0; + } +.good { + padding: 0.5em; + background-color: #e2fee1; + border: 1px #43cb3e solid; + color: #359318; +} +.error a, +.warning a, +.good a { + color: inherit; + text-decoration: underline; +} +p.error a:hover { + text-decoration: none; +} +span.middleColumn { + width: 297px; + margin:0; + padding: 4px; + float:right; +} +input.text, textarea, select { + padding: 2px; + border: 1px solid #A7A7A7; + color: #000; + font-size: 1.2em; + font-weight: bold; + width: 290px; +} +#stats-container label { + display: inline; +} +#stats { + margin-right: 5px; +} + +.main h2 { + margin: 36px 0 18px 0; + font-weight: bold; + clear: left; + text-indent: 5px; + width: 100%; + overflow: hidden; + border-top:1px solid #E5E5E5; +} + .main h2 span { + float: right; + font-size: 0.8em; + padding: 10px 10px 0 0; + font-weight: normal; + color: #888; + } + + .main h2.no-line { + border-top:none; + } + +/** + * Requirements and test results + * ------------------------------------------------ */ +table.testResults { + border-collapse: collapse; + width: 100%; + margin: -1px 0px 10px 0; +} + table.testResults td { + border: 1px #CCC solid; + width: 400px; + line-height: 15px; + padding: 6px; + } + table.testResults tr.good { + display: none; + border: none; + } + table.testResults tr.good td { + color: green; + } + + table.testResults tr.warning { + border: none; + } + table.testResults tr.warning td { + color: #ef7f24; + } + table.testResults tr.error { + border: none; + } + table.testResult tr.error { + color: red; + } + +h5.requirement { + padding: 10px; + background: #f1f1f1; + border: 1px solid #ccc; + border-radius:4px 4px 0 0; + border-width: 1px; + margin: 0; + overflow: hidden; +} + h5.requirement span { + float: right; + } + h5.requirement.good { + color: #359318; + } + h5.requirement.warning { + color: #cb6a1c; + } + h5.requirement.error { + color: #F03838; + } + h5.requirement a { + font-size: 10px; + float: right; + line-height: 13px; + margin: 0 0 0 30px; + color: #666; + text-decoration: none; + font-weight: normal; + } +.clear { + clear: both; +} +#adminAcc, +#devHelp, +#localeHelp { + padding-top: 20px; +} + +.typography label { + margin-bottom: 0; +} + +.main .helpText { + float: right; + width: 350px; + padding-right: 10px; +} + +.section { + overflow: hidden; +} + +.fields { + float: left; + width: 450px; +} + +#devHelp, +#devSection { + height: 18em; +} + +.main .action input{ + cursor:pointer; + text-align:center; + color:#fff; + background-color:#EF7F24; + border:none; + border-radius:4px; + font-size: 13px; + width: 220px; + font-weight: bold; + margin: 5px 0; + padding:5px; + font-family:"HelveticaNeueLTPro-Bd", "Helvetica Neue LT Pro Bold", "HelveticaNeueBold", "HelveticaNeue-Bold", "Helvetica Neue Bold", "Helvetica Neue LT Pro", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +#use_environment_field { + margin: 20px 0 10px; +} + +#use_environment_field input { + float: left; + margin-right: 5px; +} + +.dbfields { + margin: 10px 10px 10px 0; +} + +#database_credentials { + margin: 0; + line-height: 1; +} + +#database_selection { + overflow: hidden; + margin: 0; + padding-left:5px; +} + #database_selection li { + margin-left: 0; + padding-left: 0; + list-style-type:none; + } + #database_selection li input { + margin-right: 5px; + border-radius:4px; + background:#ededed; + } + + #database_selection li .databaseClass { + background:none; + } + + #database_selection li input:focus{ + outline:none; background-color:#fff; + } + + #database_selection li .field label { + float:left; + margin-top:15px; + } + +#AdminAccount input { + border-radius:4px; + background:#ededed; +} + +#AdminAccount select { + border-radius:4px; + background:none; + margin-top:5px; +} + +#AdminAccount select:focus{ + outline:none; +} + +#AdminAccount input:focus{ + outline:none; background-color:#fff; +} + +#AdminAccount .field label { + float:left; + margin-top:15px; +} + +.databaseError { + clear:both; + overflow: hidden; + width: 290px; + line-height: 1.2; + margin: 10px 0 20px; + display: none; + border-radius:4px; +} + + .databaseError ul { + margin-bottom: 0; + } + .databaseError ul, .databaseError li { + margin-left: 0; + padding-left: 0; + } + +input#install_button { + cursor:pointer; + text-align:center; + color:#fff; + background-color:#359318; + border:none; + border-radius:4px; + font-size: 13px; + width: 220px; + font-weight: bold; + margin: 5px 0; + padding:5px; + font-family:"HelveticaNeueLTPro-Bd", "Helvetica Neue LT Pro Bold", "HelveticaNeueBold", "HelveticaNeue-Bold", "Helvetica Neue Bold", "Helvetica Neue LT Pro", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.goodInstall { + padding: 0.5em; + background-color: #e2fee1; + border: 1px #43cb3e solid; + color: #359318; + overflow: hidden; + line-height: 18px; + padding: 10px; +} + .main p.goodInstall { + color: #359318; + } + .goodInstall a { + float: right; + font-size: 18px; + padding: 0 2px 2px 0; + font-weight: bold; + } + +em.inlineBarText { + float: left; + font-style: normal; +} \ No newline at end of file diff --git a/dev/install/install.php5 b/dev/install/install.php5 index 7111514ac..4b3ced276 100644 --- a/dev/install/install.php5 +++ b/dev/install/install.php5 @@ -944,28 +944,32 @@ class Installer extends InstallRequirements { <html> <head> <title>Installing SilverStripe...</title> - <link rel="stylesheet" type="text/css" href="themes/blackcandy/css/layout.css" /> - <link rel="stylesheet" type="text/css" href="themes/blackcandy/css/typography.css" /> - <link rel="stylesheet" type="text/css" href="themes/blackcandy/css/form.css" /> + <link rel="stylesheet" type="text/css" href="themes/simple/css/layout.css" /> + <link rel="stylesheet" type="text/css" href="themes/simple/css/typography.css" /> + <link rel="stylesheet" type="text/css" href="themes/simple/css/form.css" /> <link rel="stylesheet" type="text/css" href="sapphire/dev/install/install.css" /> <script src="sapphire/thirdparty/jquery/jquery.js"></script> </head> <body> - <div id="BgContainer"> - <div id="Container"> - <div id="Header"> - <h1>SilverStripe CMS / Framework Installation</h1> + <div class="install-header"> + <div class="inner"> + <div class="brand"> + <span class="logo"></span> + <h1>SilverStripe</h1> </div> + <p>Version <?php echo $silverstripe_version; ?></p> + </div> + </div> - <div id="Navigation"> </div> - <div class="clear"><!-- --></div> + <div id="Navigation"> </div> + <div class="clear"><!-- --></div> - <div id="Layout"> - <div class="typography"> - <h1>Installing SilverStripe...</h1> - <p>I am now running through the installation steps (this should take about 30 seconds)</p> - <p>If you receive a fatal error, refresh this page to continue the installation</p> - <ul> + <div class="main"> + <div class="inner"> + <h1>Installing SilverStripe...</h1> + <p>I am now running through the installation steps (this should take about 30 seconds)</p> + <p>If you receive a fatal error, refresh this page to continue the installation</p> + <ul> <?php } else { echo "SILVERSTRIPE COMMAND-LINE INSTALLATION\n\n"; @@ -1016,7 +1020,7 @@ class Installer extends InstallRequirements { $fh = fopen('mysite/_config.php', 'wb'); fclose($fh); } - $theme = isset($_POST['template']) ? $_POST['template'] : 'blackcandy'; + $theme = isset($_POST['template']) ? $_POST['template'] : 'simple'; $locale = isset($_POST['locale']) ? $_POST['locale'] : 'en_US'; $type = $config['db']['type']; $dbConfig = $config['db'][$type]; diff --git a/docs/en/howto/customize-cms-tree.md b/docs/en/howto/customize-cms-tree.md index 450c9af50..8062a6eea 100644 --- a/docs/en/howto/customize-cms-tree.md +++ b/docs/en/howto/customize-cms-tree.md @@ -61,7 +61,7 @@ __Example: using a subclass__ function getScheduledToPublish(){ // return either true or false } - + function getStatusFlags(){ $flags = parent::getStatusFlags(); $flags['scheduledtopublish'] = "Scheduled To Publish"; @@ -71,6 +71,6 @@ __Example: using a subclass__ The above subclass of `[api:SiteTree]` will add a new flag for indicating its __'Scheduled To Publish'__ status. The look of the page node will be changed -from  to . The getStatusFlags has an `updateStatusFlags()` +from  to . The getStatusFlags has an `updateStatusFlags()` extension point, so the flags can be modified through `DataExtension` rather than inheritance as well. Deleting existing flags works by simply unsetting the array key. \ No newline at end of file diff --git a/forms/HtmlEditorField.php b/forms/HtmlEditorField.php index dc0e24deb..9ffb1b371 100644 --- a/forms/HtmlEditorField.php +++ b/forms/HtmlEditorField.php @@ -369,26 +369,54 @@ class HtmlEditorField_Toolbar extends RequestHandler { )); $numericLabelTmpl = '<span class="step-label"><span class="flyout">%d</span><span class="arrow"></span><strong class="title">%s</strong></span>'; - $fields = new FieldList( - new LiteralField( - 'Heading', - sprintf('<h3>%s</h3>', _t('HtmlEditorField.IMAGE', 'Image')) - ), - - $contentComposite = new CompositeField( - new LiteralField('headerSelect', '<h4 class="field header-select">' . sprintf($numericLabelTmpl, '1', _t('HtmlEditorField.Find', 'Find')) . '</h4>'), + + $fromCMS = new CompositeField( + new LiteralField('headerSelect', '<h4 class="field header-select">' . sprintf($numericLabelTmpl, '1', _t('HtmlEditorField.Find', 'Find')) . '</h4>'), $selectComposite = new CompositeField( new TreeDropdownField('ParentID', _t('HtmlEditorField.FOLDER', 'Folder'), 'Folder'), $fileField - ), - - new LiteralField('headerEdit', '<h4 class="field header-edit">' . sprintf($numericLabelTmpl, '2', _t('HtmlEditorField.EditDetails', 'Edit details')) . '</h4>'), - $editComposite = new CompositeField( - new LiteralField('contentEdit', '<div class="content-edit"></div>') ) - + ); + + $fromCMS->addExtraClass('content'); + $selectComposite->addExtraClass('content-select'); + + Requirements::css(SAPPHIRE_DIR . '/css/AssetUploadField.css'); + $computerUploadField = Object::create('UploadField', 'AssetUploadField', ''); + $computerUploadField->setConfig('previewMaxWidth', 40); + $computerUploadField->setConfig('previewMaxHeight', 30); + $computerUploadField->addExtraClass('ss-assetuploadfield'); + $computerUploadField->removeExtraClass('ss-uploadfield'); + $computerUploadField->setTemplate('HtmlEditorField_UploadField'); + $computerUploadField->setFolderName(Upload::$uploads_folder); + + $tabSet = new TabSet( + "MediaFormInsertImageTabs", + new Tab( + _t('HtmlEditorField.FROMCOMPUTER','From your computer'), + $computerUploadField + ), + new Tab( + _t('HtmlEditorField.FROMCMS','From the CMS'), + $fromCMS ) ); + + $allFields = new CompositeField( + $tabSet, + new LiteralField('headerEdit', '<h4 class="field header-edit">' . sprintf($numericLabelTmpl, '2', _t('HtmlEditorField.EditDetails', 'Edit details')) . '</h4>'), + $editComposite = new CompositeField( + new LiteralField('contentEdit', '<div class="content-edit"></div>') + ) + ); + + $fields = new FieldList( + new LiteralField( + 'Heading', + sprintf('<h3>%s</h3>', _t('HtmlEditorField.IMAGE', 'Insert Image')) + ), + $allFields + ); $actions = new FieldList( FormAction::create('insertimage', _t('HtmlEditorField.BUTTONINSERT', 'Insert')) @@ -404,9 +432,7 @@ class HtmlEditorField_Toolbar extends RequestHandler { $actions ); - $contentComposite->addExtraClass('content'); - $selectComposite->addExtraClass('content-select'); - + $form->unsetValidator(); $form->disableSecurityToken(); $form->loadDataFrom($this); diff --git a/forms/gridfield/GridFieldExportButton.php b/forms/gridfield/GridFieldExportButton.php index 919094196..db6e2b5c8 100644 --- a/forms/gridfield/GridFieldExportButton.php +++ b/forms/gridfield/GridFieldExportButton.php @@ -56,7 +56,7 @@ class GridFieldExportButton implements GridField_HTMLProvider, GridField_ActionP $button->setAttribute('data-icon', 'download-csv'); $button->addExtraClass('no-ajax'); return array( - $this->targetFragment => '<p>' . $button->Field() . '</p>', + $this->targetFragment => '<p class="grid-csv-button">' . $button->Field() . '</p>', ); } @@ -110,6 +110,11 @@ class GridFieldExportButton implements GridField_HTMLProvider, GridField_ActionP } $items = $gridField->getList(); + foreach($gridField->getConfig()->getComponents() as $component){ + if($component instanceof GridFieldFilterHeader || $component instanceof GridFieldSortableHeader) { + $items = $component->getManipulatedData($gridField, $items); + } + } foreach($items as $item) { $columnData = array(); foreach($csvColumns as $columnSource => $columnHeader) { diff --git a/forms/gridfield/GridFieldPrintButton.php b/forms/gridfield/GridFieldPrintButton.php new file mode 100644 index 000000000..5bc06dbbc --- /dev/null +++ b/forms/gridfield/GridFieldPrintButton.php @@ -0,0 +1,198 @@ +<?php +/** + * @package sapphire + * @subpackage gridfield + */ + +/** + * Adds an "Print" button to the bottom or top of a GridField. + * + * WARNING: This is experimental and its API is subject to change. Feel free to use it as long as you are happy of + * refactoring your code in the future. + */ +class GridFieldPrintButton implements GridField_HTMLProvider, GridField_ActionProvider, GridField_URLHandler { + + /** + * @var array Map of a property name on the printed objects, with values being the column title in the CSV file. + * Note that titles are only used when {@link $csvHasHeader} is set to TRUE. + */ + protected $printColumns; + + /** + * @var boolean + */ + protected $printHasHeader = true; + + /** + * Fragment to write the button to + */ + protected $targetFragment; + + /** + * @param string $targetFragment The HTML fragment to write the button into + * @param array $printColumns The columns to include in the print view + */ + public function __construct($targetFragment = "after", $printColumns = null) { + $this->targetFragment = $targetFragment; + $this->printColumns = $printColumns; + } + + /** + * Place the print button in a <p> tag below the field + */ + public function getHTMLFragments($gridField) { + $button = new GridField_FormAction( + $gridField, + 'print', + _t('TableListField.Print', 'Print'), + 'print', + null + ); + $button->setAttribute('data-icon', 'grid_print'); + $button->addExtraClass('gridfield-button-print'); + //$button->addExtraClass('no-ajax'); + return array( + $this->targetFragment => '<p class="grid-print-button">' . $button->Field() . '</p>', + ); + } + + /** + * print is an action button + */ + public function getActions($gridField) { + return array('print'); + } + + function handleAction(GridField $gridField, $actionName, $arguments, $data) { + if($actionName == 'print') { + return $this->handlePrint($gridField); + } + } + + /** + * it is also a URL + */ + function getURLHandlers($gridField) { + return array( + 'print' => 'handlePrint', + ); + } + + /** + * Handle the print, for both the action button and the URL + */ + public function handlePrint($gridField, $request = null) { + set_time_limit(60); + Requirements::clear(); + Requirements::css(SAPPHIRE_DIR . '/css/GridField_print.css'); + if($data = $this->generatePrintData($gridField)){ + return $data->renderWith("GridField_print"); + } + } + + /** + * Export core. + */ + function generatePrintData($gridField) { + $printColumns = ($this->printColumns) ? $this->printColumns : $gridField->getDisplayFields(); + $header = null; + if($this->printHasHeader){ + $header = new ArrayList(); + foreach($printColumns as $field => $label){ + $header->push( + new ArrayData(array( + "CellString" => $label, + )) + ); + } + } + + $items = $gridField->getList(); + foreach($gridField->getConfig()->getComponents() as $component){ + if($component instanceof GridFieldFilterHeader || $component instanceof GridFieldSortableHeader) { + $items = $component->getManipulatedData($gridField, $items); + } + } + + $itemRows = new ArrayList(); + foreach($items as $item) { + $itemRow = new ArrayList(); + foreach($printColumns as $field => $label) { + $value = $item->relField($field); + $itemRow->push( + new ArrayData(array( + "CellString" => $value, + )) + ); + } + $itemRows->push(new ArrayData( + array( + "ItemRow" => $itemRow + ) + )); + $item->destroy(); + } + + //get title for the print view + $form = $gridField->getForm(); + $currentController = Controller::curr(); + $title = ''; + if(method_exists($currentController, 'Title')) { + $title = $currentController->Title(); + }else{ + if($currentController->Title){ + $title = $currentController->Title; + }else{ + if($form->Name()){ + $title = $form->Name(); + } + } + } + if($fieldTitle = $gridField->Title()){ + if($title) $title .= " - "; + $title .= $fieldTitle; + } + + $ret = new ArrayData( + array( + "Title" => $title, + "Header" => $header, + "ItemRows" => $itemRows, + "Datetime" => SS_Datetime::now(), + "Member" => Member::currentUser(), + ) + ); + + return $ret; + } + + /** + * @return array + */ + function getPrintColumns() { + return $this->printColumns; + } + + /** + * @param array + */ + function setPrintColumns($cols) { + $this->printColumns = $cols; + return $this; + } + + /** + * @return boolean + */ + function getPrintHasHeader() { + return $this->printHasHeader; + } + + /** + * @param boolean + */ + function setPrintHasHeader($bool) { + $this->printHasHeader = $bool; + return $this; + } +} diff --git a/images/sitetree_ss_default_icons.png b/images/sitetree_ss_default_icons.png new file mode 100644 index 000000000..101351db9 Binary files /dev/null and b/images/sitetree_ss_default_icons.png differ diff --git a/javascript/GridField.js b/javascript/GridField.js index b0a41dc5a..3dab02eda 100644 --- a/javascript/GridField.js +++ b/javascript/GridField.js @@ -111,7 +111,42 @@ } } }); + + $('.ss-gridfield .action.gridfield-button-print').entwine({ + UUID: null, + onmatch: function() { + this._super(); + this.setUUID(new Date().getTime()); + }, + onclick: function(e){ + var btn = this.closest(':button'), grid = this.getGridField(), + form = this.closest('form'), data = form.find(':input').serialize(); + // Add current button + data += '&' + encodeURIComponent(btn.attr('name')) + '=' + encodeURIComponent(btn.val()); + + // Include any GET parameters from the current URL, as the view state might depend on it. + // For example, a list prefiltered through external search criteria might be passed to GridField. + if(window.location.search) data = window.location.search.replace(/^\?/, '') + '&' + data; + + var url = $.path.makeUrlAbsolute(grid.data('url') + '?' + data, $('base').attr('href')); + var newWindow = window.open(url); + + return false; + } + }); + + $('.ss-gridfield-print-iframe').entwine({ + onmatch: function(){ + this.hide().bind('load', function() + { + this.focus(); + var ifWin = this.contentWindow || this; + ifWin.print(); + });; + } + }); + /** * Prevents actions from causing an ajax reload of the field. * Useful e.g. for actions which rely on HTTP response headers being interpreted nativel diff --git a/javascript/HtmlEditorField.js b/javascript/HtmlEditorField.js index d282793c2..ddee7955f 100644 --- a/javascript/HtmlEditorField.js +++ b/javascript/HtmlEditorField.js @@ -671,7 +671,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE; .toggleClass('ui-state-disabled', !hasItems); // Hide file selection and step labels when editing an existing file - this.find('.header-select,.content-select,.header-edit')[editingSelected ? 'hide' : 'show'](); + this.find('#MediaFormInsertImageTabs,.header-edit')[editingSelected ? 'hide' : 'show'](); }, getFileView: function(idOrUrl) { return this.find('.ss-htmleditorfield-file[data-id=' + idOrUrl + ']'); @@ -713,6 +713,35 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE; } }); + /** + * Show the second step after uploading an image + */ + $('form.htmleditorfield-form.htmleditorfield-mediaform div.ss-assetuploadfield').entwine({ + //the UploadField div.ss-uploadfield-editandorganize is hidden in CSS, + // because we use the detail view for each individual file instead + onfileuploadstop: function(e) { + var form = this.closest('form'); + + //update the editFields to show those Files that are newly uploaded + var editFieldIDs = []; + form.find('div.content-edit').find('div.ss-htmleditorfield-file').each(function(){ + //get the uploaded file ID when this event triggers, signaling the upload has compeleted successfully + editFieldIDs.push($(this).data('id')); + }); + var uploadedFiles = $('ul.ss-uploadfield-files').children('li.ss-uploadfield-item'); + uploadedFiles.each(function(){ + var uploadedID = $(this).data('fileid'); + if ($.inArray(uploadedID, editFieldIDs) == -1) { + //trigger the detail view for filling out details about the file we are about to insert into TinyMCE + form.showFileView(uploadedID); + } + }); + + form.redraw(); + } + + }); + /** * Represents a single selected file, together with a set of form fields to edit its properties. * Overload this based on the media type to determine how the HTML should be created. diff --git a/model/DataExtension.php b/model/DataExtension.php index 7d8e9c172..a45da057d 100644 --- a/model/DataExtension.php +++ b/model/DataExtension.php @@ -32,7 +32,7 @@ abstract class DataExtension extends Extension { ); - static function add_to_class($class, $extensionClass, $args) { + static function add_to_class($class, $extensionClass, $args = null) { if(method_exists($class, 'extraDBFields')) { $extraStaticsMethod = 'extraDBFields'; } else { diff --git a/scss/AssetUploadField.scss b/scss/AssetUploadField.scss index 9414a01fe..a8261ccf3 100644 --- a/scss/AssetUploadField.scss +++ b/scss/AssetUploadField.scss @@ -24,6 +24,7 @@ body.cms.ss-uploadfield-edit-iframe { .field { border-bottom: 0; + box-shadow:none; } .ss-uploadfield-files { @@ -32,6 +33,7 @@ body.cms.ss-uploadfield-edit-iframe { .ss-uploadfield-item { border: 1px solid lighten($color-medium-separator, 20%); + border-bottom:0; @include border-radius(5px); @include background-clip(padding-box); background: #E2E2E2; diff --git a/scss/GridField.scss b/scss/GridField.scss index 84a854587..6ad3838e3 100644 --- a/scss/GridField.scss +++ b/scss/GridField.scss @@ -21,6 +21,7 @@ $gf_colour_border: rgba(0,0,0,.1); $gf_colour_zebra: #F0F4F7; $gf_colour_font: #666; $gf_colour_text_shadow: rgba(0,0,0,.3); +$color-text-blue-link:#1556B2 !default; $gf_border_radius: 7px; $gf_color_border_filter_button: #9A9A9A; $gf_color_button: #e6e6e6; @@ -75,6 +76,12 @@ $gf_grid_x: 16px; } width: 500px; } + .grid-print-button{ + display: inline-block; + } + .grid-csv-button{ + display: inline-block; + } } table.ss-gridfield-table { @@ -93,6 +100,14 @@ $gf_grid_x: 16px; max-width:$gf_grid_x*32; //max width 512px } } + tr:first-child { //sets 7px border-radius on the top row in the thead - accounts for edgecase where there is no title row. + th:first-child { + @include border-top-left-radius($gf_border_radius); + } + th:last-child { + @include border-top-right-radius($gf_border_radius); + } + } } tbody { @@ -101,11 +116,74 @@ $gf_grid_x: 16px; // Give browser some hints on which cols take priority: // The last column (buttons) should always shrink to fit. // Overwritten for IE7, which doesn't support this. - width: 100%; + width: auto; + white-space:nowrap; &.col-buttons { width: auto; text-align: right; - white-space: nowrap; + } + + &.col-description { + width: auto; + } + + &.col-listChildrenLink { + width:$gf_grid_x; + border-right:none; + text-indent:-9999em; + padding:0; + .list-children-link { + background: transparent url(../images/sitetree_ss_default_icons.png) no-repeat 12px -4px; + display:block; + } + } + + &.col-getTreeTitle { + span.item { + color:$color-text-blue-link; + } + span.badge { + clear: both; + text-transform: uppercase; + display: inline-block; + padding: 0px 3px; + font-size: 0.75em; + line-height: 1em; + margin-left: 10px; + margin-right: 6px; + margin-top: -1px; + @include border-radius(2px, 2px); + } + + span.badge.modified { + color: #7E7470; + border: 1px solid #C9B800; + background-color: #FFF0BC; + } + + span.badge.addedtodraft { + color: #7E7470; + border: 1px solid #C9B800; + background-color: #FFF0BC; + } + + span.badge.deletedonlive { + color: #636363; + border: 1px solid #E49393; + background-color: #F2DADB; + } + + span.badge.removedfromdraft { + color: #636363; + border: 1px solid #E49393; + background-color: #F2DADB; + } + + span.badge.workflow-approval { + color: #56660C; + border: 1px solid #7C8816; + background-color: #DAE79A; + } } button { @@ -149,7 +227,6 @@ $gf_grid_x: 16px; tr { &.title { - @include border-top-radius($gf_border_radius); th { position: relative; background: $gf_colour_gradient_dark; @@ -157,7 +234,6 @@ $gf_grid_x: 16px; padding: 5px; min-height: 40px; //this is to accomodate the add new button. @include background-image(linear-gradient($gf_colour_gradient_light, $gf_colour_gradient_dark)); - @include border-top-radius($gf_border_radius); @include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0); h2{ padding: 0px; @@ -225,14 +301,9 @@ $gf_grid_x: 16px; &.extra,&.action { padding: 0; cursor: default; - button,button:hover { - &.ss-ui-button { - margin-left: .9em; - color: #222; - } - } } &.main{ + white-space:nowrap; border-top: 1px solid $gf_colour_border; color:#fff; background: darken($gf_colour_subheader,10%); @@ -240,6 +311,9 @@ $gf_grid_x: 16px; span{ @include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0); } + &.col-listChildrenLink { + border-right:none; + } } &.extra { background: $gf_colour_subheader; @@ -262,9 +336,6 @@ $gf_grid_x: 16px; @include border-radius(2px, 2px); } } - &.action { - border-right: 0; - } &.first { @include border-top-left-radius($gf_border_radius); } @@ -288,7 +359,7 @@ $gf_grid_x: 16px; border:none; width:100%; text-align: left; - padding: 4px 0; + padding: 4px 8px 4px 0; @include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0); color: #fff; @include border-radius(0); diff --git a/scss/GridField_print.scss b/scss/GridField_print.scss new file mode 100644 index 000000000..61a753ebf --- /dev/null +++ b/scss/GridField_print.scss @@ -0,0 +1,31 @@ +h3 { + font-family: Arial, sans-serif; +} +table { + border-collapse: collapse; + font-family: Arial, sans-serif; + color: #333; + font-size: 12pt; + tr{ + + } + th{ + border-bottom: 2px solid #333; + padding: 5px 10px; + font-weight: bold; + text-align: left; + &:first-child{ + padding-left: 0px; + } + + } + td{ + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + text-align: left; + padding: 5px 10px; + &:first-child{ + padding-left: 0px; + } + } +} \ No newline at end of file diff --git a/security/Group.php b/security/Group.php index 7c7a45bfd..5021b99c8 100755 --- a/security/Group.php +++ b/security/Group.php @@ -95,7 +95,8 @@ class Group extends DataObject { if($this->ID) { $config = new GridFieldConfig_RelationEditor(); - $config->addComponents(new GridFieldExportButton()); + $config->addComponents(new GridFieldExportButton('before')); + $config->addComponents(new GridFieldPrintButton('before')); $config->getComponentByType('GridFieldAddExistingAutocompleter') ->setResultsFormat('$Title ($Email)')->setSearchFields(array('FirstName', 'Surname', 'Email')); $config->getComponentByType('GridFieldDetailForm')->setValidator(new Member_Validator()); diff --git a/templates/HtmlEditorField_UploadField.ss b/templates/HtmlEditorField_UploadField.ss new file mode 100644 index 000000000..f8e35a5a8 --- /dev/null +++ b/templates/HtmlEditorField_UploadField.ss @@ -0,0 +1,38 @@ +<div class="ss-uploadfield-item ss-uploadfield-addfile field"> + + <h4> + <span class="step-label"> + <span class="flyout">1</span><span class="arrow"></span> + <span class="title"><% _t('AssetUploadField.ChooseFiles', 'Choose files') %></span> + </span> + </h4> + + <div class="ss-uploadfield-item-info"> + <label class="ss-uploadfield-fromcomputer ss-ui-button ss-ui-action-constructive" title="<% _t('AssetUploadField.FROMCOMPUTERINFO', 'Upload from your computer') %>" data-icon="drive-upload"> + <% _t('AssetUploadField.FROMCOMPUTER', 'Choose files from your computer') %> + <input id="$id" name="$getName" class="$extraClass ss-uploadfield-fromcomputer-fileinput" data-config="$configString" type="file"<% if $multiple %> multiple="multiple"<% end_if %> title="<% _t('AssetUploadField.FROMCOMPUTER', 'Choose files from your computer') %>" /> + </label> + + <div class="clear"><!-- --></div> + </div> + <div class="ss-uploadfield-item-uploador"> + <% _t('AssetUploadField.UPLOADOR', 'OR') %> + </div> + <div class="ss-uploadfield-item-preview ss-uploadfield-dropzone"> + <div> + <% _t('AssetUploadField.DROPAREA', 'Drop Area') %> + <span><% _t('AssetUploadField.DRAGFILESHERE', 'Drag files here') %></span> + </div> + </div> + <div class="clear"><!-- --></div> +</div> + +<div class="ss-uploadfield-editandorganize"> + <h3> + <span class="step-label"> + <span class="flyout">2</span><span class="arrow"></span> + <span class="title"><% _t('AssetUploadField.EDITANDORGANIZE', 'Edit & organize') %></span> + </span> + </h3> + <ul class="ss-uploadfield-files files"></ul> +</div> \ No newline at end of file diff --git a/templates/Includes/GridFieldSortableHeader_Row.ss b/templates/Includes/GridFieldSortableHeader_Row.ss index a1241d2cb..d1493644c 100644 --- a/templates/Includes/GridFieldSortableHeader_Row.ss +++ b/templates/Includes/GridFieldSortableHeader_Row.ss @@ -1,5 +1,5 @@ <tr class="sortable-header"> <% control Fields %> - <th class="main"><span>$Field</span></th> + <th class="main col-$getName"><span>$Field</span></th> <% end_control %> </tr> diff --git a/templates/Includes/GridField_print.ss b/templates/Includes/GridField_print.ss new file mode 100644 index 000000000..20b61155e --- /dev/null +++ b/templates/Includes/GridField_print.ss @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <% if $Title %><title>$Title</title><% end_if %> + </head> + <body onload="window.print();"> + <% if $Title %><h3>$Title</h3><% end_if %> + <table> + <thead> + <tr><% control Header %><th>$CellString</th><% end_control %></tr> + </thead> + <tbody> + <% control ItemRows %> + <tr><% control ItemRow %><td>$CellString</td><% end_control %></tr> + <% end_control %> + </tbody> + </table> + <p> + <% _t('GridField.PRINTEDAT', 'Printed at') %> $Datetime.Time, $Datetime.Date + <br /> + <% _t('GridField.PRINTEDBY', 'Printed by') %> $Member.Name + </p> + </body> + +</html> \ No newline at end of file diff --git a/templates/Includes/HtmlEditorField_viewfile.ss b/templates/Includes/HtmlEditorField_viewfile.ss index 988f18e3b..ded2dbc83 100644 --- a/templates/Includes/HtmlEditorField_viewfile.ss +++ b/templates/Includes/HtmlEditorField_viewfile.ss @@ -2,7 +2,9 @@ <div class="overview"> <span class="thumbnail">$Preview</span> <span class="title">$Name</span> - <a href="#" class="action-delete"><% _t('HtmlEditorField.DeleteItem', 'delete') %></a> + <a href="#" class="action-delete ui-state-default"> + <span class="ui-button-icon-primary ui-icon btn-icon-cross-circle"></span> + </a> </div> <div class="details"> <fieldset>