Skip to content

[NodeBB] Custom fields plugin

Unsolved Customisation
5 2 1.8k 1
  • Hi again , on our sire we require the use of custom user fields so we can refer to them with our own bespoke plugin we are going to develop , however this plugin https://github.com/NicolasSiver/nodebb-plugin-ns-custom-fields fails to function on recent builds of nodeBB i wonder if anyone here has had any success in getting custom fields to work ? some of the code in the default nodebb suggests it is already possible .

    Also this plugin would be more suitable as it suggests registration fields… but likewise it fails https://www.npmjs.com/package/nodebb-plugin-itu-custom-registration-fields

  • Hi again , on our sire we require the use of custom user fields so we can refer to them with our own bespoke plugin we are going to develop , however this plugin https://github.com/NicolasSiver/nodebb-plugin-ns-custom-fields fails to function on recent builds of nodeBB i wonder if anyone here has had any success in getting custom fields to work ? some of the code in the default nodebb suggests it is already possible .

    Also this plugin would be more suitable as it suggests registration fields… but likewise it fails https://www.npmjs.com/package/nodebb-plugin-itu-custom-registration-fields

    @pwsincd This is always a problem with Open Source development in the sense that packages are often suddenly abandoned and no response ever provided to any requests. Does this plugin make NodeBB crash, or does it actually install ?

    I think the only way forward here is to fork and update it for the latest version, which may take some time.

  • @pwsincd This is always a problem with Open Source development in the sense that packages are often suddenly abandoned and no response ever provided to any requests. Does this plugin make NodeBB crash, or does it actually install ?

    I think the only way forward here is to fork and update it for the latest version, which may take some time.

    @phenomlab it appears to install but has nothing to work on … no admin edits visible etc…

  • @phenomlab it appears to install but has nothing to work on … no admin edits visible etc…

    @pwsincd On checking this plugin, the install appears to actually fail - see the below from the log

    022-04-01T10:43:11.554Z [4567/513037] - warn:    [plugins/nodebb-plugin-ns-custom-fields] The plugin.json field "library" is deprecated. Please use the package.json field "main" instead.
    2022-04-01T10:43:11.555Z [4567/513037] - warn: [plugins] Unable to load library for: nodebb-plugin-ns-custom-fields
    2022-04-01T10:43:11.555Z [4567/513037] - error: Error: Cannot find module './src/emitter'
    Require stack:
    - /home/sudonix/nodebb/require-main.js
    - /home/sudonix/nodebb/app.js
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
        at Function.Module._load (internal/modules/cjs/loader.js:746:27)
        at Module.require (internal/modules/cjs/loader.js:974:19)
        at require (internal/modules/cjs/helpers.js:101:18)
        at Module.require.main.require (/home/sudonix/nodebb/require-main.js:8:10)
        at /home/sudonix/nodebb/node_modules/nodebb-plugin-ns-custom-fields/plugin/nodebb.js:9:31
        at Object.<anonymous> (/home/sudonix/nodebb/node_modules/nodebb-plugin-ns-custom-fields/plugin/nodebb.js:47:3)
        at Module._compile (internal/modules/cjs/loader.js:1085:14)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
        at Module.load (internal/modules/cjs/loader.js:950:32)
    
  • @phenomlab it appears to install but has nothing to work on … no admin edits visible etc…

    @pwsincd hi. Just following up on this thread (I know it’s old) but was curious to understand if it’s still an issue or not ?


Related Topics
  • 14 Votes
    17 Posts
    3k Views
    No problem dude ! I hope you have a good vacation. Enjoy your loved ones!
  • 15 Votes
    51 Posts
    14k Views
    Oh yes, that’s what’s super cool, I learn something every day. Afterwards I start from so low in JS
  • Coding question: fetch vs $.ajax call from Shopify

    Solved Performance javascript
    4
    3 Votes
    4 Posts
    1k Views
    @Panda You should be able to use {% javscript %} as shown in this video - it’s quite the watch, but very educational, and provides insight as to how this works - see below screenshot for an example [image: 1690282186734-cdb160e9-d955-498c-b921-982db2986e2b-image.png]
  • Adding a banner to chat messages

    Tips banner custom
    38
    1
    18 Votes
    38 Posts
    8k Views
    @phenomlab said: @DownPW Possible, yes, but not using the existing code. It would need to be changed to test for multiple entries based on two distinct widget areas. This should work (it’s already applied on your DEV server) function chatBanner() { var roomName = $("h5[component='chat/header/title']").text().trim(); var roomNameWidget = $('[id*="chat-modal"] .btn-ghost.btn-sm.dropdown-toggle').text().trim(); var bannerContent; if (roomName === "General" || roomNameWidget === "General") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Message 1. </div>'; } else if (roomName === "Support" || roomNameWidget === "Support") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Message 2.</div>'; } else if (roomName === "Info" || roomNameWidget === "Info") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Message 3</div>'; } else if (roomName === "xxxxxx" || roomNameWidget === "xxxxxx") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Message 4</div>'; } else if (roomName === "xxxxxx" || roomNameWidget === "xxxxxx") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Message 5</div>'; } else if (roomName === "xxxxxx" || roomNameWidget === "xxxxxx") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Message 6</div>'; } else { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Ce canal est une discussion privée. </div>'; } var chatMessagesContainer = $('[component="chat/system-message"]:last-of-type'); //var existingMessages = $('[component="chat/message"]'); var existingMessages = $('[component="chat/composer"]'); if (existingMessages.length === 0) { // If there are no messages, append the banner to the messages container chatMessagesContainer.first().after(bannerContent); } else { // If there are messages, add the banner after the last message //existingMessages.last().after(bannerContent); existingMessages.before(bannerContent); } } Here, we are using || which is essentially an OR operator. Because we cannot know the chat room ID in advance, it is necessary to use a wildcard to track it [id*="chat-modal"] .btn-ghost.btn-sm.dropdown-toggle I see bugs with this code and chat box widget I use on my categories page What was happening NodeBB allows multiple chat windows to be open simultaneously , the widget and the full/modal-page DM view. Both exist in the DOM at the same time. The original code used global jQuery selectors like $(‘[component=“chat/composer”]’) which scanned the entire page and found elements from both chat windows at once. When you opened “XY” caht while “XXY” was still open in the widget, the selectors would pick up the wrong room name or inject the banner into the wrong window. The key discovery was that the action:chat.loaded event passes the modal DOM element directly as data. By wrapping it in $(data) and using $modal.find(…) for every selector, all queries are scoped exclusively to the correct modal, making it impossible for two open chat windows to interfere with each other. FIX code (to adapt to your rooms) : function chatBanner(modalElement) { var $modal = $(modalElement); $modal.find('#chatbanner').remove(); var roomName = $modal.find('[component="chat/room/name"]').text().trim(); if (!roomName) { var placeholder = $modal.find('[component="chat/input"]').attr('placeholder') || ''; roomName = placeholder.replace(/^Message #?/, '').trim(); } var bannerContent; if (roomName === "General") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Chat message banner</div>'; } else if (roomName === "xxxxxxxxxx") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Chat message banner</div>'; } else if (roomName === "xxxxxxxxxx") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Chat message banner</div>'; } else if (roomName === "xxxxxxxxxx") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Chat message banner</div>'; } else if (roomName === "xxxxxxxxxx") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Chat message banner</div>'; } else if (roomName === "Les geeks de l'espace") { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Chat message banner</div>'; } else { bannerContent = '<div id="chatbanner"><i class="fa fa-fw fa-circle-info link-primary" aria-hidden="true"></i> Chat message banner</div>'; } $modal.find('[component="chat/composer"]').first().before(bannerContent); } $(window).on('action:chat.loaded', function(ev, data) { chatBanner(data); });
  • nodebb-plugin-custom-pages

    Solved Customisation plugin custom-pages
    5
    2
    3 Votes
    5 Posts
    4k Views
    @DownPW it’s possible, yes, but you may inadvertently end up targeting other elements using the same class which of course isn’t desired. Can you provide a link in DM for me to review?
  • Custom badges

    Solved Customisation nodebb
    103
    2
    49 Votes
    103 Posts
    30k Views
    Perfect
  • 9 Votes
    32 Posts
    9k Views
    @DownPW said in Bottom footer navbar button extend: Oh my god, it’s beautiful mark I liked this design so much, I’ve implemented it here. I intend to do a lot more with the footer in due course, so hiding it makes a lot of sense. Thanks @DownPW for the idea and initial concept
  • [NodeBB] custom Gravatar image not showing

    Solved Customisation
    6
    1 Votes
    6 Posts
    2k Views
    @jac said in [NodeBB] custom Gravatar image not showing: @phenomlab said in [NodeBB] custom Gravatar image not showing: @jac are you using Custom ? Sure am mate Confirmed Fixed