المستخدم لا يستطيع إنشاء موضوع جديد ووضع علامة عليه أثناء الإنشاء - العلامات غير مدرجة

لدي مستخدم عادي بمستوى ثقة 0 ومستوى ثقة 1، ولدي هذه الإعدادات:

مجموعات مسموح لها بوسم المواضيع: المسؤولون، المشرفون، الموظفون، مستوى_الثقة_0
مجموعات مسموح لها بإنشاء المواضيع: المسؤولون، المشرفون، مستوى_الثقة_1
مجموعات مسموح لها بإنشاء وسم: المسؤولون، المشرفون، الموظفون

يمكن للمستخدم إنشاء المواضيع، ولكنه لا يستطيع استخدام الوسوم عند إنشاء الموضوع. يمكنه استخدام الوسوم للبحث ولكن الوسوم غير مدرجة عند إنشاء موضوع.

هل إعدادي غير صحيح؟ هل فاتني شيء؟ مع مستخدمي الموظفين أو المسؤولين يمكنني فعل الأمرين معًا. شكرا على أي نصيحة.

إعجابَين (2)

لقد فاجأت هذه المسألة أكثر من شخص، ولكن يمكن للمسؤولين والمشرفين تجاوز الكثير من القيود التي تنطبق على الآخرين.

هل لديك أي قيود أخرى مفروضة على علاماتك؟ مثل مجموعة علامات لا يمكن استخدامها إلا من قبل مجموعة معينة، أو أي قيود وضعتها على علامات في فئة معينة؟

إذا انتقلت إلى صفحة علامة ونقرت على مفتاح ربط العلامة (:information_source: لغير الموظفين) فيجب أن يعرض لك بعض المعلومات الإضافية التي قد تساعد في تتبع أي قيود إضافية وضعتها عليها. على سبيل المثال broken هنا على meta:

إعجابَين (2)

هل من الممكن أن Discourse لا يتعامل بشكل صحيح مع الدمج بين trust_level_0 و trust_level_1 عند إنشاء الموضوع ووضع الوسم له؟

هل يجب أن أضيف trust_level_1 إلى هذا:

وأن أضيف trust_level_0 في هذا السطر:

أي شخص في trust_level_1 هو أيضًا في trust_level_0 بشكل افتراضي.

3 إعجابات

قد ترغب في السماح لـ TL0 بإنشاء مواضيع، اعتمادًا على إعداد موقعك، حيث إن الأشخاص غالبًا ما يسجلون لطرح سؤال، وما إلى ذلك، وقد يكون لديهم ارتباك حول سبب عدم تمكنهم من ذلك (وربما يتخلون قبل أن يكتشفوا الأمر).

لكنني لا أعتقد أن ذلك يفسر المشكلة التي تواجهها.

هل تحدث هذه المشكلة فقط لهذا المستخدم؟ هل يستطيع الآخرون وضع علامات على المواضيع بنجاح؟

هل يمكنك تزويدي بمزيد من التفاصيل حول كيفية إعداد العلامات الخاصة بك؟

كما قال @HAWK، أي شخص يكون في trust_level_one يكون بشكل افتراضي في trust_level_0، ولهذا السبب الأمر مربك لي. هناك أكثر من مستخدم يعاني من هذه المشكلة. لقد قمت بفحص العلامات التي يمكن استخدامها في فئات التصنيف التي نحتاجها.

@JammyDodger، ما الذي يمكن أن يكون من الممتع التحقق منه في إعدادات علاماتي؟

إعجاب واحد (1)

العلامات مرنة جدًا ويمكن تكوينها بطرق مختلفة كثيرة، لذلك قد نحتاج إلى مزيد من التفاصيل حول كيفية إعدادك لها لنقدم اقتراحات أكثر تحديدًا.

على الرغم من أن أحد الأمور الشائعة هو عندما يتم إعداد فئة بحيث تسمح فقط باستخدام علامات معينة داخل تلك الفئة ولم يتم تحديد خيار ‘السماح بعلامات أخرى أيضًا’. هذا يمكن أن يقيد الفئة فقط بالعلامات المقيدة وإذا كانت تلك العلامات تخص الموظفين فقط، فقد يمنع أي شخص آخر من استخدام علامات أخرى.

لمتابعة الأمر (على الرغم من أننا نأمل أن تكون قد تمكنت بالفعل من تعقبه :crossed_fingers:)، قدم موين منشورًا شاملاً لاستكشاف الأخطاء وإصلاحها لشيء مشابه هنا:

إعجابَين (2)

مرحباً @JammyDodger و @HAWK. لقد كنت متشابكًا مع مشكلات أخرى في العمل ولكنني ما زلت عالقًا في هذا. Z

حسنًا، لدي فئاتي، وفي إعدادات “العلامات” للفئة لدي:

تقييد مجموعات العلامات هذه بهذه الفئة: TAG-GRP1، TAG-GRP2

عندما أذهب إلى “إدارة مجموعات العلامات” لدي:

TAG-GRP1:

الاسم: TAG-GRP1
العلامات في هذه المجموعة: قائمة بعلاماتي لـ TAG-GRP1
العلامة الأصل: -
تقييد علامة واحدة لكل موضوع من هذه المجموعة (غير محدد)

TAG-GRP2:

الاسم: TAG-GRP2
العلامات في هذه المجموعة: قائمة بعلاماتي لـ TAG-GRP2
العلامة الأصل: -
تقييد علامة واحدة لكل موضوع من هذه المجموعة (غير محدد)

العلامات مرئية فقط للمجموعات التالية: المسؤول، والمشرفون، وtrust_level_0، وtrust_level_1

وعندما أتحقق بصفتي مسؤولاً من العلامة التي أريد استخدامها عند إنشاء موضوع، يمكنني رؤية هذا:

تنتمي هذه العلامة إلى هذه المجموعات: . لا يمكن استخدامه إلا في هذه الفئات: TAG-GRP1، TAG-GRP2

لدي بالفعل TL0 و TL1 في “مجموعات مسموح لها بموضوع العلامة” و “مجموعات مسموح لها بإنشاء موضوع”. ولكن مع مستخدم عادي TL1 لا يمكنني استخدام بعض العلامات.

هل تمكنت من الاطلاع على منشور استكشاف الأخطاء وإصلاحها الذي أشرت إليه أعلاه؟ إنه شامل جدًا ويمكن أن يساعد في توجيهك في الاتجاه الصحيح.

لست متأكدًا مما إذا كنت قد نسخت ذلك بدقة؟

كمعلومة إضافية، لا داعي لوضع كل من TL0 و TL1 في أي إعدادات لأن جميع أعضاء TL1 هم أيضًا TL0 (فكر في TL0 على أنه “جميع المستخدمين المسجلين”). إضافة TL0 فقط ستكون كافية. :+1:

إعجابَين (2)

أتصفح الرابط الذي أوصيت به. شكراً.

إعجاب واحد (1)

مرحباً @JammyDodger ، شكراً على الرابط الذي نشرته، اعتقدت أنه قد يساعدني. لقد تحققت بالفعل من الرابط وأعتقد أن إعداداتي جيدة، والتوصية في هذا المنشور منطقية بالنسبة لي، وإعداداتي كما هو موصى به وقمت بتمكين الاختبار لـ Also allow other tags في إعدادات الفئة ولكن للأسف لم يحل مشكلتي. أتساءل عما إذا كنت بحاجة إلى إعادة تشغيل “شيء ما” عند تغيير إعدادات الأذونات.

أولاً، اسمحوا لي أن أعتذر عن مشاركة هذه الصورة مع كل النص محجوب، آمل أن تتمكنوا من التفهم.

هذه هي أسماء العلامات (TAG name)، وأسماء مجموعات العلامات (tag groups name)، والفئات التي يُفترض استخدامها فيها، ولكن لا يمكنني استخدامها بصفتي مستخدمًا عاديًا. أود أن أعرف ما إذا كان من الطبيعي وجود أيقونة قفل بجوار كل اسم فئة.

شكرًا لكم جميعًا على مساعدتكم وأفكاركم.

من الطبيعي عندما لا تكون الفئة مرئية للجميع.
على سبيل المثال، هذه إحدى العلامات الخاصة بي. يمكنك رؤية وجود قفل بجوار “Test”


وهذه هي إعدادات الأمان لتلك الفئة:

“الجميع” ليس لديهم إذن “رؤية”، لهذا السبب يتم عرض أيقونة القفل بجوار شارة الفئة. يشير ذلك إلى أن هذه الفئة ليست عامة.

هل قد يكون لهذا علاقة بالمشكلة التي وصفتها؟

بقدر ما أنه إذا لم يتمكن المستخدم من الوصول إلى الفئة، فلن يتمكن من تحديدها عند إنشاء موضوع (وإذا لم يتمكنوا من اختيارها عند إنشاء موضوع، فلن يتم تطبيق بنية «العلامة المسموح بها» الخاصة بك أيضًا). هل المستخدم جزء من مجموعة يمكنها الوصول إلى تلك الفئات؟

أعتقد أنه إذا لم تصل بعد إلى تحديد التعارض، فقد تحتاج إلى البدء في إزالة بعض قيود العلامات ومعرفة ما إذا كان يمكنك تحديد مكان حدوث تعارض الأذونات بالضبط.

هل قمت بتثبيت إضافة مستكشف البيانات (Data Explorer)؟ لقد أنشأت استعلامًا يعرض لي جميع القيود المتعلقة بعلامة معينة. ربما يساعدك هذا أيضًا. يمكنك حتى مشاركة النتائج واستبدال أسماء مجموعات العلامات وأسماء العلامات وأسماء الفئات بكلمات أخرى في المخرجات. عندها سيكون من الأسهل قليلاً مساعدتك بدلاً من مقارنة الصناديق السوداء.

شكرا لك @Moin . نعم، لدي. لديّ إضافة مستكشف البيانات مثبتة. آسف على التأخر في الرد مرة أخرى.

هذا هو الاستعلام الذي ساعدني في اكتشاف المشكلة في التكوين الخاص بي. لقد مر بعض الوقت منذ أن استخدمته، لذلك لا أتذكر ما إذا كان هناك شيء فكرت في تحسينه.

يمكنك التصفية حسب العلامة أو مجموعة العلامات

-- [params]
-- null string :tag_name
-- null string :tag_group

WITH allowed_tags AS (
  SELECT ct.category_id, t.id AS tag_id
  FROM category_tags ct
  JOIN tags t ON t.id = ct.tag_id
  UNION
  SELECT ctg.category_id, tgm.tag_id
  FROM category_tag_groups ctg
  JOIN tag_group_memberships tgm ON tgm.tag_group_id = ctg.tag_group_id
),

restricted_categories AS (
  SELECT c.id, c.name
  FROM categories c
  WHERE c.allow_global_tags = FALSE
    AND (
      EXISTS (SELECT 1 FROM category_tags ct WHERE ct.category_id = c.id)
      OR EXISTS (SELECT 1 FROM category_tag_groups ctg WHERE ctg.category_id = c.id)
    )
),

all_tag_category_combinations AS (
  SELECT t.id AS tag_id, t.name AS tag_name, rc.id AS category_id, rc.name AS category_name
  FROM tags t
  CROSS JOIN restricted_categories rc
  WHERE t.target_tag_id IS NULL
),

not_allowed_tags AS (
  SELECT atcc.tag_id, atcc.category_id, atcc.category_name
  FROM all_tag_category_combinations atcc
  LEFT JOIN allowed_tags al
    ON al.tag_id = atcc.tag_id AND al.category_id = atcc.category_id
  WHERE al.tag_id IS NULL
)

SELECT
  main.id AS tag_id,
  main.name AS tag_name,
  COALESCE(STRING_AGG(DISTINCT syn.name, ', '), '') AS synonyms,

  tg.id AS tag_group_id,
  COALESCE(parent_tag.name, '') AS parent_tag_name,
  CASE WHEN tg.one_per_topic THEN 'true' ELSE '' END AS one_tag_per_topic,

  COALESCE(
    STRING_AGG(
      DISTINCT
      CASE
        WHEN crtg.min_count IS NOT NULL THEN crtg_cat.name || ' (' || crtg.min_count || ')'
        ELSE NULL
      END,
      ', '
    ),
    ''
  ) AS required_in_categories_with_min,

  COALESCE(STRING_AGG(DISTINCT ctg_cat.name, ', '), '') AS tag_group_limited_to_category,
  COALESCE(STRING_AGG(DISTINCT ctags_cat.name, ', '), '') AS tag_limited_to_category,
  COALESCE(STRING_AGG(DISTINCT nat.category_name, ', '), '') AS not_allowed_in_categories,

  CASE
    WHEN COUNT(DISTINCT g.name) > 0 THEN COALESCE(STRING_AGG(DISTINCT g_use.name, ', '), '')
    ELSE ''
  END AS use_limited_to,
  COALESCE(STRING_AGG(DISTINCT g.name, ', '), '') AS view_only_groups

FROM tags AS main
LEFT JOIN tags AS syn ON syn.target_tag_id = main.id
LEFT JOIN tag_group_memberships AS tgm ON tgm.tag_id = main.id
LEFT JOIN tag_groups AS tg ON tg.id = tgm.tag_group_id
LEFT JOIN tags AS parent_tag ON parent_tag.id = tg.parent_tag_id
LEFT JOIN tag_group_permissions tgp ON tgp.tag_group_id = tg.id AND tgp.permission_type = 3
LEFT JOIN groups g ON g.id = tgp.group_id

LEFT JOIN category_required_tag_groups AS crtg ON crtg.tag_group_id = tg.id
LEFT JOIN categories AS crtg_cat ON crtg.category_id = crtg_cat.id
LEFT JOIN category_tag_groups AS ctg ON ctg.tag_group_id = tg.id
LEFT JOIN categories AS ctg_cat ON ctg.category_id = ctg_cat.id
LEFT JOIN category_tags AS ctags ON ctags.tag_id = main.id
LEFT JOIN categories AS ctags_cat ON ctags.category_id = ctags_cat.id
LEFT JOIN not_allowed_tags AS nat ON nat.tag_id = main.id
LEFT JOIN tag_group_permissions tgp_use ON tgp_use.tag_group_id = tg.id AND tgp_use.permission_type = 1
LEFT JOIN groups g_use ON g_use.id = tgp_use.group_id

WHERE
  main.target_tag_id IS NULL AND
  (
    :tag_name IS NULL OR
    LOWER(main.name) LIKE LOWER('%' || :tag_name || '%') OR
    LOWER(syn.name) LIKE LOWER('%' || :tag_name || '%')
  ) AND
  (
    :tag_group IS NULL OR
    LOWER(tg.name) LIKE LOWER('%' || :tag_group || '%')
  )

GROUP BY
  main.id, main.name, tg.id, tg.name, parent_tag.name, tg.one_per_topic
ORDER BY main.name, tag_group_id

@Moin، لقد جربت الاستعلام في الإصدار 3.5.0.beta8-dev ولم ينجح. لقد تلقيت رسالة الخطأ هذه:

PG::QueryCanceled: ERROR:  canceling statement due to statement timeout

لقد بحثت عن هذا الخطأ في جوجل ووجدت أنه يجب علي زيادة statement_timeout ولكن هذا يحدث في خادم إنتاجي ولا أعرف الكثير عن قواعد البيانات، PostgreSQL. أنا أبحث عن كيفية جعله يعمل دون الإضرار بالخادم.

للمعرفة فقط، جربت الاستعلام مع صديق في منتدى آخر يعمل بالإصدار 3.4.0.beta1-dev وتم تشغيل البرنامج النصي دون أي مشاكل ويبدو أنه عمل بشكل جيد.