SparkDevNetwork / Rock

An open source CMS, Relationship Management System (RMS) and Church Management System (ChMS) all rolled into one.
http://www.rockrms.com
563 stars 345 forks source link

Obsidian Registration Entry Block Error Initializing Block #5883

Closed frogydiak closed 1 month ago

frogydiak commented 1 month ago

Description

I don't know if this is a bug but I just upgraded from v15.5 to v16.4, I stop on 16.4 per request from Simple since there is an issue with their system. I apologize if this is not the place to post something like this but all of our active registrations just stopped working.

It seems to be a javascript issue. image image

Actual Behavior

Actual Behavior

Expected Behavior

Expected Behavior

Steps to Reproduce

Issue Confirmation

Rock Version

16.4

Client Culture Setting

en-US

bmurphy-dev commented 1 month ago

@frogydiak I think your issue was solved by a simple cache clearing or overnight job/restart of IIS. this can likely be closed @chead4 image

chead4 commented 1 month ago

@frogydiak Please confirm that your issue is now resolved and I will close this issue.

frogydiak commented 1 month ago

No, it is not. I just cleared my browser cache and the error is still there. I need help please! We have 15 active registration right now and most of it are paid events.

@bmurphy-dev that is what I thought after the upgrade, everything looks good at my end until people actually reporting that they're getting an error. I tried to restart Rock, restart IIS but the error is there.

frogydiak commented 1 month ago

Any idea why rockPage.js would raise an error?

image

Here's one of our active registration: https://lakeave.org/registration/109/205/couples-date-night-061524

chead4 commented 1 month ago

@frogydiak Can you share a screenshot of your Registration Entry block settings/Advanced Settings and your registration template, Terms/Text - registration instructions?

frogydiak commented 1 month ago

@chead4 Please refer to: https://chat.rockrms.com/channel/events-registrations?msg=M8dE2fK6vGAtDWDnM

Here is my Registration Entry Block settings:

image image

Registration Template Form: image Note: The Allow SMS field is what I'm doing to prompt registrant to allow text messaging prior to v16 and triggers a Registrant Workflow to update the person's profile.

Terms/Text:

{% assign eventItemId = '' %}
{% assign childRegistrationInstanceId = '110' %}
{% assign childRegistrationSlug = 'couples-date-night-childcare-061524' %}
{% assign childcareAttributeKey = 'Childcare' %}

{% assign childcareRegistration = registrant.Registration | Attribute:childcareAttributeKey | AsBoolean %}
{% assign childcareRegistrant = registrant | Attribute:childcareAttributeKey | AsBoolean %}

{% if childcareRegistration or  childcareRegistrant %}
    <div class="my-3">
        <p>Please click on the button to complete your childcare.</p>

        <p><a class="btn btn-primary btn-lg" href="{{ 'Global' | Attribute:'PublicApplicationRoot' }}event/registration/{{ childRegistrationInstanceId }}/{{ eventItemId }}/{{ childRegistrationSlug }}" target="_blank">Childcare Registration</a></p>
    </div>
{% endif %}

{% capture currencySymbol %}{{ 'Global' | Attribute:'CurrencySymbol' }}{% endcapture %}
{% assign registrantCount = Registration.Registrants | Size %}

<p>You have successfully registered the following {{ RegistrationInstance.RegistrationTemplate.RegistrantTerm | PluralizeForQuantity:registrantCount | Downcase }} for {{ RegistrationInstance.Name }}:</p>

{% assign feeCount = registrant.Fees | Size %}
<table class="table table-striped table-bordered w-100 mb-3">
    <thead>
        <tr>
            <th style="width:60%;">Registrants</th>
            {% if feeCount > 0 %}
                <th class="text-center" style="width:20%;">Fees</th>
            {% endif %}
            {% if registrant.Cost > 0 %}
                <th class="text-center" style="width:20%;">Cost</th>
            {% endif %}
        </tr>
    </thead>
    <tbody>
        {% for registrant in Registration.Registrants %}
            <tr>
                <td>{{ registrant.PersonAlias.Person.FullName }}</td>

                {% if feeCount > 0 %}
                    <td class="text-right">
                        {{ RegistrationInstance.RegistrationTemplate.FeeTerm | PluralizeForQuantity:registrantCount }}:

                        {% for fee in registrant.Fees %}
                            {{ fee.RegistrationTemplateFee.Name }} {{ fee.Option }}
                            {% if fee.Quantity > 1 %} ({{ fee.Quantity }} @ {{ currencySymbol }}{{ fee.Cost | Format:'#,##0.00' }}){% endif %}: {{ currencySymbol }}{{ fee.TotalCost | Format:'#,##0.00' }}
                        {% endfor %}
                    </td>
                {% endif %}

                {% if registrant.Cost > 0 %}
                    <td class="text-right">
                        - {{ currencySymbol }}{{ registrant.Cost | Format:'#,##0.00' }}
                    </td>
                {% endif %}
            </tr>
        {% endfor %}
    </tbody>

    {% if Registration.TotalCost > 0 %}
    <tfoot>
        <tr>
            <td {% if feeCount > 0 %}colspan="2"{% endif %} class="text-right fw-bold">Total Cost</td>
            <td class="text-right">{{ currencySymbol }}{{ Registration.TotalCost | Format:'#,##0.00' }}</td>
        </tr>

        {% if Registration.DiscountedCost != Registration.TotalCost %}
            <tr>
                <td {% if feeCount > 0 %}colspan="2"{% endif %} class="text-right fw-bold">Total After Discount</td>
                <td class="text-right">{{ currencySymbol }}{{ Registration.DiscountedCost | Format:'#,##0.00' }}</td>
            </tr>
        {% endif %}

        {% assign paymentsSize = Registration.Payments | Size %}
        {% if paymentsSize > 0 %}
            {% for payment in Registration.Payments %}
                <tr>
                    <td {% if feeCount > 0 %}colspan="2"{% endif %} class="text-right">
                        Paid on {{ payment.Transaction.TransactionDateTime| Date:'M/d/yyyy' }} 
                    (Acct #: {{ payment.Transaction.FinancialPaymentDetail.AccountNumberMasked }}, Ref #: {{ payment.Transaction.TransactionCode }})
                    </td>
                    <td class="text-right fw-bold">{{ currencySymbol }}{{ payment.Amount | Format:'#,##0.00' }}</td>
                </tr>
            {% endfor %}
        {% endif %}

        {% assign paymentCount = Registration.Payments | Size %}
        {% if paymentCount > 1 %}
            <tr>
                <td {% if feeCount > 0 %}colspan="2"{% endif %} class="text-right fw-bold">
                    Total Paid
                </td>
                <td class="text-right fw-bold">{{ currencySymbol }}{{ Registration.TotalPaid | Format:'#,##0.00' }}</td>
            </tr>
        {% endif %}
        <tr>
            <td {% if feeCount > 0 %}colspan="2"{% endif %} class="text-right fw-bold">
                Balance Due
            </td>
            <td class="text-right fw-bold">{{ currencySymbol }}{{ Registration.BalanceDue | Format:'#,##0.00' }}</td>
        </tr>

    </tfoot>
    {% endif %}
</table>

<p>A confirmation email has been sent to {{ Registration.ConfirmationEmail }}.</p>

<p>If you have any questions please contact {{ RegistrationInstance.ContactPersonAlias.Person.FullName }} at {{ RegistrationInstance.ContactEmail }}.</p>

@bmurphy-dev suggested to restart IIS (again), clear anything I added to the block preHTML. I only have this originally in PreHTML:

image So, I removed the CSS and HTML, restarted IIS (again), cleared my browser cache, and it worked. But not in mobile devices. I can confirm this in both iPhone (Safari, Chrome, and FF) and Android devices (Chrome).

frogydiak commented 1 month ago

UPDATE! I just noticed that if I'm in the same network as the servers (IIS and SQL), I don't get the error. Nothing was changed in our firewall since or after the upgrade. Is there a key thing that was changed in v16 that might affect accessibility in terms of in networking? We do use CloudFlare but there are no rules or WAF is disabled. I just disable Argo Routing just incase that's what causing it. Also, first things I did is to Purge Everything under Cache. Same issue regardless.

Thoughts?

chead4 commented 1 month ago

@frogydiak

Thanks for sending that information above. No, there were no changes in v16.4 for networking. We took a look at the information that you provided and have a few more questions for you.

  1. For the Text/Terms that you have shared above, is this the Registration Confirmation Text? and is the Registration Instructions blank?
  2. On the Registration Instance, please include a screenshot of the Registration Messages section. We would like to see what you may have entered in Registration Instructions, Additional Reminder Details and Additional Confirmation Details.
  3. Do you have anything unique with currency in your environment?
  4. What is your global currency value?
frogydiak commented 1 month ago

@chead4

Thank you for looking at this with me. I have the urge to rollback to yesterday's checkpoint but I'll wait until you guys says "we don't have a clue what's going on."

  1. For the Text/Terms that you have shared above, is this the Registration Confirmation Text? and is the Registration Instructions blank?

Yes, it is blank: image The Text/Terms code above is what you're seeing in the screenshot.

  1. On the Registration Instance, please include a screenshot of the Registration Messages section. We would like to see what you may have entered in Registration Instructions, Additional Reminder Details and Additional Confirmation Details.

image Just plain text with p tag.

In the template side, under Confirmation Email, I noticed a line that says "16.4 fix" but I don't see any code to fix something: image

  1. Do you have anything unique with currency in your environment? Are you asking about the Global Attributes? I have not touched it since we are in Pasadena, CA so we are only using $ USD.

  2. What is your global currency value? Where do I see this settings? See # 3 above.

chead4 commented 1 month ago

@frogydiak

Yes, it was the Global Attribute I was asking about. This is the first time we have heard of this issue and we are not sure why it is occurring. I have tried to recreate using information you have provided in my registration template on v16.4 and I don't get any errors and I am able to register.

frogydiak commented 1 month ago

@chead4 Is there any changes in v16.4 that is related to Group placement or Group in Linkages? All of our registration is configured to an Event Type group.

Also, is it possible to ask someone from your team what causes an issue for this line of code in rockPage.js to raise and error:

try {
                        var blockComponentModule = yield module.import(blockPath);
                        blockComponent = blockComponentModule ? blockComponentModule.default || blockComponentModule : null;
                    } catch (e) {
                        console.error(e);
                        errorMessage = "".concat(e);
                    }
chead4 commented 1 month ago

@frogydiak There were no Group Placement or Group in Linkages updates in v16.4 that I could see after reviewing the release notes. I've been discussing the issue internally with the development manager and the team throughout the day and unfortunately we were not able to recreate the issue. At this time you may want to explore other options.

JimMichael commented 1 month ago

I really think this is a Cloudflare issue of some sort, based on a similar error someone else behind Cloudflare recently had. That would explain why it’s so rare (compared to the entire Rock ecosystem that has upgraded to v16 without issue).

https://chat.rockrms.com/channel/general?msg=Bu2fAtgNvQi7WbNnk

That would also explain why it works fine when you’re on the local network.

jonedmiston commented 1 month ago

@JimMichael that's an interesting thought. @frogydiak are you able to purge your Cloudflare CDN? Perhaps an old version of the .js files is cached in the CDN. If so you might need to ensure the CDN is varying the cached files using the full querystring.

frogydiak commented 1 month ago

@JimMichael I'm speechless! It turned out Purge Everything in CloudFlare does not work as what it says. I disabled it instead and it seems to be working now. I missed the option to disable cache earlier.

@jonedmiston Thank you! CloudFlare CDN must be serving the old .js file that causes the error. After making sure I don't get an error with cache being disabled, I created a rule this time to only serve cache if no query string and follow origin TTL.

@chead4 Thank you so much for your help today!

chead4 commented 1 month ago

@frogydiak That is great news that you got it working. Thank you to both Jon and Jim for jumping in as well. I will be closing this issue at this time.