Also today I realized that the User Profile page actually displays the custom field as it should, although compared to the user card, now the custom field (Website) is displayed last instead of first…
I feel like I’ve seen a discussion of this, but I can’t find it now.
I’ve got a custom profile field that holds a user’s website implemented using this tutorial, but allowing for any external site to be entered, rather than just linking to Twitter or something. The problem I have is that about 80% of the users don’t bother to put “http(s)://” in front of the URL they enter. They (rightly) expect that “www.example.com” should just work. So how do I make it just work?
Edited to add: Figured it out. Below is the entire if block of javascript I used to determine whether to attempt to show an external link. The inner if is what determines whether the external URL needs to have “http” added to it, and takes care of doing it.
if (userFields && userFields[churchURLFieldId]) {
const rawChurchURL = userFields[churchURLFieldId];
var url = rawChurchURL;
if (!/^https?:\/\//i.test(rawChurchURL)) {
url = 'http://' + rawChurchURL;
}
const link = "<a href='"+url+"' target='_blank'>"+userFields[churchNameFieldId];+"</a>";
return Ember.Object.create({ link, name: churchURL.get('name') });
} else {
return null;
}
Is there a way to edit existing user profile fields rather than adding new one? So that the existing twitter field value can be edited to contain anchor tag
the main post that allows us to add new clickable profile fields using connectors/handlebar outlets etc, those get “added” and so I had to hide the existing profile fields
e.g. I could add a clickable twitter field and so have to hide the existing twitter field
Now the newly added twitter field will be in a separate div rather than belonging to that same ember div which was pre-existing, resulting in weird css
Would using /connectors/user-profile-public-fields/Twitter instead of using /connectors/user-profile-primary/ help here?
This is very nice, i forked it and tried to make it a bit more general as a theme component without the Namati specific stuff. Hope you don’t mind!
Added a separate post as well to make it easier to find for others:
Hi all, just wanted to share that I made a very basic plugin version of this. It just lets you specify which user field to make into a link, and—optionally—a prefix (e.g. https://mysite.com/users/). Just thought I’d share in case anyone would rather install a theme component instead of modify code. It’s based on the code in the original post in this thread.
On a side note, for my particular use case, I don’t want any user to be able to edit it; rather, I plan to update it via the discourse API. In that case, would a “custom field” be better than a “user field”? I see both in the API, but custom_fields are blank.
@wilson29thid このコンポーネントの#themeトピックを設定していただけませんか?毎回コードをコピー&ペーストする必要があるのではなく、インストール可能なテーマコンポーネントとしてこれがあると素晴らしいでしょう。
はい - ここでそのタグを使用してトピックを作成すると、インストール可能になりますか?
git URLからすでにインストール可能です。トピックを作成すると、人々が見つけやすくなるだけです
質問が少し異なります。サインアップページにあるユーザーフィールドの説明に、別のウィンドウで開くリンクを追加したいと考えています。そのページでは、[このフォーマット](このフォーマット) で囲まれたリンクは認識されません。
参加する前に、ユーザーにコミュニティバリューを読んだことに同意してもらいたいと考えており、そこにリンクがあれば、見逃した場合に役立ちます。現在、ブラウザにフルリンクをコピー/ペーストするように指示しています。
Discourse 3.2 および Ember 5 ではどのように機能しますか?
バージョンを \u003cscript type=\"text/discourse-plugin\" version=\"1.13.0\"\u003e に更新し、こちら で提案されているように api.registerConnectorClass を api.renderInOutlet に変更しましたが、ブラウザのコンソールに次のように表示されます: [THEME 27] Error: klass is not an Ember component
こちら で提案されているようにプロパティを computed に置き換えましたが、ブラウザのコンソールに次のように表示されます: [THEME 27] ReferenceError: computed is not defined
ああ、インポートを忘れていました。そのため、スクリプトタグの後に欠落している import EmberObject, { computed } from '@ember/object'; を追加しましたが、SyntaxError: " /discourse/theme-27/discourse/initializers/theme-field-140-common-html-script-3: ‘import’ and ‘export’ may only appear at the top level." が発生しました。
うーん、そうですね。OPで提案されているテクニックはかなり時代遅れです(2016年に書かれたものなので、もっともですが:sweat_smile:)。
最近では、このようなものはgitリポジトリにパッケージ化され、#theme-componentとして公開され、設定を通じてインストールおよび構成できるようになっています。
しかし、@wilson29thid の TC をこちらで再作成しました。ただし、まだ修正する必要のある非推奨の警告が残っています。
このOPの機能は、新しいミニコンポーネントで見つけることができます。