Jump to content

Steven W.

Friends
  • Posts

    12
  • Joined

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Steven W.'s Achievements

  1. This was a misunderstanding, I got it crossed with something else. This can be closed.
  2. One example is if we update a user's usergroup through code, for example (rather than through the UI) and don't edit any other field. $changes will only have one entry, so the extra condition will stop the listener from firing.
  3. In Member.php, this: if( \count( $this->changedCustomFields ) > 0 OR ( \count( $changes ) > 0 AND !( \count( $changes ) === 1 AND isset( $changes['last_activity'] ) ) ) ) Needs to be replaced with this: if( \count( $this->changedCustomFields ) > 0 OR ( \count( $changes ) > 0 ) ) Otherwise, the listener will not fire in many cases where a user's data has been updated. In the v4, we could work around this with a save() hook, but in v5, hooks no longer exist.
  4. It's a bit cumbersome to hook into queries as-is because the current SQL query builder was custom-made and trips up on certain keywords. In v5, are you using an established composer package to build queries?
  5. I understand -- this is a suggestion. Would you consider it for v5?
  6. I've found the database app an interesting tool to build on. Oddly, there is no ability to download records. I thought about why this might be and looked at the database. Is it because the cms_custom_database_n tables use the custom database field id in the column names instead of using the custom database field's field_key value? This block in applications/cms/sources/Fields/Fields.php would need to be updated to replace hyphens with underscores: if ( \is_array( $values['field_title'] ) ) { /* We need to make sure the internal pointer on the array is on the first element */ reset( $values['field_title'] ); $values['field_key'] = \IPS\Http\Url\Friendly::seoTitle( $values['field_title'][ key( $values['field_title'] ) ] ); } else { $values['field_key'] = \IPS\Http\Url\Friendly::seoTitle( $values['field_title'] ); }
  7. I'm not sure if this has ever been implemented for some iframes, because the core -> global -> embed -> iframe template also doesn't have this, and is not related to the YouTube embed: <div class='ipsEmbeddedOther' contenteditable="false"> <iframe src="{$url|raw}" data-controller="core.front.core.autosizeiframe" {{if $embedId}}data-embedId='{$embedId}'{{endif}} allowfullscreen=''></iframe> </div> The same is true for Google Maps core -> global -> embed -> googleMaps: <div class='ipsEmbeddedOther' contenteditable="false"> <iframe height="450" {{if $mapType == 'place'}} src="https://www.google.com/maps/embed/v1/place?key={setting="google_maps_api_key"}&q={$q}" {{elseif $mapType == 'dir'}} {{if isset( $q['waypoints'] )}} src="https://www.google.com/maps/embed/v1/directions?key={setting="google_maps_api_key"}&origin={$q['origin']}&waypoints={$q['waypoints']}&destination={$q['destination']}" {{else}} src="https://www.google.com/maps/embed/v1/directions?key={setting="google_maps_api_key"}&origin={$q['origin']}&destination={$q['destination']}" {{endif}} {{elseif $mapType == 'search'}} src="https://www.google.com/maps/embed/v1/search?key={setting="google_maps_api_key"}&q={$q}" {{elseif $mapType =='coordinates'}} src="https://www.google.com/maps/embed/v1/view?key={setting="google_maps_api_key"}&center={$q}&zoom={$zoom}" {{endif}}> </iframe> </div> As well as Brightcove videos core -> global -> embed -> brightcove: <div class="ipsEmbeddedBrightcove"> <div class="ipsEmbeddedBrightcove_inner"> <iframe src="{$url|raw}" allowfullscreen webkitallowfullscreen mozallowfullscreen class="ipsEmbeddedBrightcove_frame"> </iframe> </div> </div> The plugin I made lazy loads all of these iframes.
  8. In 4.x, that lazy loading setting does not work on all iframe embeds, including but not limited to YouTube videos. Here is an example: Here is the code: <iframe allowfullscreen="" frameborder="0" height="113" src="https://www.youtube-nocookie.com/embed/XtX0Yn6sQtI?feature=oembed" title="Welcome to Invision Community Five" width="200"></iframe> This is not lazy loaded. The plugin adds loading=lazy to iframe embeds like this.
  9. The OP is supposed to say "Embedded iframes (like YouTube videos)" -- but it is no longer editable.
  10. Recently, while administering a large board running IPS 4.x, I saw that there are a lot of performance optimizations already in place which is great. I also saw a few instances of front and back-end performance issues, and in some cases, outright crashing; one of these boils down to 2 things: Embedded iframes (like tweets) do not use the deferred loading=lazy attribute, so on topics with many embeds, pages slow to a crawl or outright crash (esp. Apple devices) Embedded iframes seem to point to an iframe loader as a sort of internal proxy, which increases load on the server, particularly for large sites, probably predating loading=lazy I have implemented this optimization here: https://vbresults.com/downloads/speed-optimizations-ip-community-4 — and the IPS team can merge it into the core if they see fit. I'd like to expand on this by dis-intermediating the iframe where possible, but understand there are other reasons for it like the layout.
  11. Some time ago, I launched a mobile app with push notifications using a modified webview for vBulletin and XenForo. What the OP says is possible. But, the iOS app needs adjustments to pass the app review process. This was a necessity as, at that time, Safari Web Push did not exist. Now that it is implemented by Apple, the clear compelling reason to roll native out is that users know how to install regular apps. Later, I created PWA's for XenForo and used the full feature set of iOS shortcuts. In general, on the various communities that ran our apps, users preferred native apps -- PWAs were basically ignored. If you are set on a native mobile app for IPS using a custom skin, send a message to dev@vbresults.com. Steven vbresults.com - Enterprise IPS custom application and plugin development
×
×
  • Create New...