Compare View
Commits (6)
-
Signed-off-by: Tallys Martins <tallysmartins@gmail.com>
-
- Profile activities are now loaded on main block - Adds css style to profile page Signed-off-by: Tallys Martins <tallysmartins@gmail.com> Conflicts: src/app/profile/profile.component.ts
-
Signed-off-by: Tallys Martins <tallysmartins@gmail.com> Signed-off-by: Paulo Tada <paulohtfs@gmail.com>
-
Signed-off-by: Tallys Martins <tallysmartins@gmail.com>
Showing
14 changed files
Show diff stats
src/app/index.scss
... | ... | @@ -39,6 +39,12 @@ $break-sm-min: 992px; |
39 | 39 | $break-xxs-max: ($break-xxs-min - 1); |
40 | 40 | $break-sm-max: ($break-sm-min - 1); |
41 | 41 | $break-xs-max: ($break-xs-min - 1); |
42 | +// TODO: improve this method to collect all the paddings with a single var | |
43 | +$wrapper-padding: 15px 15px 35px 15px; | |
44 | +$wrapper-padding-top: 15px; | |
45 | +$wrapper-padding-right: 15px; | |
46 | +$wrapper-padding-bottom: 35px; | |
47 | +$wrapper-padding-left: 15px; | |
42 | 48 | |
43 | 49 | |
44 | 50 | @import "../../bower_components/bootswatch/flatly/_variables.scss"; | ... | ... |
src/app/layout/blocks/communities/communities-block.html
1 | -<div class="communities-block"> | |
2 | - <a ng-repeat="profile in ctrl.profiles" ui-sref="main.profile.home({profile: profile.identifier})" class="profile"> | |
1 | +<div ng-repeat="profile in ctrl.profiles" class="col-xs-2 col-md-4 block-item"> | |
2 | + <a ui-sref="main.profile.home({profile: profile.identifier})"> | |
3 | 3 | <noosfero-profile-image [profile]="profile"></noosfero-profile-image> |
4 | 4 | </a> |
5 | + <p>{{profile.name}}</p> | |
5 | 6 | </div> | ... | ... |
src/app/layout/blocks/communities/communities-block.scss
1 | -.communities-block { | |
2 | - .profile { | |
1 | +.communitiesblock { | |
2 | + .panel-body { | |
3 | + text-align: center; | |
3 | 4 | margin: 10px; |
4 | - img, i.profile-image { | |
5 | - width: 60px; | |
6 | - } | |
7 | 5 | img { |
8 | 6 | display: inline-block; |
9 | 7 | vertical-align: top; |
10 | 8 | } |
11 | 9 | i.profile-image { |
12 | 10 | text-align: center; |
13 | - font-size: 4.5em; | |
11 | + font-size: 7rem; | |
12 | + } | |
13 | + p { | |
14 | + overflow: hidden; | |
15 | + font-size: 1rem; | |
16 | + } | |
17 | + .block-item { | |
18 | + padding: 0px; | |
14 | 19 | } |
15 | 20 | } |
16 | 21 | } | ... | ... |
src/app/layout/scss/skins/_whbl.scss
src/app/profile/activities/activities.html
1 | -<timeline> | |
2 | - <timeline-event ng-repeat="activity in ctrl.activities | orderBy: 'created_at':true"> | |
3 | - <noosfero-activity [activity]="activity"></noosfero-activity> | |
4 | - </timeline-event> | |
5 | -</timeline> | |
1 | +<div class="row"> | |
2 | + <hr class="divider"/> | |
3 | + <div id="atividades"> | |
4 | + <h4>Atividades Recentes</h4> | |
5 | + <timeline> | |
6 | + <timeline-event ng-repeat="activity in vm.activities | orderBy: 'created_at':true"> | |
7 | + <hr class="divider"/> | |
8 | + <noosfero-activity [activity]="activity"></noosfero-activity> | |
9 | + </timeline-event> | |
10 | + </timeline> | |
11 | + <button type="button" class="btn btn-sm btn-block">Carregar mais</button> | |
12 | + </div> | |
13 | +</div> | ... | ... |
src/app/profile/image/image.html
1 | 1 | <span class="profile-image-wrap" title="{{ctrl.profile.name}}"> |
2 | - <img ng-if="ctrl.profile.image" ng-src="{{ctrl.profile.image.url}}" class="img-responsive profile-image"> | |
3 | - <i ng-if="!ctrl.profile.image" class="fa {{ctrl.defaultIcon}} fa-5x profile-image"></i> | |
2 | + <img ng-if="ctrl.profile.image" ng-src="{{ctrl.profile.image.url}}" class=""> | |
3 | + <i ng-if="!ctrl.profile.image" class="fa {{ctrl.defaultIcon}} fa-5x profile-image img-avatar"></i> | |
4 | 4 | </span> | ... | ... |
src/app/profile/info/profile-info.component.ts
... | ... | @@ -16,17 +16,23 @@ export class ProfileInfoComponent { |
16 | 16 | |
17 | 17 | activities: any; |
18 | 18 | profile: noosfero.Profile; |
19 | + showInformation: boolean = false; | |
19 | 20 | |
20 | 21 | constructor(private profileService: ProfileService, private amDateFormatFilter: any) { |
21 | 22 | this.init(); |
23 | + this.showInformation = false; | |
24 | + } | |
25 | + | |
26 | + toggleInformation() { | |
27 | + console.log(this.showInformation); | |
28 | + console.log("argila"); | |
29 | + this.showInformation = !this.showInformation; | |
30 | + console.log(this.showInformation); | |
22 | 31 | } |
23 | 32 | |
24 | 33 | init() { |
25 | 34 | this.profileService.getCurrentProfile().then((profile: noosfero.Profile) => { |
26 | 35 | this.profile = profile; |
27 | - return this.profileService.getActivities(<number>this.profile.id); | |
28 | - }).then((response: restangular.IResponse) => { | |
29 | - this.activities = response.data.activities; | |
30 | 36 | }); |
31 | 37 | } |
32 | 38 | } | ... | ... |
src/app/profile/info/profile-info.html
1 | -<div class="profile-wall"> | |
1 | +<!-- <div class="profile-wall mainbox clearfix"> | |
2 | 2 | |
3 | 3 | <div class="col-lg-3 col-md-4 col-sm-4"> |
4 | 4 | <div class="main-box clearfix"> |
... | ... | @@ -8,6 +8,7 @@ |
8 | 8 | <div id="profile-left" class="main-box-body clearfix"> |
9 | 9 | <noosfero-profile-image [profile]="vm.profile" class="img-responsive center-block"></noosfero-profile-image> |
10 | 10 | <span class="label" ng-class="{'label-danger': vm.profile.type == 'Community', 'label-info': vm.profile.type == 'Person'}">{{vm.profile | translateProfile}}</span> |
11 | + | |
11 | 12 | <div class="profile-since"> |
12 | 13 | {{"profile.member_since" | translate}}: {{vm.profile.created_at | amDateFormat:'MMMM YYYY'}} |
13 | 14 | </div> |
... | ... | @@ -27,4 +28,38 @@ |
27 | 28 | </uib-tabset> |
28 | 29 | </div> |
29 | 30 | </div> |
31 | +</div> --> | |
32 | + | |
33 | +<div class="bg-image"></div> | |
34 | + | |
35 | +<div class="container" id="noosfero-profile"> | |
36 | + <div class="col-sm-2"> | |
37 | + <noosfero-profile-image [profile]="vm.profile" class="img-responsive center-block" data-pin-nopin="true"></noosfero-profile-image> | |
38 | + <div class="social-links"> | |
39 | + <ul> | |
40 | + <li>Facebook</li> | |
41 | + <li>Linkdin</li> | |
42 | + </ul> | |
43 | + </div> | |
44 | + </div> | |
45 | + <div class="col-sm-10"> | |
46 | + <h3>{{ vm.profile.name }}</h3> | |
47 | + <div ng-switch="description"> | |
48 | + <p ng-if="vm.profile.additional_data['description']"> | |
49 | + {{ 'profile.person.description' | translate }}: {{ vm.profile.additional_data['description'] }} | |
50 | + </p> | |
51 | + <p class="pull-left">www.noosfero.gov.br/<strong>{{ vm.profile.identifier }}</strong></p> | |
52 | + <div class="pull-right info-contato"> | |
53 | + <button ng-click="vm.toggleInformation()" class="btn btn-sm">{{ 'profile.person.contact_info' | translate }}</button> | |
54 | + <div clas="profile-contact" ng-show="vm.showInformation"> | |
55 | + <p class="email" ng-if="vm.profile.additional_data['contact_email']">Email: {{ vm.profile.additional_data['contact_email'] }}</p> | |
56 | + <p class="phone" ng-if="vm.profile.additional_data['contact_phone']"> | |
57 | + {{ 'profile.person.contact_phone' | translate }}: {{ vm.profile.additional_data['contact_phone'] }} | |
58 | + </p> | |
59 | + <p class="phone" ng-if="(!vm.profile.additional_data['contact_phone'] && !vm.profile.additional_data['contact_email'])"> | |
60 | + {{ 'profile.person.no_contact_info' | translate }} | |
61 | + </p> | |
62 | + </div> | |
63 | + </div> | |
64 | + </div> | |
30 | 65 | </div> | ... | ... |
src/app/profile/profile.component.ts
... | ... | @@ -6,6 +6,7 @@ import {CmsComponent} from '../article/cms/cms.component'; |
6 | 6 | import {ContentViewerComponent} from "../article/content-viewer/content-viewer.component"; |
7 | 7 | import {ContentViewerActionsComponent} from "../article/content-viewer/content-viewer-actions.component"; |
8 | 8 | import {ActivitiesComponent} from "./activities/activities.component"; |
9 | +import {ActivityComponent} from "./activities/activity/activity.component"; | |
9 | 10 | import {ProfileService} from "../../lib/ng-noosfero-api/http/profile.service"; |
10 | 11 | import {NotificationService} from "../shared/services/notification.service"; |
11 | 12 | import {MyProfileComponent} from "./myprofile.component"; |
... | ... | @@ -13,15 +14,14 @@ import {ProfileActionsComponent} from "./profile-actions.component"; |
13 | 14 | import {ProfileToolbarComponent} from "./profile-toolbar.component"; |
14 | 15 | /** |
15 | 16 | * @ngdoc controller |
16 | - * @name profile.Profile | |
17 | - * @description | |
17 | + * @name profile.Profile * @description | |
18 | 18 | * This is the profile controller. It provide routes to supported Noosfero Profiles. |
19 | 19 | */ |
20 | 20 | |
21 | 21 | @Component({ |
22 | 22 | selector: 'profile', |
23 | 23 | templateUrl: "app/profile/profile.html", |
24 | - directives: [ActivitiesComponent], | |
24 | + directives: [ActivityComponent], | |
25 | 25 | providers: [ |
26 | 26 | provide('profileService', { useClass: ProfileService }), |
27 | 27 | provide('notificationService', { useClass: NotificationService }) |
... | ... | @@ -33,7 +33,7 @@ import {ProfileToolbarComponent} from "./profile-toolbar.component"; |
33 | 33 | url: "^/profile/:profile", |
34 | 34 | component: ProfileInfoComponent, |
35 | 35 | views: { |
36 | - "mainBlockContent": { | |
36 | + "profile-info": { | |
37 | 37 | templateUrl: "app/profile/info/profile-info.html", |
38 | 38 | controller: ProfileInfoComponent, |
39 | 39 | controllerAs: "vm" |
... | ... | @@ -46,7 +46,6 @@ import {ProfileToolbarComponent} from "./profile-toolbar.component"; |
46 | 46 | "toolbar@main": { |
47 | 47 | templateUrl: "app/profile/toolbar.html", |
48 | 48 | controller: ProfileToolbarComponent, |
49 | - controllerAs: "vm" | |
50 | 49 | } |
51 | 50 | } |
52 | 51 | }, |
... | ... | @@ -142,4 +141,6 @@ export class ProfileComponent { |
142 | 141 | notificationService.error({ message: "notification.profile.not_found" }); |
143 | 142 | }); |
144 | 143 | } |
144 | + | |
145 | + | |
145 | 146 | } | ... | ... |
src/app/profile/profile.html
... | ... | @@ -4,10 +4,14 @@ |
4 | 4 | [attribute]="'custom_header'" |
5 | 5 | [profile]="vm.profile"> |
6 | 6 | </custom-content> |
7 | - <noosfero-boxes ng-if="vm.boxes" | |
8 | - [layout]="vm.profile.layout_template" | |
9 | - [boxes]="vm.boxes" | |
10 | - [owner]="vm.profile" class="row"> | |
11 | - </noosfero-boxes> | |
7 | + <div class="row" ui-view="profile-info"></div> | |
8 | + | |
9 | + <div class="wrapper-container"> | |
10 | + <noosfero-boxes ng-if="vm.boxes" | |
11 | + [layout]="vm.profile.layout_template" | |
12 | + [boxes]="vm.boxes" | |
13 | + [owner]="vm.profile" class="row"> | |
14 | + </noosfero-boxes> | |
15 | + </div> | |
12 | 16 | <custom-content class="profile-footer" [label]="'profile.custom_footer.label'" [attribute]="'custom_footer'" [profile]="vm.profile"></custom-content> |
13 | 17 | </div> | ... | ... |
src/app/profile/profile.scss
1 | + | |
2 | +@mixin padding-sides { | |
3 | + padding-right: 15px; | |
4 | + padding-left: 15px; | |
5 | +} | |
6 | + | |
7 | +@mixin profile-img { | |
8 | + text-align: center; | |
9 | + margin: 10px; | |
10 | + border: 1px solid #eee; | |
11 | +} | |
12 | + | |
13 | +@media (min-width: 768px) { | |
14 | + .container {max-width: 980px;} | |
15 | +} | |
16 | + | |
1 | 17 | .profile-container { |
2 | 18 | @extend .container-fluid; |
3 | - padding: 0 1%; | |
4 | - @media (max-width: 978px) { | |
5 | - padding: 0 2%; | |
19 | + margin-top: -$wrapper-padding-top; | |
20 | + margin-left: -$wrapper-padding-left; | |
21 | + margin-bottom: -$wrapper-padding-bottom; | |
22 | + margin-right: -$wrapper-padding-right; | |
23 | + @media (max-width: 978px) {padding: 0 2%;} | |
24 | +} | |
25 | + | |
26 | +.wrapper-container { | |
27 | + margin: auto; | |
28 | + max-width: 980px; | |
29 | +} | |
30 | + | |
31 | +.dropdown-menu { | |
32 | + >li { | |
33 | + margin:5px 0; | |
34 | + >a { | |
35 | + padding:3px 10px 3px 0 !important; | |
36 | + &:hover {background-color:transparent !important;} | |
37 | + } | |
6 | 38 | } |
7 | 39 | } |
8 | 40 | |
9 | -#profile-left { | |
10 | - text-align: center; | |
11 | - margin-top: 15px; | |
41 | +.bg-image { | |
42 | + background-color:#eee; | |
43 | + height: 260px; | |
44 | +} | |
45 | + | |
46 | +.social-links { | |
47 | + ul { | |
48 | + list-style:none; | |
49 | + text-align:center; | |
50 | + padding:0; | |
51 | + margin:0; | |
52 | + } | |
53 | +} | |
54 | + | |
55 | +#noosfero-profile { | |
56 | + background:#fff; | |
57 | + margin: -200px auto auto; | |
58 | + z-index:9999; | |
59 | + left:0; | |
60 | + right:0; | |
61 | + border:1px solid #eee; | |
62 | + padding:20px 0; | |
63 | + font-size: 14px; | |
64 | + | |
65 | + img, | |
66 | + i {@include profile-img;} | |
67 | + | |
68 | + .col-sm-2 {text-align: center;} | |
69 | + | |
70 | + h3 {margin-top: 16px;} | |
71 | + | |
72 | + .btn { | |
73 | + font-size: 12px; | |
74 | + padding: 5px 10px; | |
75 | + } | |
76 | + | |
77 | + .profile-contact { | |
78 | + padding-top: 10px; | |
79 | + p {margin: 0px;} | |
80 | + } | |
12 | 81 | } | ... | ... |
src/languages/en.json
... | ... | @@ -17,6 +17,10 @@ |
17 | 17 | "profile.others_info": "Others", |
18 | 18 | "profile.community.title": "Community", |
19 | 19 | "profile.person.title": "Person", |
20 | + "profile.person.description": "Description", | |
21 | + "profile.person.contact_info": "Contact Informations", | |
22 | + "profile.person.contact_phone": "Phone", | |
23 | + "profile.person.no_contact_info": "No contact informations", | |
20 | 24 | "activities.title": "Activities", |
21 | 25 | "activities.create_article.description": "has published on", |
22 | 26 | "activities.add_member_in_community.description": "has joined the community", | ... | ... |
src/languages/pt.json
... | ... | @@ -17,6 +17,10 @@ |
17 | 17 | "profile.others_info": "Outras informações", |
18 | 18 | "profile.community.title": "Comunidade", |
19 | 19 | "profile.person.title": "Pessoa", |
20 | + "profile.person.description": "Descrição", | |
21 | + "profile.person.contact_info": "Informações de Contato", | |
22 | + "profile.person.contact_phone": "Telefone", | |
23 | + "profile.person.no_contact_info": "Sem informações de contato", | |
20 | 24 | "activities.title": "Atividades", |
21 | 25 | "activities.create_article.description": "publicou em", |
22 | 26 | "activities.add_member_in_community.description": "entrou na comunidade", | ... | ... |