And we we could really use a working example of a plugin that has a form submission type action built into it. Our plugin has two things, at a high level:
some configuration items
a form that a user would input some text into, and then ‘submit’ to process
So if anyone knows of any plugin that has these two types of features, we would really appreciate a link to it so we can review how it works.
Can you say more about what you’re doing? What are you changing with the form? Can this be a theme component? Is what you’re submitting to an existing endpoint or one that you’re adding?
@pfaffman We want to create a simple form that prompts the user for four things:
Sender
Receiver
Subject
Body
The user will fill out these fields, and then click a button to trigger an endpoint that sends the email.
Specifically, the form will include the four elements, and once the “Send” button is clicked, it will invoke the endpoint to send the message.
I’m not sure if that’s exactly what you’re looking for, but the main goal is to allow an admin user to input text (the email subject and body) and click a button to send it to a user in Discourse.
In the future, we’d like to extend this so that the user can trigger multiple messages from one sender to multiple receivers. We want to manipulate parameters like the total number of messages and the delay between each one, to control how many messages are sent and how spaced out they are.
Maybe back up one step further and describe the actual problem you’re trying to solve.
Do you mean that you want to send a direct email (so the message will not exist in Discourse), or that you want to send a PM that goes to the user (which in most cases will generate an email notification).
You want to change who the sender of the PM is? That seems like the only thing that’s missing from the existing PM interface, is that right?
תודה על ההבהרה! כדי לספק עוד הקשר, אנחנו עובדים עם בסיס משתמשים גדול ורוצים להחזיר את המשתמשים שלא התקשו עם האפליקציה שלנו לזמן מה. המטרה היא לשלוח הודעה פרטית (PM) למספר גדול של משתמשים מכתובת שולח ספציפית, עם שליטה על מספר פרמטרים:
שולח: משתמש המנהל יפריד את שם המשתמש של השולח ישירות בטופס.
נושא תוכן ההודעה: המנהל יכול להתאים אישית את הנושא ואת גוף ההודעה.
שליטה על נפח ההודעות: אנו רוצים לשלוט כמה הודעות נשלחות בו זמנית כדי להימנע מספאם.
זמנון: הדאגה המרכזית היא לוודא שאנו יכולים לשלוט על מהירות השליחה, כדי למנוע עומס על הדומיין שלנו ולמנוע סימון כהודעת ספאם. נצטרך לאפשר הפרדת ההודעות באמצעות הגדרת עיכובים בין כל הודעה (והדואר האלקטרוני המתאים) כדי למנוע זיהוי אוטומטי של ספאם.
המטרה הסופית היא לגרום למשתמשים לפתוח את ההודעה הפרטית (שגם תיצור התראה בדואר אלקטרוני) ולעודד אותם לחזור לאפליקציה שלנו.
יש לנו כבר סקריפט רובי פשוט שמסוגל לבצע משימה זו ועובד באופן מושלם. כרגע, אנחנו מפעילים אותו ידנית על ידי גישה לשרת הווירטאלי באמצעות SSH, שזה קצת מסורבל. מה שאנו רוצים עכשיו הוא להתאים את הסקריפט הזה לתוסף כך שמנהל יוכל להפעיל אותו בקלות דרך ממשק המשתמש, עם אפשרות להזין את ההגדרות (שולח, נושא, גוף ההודעה, כמות ההודעות, עיכוב ביניהן וכו’) ישירות מממשק המנהל.
אנחנו רוצים להשיג זאת באמצעות ממשק תוסף שמאפשר למנהל להזין בקלות את ההגדרות, להפעיל את התהליך ולפקח על התקדמות השליחה של ההודעות.
כנראה שהיית עושה משהו כמו שיש קבוצות של משתמשים ומתכנן לשלוח לכל המשתמשים בקבוצה. כאשר נשלחת הודעה, תגדיר ערך בשדה מותאם אישית של המשתמש (user_custom_field) ותשתמש בנושא קיים כטקסט וכשולח ההודעה. משימה תוריץ כל הזמן ותשלח את הכמות ההודעות שתרצה. הייתי מחיל את הקבוצה ואת הערך של השדה המותאם בהגדרות.
אז לא היית צריך ממשק משתמש או ליצור נתיב חדש בכלל; היית יכול פשוט להשתמש בהגדרות קיימות. וגם, היית יכול לראות מה קרה באמצעות קונטרולר הנתונים, כך שלא היית צריך לפתח ממשק גם כן.
אם אתה רוצה ליצור שדות שהמשתמשים ייכנסו אליהם ב-UX, כדאי שתריץ את ה-<Form> שציינתי כבר.