diff --git a/openslides/core/static/css/app.css b/openslides/core/static/css/app.css index ca427631b..50b73c41b 100644 --- a/openslides/core/static/css/app.css +++ b/openslides/core/static/css/app.css @@ -189,6 +189,40 @@ th.sortable:hover { } +/* iframe for live view */ +#iframe { + width: 1024px; + height: 768px; + -moz-transform-origin: 0 0; + -webkit-transform-origin: 0 0; + -o-transform-origin: 0 0; + transform-origin: 0 0 0; + -moz-transform: scale(0.25); + -webkit-transform: scale(0.25); + -o-transform: scale(0.25); + transform: scale(0.25); + /* IE8+ - must be on one line, unfortunately */ + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.25, M12=0, M21=0, M22=0.25, SizingMethod='auto expand')"; +} +#iframewrapper { + width: 256px; + height: 192px; + position: relative; + overflow: hidden; + border: 1px solid #D5D5D5; + margin-bottom: 10px; +} +#iframeoverlay { + width: 256px; + height: 192px; + position: absolute; + top: 0px; + left: 0px; + display: block; + z-index: 1; +} + + /* Log */ #log { padding-left: 14px; @@ -203,6 +237,9 @@ div.import .label { div.import > div > input[type="text"] { width: 30px; } +.white-space-pre-line { + white-space: pre-line; +} tr.offline td, li.offline { diff --git a/openslides/core/static/css/projector.css b/openslides/core/static/css/projector.css new file mode 100644 index 000000000..19a709120 --- /dev/null +++ b/openslides/core/static/css/projector.css @@ -0,0 +1,202 @@ +/* + * OpenSlides default projector styles + * + */ + +body{ + font-size: 20px !important; + line-height: 24px !important; + overflow: hidden; +} + +/*** HEADER ***/ +#header { + box-shadow: 0 0 7px rgba(0,0,0,0.6); + height: 70px; + margin-bottom: 20px; +} +#logo { + position: relative; + left: 75px; + top: 4px; + height: 60px; + margin-right: 35px; + float: left; +} +#eventdata { + position: relative; + left: 75px; + top: 12px; + height: 50px; + overflow: hidden; +} +#eventdata .title { + font-size: 26px; + font-weight: bold; + } +#eventdata .title.titleonly { + position: relative; + top: 12px; +} +#eventdata .description { + font-size: 18px; + opacity: 0.5; +} +#currentTime { + border:0 solid #000000; + font-size:24px; + position:absolute; + text-align:right; + top:110px; + right:40px; + padding-left:30px; + background: url(../img/glyphicons_054_clock_big.png) no-repeat scroll 0px 0px; +} + +/*** CONTENT with base style elements ***/ +.content { + position: absolute; + left: 75px; + top: 150px; + right: 40px; + z-index: -1; + line-height: normal; + transition-property: margin, font-size; + transition-duration: 1s; +} +h1 { + font-size: 2.25em; + margin-bottom: 40px; + line-height: 1.1em; + padding-bottom: 10px; + border-bottom: 1px solid #e6e6e6; +} +h1.title_only { + text-align: center; + font-size: 2.75em; + line-height: 1.3em; + border: 0px; + padding: 40px; + margin-left: -35px; /* see #content position 'left' - 'right' for real centering */ +} +h1 small { + font-size: 0.55em; + margin-top: 15px; + display: block; +} +h3 { + font-size: 1.2em; +} +#sidebar { + width: 255px; + float: right; + margin: 0 0 20px 10px; +} +ul, ol { + margin: 0 0 10px 2em; +} +li { + line-height: normal; +} +.well h4 { + margin: 20px 0 2px 0; +} +.well h4.first { + margin-top: 0; +} +.well .result { + line-height: 30px; +} +.well .result hr { + border-top: 1px solid; + margin: 5px 0; + width: 10em; +} +.result.big { + font-size: 120%; + line-height: 40px; +} +.result .bold { + font-weight: bold; +} +hr { + margin: 10px 0; +} +.nobr { + white-space: nowrap; +} + + +/*** Overlay ***/ +#overlay_transparent { + background-color: #777777; + opacity: 0.6; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +#overlay_countdown_inner { + position: fixed; + right: 40px; + height: 30px; + width: 215px; + margin: 0; + top: 0; + font-size: 4em; + font-weight: bold; + text-align: center; + border-radius: 0 0 0.2em 0.2em; +} +#overlay_countdown_inner.negative { + color: #CC0000; +} +#overlay_message_inner { + position: fixed; + top: 35%; + left: 10%; + width: 80%; + text-align: center; + border-radius: 0.5em; + background: #FFFFFF; + font-size: 2.75em; + padding: 0.2em 0; + line-height: normal !important; +} + + +/*** Table style ***/ +table { + border-collapse:collapse; + border-color:#CCCCCC -moz-use-text-color #CCCCCC #CCCCCC; + border-style:solid none solid solid; + border-width:1px medium 1px 1px; + margin:0; + border-spacing:0px; +} +table th { + border-right:1px solid #CCCCCC; + color:#333333; + font-weight:normal; + padding:10px 10px 10px 10px; + text-align:left; + text-transform:uppercase; +} +table tr.odd td { + background:none repeat scroll 0 0 #F1F1F1; +} +table td { + background:none repeat scroll 0 0 #F7F7F7; + border-right:1px solid #CCCCCC; + line-height:120%; + padding: 10px 10px; + vertical-align:middle; +} +tr.total td { + border-top: 1px solid #333333; + background-color: #e3e3e3; +} +tr.elected td { + background-color: #BED4DE !important; +} diff --git a/openslides/core/static/js/core.js b/openslides/core/static/js/core.js index d2826de26..1cd4dfae4 100644 --- a/openslides/core/static/js/core.js +++ b/openslides/core/static/js/core.js @@ -206,6 +206,32 @@ angular.module('OpenSlidesApp.core.site', ['OpenSlidesApp.core']) abstract: true, template: "", }) + // customslide + .state('core.customslide', { + url: '/customslide', + abstract: true, + template: "", + }) + .state('core.customslide.list', { + resolve: { + customslides: function(Customslide) { + return Customslide.findAll(); + } + } + }) + .state('core.customslide.create', {}) + .state('core.customslide.detail', { + resolve: { + customslide: function(Customslide, $stateParams) { + return Customslide.find($stateParams.id); + } + } + }) + .state('core.customslide.detail.update', { + views: { + '@core.customslide': {} + } + }) // tag .state('core.tag', { url: '/tag', @@ -327,12 +353,67 @@ angular.module('OpenSlidesApp.core.site', ['OpenSlidesApp.core']) }; }) +// Customslide Controller +.controller('CustomslideListCtrl', function($scope, Customslide) { + Customslide.bindAll({}, $scope, 'customslides'); + + // setup table sorting + $scope.sortColumn = 'title'; + $scope.reverse = false; + // function to sort by clicked column + $scope.toggleSort = function ( column ) { + if ( $scope.sortColumn === column ) { + $scope.reverse = !$scope.reverse; + } + $scope.sortColumn = column; + }; + + // save changed customslide + $scope.save = function (customslide) { + Customslide.save(customslide); + }; + $scope.delete = function (customslide) { + //TODO: add confirm message + Customslide.destroy(customslide.id).then( + function(success) { + //TODO: success message + } + ); + }; +}) + +.controller('CustomslideDetailCtrl', function($scope, Customslide, customslide) { + Customslide.bindOne(customslide.id, $scope, 'customslide'); +}) + +.controller('CustomslideCreateCtrl', function($scope, $state, Customslide) { + $scope.customslide = {}; + $scope.save = function (customslide) { + Customslide.create(customslide).then( + function(success) { + $state.go('core.customslide.list'); + } + ); + }; +}) + +.controller('CustomslideUpdateCtrl', function($scope, $state, Customslide, customslide) { + $scope.customslide = customslide; + $scope.save = function (customslide) { + Customslide.save(customslide).then( + function(success) { + $state.go('core.customslide.list'); + } + ); + }; +}) + +// Tag Controller .controller('TagListCtrl', function($scope, Tag) { Tag.bindAll({}, $scope, 'tags'); // setup table sorting $scope.sortColumn = 'name'; - $scope.filterPresent = ''; $scope.reverse = false; // function to sort by clicked column $scope.toggleSort = function ( column ) { diff --git a/openslides/core/static/templates/core/customslide-detail.html b/openslides/core/static/templates/core/customslide-detail.html new file mode 100644 index 000000000..2019a7f5e --- /dev/null +++ b/openslides/core/static/templates/core/customslide-detail.html @@ -0,0 +1,22 @@ +

{{ customslide.title }}

+ + + +
{{ customslide.text }}
+ diff --git a/openslides/core/static/templates/core/customslide-form.html b/openslides/core/static/templates/core/customslide-form.html new file mode 100644 index 000000000..13b0050da --- /dev/null +++ b/openslides/core/static/templates/core/customslide-form.html @@ -0,0 +1,27 @@ +

Edit custom slide

+

New custom slide

+ + + +
+
+ + +
+
+ +