تخصيص صفحات Subscription Plugin

أقترب من تحويل PfaffManager إلى منتج. الحد الأدنى للمنتج القابل للتطبيق (MVP) الخاص بي هو استبدال https://www.literatecomputing.com/discourse-installation-packages/ بـ Discourse، بحيث يتمكن الأشخاص من شراء التثبيت (كما يفعلون حاليًا عبر WordPress)، مما سيؤدي إلى بدء التثبيت في Discourse (يعمل)، حيث يمكنهم أيضًا الحصول على تحديثات مباشرة حول عملية التثبيت (يعمل)، ثم يكون بإمكانهم النقر على زر لبدء إعادة بناء (يعمل) لفترة زمنية معينة.

استخدمت add_model_callback(GroupUser, :after_save) لملاحظة أنه عند إضافة مستخدم إلى مجموعة CreateServer، يتم إنشاء الخادم (في النموذج الذي يضيفه ملفي) وإزالة المستخدم من المجموعة (حتى يتمكن نظريًا من شراء تثبيت خادم آخر). أعتقد أن هذه التقنية يمكن استخدامها لجعل discourse-subscriptions نظام دفع عام إلى حد ما.

لذا، لدي الآن هذا:

هناك بضع نقاط أراها حاليًا:

  • يحمل عنوان <h1> وزر الضغط نفس المفتاح discourse_subscriptions.subscribe.title؛ أود أن يقول عنوان <h1> شيئًا مثل “شراء تثبيت أو خدمة” للعنوان، و “ادفع الآن” للزر.
  • إذا كان لعنوان <h1> فئة subscription-title، فيمكنني استخدام CSS لإخفاء العنوان الحالي واستبداله بـ ::before، مما قد يحل المشكلة المذكورة أعلاه.
  • أود إضافة تنقل إلى /pfaffmanager/servers في مكان ما على هذه الصفحة في رأس الصفحة أو تذييلها، ولا أرى أي طريقة للقيام بذلك. حاولت إضافة شيء مثل {{~raw-plugin-outlet name="subscription-header-before"~}} إلى قالب s.hbs، لكن الأمر ليس بهذه البساطة.

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

آه! بدلاً من التمني وجود منافذ (outlets) في ملحق الاشتراكات، ربما يجب أن أصنع قوالبًا خاصة بي لا تزال تستدعي وظائف Stripe من ملحق الاشتراكات؟ هل يبدو ذلك منطقيًا؟

أنا مستعد لقبول طلب دمج (PR) لهذه التغييرات. إنها تغييرات بسيطة جدًا.

يجب أن تكون قادرًا على إضافة {{plugin-outlet}} في ذلك الملف. سأقبل أيضًا طلب دمج (PR) إذا كان هناك مبرر معقول لذلك. منافذ الإضافات خفيفة الوزن بما يكفي. لكن منفذ الإضافات الخام لن يعمل لأنه ليس ملفًا خامًا.

أوه! إذن يمكنني! يمكنني!!!

يا إلهي!

حسنًا، إذن شيء مثل

       <div class="product-purchase">
          {{#if product.subscribed}}
            <span class="purchased">&#x2713; {{i18n 'discourse_subscriptions.subscribe.purchased'}}</span>
            {{#link-to "user.billing.subscriptions" currentUser.username class="billing-link"}}
              {{i18n 'discourse_subscriptions.subscribe.go_to_billing'}}
            {{/link-to}}
            {{plugin-outlet name="after-go-to-billing" args=(hash product=product)}}
          {{else}}
            {{#link-to "s.show" product.id disabled=product.subscribed class="btn btn-primary"}}
              {{i18n 'discourse_subscriptions.subscribe.title'}}
            {{/link-to}}
            {{plugin-outlet name="after-subscribe-title" args=(hash product=product)}}
          {{/if}}
        </div>

وبعد ذلك يمكنني القيام بشيء مثل

<script type="text/x-handlebars" data-template-name="/connectors/after-go-to-billing/foobar">
    <div class="pfaffmanager-product"> ربما رابط باستخدام {{product.id}}</div>
</script>

أو يمكنك حتى إخفاء واستبدال جميع كتل المنتج تقريبًا.

ربما أبدأ في فهم منافذ الإدخال (plugin outlets) في النهاية.

تغييرات CSS

إذن، فقط قم بتغليف قالب s.hbs بالكامل داخل <div class="subscription">، وبعد ذلك يمكنك القيام بأشياء مثل

.subscription 
  {
    h1 {
    content: "Hello, world";
    background-color: yellow;
  }
}

هل يبدو ذلك صحيحًا؟ إذا لم يكن هناك شيء غبي حقًا هنا، فأعتقد أنني على الطريق الصحيح لتقديم طلب سحب (PR) معقول.

مرحبًا @justin، هل يبدو ما سبق قريبًا جدًا؟

سأراجع هذا مرة أخرى قريبًا وأقدم طلب سحب (PR).

أجل، أعتقد أن هذا يبدو قريبًا جدًا. شكرًا لك، جاي!

شكرًا لك. آمل أن أنهي هذا الأمر الحالي ثم أرى إمكانية إضافة هذه المنافذ أو ما شابهها من منافذ الإضافات.

وأعتقد أنه مع توفرها، يمكن لمكوّن السمة (مع بعض التعديلات البسيطة) إضافة روابط الاشتراكات الفردية التي أريدها.