Commit f74c41d25288ab4a55b81192240ecfce965ef4ce
Exists in
master
and in
7 other branches
Showing
19 changed files
with
299 additions
and
84 deletions
Show diff stats
bower.json
| @@ -38,8 +38,8 @@ | @@ -38,8 +38,8 @@ | ||
| 38 | "angular-bind-html-compile": "^1.2.1", | 38 | "angular-bind-html-compile": "^1.2.1", |
| 39 | "angular-click-outside": "^2.7.1", | 39 | "angular-click-outside": "^2.7.1", |
| 40 | "ng-ckeditor": "^0.2.1", | 40 | "ng-ckeditor": "^0.2.1", |
| 41 | - "angular-bootstrap-toggle-switch": "^0.5.6", | ||
| 42 | - "angular-tag-cloud": "^0.3.0" | 41 | + "angular-tag-cloud": "^0.3.0", |
| 42 | + "angular-ui-switch": "^0.1.1" | ||
| 43 | }, | 43 | }, |
| 44 | "devDependencies": { | 44 | "devDependencies": { |
| 45 | "angular-mocks": "~1.5.0" | 45 | "angular-mocks": "~1.5.0" |
src/app/admin/layout-edit/designModeToggler.component.spec.ts
| 1 | import {ComponentTestHelper, createClass} from '../../../spec/component-test-helper'; | 1 | import {ComponentTestHelper, createClass} from '../../../spec/component-test-helper'; |
| 2 | +import {INgForwardJQuery} from 'ng-forward/cjs/util/jqlite-extensions'; | ||
| 2 | import * as helpers from '../../../spec/helpers'; | 3 | import * as helpers from '../../../spec/helpers'; |
| 3 | import {DesignModeTogglerComponent} from './designModeToggler.component'; | 4 | import {DesignModeTogglerComponent} from './designModeToggler.component'; |
| 4 | import {DesignModeService} from './designMode.service'; | 5 | import {DesignModeService} from './designMode.service'; |
| 5 | import {INoosferoLocalStorage} from "./../../shared/models/interfaces"; | 6 | import {INoosferoLocalStorage} from "./../../shared/models/interfaces"; |
| 6 | 7 | ||
| 7 | describe('DesignModeToggler Component', () => { | 8 | describe('DesignModeToggler Component', () => { |
| 8 | - const htmlTemplate: string = '<noosfero-design-toggler></noosfero-design-toggler>'; | 9 | + const htmlTemplate: string = '<design-toggler></design-toggler>'; |
| 9 | 10 | ||
| 10 | let helper: ComponentTestHelper<DesignModeTogglerComponent>; | 11 | let helper: ComponentTestHelper<DesignModeTogglerComponent>; |
| 11 | beforeEach(() => { | 12 | beforeEach(() => { |
| 12 | angular.mock.module('templates'); | 13 | angular.mock.module('templates'); |
| 13 | angular.mock.module('ngSanitize'); | 14 | angular.mock.module('ngSanitize'); |
| 14 | - angular.mock.module('toggle-switch'); | 15 | + angular.mock.module('uiSwitch'); |
| 15 | }); | 16 | }); |
| 16 | 17 | ||
| 17 | let designModeService: DesignModeService; | 18 | let designModeService: DesignModeService; |
| @@ -30,12 +31,12 @@ describe('DesignModeToggler Component', () => { | @@ -30,12 +31,12 @@ describe('DesignModeToggler Component', () => { | ||
| 30 | }); | 31 | }); |
| 31 | 32 | ||
| 32 | it('changes css classes representing the switch is on or off', () => { | 33 | it('changes css classes representing the switch is on or off', () => { |
| 33 | - expect(helper.debugElement.query('div.switch-animate').hasClass('switch-off')).toBeTruthy(); | ||
| 34 | - expect(helper.debugElement.query('div.switch-animate').hasClass('switch-on')).toBeFalsy(); | 34 | + let switchEl: INgForwardJQuery = helper.debugElement.query('span.switch'); |
| 35 | + | ||
| 36 | + expect(switchEl.hasClass('checked')).toBeFalsy(); | ||
| 35 | helper.component.inDesignMode = true; | 37 | helper.component.inDesignMode = true; |
| 36 | helper.detectChanges(); | 38 | helper.detectChanges(); |
| 37 | - expect(helper.debugElement.query('div.switch-animate').hasClass('switch-on')).toBeTruthy(); | ||
| 38 | - expect(helper.debugElement.query('div.switch-animate').hasClass('switch-off')).toBeFalsy(); | 39 | + expect(switchEl.hasClass('checked')).toBeTruthy(); |
| 39 | }); | 40 | }); |
| 40 | 41 | ||
| 41 | it('emits event with value "true" when changing inDesignMode to On', (done) => { | 42 | it('emits event with value "true" when changing inDesignMode to On', (done) => { |
| @@ -60,4 +61,4 @@ describe('DesignModeToggler Component', () => { | @@ -60,4 +61,4 @@ describe('DesignModeToggler Component', () => { | ||
| 60 | helper.component.inDesignMode = false; | 61 | helper.component.inDesignMode = false; |
| 61 | helper.detectChanges(); | 62 | helper.detectChanges(); |
| 62 | }); | 63 | }); |
| 63 | -}); | ||
| 64 | \ No newline at end of file | 64 | \ No newline at end of file |
| 65 | +}); |
src/app/admin/layout-edit/designModeToggler.component.ts
| 1 | -import {Component, Inject} from 'ng-forward'; | 1 | +import {Component, Inject, Input} from 'ng-forward'; |
| 2 | import {DesignModeService} from './designMode.service'; | 2 | import {DesignModeService} from './designMode.service'; |
| 3 | import {AuthService, AuthEvents} from '../../login'; | 3 | import {AuthService, AuthEvents} from '../../login'; |
| 4 | 4 | ||
| 5 | @Component({ | 5 | @Component({ |
| 6 | - selector: 'noosfero-design-toggler', | 6 | + selector: 'design-toggler', |
| 7 | templateUrl: 'app/admin/layout-edit/designModeToggler.html' | 7 | templateUrl: 'app/admin/layout-edit/designModeToggler.html' |
| 8 | }) | 8 | }) |
| 9 | -@Inject(DesignModeService, AuthService) | 9 | +@Inject(DesignModeService, AuthService, '$sce') |
| 10 | export class DesignModeTogglerComponent { | 10 | export class DesignModeTogglerComponent { |
| 11 | 11 | ||
| 12 | - icon: string = " <i class='glyphicon glyphicon-wrench'></i> "; | 12 | + private _inDesignMode: boolean = false; |
| 13 | 13 | ||
| 14 | - constructor(private designModeService: DesignModeService, private authService: AuthService) { | 14 | + constructor(private designModeService: DesignModeService, private authService: AuthService, private $sce: ng.ISCEService) { |
| 15 | this.authService.subscribe(AuthEvents[AuthEvents.logoutSuccess], () => { | 15 | this.authService.subscribe(AuthEvents[AuthEvents.logoutSuccess], () => { |
| 16 | this.designModeService.destroy(); | 16 | this.designModeService.destroy(); |
| 17 | }); | 17 | }); |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | - private _inDesignMode: boolean = false; | ||
| 21 | - | ||
| 22 | get inDesignMode(): boolean { | 20 | get inDesignMode(): boolean { |
| 23 | return this.designModeService.isInDesignMode(); | 21 | return this.designModeService.isInDesignMode(); |
| 24 | }; | 22 | }; |
src/app/admin/layout-edit/designModeToggler.html
| 1 | -<toggle-switch | ||
| 2 | - html="true" | ||
| 3 | - ng-model="ctrl.inDesignMode" | ||
| 4 | - on-label="{{'designMode.toggle.ON' | translate}}" | ||
| 5 | - off-label="{{'designMode.toggle.OFF' | translate}}" | ||
| 6 | - class="switch-small" | ||
| 7 | - knob-label="{{ ctrl.icon + ('designMode.label' | translate) }}"> | ||
| 8 | -</toggle-switch> | ||
| 9 | \ No newline at end of file | 1 | \ No newline at end of file |
| 2 | +<switch id="enabled" name="enabled" ng-model="ctrl.inDesignMode" on="ON" off="OFF" class="green"></switch> |
| @@ -0,0 +1,55 @@ | @@ -0,0 +1,55 @@ | ||
| 1 | +$off-text: #949494; | ||
| 2 | +$off-color: #EFEFEF; | ||
| 3 | +$blue-color: #36B4F6; | ||
| 4 | +$red-color: #DF3B3A; | ||
| 5 | + | ||
| 6 | +body.noosfero-design-on { | ||
| 7 | + | ||
| 8 | + div.content-wrapper { | ||
| 9 | + opacity: 0.5; | ||
| 10 | + } | ||
| 11 | +} | ||
| 12 | + | ||
| 13 | +.switch { | ||
| 14 | + @include not-select(); | ||
| 15 | + background-color: $off-color; | ||
| 16 | + | ||
| 17 | + &[on][off] { | ||
| 18 | + width: 60px; | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + &:focus { | ||
| 22 | + outline: none; | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + &.checked small { | ||
| 26 | + left: initial; | ||
| 27 | + right: 0px; | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + &.blue.checked { | ||
| 31 | + background: $blue-color; | ||
| 32 | + border-color: $blue-color; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + &.red.checked { | ||
| 36 | + background: $red-color; | ||
| 37 | + border-color: $red-color; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + %switch-label { | ||
| 41 | + font-weight: bold; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + .on { | ||
| 45 | + @extend %switch-label; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + .off { | ||
| 49 | + @extend %switch-label; | ||
| 50 | + right: 2px; | ||
| 51 | + top: 25%; | ||
| 52 | + color: $off-text; | ||
| 53 | + text-align: center; | ||
| 54 | + } | ||
| 55 | +} |
src/app/layout/scss/_layout.scss
| @@ -34,17 +34,4 @@ | @@ -34,17 +34,4 @@ | ||
| 34 | .main-box-body { | 34 | .main-box-body { |
| 35 | padding: 0 20px 20px 20px; | 35 | padding: 0 20px 20px 20px; |
| 36 | } | 36 | } |
| 37 | -} | ||
| 38 | - | ||
| 39 | -ul.nav > li.toggler-container { | ||
| 40 | - position: relative; | ||
| 41 | - padding-top: 12px; | ||
| 42 | -} | ||
| 43 | - | ||
| 44 | -.noosfero-main-toolbar { | ||
| 45 | - padding: 5px; | ||
| 46 | - @include make-row(); | ||
| 47 | - margin-left: 0px; | ||
| 48 | - margin-right: 0px; | ||
| 49 | - background-color: #edecec; | ||
| 50 | -} | 37 | +} |
| 51 | \ No newline at end of file | 38 | \ No newline at end of file |
src/app/layout/scss/_mixins.scss
| @@ -4,6 +4,12 @@ | @@ -4,6 +4,12 @@ | ||
| 4 | background-clip: padding-box; /* stops bg color from leaking outside the border: */ | 4 | background-clip: padding-box; /* stops bg color from leaking outside the border: */ |
| 5 | } | 5 | } |
| 6 | 6 | ||
| 7 | +@mixin box-shadow($args...) { | ||
| 8 | + -webkit-box-shadow: $args; | ||
| 9 | + -moz-box-shadow: $args; | ||
| 10 | + box-shadow: $args; | ||
| 11 | +} | ||
| 12 | + | ||
| 7 | @mixin checkbox-mark($width, $height, $top, $left, $bg, $border, $content: "", $cursor: pointer, $position: absolute) { | 13 | @mixin checkbox-mark($width, $height, $top, $left, $bg, $border, $content: "", $cursor: pointer, $position: absolute) { |
| 8 | width: $width; | 14 | width: $width; |
| 9 | height: $height; | 15 | height: $height; |
| @@ -48,3 +54,31 @@ | @@ -48,3 +54,31 @@ | ||
| 48 | outline-width: $width; | 54 | outline-width: $width; |
| 49 | } | 55 | } |
| 50 | } | 56 | } |
| 57 | + | ||
| 58 | +@mixin not-select() { | ||
| 59 | + -webkit-touch-callout: none; /* iOS Safari */ | ||
| 60 | + -webkit-user-select: none; /* Chrome/Safari/Opera */ | ||
| 61 | + -khtml-user-select: none; /* Konqueror */ | ||
| 62 | + -moz-user-select: none; /* Firefox */ | ||
| 63 | + -ms-user-select: none; /* Internet Explorer/Edge */ | ||
| 64 | + user-select: none; /* Non-prefixed version, currently | ||
| 65 | + not supported by any browser */ | ||
| 66 | +} | ||
| 67 | + | ||
| 68 | +@mixin keyframes($animation-name) { | ||
| 69 | + @-webkit-keyframes #{$animation-name} { | ||
| 70 | + @content; | ||
| 71 | + } | ||
| 72 | + @-moz-keyframes #{$animation-name} { | ||
| 73 | + @content; | ||
| 74 | + } | ||
| 75 | + @-ms-keyframes #{$animation-name} { | ||
| 76 | + @content; | ||
| 77 | + } | ||
| 78 | + @-o-keyframes #{$animation-name} { | ||
| 79 | + @content; | ||
| 80 | + } | ||
| 81 | + @keyframes #{$animation-name} { | ||
| 82 | + @content; | ||
| 83 | + } | ||
| 84 | +} |
src/app/layout/scss/skins/_whbl.scss
| @@ -291,11 +291,7 @@ $whbl-font-color: #16191c; | @@ -291,11 +291,7 @@ $whbl-font-color: #16191c; | ||
| 291 | background-color: #fff; | 291 | background-color: #fff; |
| 292 | } | 292 | } |
| 293 | 293 | ||
| 294 | - noosfero-design-toggler .ats-switch .knob i { | ||
| 295 | - color: #999999; | ||
| 296 | - } | ||
| 297 | - | ||
| 298 | - .ats-switch .knob { | 294 | + .ats-switch .knob { |
| 299 | padding-right: 15px; | 295 | padding-right: 15px; |
| 300 | } | 296 | } |
| 301 | 297 |
src/app/layout/services/body-state-classes.service.spec.ts
| @@ -193,7 +193,6 @@ describe("BodyStateClasses Service", () => { | @@ -193,7 +193,6 @@ describe("BodyStateClasses Service", () => { | ||
| 193 | 193 | ||
| 194 | service.start(); | 194 | service.start(); |
| 195 | 195 | ||
| 196 | - debugger; | ||
| 197 | designModeService.setInDesignMode(true); | 196 | designModeService.setInDesignMode(true); |
| 198 | 197 | ||
| 199 | 198 |
src/app/main/main.component.ts
| @@ -116,7 +116,7 @@ export class EnvironmentContent { | @@ -116,7 +116,7 @@ export class EnvironmentContent { | ||
| 116 | "angular-bind-html-compile", "angularMoment", "angular.filter", "akoenig.deckgrid", | 116 | "angular-bind-html-compile", "angularMoment", "angular.filter", "akoenig.deckgrid", |
| 117 | "angular-timeline", "duScroll", "oitozero.ngSweetAlert", | 117 | "angular-timeline", "duScroll", "oitozero.ngSweetAlert", |
| 118 | "pascalprecht.translate", "tmh.dynamicLocale", "angularLoad", | 118 | "pascalprecht.translate", "tmh.dynamicLocale", "angularLoad", |
| 119 | - "angular-click-outside", "toggle-switch", "ngTagCloud", "noosfero.init"] | 119 | + "angular-click-outside", "ngTagCloud", "noosfero.init", "uiSwitch"] |
| 120 | }) | 120 | }) |
| 121 | @StateConfig([ | 121 | @StateConfig([ |
| 122 | { | 122 | { |
| @@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
| 1 | +import {Component, Inject, provide} from "ng-forward"; | ||
| 2 | +import {ProfileService} from "../../lib/ng-noosfero-api/http/profile.service"; | ||
| 3 | + | ||
| 4 | +@Component({ | ||
| 5 | + selector: "configbar", | ||
| 6 | + templateUrl: "app/profile/configbar.html", | ||
| 7 | + providers: [ | ||
| 8 | + provide('profileService', { useClass: ProfileService }) | ||
| 9 | + ] | ||
| 10 | +}) | ||
| 11 | +@Inject(ProfileService) | ||
| 12 | +export class ConfigBarComponent { | ||
| 13 | + profile: noosfero.Profile; | ||
| 14 | + parentId: number; | ||
| 15 | + | ||
| 16 | + constructor(profileService: ProfileService) { | ||
| 17 | + profileService.getCurrentProfile().then((profile: noosfero.Profile) => { | ||
| 18 | + this.profile = profile; | ||
| 19 | + }); | ||
| 20 | + } | ||
| 21 | +} |
| @@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
| 1 | +<div id="config-tool" ng-class="{'closed': !showConfig}"> | ||
| 2 | + <a id="config-tool-cog" ng-click="showConfig = !showConfig"> | ||
| 3 | + <i class="fa fa-cog" ng-class="{'anim-icon': showConfig}"></i> | ||
| 4 | + </a> | ||
| 5 | + | ||
| 6 | + <div id="config-tool-options"> | ||
| 7 | + <h4>{{ 'configbar.label' | translate }}</h4> | ||
| 8 | + <div class="section-title">{{ 'configbar.section.layout' | translate }}</div> | ||
| 9 | + <ul> | ||
| 10 | + <li> | ||
| 11 | + <label class="pull-left"> | ||
| 12 | + <i class="fa fa-th-large"></i> | ||
| 13 | + <span class="item-label">{{ 'designMode.label' | translate }}</span> | ||
| 14 | + </label> | ||
| 15 | + <label class="pull-right"> | ||
| 16 | + <design-toggler></design-toggler> | ||
| 17 | + </label> | ||
| 18 | + </li> | ||
| 19 | + </ul> | ||
| 20 | + </div> | ||
| 21 | +</div> |
| @@ -0,0 +1,110 @@ | @@ -0,0 +1,110 @@ | ||
| 1 | +@import "../layout/scss/mixins"; | ||
| 2 | + | ||
| 3 | +@include keyframes(rotating) { | ||
| 4 | + from { | ||
| 5 | + transform: rotate(0deg); | ||
| 6 | + } | ||
| 7 | + to { | ||
| 8 | + transform: rotate(360deg); | ||
| 9 | + } | ||
| 10 | +} | ||
| 11 | + | ||
| 12 | +/* CONFIG TOOLS */ | ||
| 13 | +#config-tool { | ||
| 14 | + @include transition(all 0.2s ease-in-out 0s); | ||
| 15 | + @include box-shadow(0px 1px 4px rgba(0, 0, 0, 0.3)); | ||
| 16 | + position: fixed; | ||
| 17 | + right: 0; | ||
| 18 | + top: 120px; | ||
| 19 | + min-width: 200px; | ||
| 20 | + z-index: 1000; | ||
| 21 | + | ||
| 22 | + #config-tool-cog { | ||
| 23 | + @include border-radius($border-radius-base 0 0 $border-radius-base); | ||
| 24 | + @include transition(all 0.1s ease-in-out 0s); | ||
| 25 | + @include box-shadow(-3px 3px 3px -2px rgba(0, 0, 0, 0.1)); | ||
| 26 | + background: #fff; | ||
| 27 | + cursor: pointer; | ||
| 28 | + left: -50px; | ||
| 29 | + padding: 10px; | ||
| 30 | + position: absolute; | ||
| 31 | + text-align: center; | ||
| 32 | + width: 50px; | ||
| 33 | + top: 0; | ||
| 34 | + | ||
| 35 | + i { | ||
| 36 | + font-size: 2.2em; | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + .anim-icon { | ||
| 40 | + @include animation(rotating 0.7s ease-in-out 0s); | ||
| 41 | + } | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + &.closed { | ||
| 45 | + right: -280px; | ||
| 46 | + box-shadow: none; | ||
| 47 | + | ||
| 48 | + #config-tool-cog { | ||
| 49 | + &:hover { | ||
| 50 | + background-color: $primary-color; | ||
| 51 | + color: #fff; | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + &.opened { | ||
| 57 | + right: 0; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + .section-title { | ||
| 61 | + margin: 30px 0 5px; | ||
| 62 | + font: { | ||
| 63 | + size: 15px; | ||
| 64 | + weight: bold; | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + #config-tool-options { | ||
| 70 | + @include box-shadow(-3px 3px 3px -2px rgba(0, 0, 0, 0.1)); | ||
| 71 | + background: #fff; | ||
| 72 | + padding: 15px; | ||
| 73 | + | ||
| 74 | + h4 { | ||
| 75 | + margin: 0; | ||
| 76 | + font-size: 1.3em; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + ul { | ||
| 80 | + list-style: none; | ||
| 81 | + border-radius: 2px; | ||
| 82 | + padding: 0; | ||
| 83 | + | ||
| 84 | + background: { | ||
| 85 | + clip: padding-box; | ||
| 86 | + color: #f1f3f2; | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + li { | ||
| 90 | + padding: 10px; | ||
| 91 | + width: 250px; | ||
| 92 | + min-height: 50px; | ||
| 93 | + font: { | ||
| 94 | + size: 13px; | ||
| 95 | + weight: 300; | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + .checkbox { | ||
| 99 | + margin: 0; | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + .pull-left { | ||
| 103 | + margin-top: 8px; | ||
| 104 | + font-weight: normal; | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + } | ||
| 108 | + } | ||
| 109 | + } | ||
| 110 | +} |
src/app/profile/profile-toolbar.component.ts
| @@ -1,21 +0,0 @@ | @@ -1,21 +0,0 @@ | ||
| 1 | -import {Component, Inject, provide} from "ng-forward"; | ||
| 2 | -import {ProfileService} from "../../lib/ng-noosfero-api/http/profile.service"; | ||
| 3 | - | ||
| 4 | -@Component({ | ||
| 5 | - selector: "profile-toolbar", | ||
| 6 | - templateUrl: "app/profile/toolbar.html", | ||
| 7 | - providers: [ | ||
| 8 | - provide('profileService', { useClass: ProfileService }) | ||
| 9 | - ] | ||
| 10 | -}) | ||
| 11 | -@Inject(ProfileService) | ||
| 12 | -export class ProfileToolbarComponent { | ||
| 13 | - profile: noosfero.Profile; | ||
| 14 | - parentId: number; | ||
| 15 | - | ||
| 16 | - constructor(profileService: ProfileService) { | ||
| 17 | - profileService.getCurrentProfile().then((profile: noosfero.Profile) => { | ||
| 18 | - this.profile = profile; | ||
| 19 | - }); | ||
| 20 | - } | ||
| 21 | -} |
src/app/profile/profile.component.ts
| @@ -10,7 +10,7 @@ import {ProfileService} from "../../lib/ng-noosfero-api/http/profile.service"; | @@ -10,7 +10,7 @@ import {ProfileService} from "../../lib/ng-noosfero-api/http/profile.service"; | ||
| 10 | import {NotificationService} from "../shared/services/notification.service"; | 10 | import {NotificationService} from "../shared/services/notification.service"; |
| 11 | import {MyProfileComponent} from "./myprofile.component"; | 11 | import {MyProfileComponent} from "./myprofile.component"; |
| 12 | import {ProfileActionsComponent} from "./profile-actions.component"; | 12 | import {ProfileActionsComponent} from "./profile-actions.component"; |
| 13 | -import {ProfileToolbarComponent} from "./profile-toolbar.component"; | 13 | +import {ConfigBarComponent} from "./config-bar.component"; |
| 14 | /** | 14 | /** |
| 15 | * @ngdoc controller | 15 | * @ngdoc controller |
| 16 | * @name profile.Profile | 16 | * @name profile.Profile |
| @@ -44,8 +44,8 @@ import {ProfileToolbarComponent} from "./profile-toolbar.component"; | @@ -44,8 +44,8 @@ import {ProfileToolbarComponent} from "./profile-toolbar.component"; | ||
| 44 | controllerAs: "vm" | 44 | controllerAs: "vm" |
| 45 | }, | 45 | }, |
| 46 | "toolbar@main": { | 46 | "toolbar@main": { |
| 47 | - templateUrl: "app/profile/toolbar.html", | ||
| 48 | - controller: ProfileToolbarComponent, | 47 | + templateUrl: "app/profile/configbar.html", |
| 48 | + controller: ConfigBarComponent, | ||
| 49 | controllerAs: "vm" | 49 | controllerAs: "vm" |
| 50 | } | 50 | } |
| 51 | } | 51 | } |
| @@ -61,8 +61,8 @@ import {ProfileToolbarComponent} from "./profile-toolbar.component"; | @@ -61,8 +61,8 @@ import {ProfileToolbarComponent} from "./profile-toolbar.component"; | ||
| 61 | controllerAs: "vm" | 61 | controllerAs: "vm" |
| 62 | }, | 62 | }, |
| 63 | "toolbar@main": { | 63 | "toolbar@main": { |
| 64 | - templateUrl: "app/profile/toolbar.html", | ||
| 65 | - controller: ProfileToolbarComponent, | 64 | + templateUrl: "app/profile/configbar.html", |
| 65 | + controller: ConfigBarComponent, | ||
| 66 | controllerAs: "vm" | 66 | controllerAs: "vm" |
| 67 | } | 67 | } |
| 68 | } | 68 | } |
| @@ -118,8 +118,8 @@ import {ProfileToolbarComponent} from "./profile-toolbar.component"; | @@ -118,8 +118,8 @@ import {ProfileToolbarComponent} from "./profile-toolbar.component"; | ||
| 118 | controllerAs: "vm" | 118 | controllerAs: "vm" |
| 119 | }, | 119 | }, |
| 120 | "toolbar@main": { | 120 | "toolbar@main": { |
| 121 | - templateUrl: "app/profile/toolbar.html", | ||
| 122 | - controller: ProfileToolbarComponent, | 121 | + templateUrl: "app/profile/configbar.html", |
| 122 | + controller: ConfigBarComponent, | ||
| 123 | controllerAs: "vm" | 123 | controllerAs: "vm" |
| 124 | } | 124 | } |
| 125 | } | 125 | } |
src/app/profile/toolbar.html
src/languages/en.json
| @@ -6,6 +6,8 @@ | @@ -6,6 +6,8 @@ | ||
| 6 | "navbar.logout": "Log Out", | 6 | "navbar.logout": "Log Out", |
| 7 | "navbar.login": "Login", | 7 | "navbar.login": "Login", |
| 8 | "navbar.toggle_menu": "Toggle navigation", | 8 | "navbar.toggle_menu": "Toggle navigation", |
| 9 | + "configbar.label": "Configuration", | ||
| 10 | + "configbar.section.layout": "Layout", | ||
| 9 | "language.all": "All languages", | 11 | "language.all": "All languages", |
| 10 | "language.en": "English", | 12 | "language.en": "English", |
| 11 | "language.pt": "Portuguese", | 13 | "language.pt": "Portuguese", |
| @@ -77,9 +79,7 @@ | @@ -77,9 +79,7 @@ | ||
| 77 | "custom_content.title": "Edit content", | 79 | "custom_content.title": "Edit content", |
| 78 | "profile.custom_header.label": "Header", | 80 | "profile.custom_header.label": "Header", |
| 79 | "profile.custom_footer.label": "Footer", | 81 | "profile.custom_footer.label": "Footer", |
| 80 | - "designMode.label": "In Design", | ||
| 81 | - "designMode.toggle.ON": "ON", | ||
| 82 | - "designMode.toggle.OFF": "OFF", | 82 | + "designMode.label": "Design mode", |
| 83 | "search.results.summary": "{results, plural, one{result} other{# results}}", | 83 | "search.results.summary": "{results, plural, one{result} other{# results}}", |
| 84 | "search.results.query.label": "Search therm:", | 84 | "search.results.query.label": "Search therm:", |
| 85 | "search.label": "Search", | 85 | "search.label": "Search", |
src/languages/pt.json
| @@ -6,6 +6,8 @@ | @@ -6,6 +6,8 @@ | ||
| 6 | "navbar.logout": "Sair", | 6 | "navbar.logout": "Sair", |
| 7 | "navbar.login": "Login", | 7 | "navbar.login": "Login", |
| 8 | "navbar.toggle_menu": "Abrir Menu", | 8 | "navbar.toggle_menu": "Abrir Menu", |
| 9 | + "configbar.label": "Configurações", | ||
| 10 | + "configbar.section.layout": "Visual", | ||
| 9 | "language.all": "Todos os idiomas", | 11 | "language.all": "Todos os idiomas", |
| 10 | "language.en": "Inglês", | 12 | "language.en": "Inglês", |
| 11 | "language.pt": "Português", | 13 | "language.pt": "Português", |
| @@ -77,9 +79,7 @@ | @@ -77,9 +79,7 @@ | ||
| 77 | "custom_content.title": "Editar conteúdo", | 79 | "custom_content.title": "Editar conteúdo", |
| 78 | "profile.custom_header.label": "Cabeçalho", | 80 | "profile.custom_header.label": "Cabeçalho", |
| 79 | "profile.custom_footer.label": "Rodapé", | 81 | "profile.custom_footer.label": "Rodapé", |
| 80 | - "designMode.label": "Modo de Edição", | ||
| 81 | - "designMode.toggle.ON": "Ligado", | ||
| 82 | - "designMode.toggle.OFF": "Desligado", | 82 | + "designMode.label": "Alterar design", |
| 83 | "search.results.summary": "{results, plural, one{# resultado} other{# resultados}}", | 83 | "search.results.summary": "{results, plural, one{# resultado} other{# resultados}}", |
| 84 | "search.results.query.label": "Termo da busca:", | 84 | "search.results.query.label": "Termo da busca:", |
| 85 | "search.label": "Pesquisar", | 85 | "search.label": "Pesquisar", |
themes/angular-participa-consulta/app/layout/scss/skins/_yellow.scss
| 1 | +$yellow-hover: #f5b025; | ||
| 2 | +$yellow-base: #f9c404; | ||
| 3 | + | ||
| 1 | .skin-yellow { | 4 | .skin-yellow { |
| 2 | @extend %skin-base; | 5 | @extend %skin-base; |
| 3 | 6 | ||
| @@ -49,7 +52,7 @@ | @@ -49,7 +52,7 @@ | ||
| 49 | 52 | ||
| 50 | .container-fluid .navbar-header .navbar-toggle { | 53 | .container-fluid .navbar-header .navbar-toggle { |
| 51 | &:hover, &:focus { | 54 | &:hover, &:focus { |
| 52 | - background-color: #f5b025; | 55 | + background-color: $yellow-hover; |
| 53 | } | 56 | } |
| 54 | } | 57 | } |
| 55 | 58 | ||
| @@ -61,4 +64,26 @@ | @@ -61,4 +64,26 @@ | ||
| 61 | } | 64 | } |
| 62 | } | 65 | } |
| 63 | 66 | ||
| 67 | + #config-tool { | ||
| 68 | + | ||
| 69 | + #config-tool-cog { | ||
| 70 | + color: $yellow-hover; | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + #config-tool-options { | ||
| 74 | + h4 { | ||
| 75 | + color: #2c3e50; | ||
| 76 | + font-weight: bold; | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + &.closed { | ||
| 81 | + #config-tool-cog { | ||
| 82 | + &:hover { | ||
| 83 | + background-color: $yellow-hover; | ||
| 84 | + } | ||
| 85 | + } | ||
| 86 | + } | ||
| 87 | + } | ||
| 88 | + | ||
| 64 | } | 89 | } |