@baris thank you for all the details. i'll try to "fix" it by myself.
[nodebb-plugin-ns-custom-fields] NS Custom Fields
-
result.data
is empty, thats why it has error, to fix this you have to add check in:
/nodebb-plugin-ns-custom-fields/app/filters.js
from line 24:if (result.data) { var i = 0, len = result.fields.length, fieldMeta, customFields = []; for (i; i < len; ++i) { fieldMeta = result.fields[i]; var value = result.data[fieldMeta.key]; if (value) { customFields.push({ name : fieldMeta.name, value: value }); } } params.userData.customFields = customFields; } callback(null, params);
@Nicolas can you show template changes forI found it inaccount/edit.tpl
file.nodebb-plugin-ns-custom-fields/templates/account/edit.tpl
-
Looks cool.
@Sergey Same issue for me, 0.7
-
@Sergey thanks for report and participating in testing of the plugin on It's earlier stages
I will fix it today. I think I know that is the problem.
-
@Nicolas Consider changing
customFields = [];
to
customFields = params.userData.customFields || [];
So that you don't overwrite customFields added by other plugins.
-
Last error I found in : nodebb-plugin-ns-custom-fields/public/js/fields-edit.js
line 61:
- .val(content[fieldEntity.key]);
+ .val(content && content[fieldEntity.key]);
Now it works as expected. Thanks @Nicolas !
-
-
Small suggestion, check if Custom Field value is url and replace it with link.
filters.js
:4: var urlRegex = /(((https?:\/\/)|(www\.))[^\s]+)/i; .. .. 26: if (result.data) { var i = 0, len = result.fields.length, fieldMeta, customFields = params.userData.customFields || []; for (i; i < len; ++i) { fieldMeta = result.fields[i]; var value = result.data[fieldMeta.key]; if (value) { customFields.push({ name : fieldMeta.name, value: value.match(urlRegex)? urlify(value) : value }); } } params.userData.customFields = customFields; 39: } .. .. 53: function urlify(text) { return text.replace(urlRegex, function(url,b,c) { var url2 = (c == 'www.') ? 'http://' +url : url; return '<a href="' +url2+ '" target="_blank">' + url + '</a>'; }) 58: }
-
@Sergey
For such task, will be dedicated formatters.
8-th list item in TODO list -
Can you also add those custom fields in post data, so we can display them somewhere under user's avatar or something like that.
-
Critical fixes are made, also plugin is published to Node Package Manager.
First post is updated, same as documentation on GitHub. -
@Sergey sure, but it will be optional (You should toggle it in ACP)
-
Nice
I'm sure there is a way we can add something to core without having you required to edit the theme manually. What if it was a widget area in the profile page? I'd accept that PR if you were willing to change how this works
-
If this works and I'll try it tommorow you sir are my hero. I was looking forward this feature since the begining and didn't had the time to jump in.
-
New version
1.1.0
has been released.
Now you have ability to populate Topic View with custom fields. Also this feature is optional, so Settings was introduced also.@psychobunny I'm not familiar with widgets in NodeBB. Can you collaborate and give me some example? (link on repo, benefits, etc.)
-
@psychobunny Also I'm going to create another plugin, and I need this space in user's profile. Do you have any suggestions how I can reach it without manual editing also?
-
For example, render numeric values under avatar as
metrics
oraccountStats
<div class="text-center account-stats"> <div class="inline-block text-center"> <span class="human-readable-number" title="{reputation}">{reputation}</span> <span class="account-bio-label">[[global:reputation]]</span> </div> <div class="inline-block text-center"> <span class="human-readable-number" title="{postcount}">{postcount}</span> <span class="account-bio-label">[[global:posts]]</span> </div> <div class="inline-block text-center"> <span class="human-readable-number" title="{profileviews}">{profileviews}</span> <span class="account-bio-label">[[user:profile_views]]</span> </div> </div>
Change on:
<!-- BEGIN metrics --> <div class="inline-block text-center"> <span class="human-readable-number" title="{metrics.value}">{metrics.value}</span> <span class="account-bio-label">{metrics.label}</span> </div> <!-- END metrics -->
-
NodeBB 0.7, new version error on startup:25/4 07:34 [27825] - error: Error: Cannot find module 'object-assign'
Sorry,
npm install
should fix that problem. -
@Nicolas said:
@psychobunny Also I'm going to create another plugin, and I need this space in user's profile. Do you have any suggestions how I can reach it without manual editing also?
Looks like it's the same problem, that part is tied to the theme, so it would need a widget area or a filter from core.
I can probably help with the widget areas if needed.
-
Warning in console:
25/4 11:57 [28225] - warn: [plugins] Callback timed out, hook 'static:app.load' in plugin 'nodebb-plugin-ns-custom-fields'
I found another problem: Try to edit any user's profile as admin and you will see custom fields populated with admin's data.
-
I'm still learning NodeBB architecture.
Seems,socket.uid
was a mistake to use as an User Reference.
I will find another approach to get uid of user profile