Would be possible to use this with custom emojis?
As we provide support from our community, it would be nice to add our logo before mentioning one of the staff
This component is kind of a super basic template on finding content in a post and appending something to it. There’s probably a way to grab existing emojis, but I don’t know it off the top of my head.
What would work is replacing the header.html file in the component with this, which would just append an image after a mention instead (that image could be a little logo).
<script type="text/discourse-plugin" version="0.8.18">
$.expr[":"].contains = $.expr.createPseudo(function(arg) { // make case insensitive
return function( elem ) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
let emoji = {};
settings.username_emoji.split('|').forEach(pair => {
let split = pair.split(",");
emoji[split[0].toLowerCase()] = split[1];
});
$.each(emoji, function (key, value){
api.decorateCooked($elem => $elem.find("a.mention:contains(" + key + ")").append("<img src='" + value + "'>").addClass("with-image"));
});
</script>
شيئان يتبادران إلى الذهن، لست متأكدًا مما إذا كان ذلك ممكنًا حاليًا ولكن ما أود الحصول عليه:
القدرة على استخدام هذا للإشارات الجماعية؟ لقد جربتها للتو لمجموعة المسؤولين الخاصة بي ولكنها لم تبدو وكأنها تعمل.
القدرة للمستخدم على اختيار الرموز التعبيرية الخاصة به في تفضيلاته ثم ستظهر في كل مرة يتم فيها الإشارة إليه. ربما يمكن أن يكون أيضًا ميزة إضافية لمنحها للمستخدمين الأكثر تفاعلاً في مستويات ثقة أعلى.
تعديل:
القدرة على استخدام هذا للإشارات الجماعية؟ لقد جربتها للتو لمجموعة المسؤولين الخاصة بي ولكنها لم تبدو وكأنها تعمل.
لقد اكتشفت كيفية القيام بذلك ولكنني لا أعرف كيفية تقديم طلب سحب (PR) لذلك سأنشر الكود أدناه في الوقت الحالي:
common.scss يضيف .mention-group:after و .mention-group:before
أردت أيضًا القدرة على استخدام ملفات SVG مخصصة كأيقونة بجوار الإشارة، وهو أمر رأيته في Guilded للموظفين وأردت أن يكون لدي هناك ولكني لم أستطع الحصول عليه - سبب آخر يجعلني أحب Discourse كثيرًا هو أنني أستطيع بالفعل اختراق شيء قد يعمل بدلاً من الأمل والانتظار حتى يضيفه المطورون.
لذلك قمت بإنشاء الحل التالي. إنه ليس مضمونًا بأي حال من الأحوال، ربما يتطلب ملف SVG الذي تقوم بتحميله أن يكون له متغير SCSS يبدأ بـ svg ومع ذلك يبدو أنه يعمل بما يكفي بالنسبة لي الآن
إذا أراد شخص ما أخذ هذا الكود وتطويره، ودمجه لجعله أكثر روعة، فسأكون ممتنًا!
الأشياء المحتملة للتحسين
جعله يعمل لجميع أيقونات SVG، مما يعني جميع أيقونات Discourse وجميع الأيقونات التي تم تحميلها لا تبدأ بـ svg.
تنظيف الكود.
تحسين التصميم، حيث قمت بتجميع CSS بطريقة ما ليعمل وقد لا يعمل في جميع الحالات.
بغض النظر، إليك مثال على إشارة مع استخدامي للأيقونة المخصصة التي لدي للدفاع العاطفي كأيقونة إشارة للموظفين:
إليك الكود الذي أضفته:
header.html
// إضافة أيقونات SVG كخيار، طالما أنها مدرجة في الأصول وتم تحميلها
// ينشئ كائنًا لجميع الأصول ويتكرر للعثور على الروابط التي تحتوي على سمة data-emoji
// تساوي اسم متغير الأصل ثم يضيف عنوان URL لها
// تحويل الكائن إلى مصفوفة مفاتيح
const keys = Object.keys(settings.theme_uploads);
// طباعة جميع المفاتيح
console.log(keys);
// التكرار فوق الكائن
keys.forEach((key, index) => {
console.log(`${key}: ${settings.theme_uploads[key]}`);
api.decorateCooked($elem => {
var url = settings.theme_uploads[key];
console.log("key: " + key);
console.log("index: " + index);
console.log("url: " + url);
console.log(JSON.stringify(settings.theme_uploads));
$elem
.find("a[data-emoji^='" + key + "']")
.css("--svg-icon", "url('" + url + "')");
}
);
});