@@ -6,130 +6,141 @@ import listItems from 'flarum/helpers/listItems';
66import AvatarEditor from 'flarum/components/AvatarEditor' ;
77import SignUpModal from 'flarum/components/SignUpModal' ;
88import Button from 'flarum/common/components/Button' ;
9+ import moment from 'moment/moment' ;
910
1011export default class WelcomeBoxWidget extends Widget {
1112 oninit ( vnode ) {
1213 super . oninit ( vnode ) ;
1314 }
1415
15- oncreate ( vnode ) { }
16-
1716 className ( ) {
18- // css class for the container
1917 return 'welcomebox-widget' ;
2018 }
2119
2220 icon ( ) {
23- // Widget icon.
2421 return 'fas fa-user-tie' ;
2522 }
2623
2724 content ( ) {
2825 const user = app . session . user ;
26+ const lastSeenAt = user ?. lastSeenAt ( ) !== null ? user ?. lastSeenAt ( ) : false ;
27+ const userLang = navigator . language ?. slice ( 0 , 2 ) ;
28+ const useWidget = app . forum . attribute ( 'justoverclock-welcomebox.UseWidget' ) ;
29+ const isGuestBoxHidden = app . forum . attribute ( 'HideGuestBox' ) ;
2930 const SettingsLink = app . route ( 'settings' ) ;
3031 const ImgAvatar =
3132 app . forum . attribute ( 'imgUrl' ) || app . forum . attribute ( 'baseUrl' ) + '/assets/extensions/justoverclock-welcomebox/no-avatar.png' ;
32- if ( app . forum . attribute ( 'justoverclock-welcomebox.UseWidget' ) === true ) {
33- if ( user ) {
34- const lastseenAt = user . data . attributes . lastSeenAt . slice ( 0 , 10 ) ;
3533
36- return m (
34+ if ( useWidget && user ) {
35+ return m (
36+ 'div' ,
37+ { className : 'containerwb' } ,
38+ m (
3739 'div' ,
38- { className : 'containerwb ' } ,
39- m (
40- 'div ',
41- { className : 'backgrwb' } ,
42- Button . component ( {
43- icon : 'fas fa-sign-out-alt logoutt' ,
44- title : app . translator . trans ( 'core.forum.header.log_out_button' ) ,
45- className : 'Dropdown-toggle Button logwbox' ,
46- onclick : app . session . logout . bind ( app . session ) ,
47- } ) ,
48- [
49- m ( 'div' , m ( 'a' , { href : app . route . user ( user ) } , m ( 'div' , { className : 'avatarwb ' } , AvatarEditor . component ( { user } ) ) ) ) ,
40+ { className : 'backgrwb ' } ,
41+ Button . component ( {
42+ icon : 'fas fa-sign-out-alt logoutt ',
43+ title : app . translator . trans ( 'core.forum.header.log_out_button' ) ,
44+ className : 'Dropdown-toggle Button logwbox' ,
45+ onclick : app . session . logout . bind ( app . session ) ,
46+ } ) ,
47+ [
48+ m ( 'div' , m ( 'a' , { href : app . route . user ( user ) } , m ( 'div' , { className : 'avatarwb' } , AvatarEditor . component ( { user } ) ) ) ) ,
49+ m (
50+ 'div' ,
51+ { className : 'contentwb ' } ,
5052 m (
5153 'div' ,
52- { className : 'contentwb' } ,
53- m (
54- 'div' ,
55- { className : 'textinfo' } ,
56- app . translator . trans ( 'flarum-ext-welcomebox.forum.wback' ) ,
57- m ( 'br' ) ,
58- m ( 'strong' , username ( user ) )
59- ) ,
60- m (
61- 'div' ,
62- { className : 'cont' } ,
63- m ( 'div' , { className : 'circletop' } , [
64- m (
65- 'a' ,
66- { href : SettingsLink , title : app . translator . trans ( 'core.forum.settings.title' ) } ,
67- m ( 'i' , { className : 'menuicon fas fa-tasks' } )
68- ) ,
69- m (
70- 'a' ,
71- {
72- href : app . route . user ( user ) ,
73- title : app . translator . trans ( 'flarum-ext-welcomebox.forum.tooltipProfile' ) ,
74- } ,
75- m ( 'i' , { className : 'menuicon far fa-user' } )
76- ) ,
77- m (
78- 'a' ,
79- {
80- href : app . route . user ( user ) + '/mentions' ,
81- title : app . translator . trans ( 'flarum-ext-welcomebox.forum.tooltipMentions' ) ,
82- } ,
83- m ( 'i' , { className : 'menuicon fas fa-at' } )
84- ) ,
85- m (
86- 'a' ,
87- {
88- href : app . route . user ( user ) + '/discussions' ,
89- title : app . translator . trans ( 'flarum-ext-welcomebox.forum.tooltipDisclist' ) ,
90- } ,
91- m ( 'i' , { className : 'menuicon far fa-list-alt' } )
92- ) ,
93- ] )
94- )
54+ { className : 'textinfo' } ,
55+ app . translator . trans ( 'flarum-ext-welcomebox.forum.wback' ) ,
56+ m ( 'br' ) ,
57+ m ( 'strong' , username ( user ) )
9558 ) ,
96- m ( 'div' , { className : 'iconbadge' } , listItems ( user . badges ( ) . toArray ( ) ) ) ,
97- m ( '.ulwb' , { className : 'contentwb' } , [
98- m ( 'li' , [
99- m ( 'label' , { className : 'textinfo' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.npost' ) ) ,
100- ': ' ,
101- m ( 'strong' , { className : 'textinfo' } , formatNumber ( user . commentCount ( ) ) ) ,
102- ] ) ,
103- m ( 'li' , [
104- m ( 'label' , { className : 'textinfo' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.discussion' ) ) ,
105- ': ' ,
106- m ( 'strong' , { className : 'textinfo' } , formatNumber ( user . discussionCount ( ) ) ) ,
107- ] ) ,
108- ] ) ,
109- ]
110- )
111- ) ;
112- } else if ( ! user && app . forum . attribute ( 'HideGuestBox' ) === true ) {
113- return m (
114- 'div' ,
115- { className : 'containerwb' } ,
116- m ( 'div' , { className : 'backgrwbguest' } , [
117- m ( 'img' , { className : 'guestavatarimg' , src : ImgAvatar } ) ,
118- m ( 'div' , { className : 'guesttext' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.welcomeguest' ) ) ,
119- m ( 'p' , { className : 'guestdesc' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.notregistered' ) ) ,
120- m (
121- 'button' ,
122- {
123- className : '.SplitDropdown-button Button Button--primary hasIcon' ,
124- type : 'button' ,
125- onclick : ( componentClass , attrs ) => app . modal . show ( SignUpModal , attrs ) ,
126- } ,
127- app . translator . trans ( 'core.forum.header.sign_up_link' )
59+ m (
60+ 'div' ,
61+ { className : 'cont' } ,
62+ m ( 'div' , { className : 'circletop' } , [
63+ m (
64+ 'a' ,
65+ { href : SettingsLink , title : app . translator . trans ( 'core.forum.settings.title' ) } ,
66+ m ( 'i' , { className : 'menuicon fas fa-tasks' } )
67+ ) ,
68+ m (
69+ 'a' ,
70+ {
71+ href : app . route . user ( user ) ,
72+ title : app . translator . trans ( 'flarum-ext-welcomebox.forum.tooltipProfile' ) ,
73+ } ,
74+ m ( 'i' , { className : 'menuicon far fa-user' } )
75+ ) ,
76+ m (
77+ 'a' ,
78+ {
79+ href : app . route . user ( user ) + '/mentions' ,
80+ title : app . translator . trans ( 'flarum-ext-welcomebox.forum.tooltipMentions' ) ,
81+ } ,
82+ m ( 'i' , { className : 'menuicon fas fa-at' } )
83+ ) ,
84+ m (
85+ 'a' ,
86+ {
87+ href : app . route . user ( user ) + '/discussions' ,
88+ title : app . translator . trans ( 'flarum-ext-welcomebox.forum.tooltipDisclist' ) ,
89+ } ,
90+ m ( 'i' , { className : 'menuicon far fa-list-alt' } )
91+ ) ,
92+ ] )
93+ )
12894 ) ,
129- m ( 'div' , { className : 'contentwb' } ) ,
130- ] )
131- ) ;
132- }
95+ m ( 'div' , { className : 'iconbadge' } , listItems ( user . badges ( ) . toArray ( ) ) ) ,
96+ m ( '.ulwb' , { className : 'contentwb' } , [
97+ m ( 'li' , [
98+ m ( 'label' , { className : 'textinfo' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.npost' ) ) ,
99+ ': ' ,
100+ m ( 'strong' , { className : 'textinfo' } , formatNumber ( user . commentCount ( ) ) ) ,
101+ ] ) ,
102+ m ( 'li' , [
103+ m ( 'label' , { className : 'textinfo' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.discussion' ) ) ,
104+ ': ' ,
105+ m ( 'strong' , { className : 'textinfo' } , formatNumber ( user . discussionCount ( ) ) ) ,
106+ ] ) ,
107+ lastSeenAt !== null
108+ ? m ( 'li' , [
109+ m ( 'label' , { className : 'textinfo' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.lastSeen' ) ) ,
110+ ': ' ,
111+ m (
112+ 'strong' ,
113+ { className : 'textinfo' } ,
114+ `${ moment ( lastSeenAt )
115+ . locale ( userLang || 'en' )
116+ . fromNow ( ) } `
117+ ) ,
118+ ] )
119+ : false ,
120+ ] ) ,
121+ ]
122+ )
123+ ) ;
124+ } else if ( ! user && isGuestBoxHidden && useWidget ) {
125+ return m (
126+ 'div' ,
127+ { className : 'containerwb' } ,
128+ m ( 'div' , { className : 'backgrwbguest' } , [
129+ m ( 'img' , { className : 'guestavatarimg' , src : ImgAvatar } ) ,
130+ m ( 'div' , { className : 'guesttext' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.welcomeguest' ) ) ,
131+ m ( 'p' , { className : 'guestdesc' } , app . translator . trans ( 'flarum-ext-welcomebox.forum.notregistered' ) ) ,
132+ m (
133+ 'button' ,
134+ {
135+ className : '.SplitDropdown-button Button Button--primary hasIcon' ,
136+ type : 'button' ,
137+ onclick : ( componentClass , attrs ) => app . modal . show ( SignUpModal , attrs ) ,
138+ } ,
139+ app . translator . trans ( 'core.forum.header.sign_up_link' )
140+ ) ,
141+ m ( 'div' , { className : 'contentwb' } ) ,
142+ ] )
143+ ) ;
133144 }
134145 }
135146}
0 commit comments