Flags out members online status in all comments and reviews areas of any application!
Out-of-the-box support for the following IPS applications and areas:
Forum - Topics - Posts
Calendar - Event - Comments and Reviews
Downloads - Comments and Reviews
Commerce - Product Reviews
Gallery - Album - Comments
Gallery - Image - Comments
Clubs supported as the above items are merely passed on through to the club.
Note: For badges, the comment/review/post three-dot dropdown menu is often gatekept by numerous permissions. The badge is inserted within this structure. Typically, if the member group of a viewer allows them to report or share these comments/reviews/posts the badge will appear for them. Otherwise not. This gatekeeping may vary from app to app. If online status is vitally important to your community use one of the other two options.
For all other 3rd-party applications, as long as they are using the built-in Invision Community commenting and reviews templates this will slot in seamlessly. Note this explicitly means they are using the LITERAL templates as provided in the Core application; called directly from the Core application (as they should). If they copy those templates and include them within their own application, or roll their own versions, in either case this mod is not likely to work with those items.
Open to additional indicators. Just ask in the support topic (though no promises).
With Invision Community 4.4 this plugin is mostly no longer needed! Go to the Admin Control Panel - Members - Profiles - Profile Settings Tab, scroll to the bottom of the page:
Set that to global and save. That will add group formatting to user links to 99% of what this plugin did years ago...
So what does this plugin do now?
This plugin just looks for the edge cases that new internal setting misses and tries to patch them up. Some are doable, others not. It now covers:
Profile page header and member hovercards.
Messenger conversation participants block.
The messenger sidebar area is more or less out of bounds for name formatting. Those names appearing there are not template-output but constructed via the underlying messenger methods and are inserted into language strings directly. It could be done but honestly its way way too messy and not worth anyone's time.
Forum posts member info sections.
{member='name'} Template Output Plugins
These are shortcuts in templates that allow the template author to kick out a single member variable. Version 19 of this plugin now has a setting that will allow you to format these specific instances universally. You'll likely notice it firstly in the usermenu at the top of your community where your logged in name appears. If this, or any other newly-formatted name showing up somewhere is not to your liking you'll need to leave this setting off as this is applied to every {member='name} instance and cannot be filtered or targeted to exclude apps or sections of applications specifically at this time.
Be sure to hit the plugin's settings in the ACP before using it!
Modifications for improved Non-Amazon S3 service providers, primarily allowing for the correct download of attachments. Tested with Backblaze, Wasabi, DigitalOcean, iDrive, etc. Service Status ACP Dashboard widgets for Backblaze, DigitalOcean, and Wasabi.
New Region Setting on S3 Storage Settings:
If you are using DigitalOcean or Wasabi, toggle the new "set region" to on, enter the region you have set for your service, and save. If Invision Community displays a pop-up modal warning you that you are making changes and it will init a move process, choose the option stating I already moved the files. All this setting does is aid the IPS S3 code which defaults to Amazon us-east when manipulating S3 things when it cannot detect a region correctly and it needs to. If you get to choose and set a region for your bucket, enter it here. This is NOT essential, but it could be useful if you run into problems (provides certainty)
ACP Dashboard S3 Service Monitors:
Available for Wasabi, DigitalOcean, and Backblaze. If there is a hew and cry for Vultr that can be written out as well for a future release. Widgets display region and occasionally other service-specific availability (online, impacted, down) along with service alert and status text if available. For services with a history function regarding alerts you can configure how much is available in the widgets in the S3WB settings. In most cases the alert text is truncated with an expand toggle to see the rest if needed. See screenshots. Service logo buttons link to what would be your account or configuration pages at those services. Willing to add additional monitors for other providers if there is a need, and they have something to get on that front (iDrive does not).
Code-modifications allowing the correct downloading by users of attachments and Invision Community Downloads file downloads:
Simplified header information mostly that fixes signature-breaking structure present in the code. Note that this is due to alternative S3 providers not being fully compatible with the Amazon S3 calls IPS makes by default. For Backblaze I bypass all S3 calls and instead utilize the Backblaze API system for users to download files.
Why:
The built-in S3 file handling system in Invision Community is programmed exclusively for Amazon S3. Although this DOES work with alternative S3 providers, most of these providers have quirks of their own that break full compatibility with what IPS provides. I wrote out a hacky plugin years ago to address some of these things, and even though that plugin still works, the actual plugin itself has not been updated for at least three years and was last flagged as compatible for the 4.5x series of Invision Community. We're a long ways away from that time, both with the IPS codebase and the S3 providers themselves. As we near the end of the 4x line I thought it was time to get this all updated to something relatively stable and more useful than a plugin.
Testing:
I have tested Backblaze, Wasabi, DigitalOcean, iDrive, and many months ago Vultr (don't hold me to that one but it should be fine I just don't want to spool off $5 to test again). I should point out I DO NOT make any alterations to the majority of the internal IPS S3 code. Testing included:
Moved attachment files from LOCAL STORAGE to ALT S3 SERVICE
Uploaded a new attachment
Tested downloads worked correctly for attachments
Moved attachment files from ALT S3 SERVICE to LOCAL STORAGE.
Confirmed files were intact and downloadable.
Moved Invision Community Downloads files from LOCAL STORAGE to ALT S3 SERVICE
Uploaded a new Downloads file
Tested downloads worked correctly for Downloads files
Moved Invision Community Downloads files from ALT S3 SERVICE to LOCAL STORAGE.
Confirmed files were intact and downloadable.
Testing was usually with 10 to 20 meg PDF files and of course the usual embedded images in posts (which are attachments) and all that was fine. If you are uploading massively large files it is up to you to investigate whether 100meg or larger files work correctly with these systems. This gets into the realm of chunking and your PHP/Apache settings and the like. Not my problem and again, nothing to do with this code at all.
You'll also notice I did not test with CDNs. Way beyond the scope of any of this. The old plugin is working fine with CDNs if configured properly; you'll have no problems here either - again, the PRIMARY FUNCTION of this is to patch up attachment downloads and makes ZERO CHANGES to anything else.
Lastly, transfers from one S3 service directly to another S3 service were not tested. Again, nothing to do with this application. If you have a substantial amount of files to move between storage areas, you are better off using other dedicated tools and then flagging changes to the file systems as "I already moved the files". Backups are not a bad idea either...
The above testing was two fold: to confirm the attachments downloaded with S3 Workbench, and that the services nominally worked. The former was required; the latter is a courtesy.
Requires:
cURL for Backblaze (The 4x line still allows fallback to sockets if you are running an ancient cURL version but the BB stuff is all cURL).
You should know how to configure S3 in general.
Invision Community Downloads:
If you are using this IPS application, S3WB does work with those file downloads (and unlike the old plugin, no longer FORCES them to be public files) but if you absolutely MUST have those file downloads hyper-secure be sure to use your local storage or Amazon S3. If one of these downloads files is an mp3 it will probably load in the browser directly when the user grabs the "file". This is all the same code to generate the URL as regular file attachments, but it appears to be more sensitive for "reasons" that are not worth my time to track down. I know why this happens, but am unsure of its uneven application (pdf's I would image would load in the browser the same but they do not).
Additionally, some of the alternative S3 services out there do not do file-level access control (e.g. flagging a file as private) but instead do public and private buckets. I'd just point out that once a user has one of your "private" files, they can do what they want with it - including sharing it it, re-uploading it, and so on, and there is nothing you can do about it. So, again, if this is all hyper-important to you, just use local storage or Amazon S3, otherwise, really, it's fine.
Service Specific Notes:
All the settings below, including bucket names, are obscured/fake but the configurations are correct. Provided as a courtesy.
Backblaze:
S3WB uses the Backblaze API, not the Backblaze S3 implementation, for file downloads. An additional change is dropping the amz-acl header calls when a url is doing something with Backblaze - the service DOES NOT WANT ANYTHING TO DO WITH acl. Works great and I'd be fine recommending these guys. Crazy stock price crash since listing, though prob a buy opportunity right now (Mid-June 2023 it's $4 something, it's $5 something mid-July, expected to do $9 something).
bucketname: muhbucket
endpoint: s3.us-west-004.backblazeb2.com
access key: abcdefg1234
secret key: abcdefg1234
set region ON
region: us-west-004
Wasabi:
Solid. The one that started all this mess years and years ago. I'd consider them stable now; in the 99%'s, which is kilometers (or miles if you prefer) better than they were on initial launch. I still have a $5/month account with them (that's how early I got on the wagon).
bucketname: muhbucket
endpoint: s3.us-east-1.wasabisys.com
access key: abcdefg1234
secret key: abcdefg1234
set region ON
region: us-east-1
NOTE: If you are using s3.wasabisys.com for endpoint (which is us-east-1) you can skip the region setting here.
DigitalOcean:
Not the cheapest but some of you may be in the ecosystem so here you go.
bucketname: muhbucket
endpoint: nyc3.digitaloceanspaces.com
access key: abcdefg1234
secret key: abcdefg1234
set region ON
region: nyc3
iDrive:
Fairly new on the S3 front, as a company, around a LONG time. Very inexpensive.
Configure as follows: In your iDrive control panel, create a public bucket. Then click the gear icon on the bucket in the bucket lists. Get the PUBLIC BUCKET URL! - it will end with .dev - the part WITHOUT your bucket name is what you want
So if it is this:
https://muhbucket.w8q1.c19.e2-1.dev
Then when setting up the new storage setting this is what you use:
Bucket name: muhbucket
endpoint: w8q1.c19.e2-1.dev
access key : whatever
secret key: whatever
set region: OFF
With ALL of these services, please test. Your circumstances may differ and I offer no guarantees. Just covering my support posterior. Again, this a couple tweaks to allow attachment downloads mainly for alternative S3 providers. The core S3 code is still all IPS.
S3 Compatible Downloads Users: If you are happy with the old plugin, it still works - and remains working on many sites. The code here is a little bit better plus the Backblaze API downloads bypassing any S3 problems that might be encountered. The last version of S3CD was for 4.5 so if you are looking to get something more up-to-date, support the dev, and get some nifty support widgets, purchase this, make sure it is enabled, and then delete the old S3 Compatible Downloads plugin. That's it for upgrading. I should also note that I do not have any of the hacky http insecure link support here, and those of you with wacky bucket names need to get religion on that if you want to upgrade to this. I'll listen, but support on those fronts is gonna be a wait-and-see-maybe sort of thing. It's not 2015 anymore.
Status Widgets Heads-Up: These are scraping, parsing things - either the status pages themselves or the, becoming more rare by the day, rss/xml feeds. If any of these guys changes things up, the widgets will break (or rather the underlying data will). I'll be patching these things as they occur. This app has actually been running on my sites for a couple years now and I think I've had maybe one or two breaks in that time across all the widgets.
Invision Community 5: No idea at this stage what is and will not be possible here. Most of my applications will be new purchases for the new framework but THIS ONE, if it is upgradable to the 5.x line, will just get the 5.x version added in to the mix for this purchase.
Advertisements Anywhere with CSS Targeting for Placement
Built-In Advertisements After Every X-Number of Forum Posts and Forum Topics
Built-In Advertisements After Last Post in Forum Topics
Built-In ads.txt 1.1 Management with Output
{specificad='#'} Template Output Plugin to Always Place a Specific Ad Where You Want
Head Block Textarea for You to Insert Your Ad Provider JavaScript Primer Scripts
Works Directly with Invision Community Built-In Ads System with Enhanced Display
Top of the Page Ad Placement Option
New in Version 2.0.0: Template Tag Parsing in your Advertisements!
With certain advertisement applications and plugins no longer working with forthcoming versions of Invision Community (and PHP 8 requirements) for various reasons, I was approached by numerous people to maybe take a run at covering what those things did in a new application. When I realized this would affect a site I am doing work for directly that left me little choice but to actually do this.
This has been tested over the last few weeks (circa October 2022 for anyone reading this down the line) not only on my local development system but also one of my live sites for basic functionality as well as an independent site running a fairly large stack of advertisement loadouts including all the x-before options and Simple CSS advertisement placement.
Simple CSS Advertisement Placing
Place ads anywhere you like with CSS targeting. Seriously. If you can target it (correctly...), the ad will get splashed in. All ads are parsed into page content prior to output. HTML, image, and JavaScript ads all tested and working great with this method. All ads loaded are loaded exactly as all other Invision Community ads are loaded, respecting dates available, groups that can view, and so on (this applies to all ads used in Ads Everywhere btw).
Ads After X-Number Placing - Topics and Posts
Don't feel like CSS targeting and just want ads all up in your forum topics and posts? Just like it sounds. Radio check-dots for selection of after numbers and away you go. It's that easy. NOTE: Forcing an ad after the last topic or post on a page is one of the first updates this application will get. If I keep adding features this would never get released... No worries - it'll happen (or you can get creative with Simple CSS ad targeting in the meantime).
Ads After Last Post in Topic
Although you CAN use the CSS targeting option to set an ad after the last post most people seemed to want a direct option to deal with this. 2.0.0 adds that option.
ads.txt 1.1 Management and Output
Full control and management. Support for OWNERDOMAIN, INVENTORYPARTNER, CONTACT, SUBDOMAIN, MANAGERDOMAIN, and exchanges of course. If you have only a few entries, use the table database management features. If you are under a single advertisement management regime and they provide you with a weekly or monthly ads.txt loadout that you are to use (and these can be MASSIVELY long), save your self oodles of trouble uploading said file to your server all the time and instead use the custom block that is here for just that reason. Preview the file as it will be output right there in the ACP.
When it is time for output if you are on IPS Community in the Cloud, ads.txt is output automatically for you when requested. For those of you self-hosted, the same is available though if you do not have rewrites enabled or rewrites is not set in a certain way, the automatic output will fail. No worries! Everyone (CIC included) can always download the file for backup purposes and self-hosters can use it to upload to their server themselves. Or, an exclusive feature for self-hosters, they can write the file out directly to their server from the ACP. No muss! No fuss!
{specificad='#'} Template Output Plugin
If you like you can load an ad based on its ID number instead of loading by location. Location loads will take all advertisements available under that location flag and choose from them based upon certain choices you make (oldest, random, least impressions, etc.). You can use this output tag to always no matter what load a specific ad in a specific location. This still respects the usual advertisements checks on group permissions to view, dates made available, etc. It is just another way of loading an advertisement.
ACP Head Block
Simple textarea for you to stick in you JavaScript ad providers primer code. This is usually a single code block though sometimes more than one such as loading an external script and then a script block that does the actual ad priming, that does the setup and inits for the ad network in question. This area will save you from editing your global theme templates to insert same. Just do so here instead and if you ever need to change things come back here and save yourself template editing. See the notes below. Note you can also stick anything else you need in the <head> section of your global template here - fonts, other JavaScript loads, etc...
Enhanced ACP Advertisements View
When viewing all advertisements in the ACP, you will now see the location or locations you have applied to each ad, the ID number of the ad itself, and on hover over the locations, the location name you would use when using the {advertisement=""} output plugins in your templates.
Top of Page Placement
Might not be for everyone but I know at least one person asked about this. Yes. The very top of the page. This is like all the other default advertisement locations; treat it as such.
Template Tag Parsing
INVCOM template tags such as {member="..."} and so on are as of version 2.0.0 parsed in your advertisement code.
NOTES
1) When using advertisement providers that provide you with JavaScript code to insert in the <head> area of your global template, you MUST add the async flag to those inserts e.g. <script async whatever whatever....>STUFF</script>. This is best practice anyways.
2) When sticking in JavaScript ad blocks and toggling their use across multiple areas on the same page, if those ad blocks share a single id you will probably run into problems. This has nothing to do with Ads Everywhere; it is just basic Internet Ads 101, but I want to get ahead of support questions on this right now. In other words, I'm glad to be helpful, but be helpful to yourself and read up on how JavaScript ads work before coming to the support topic and asking why things aren't working.
3) When using the Simple CSS advertisement placement option, if your CSS target is syntactically wrong or flat out misses the target, nothing will be inserted. Try, try again! You can also ask (nicely...) in the support topic. Others, and myself, will likely be glad to help (maybe not immediately though - patience please).
4) Using Simple CSS to insert ads into the page, depending on the advertisement html code inserted and the location you stick it in, may interfere with some page formatting and JavaScript in place already. You may need to adjust your targeting, your html ad code (wrapping JS or otherwise) or pick a better location. Feel free to take this to the support topic if you encounter it.
5) This application has nothing to do with any ad network loading troubles or CORS problems you may see in your JS console when inspecting a page on your site. Those that know, know: ad networks utilizing JS and real-time bidding will pop in stuff that will just error on load for an insanely large number of reasons.
6) There are some advertisement providers that now handle everything - yes, that means everything, including placement on your site. If one of thee guys ends up being your provider, you will no longer need to use this application. They will handle the CSS-based insertion of ads in various places on your site themselves. Make sure you need to insert ads anywhere before purchasing this app!
Punch up those member hovercards!
Expansive backgrounds!
Yearbook Quote feature!
Let your members flash some personality and drive member engagement!
Profile Fields available for use on the hovercard!
This mod swaps out the usual member hovercard for a new template; one that emphasizes appearance and personality instead of just dumping profile information in a list which they can get by just visiting the member's profile anyways.
What's there?
Big full-sweep coverphoto (support for default as well), all the new badge stuff, registration, online status, and more.
Where's that image coming from?
That's the member's coverphoto! If they don't have one the Invision Community default profile background stuff is used.
Yearbook Quote Feature?
Although I debated sticking in a member's status update as the centered text, there are too many reasons not to, including not everyone is using status updates, often times those updates are throw-away notes about nothing, updated rarely, and so on. With a specific quote feature your members have the opportunity to flash some personality - be it describing themselves, Tinder-like blurbs, using a quote from a movie or video game, and so on.
Why not use the About Me feature from the profile?
That's a full editor field - images and lots of other things can go in there. This is meant to be simple and direct.
Can I change that name to something else instead of Yearbook Quote?
Yep! In settings. Hoverboard Quote, Hovercard Quote, Quote, Say Something, Tinder Blurb, whatever... Call it what you want!
Is this stuff also on the profile pages?
Yes - it's also where they add/edit it. Click the gear icon to have at it.
Can I use the Yearbook Quote feature but not the new fancy hovercards?
Sure. You can toggle on/off the use of the new hovercards in settings. To completely disable everything just toggle the plugin off in the ACP.
Profile Fields Too?
You bet! Select which ones to pass through to the template (admin-only and editor fields excluded at the moment). See the support topic for how to customize the display of these. Fields with short (length) text will work best here.
All the little content bits are in flex-boxes, including your profile field adds. Look at the screen shots to get an idea how they will flow in.
What are "Click Cards"?
You can actually disable the hover functionality of these member hovercards. When you do that, users will need to click the member avatar to trigger the display of the card. When the cards are set to hover-mode, they appear when the mouse cursor hovers over a member avatar and these will, since it is a mouse hover action, only appear to desktop users - tablet and phone users never see these cards. When you toggle the cards to click functionality that covers tapping and these will now display to tablet and phone users just fine. This is a usability decision to be made by you and you alone. If you ask for my opinion I'd consider how many of my visitors are tablet/phone based before enabling this feature. If you have more mobile than desktop, go for it! You can always turn this off later. Version 5 adds the ability to apply this functionality to the user names as well.
Moderation?
Of course. If a member has not entered a quote yet, the box will appear only that member and no one else (mods and admins included), with text telling that member to add a quote. Once a quote is entered, the quote will appear to everyone AND mods and admins will have to power to also edit those quotes. Mod permission is being able to edit profiles, if a mod has that, they can edit these. And yes, mod/admin actions on these items will appear in the Moderators Log in case you have some mods/admins deciding to mess with people instead of actually correctly moderating inappropriate content (whatever that is for your community...)
Anything for moderators?
Yep! Banned status, posting restrictions, and the like will display on the hover card to the member themselves if they are viewing their own, any moderator with the power to view reports, and all administrators.
Anything in the ACP?
Other than the plugin settings and entries in the Moderators Log, no, nothing in the ACP Member view or anything like that. All moderation takes place on a member's profile page in the Yearbook Quote block. If you have a member who continually abuses this quote feature by inputting stuff you don't want, the solution isn't adding more permissions to disable this feature on a member by member basis - the solution is to ban the member.
Anonymous Users?
Yes, accounted for. Anon users can browse with little worry of being "found out".
Customs Available?
Sure! Some communities may want some community-specific information to appear on the hovercard. Not a problem. Expect to pay a (nominal one time fee) if it is something that can benefit all users of this mod in which case you are sponsoring a new feature for everyone (and paying to get it done now instead waiting for me to get around to it) or a (one-time fee X 2) for a mod specific to your community only, provided it is doable.
Set Any Text Field in a Pages Database to be Searchable!
How Does This Work?
During the indexing process for an IPS Pages database record the field you have flagged as "Content" is processed by the IPS indexing method. After that is complete, this plugin checks that the overall item is indeed a Pages database record and looks for text, text area, and editor fields that are also a part of the record. If those fields have been flagged by you with this plugin to be included in the search index those areas are then collected, stripped of HTML elements to retain only the pure text content (Editor fields only), and then appended to the end of the initial indexed data (that field you have marked as "Content").
That field content is now in the search index and, naturally, searchable!
For example if a Pages database content element consists of "Today is a good day to die!", and you have an additional text field where you allow someone to enter a day of some kind, for example, "Penguin Awareness Day", if you flagged that extra field as searchable, the indexed text for this content item will be:
Today is a good day to die! Penguin Awareness Day
Without the ability to flag these extra fields as searchable and then append their contents on to the content item search data entry, searches for Penguin Awareness Day will return nothing at all, which makes the use of Pages databases much less useful when you can only search for the fields flagged Title and Content.
When does this actually apply?
When records are saved (initial creation) and when edited of course. Also during search index rebuilds.
What happens if I remove this plugin or disable it?
Those additional fields will no longer be indexed. Any of those fields previously indexed with records will remain in the index until the record is edited again or you rebuild the search index. On edit or re-index, that additional appended text will not be indexed.
I can't stop you or your other admins from doing... interesting things. This plugin does EXACTLY what it says, no more, no less. The plugin also is not psychic so when one of your admins decides to do some server work and disables this (and other plugins) but people are still making entries on the front end into a Pages database where you had extra fields marked as searchable the result will be pretty much what you expect...
What happens if IPS decides to finally include this functionality themselves?
Remove this plugin, do whatever is required of the new IPS functionality, rebuild the search index. This plugin only appends the additional text to the search index entry (which for Pages database records is whatever the content of the field flagged as "content" is, minus HTML code) and makes no actual changes to the record content itself.
Why hasn't this been included by IPS before?
Appending specifically? Permissions. Searchable fields in general? A structural challenge with the overall IPS content model.
Explain.
Every database field can have custom permissions. For example, you can create a bug tracker where there are publicly viewable fields and then other fields that only staff can see. However, there is only a single search index content entity that is searched - not separate searchable entries for every field. That means that every field you append to the search index with this plugin MUST be a field you want everyone to be able to see and search. When viewing a record those field permissions will of course apply, but with this information appended to the single searchable index entry you risk the chance that a search result will display with that formerly staff-only field and now everyone will know your admins are calling other members "buttheads" or worse. Be careful!
For IPS to solve this, they would need to treat all additional text, editor, and text area fields as totally separate entities to be inserted into the search index. The management of that endeavor will require some engineering - it's doable but requires some choices to be made along with how to present the final search result. We didn't get additional searchable fields in the 3x line, not with the initial 4.0.x hotness, and with 4.3, 4.4, 4.5 now it still appears to be a distant dream. I got tired of waiting. For my use case I can write a custom app and deal with the problem my way, or I can just use Pages, append the two text fields I need searchable to the main content field with this plugin, and call it a day.
Future development?
Looking at filtering out content from being indexed by entering a regex equation. If the content of the field matches your regex, this plugin will not append it to the search index entry. This will cut down on search index spam if the text fields you are appending often contain repetitive entries and you'd rather just index out the more unique ones. Maybe numbers?
August 2020: Those are still on the table but with only a handful of purchases all these years it's not a priority. If someone wants to throw some money at me to sponsor those features feel free. I actually use the regex tweak on one site but it's currently a simple hardcoded hack.
OK, great, but I already have a massive Pages database. I installed this and set the fields I wanted to be indexed in this database. I get that new records going forward will have the field values added to the search index but what about old records?
You can click on an option in the plugin settings and fire off a re-index process for the database you select. This will re-index everything in that database and with this plugin enabled and those fields flagged as searchable, those fields will be attached to the content item search text and included in the search index.
Add an image to every Invision Community Pages Database Category for use in your templates!
Any settings?
Nope. Just install and go. When editing/creating a category in an IPS Pages database this application appends a new tab where you can upload an image. That's it.
Where do I add these images?
What I just said. When you create/edit a Pages Database Category, there is a new tab where you can upload an image.
And how do I use this? Any code examples?
Images are stored wherever you have set the Pages Category Images file handler set to store them and you can access the image anywhere the $category variable is available to you in Pages templates.
$category->pcimage = The local url to the stored image. You will rarely use this by itself as it will return "uploads/monthly_07/thisismyimagename_34erjfhrufhdheh.jpg" or something along those lines.
{file="$category->pcimage" extension="pci_PagesCatImages"} = The COMPLETE url to the stored image. "https://myawesomesite.com/uploads/monthly_07/thisismyimagename_34erjfhrufhdheh.jpg". Just sticking this in a template will output that as a line of text.
<img src='{file="$category->pcimage" extension="pci_PagesCatImages"}'> = The image will be displayed in your template at this location at full size.
If you are in a record view template where you have the $record variable, just swap out $category in the above code for $record->container() - for example:
<img src='{file="$category->pcimage" extension="pci_PagesCatImages"}'> becomes <img src='{file="$record->container()->pcimage" extension="pci_PagesCatImages"}'>
You get the idea. From here you can format the image with css, use it as a background element, and so on.
NOTE: It is ESSENTIAL when using the {file=...} code that you include the extension="pci_PagesCatImages" within. If you are storing your PCI images on Amazon S3 or any other external server, that extension line ensures you are getting the correct url. Without that, the url generated will always point to your own webserver and externally-stored images will not be linked correctly.
Why am I using this again?
You can give every category its own image. Format it like an icon and stick it next to the category title in your templates. You could create a large section background for your categories using this image. And so on...
Why $category->pcimage and not just $category->image?
If IPS ever adds something like this to Pages database categories themselves I predict with 99.999% certainty they would use the word "image". I added the "pc" in front to hedge against that potential future conflict.
What happens if I disable this application?
Nothing in your templates will break completely, you will just have missing images in those locations (with whatever the browser sticks in to indicate a broken/missing image).
And if I uninstall this?
All of your uploaded images will be deleted of course. Consider that you will be editing your Pages templates to add calls to these images too. You'll need to edit your templates to remove those calls after you uninstall this.
What if I change the file storage handler for these images from, for example, local storage to S3?
The files will move just fine, and normally there will be no broken links. However, the Pages databases page in the ACP, and every database's category page in the ACP has a button at the top of those pages that will let you reset the Pages Category Images datastore cache.
I have a broken image displaying and when I look at the page html code the img link says NOIMAGE?
99.99% chance you do not have an image set for that category. You should set one.
Did this used to be a plugin?
Yep. Now its an application with a proper file handler.
I have the Version 1 plugin now should I uninstall that or...?
DO NOT UNINSTALL THE PLUGIN! You'll lose all of your files and have to re-upload them again. I've set up the install routine for the new application to handle it all for you.
Install the app just like any other app and it will automatically take over the file handling from the piggybacked core_Attachments handler, remove the plugin uninstall routine that would normally delete your uploaded images, and then uninstalls the plugin for you. If for some reason you install the plugin again afterwards you're on your own... Seriously, delete any copies of the plugin you have lying around. Only bad can come from those being used after you've installed the app.
A wide assortment of modifications to improve the search and stream experience including highlighted, navigable, search result terms on content pages, highlight text in some content areas to search that text, more precise search result snippets, faster results, and more.
Searchlight
Highlights searched-for terms on search results content pages. When your users click a search result link, the content page that loads with those results will have their search terms highlighted! SSSR has some major improvements over the earlier standalone Searchlight plugin. Marked terms can be navigated via a side-page navigation element that also notes how many marks there are on the page and which mark is currently navigated to. Admins can configure not only the mark styling but create separate styling for the "active" mark on a page. Version 4 of SSSR incorporates major improvements into the marking routine
I've reworked the Searchlight functionality to effectively remove any double marks that would break the Searchlight highlighting and navigation, added more formatting options for the search mark navigator, and a few other things. SSSR now includes a toggle to turn the marks on/off and also will no longer mark out common small inconsequential stop words (the, a, an, etc...) when marking words separately. They are still marked when the full query term is marked out. Version 8 tightens up (shrinks) the size of the navigator a bit, is faded until hovered over on desktop, and also has a magic wand to hide/show the navigator (see screen shot for latest - gif above is older). I still want to do more here but we'll see if I get the time.
Select-a-Search
On comment content, which are any commenting areas in the Invision Community suite, most notably Forums, IPS provides a feature where you can select text and are then presented with the option to add that selected text as a quote in a new comment/response. SSSR piggy backs on that feature to allow you to instead search that selected text instead! Admins can just add the single option to search for the selected text as individual terms or as a direct phrase (quote).
Better, and Faster, Search Results Snippets
Invision Community pushes out the ENTIRE content item for every search result. This is then truncated down in your browser via JavaScript to a handful of lines. If your searched-for-term happens to be in those first few lines of remaining text, it will be highlighted on the search results page.
SSSR does two things to mitigate this. Firstly, it will truncate the text on the server prior to pushing it out to the page. For very large content items this will massively improve page loads. Additionally, the my truncate process first looks for a matching term from provided search term and then truncates based on that position within the content item text. This works most of the time to provide search results that not only display fast but also provide content that contains at least a portion of the searched-for terms. SSSR skips common English stop words (Elasticsearch list, to skip common things like 'a', 'the', and so on) when looking for something to match. There are some edge cases so expect a few misses here and there with snippets containing matching terms.
QuickSearch Filters
INVCOM will display every possible search content area available to the user in the drop down filter. You can control which of these actually appear. Limit the choices here for a cleaner, more-focused user experience, remove little-used Pages databases, and so on. This only affects the QuickSearch top-of-the-page stuff - not the advanced search section where all options remain.
Latest Searches in QuickSearch
Option to present the latest searches from your community along side the QuickSearch dropdown menu. Searches are run through the word filter to prevent any naughtiness from spilling over (provided you are using the word filter).
Display Modifications
When users make custom Streams, all of their choices for content appear in the description underneath the stream name. That can be a rather large amount of text. SSSR provides an option to truncate all that down with whatever remains available under a 'read more' click. See screenshot.
Gallery stream results can be quite heavy, often times loading in 15 or more images per Gallery item. That's a lot of weight for a page. SSSR let's you truncate that all down to whatever level you are comfortable with.
When users are on the advanced search / search results page, they probably do not need to be told in the page title that they can 'Search the community'. SSSR provides an option to kill that and replace it instead with the terms searched for with the same appearance as the page title.
Notes
Make sure you toggle the Searchlight feature ON in the plugin settings. Same for Select-a-Search.
Searchlight should work most places in most apps but Gallery has been specifically exceptioned OUT due to the post-pageload image popup modal. I might come back to that later.
IMPORTANT! For select-a-search, this piggy-backs on the built-in IPS quote highlight function. That feature ONLY fires if a user is able to actually quote something in a comment area. That means it will not fire for guests if you do not allow guests to post, or any forums/topics where the member is not allowed to post, locked topics, and so on.
SSSR is a reluctant sequel to the old Social Search application I had. I will probably be merging some relic stuff still remaining there with this plugin into a new app for the 5x series which will require a rewrite and may limit what is possible. Just a heads up.
Track and display all moderators who were online over the last 24 hours!
All names link to user profiles
Names can be plain or group formatted
Font size adjustable via selectable IPS classes (ipsType_normal, medium, small)
Set a maximum number of names displayed with any overages appended as a count.
Actual count appears in the widget title.
Widget usable anywhere.
You can choose which member groups are allowed to see this widget.
You can EXCLUDE specific member groups from displaying in this widget.
Names can be sorted alphabetically or by latest visit to oldest visit (see notes).
Coded for zero-impact on page loads!
Notes:
1) Zero-impact means zero impact. The underlying member data is generated via a task that runs every five minutes. That means a single database query for this data every five minutes, not on every user's page load.
2) This does mean that if you adjust the sort options or the groups from which moderators are selected, you will need to wait up to five minutes for these changes to appear in the widget.
3) By and large it really should not matter how many names you choose to display in the widget, but if this is creeping up towards 1000 or more, the impact will not be from the underlying widget code itself, but merely you pushing out 1000 or more names and links to the page. The widget is cached as well but you still might be pushing too much to the browser. Your site, you test! Test and adjust as needed. Outside of that single database query every five minutes, the rest is all fetched from whatever you have set for your Data Store.
4) Anonymous moderators are NEVER INCLUDED!
5) Additionally, if you are displaying names from latest visit to earliest, the timestamp used to set this is the initial session start time, not the user's latest activity. This means when a user toggles off their anon status they are likely to appear somewhat down stream in the list of names in the widget rather than right at the top. A slight hedge against stalkerish behavior.
6) Note this plugin not only allows you to display all members online from various moderator groups, but also those individual members you have granted some moderator powers to!
7) Group selection is based on primary AND secondary groups, meaning members who have a moderator group appended as a secondary group will be included!
Track and display all members who were online over the last 24 hours!
All names link to user profiles
Names can be plain or group formatted
Font size adjustable via selectable IPS classes (ipsType_normal, medium, small)
Set a maximum number of names displayed with any overages appended as a count.
Actual count appears in the widget title.
Widget usable anywhere.
You can choose which member groups are allowed to see this widget.
You can EXCLUDE specific member groups from displaying in this widget.
Names can be sorted alphabetically or by latest visit to oldest visit (see notes).
Coded for zero-impact on page loads!
Notes:
1) Zero-impact means zero impact. The underlying member data is generated via a task that runs every five minutes. That means a single database query for this data every five minutes, not on every user's page load.
2) This does mean that if you adjust the sort options or the groups from which members are selected, you will need to wait up to five minutes for these changes to appear in the widget.
3) By and large it really should not matter how many names you choose to display in the widget, but if this is creeping up towards 1000 or more, the impact will not be from the underlying widget code itself, but merely you pushing out 1000 or more names and links to the page. The widget is cached as well but you still might be pushing too much to the browser. Your site, you test! Test and adjust as needed. Outside of that single database query every five minutes, the rest is all fetched from whatever you have set for your Data Store.
4) Anonymous users are NEVER INCLUDED!
5) Additionally, if you are displaying names from latest visit to earliest, the timestamp used to set this is the initial session start time, not the user's latest activity. This means when a user toggles off their anon status they are likely to appear somewhat down stream in the list of names in the widget rather than right at the top. A slight hedge against stalkerish behavior.
Track and Display Content Viewers in your Invision Community
Socially so other users can see who's viewing what.
Display viewers as member avatars or names.
For moderation to see what content, and when, members are viewing when trouble occurs.
Widget displays for social display of this information.
Modal pop-up tables for more detailed views.
ACP action to wipe all logs.
Forums-per-Topic action to wipe just that log.
ACP member views has member's views right there for perusal.
GDPR-compliance! When a member wants their data, and you use the ACP tool to download such, their member views are right there as well.
More! See screenshots.
NEW! Pages application now supported! Both Custom Page views and Database Record views.
NEW! Blogs application now supported! Blog entry views.
Viewers is the 4.5 revision of Who Viewed the Topic plugin - enhanced with front end new views, ACP member view, tools to wipe logs, and GDPR compliance! This is a complete re-write of the old plugin - it's an application now.
Users of Who Viewed the Topic can rest easy - installation of this application will AUTOMATICALLY import that data AND remove the plugin for you. The two (three?) users of Who Viewed the Blog should leave that installed. When Blog support comes in a later version the same import and removal will occur.
Note on GDPR
It's going to be up to you to notify your users that this data is stored. Just add it to your terms and conditions or privacy policy or what have you. You probably should have been noting that all these years... Still, as usual, laws and restrictions on this stuff vary from country to country and it's not my responsibility what you do with this data. This may be a simple social thing at its core but the fact remains you are tracking content they view. It's pretty normal overall, routine even, but since I went ahead and added in the GDPR support, you may wish to make an effort and formally let your users know.
Heavily Traffic Site? Thousands of concurrent users?
Shouldn't be a problem. The modal pop-up views are single instances triggered by user-input (clicking the button) so no page-load worries there. The widgets you have an option for cached and non-cached. So use cached 😃. I've also have an index on the table to make things perkier as well. If this fits your site's profile and there are still problems, just yell and I can probably gin-up a datastore fully cached option.
Transform your ACP with customizable login page, custom ACP theming (light and dark)!
Self-hosting server ACP dashboard widgets to track server load, memory, storage space, more!
ACP dashboard widgets for tracking system errors, moderator and admin logs, members online, more!
IPS patch alerts on the dashboard, PM members from their member ACP page.
Tasks and wipe caches quick links. ACP Journal.
Loads of improvements to the ACP experience.
ACP Theme Customization
Choose new fonts for pagetitles and content in the acp. (I recommend Inter for pagetitles and Roboto for text)
Header, primary, and secondary menu background colors fully configurable.
Header, primary, and secondary menu font colors fully configurable.
Change background color of message information and message warnings.
Option for tighter table row spacing throughout to give you more content in the same vertical space.
Page fade-in animation effect for ACP content for an app-like feel (quite subtle though)
Active (currently selected) primary menu icon set at full opacity so you can tell it is actually active.
Secondary menu options have mouse-over hover effect so you can actually see what you are about to select. Selectable area increased from just the text to the entire row as well.
Option to bold text secondary menu option headings.
Un-sticky the ACP header to gain more screen-estate when scrolling.
Remove the dashboard widget header backgrounds to lighten their heavy appearance.
Change the selector toggles from rounded to squared.
Change animation speeds on dialog popups - strongly recommended as these often act as speed limits as you wait for slow animations to end.
Compact Menu Style which shrinks the width of the side menu and reduces the icon sizes providing more menu stuff in less space.
Option to remove the visit site and support text bits and leave just the icons in the header.
All menu and header icons now have a hover enlarge effect.
Change the color of the default ACP Orange button!
Add a separate favicon for the ACP!
Jump to top of page button, lower right corner of screen. Very faded, and all CSS.
General Improvements to the ACP
Plugin version numbers appended directly after name.
Option to display theme ID numbers after theme names (useful for designers mode to figure out which theme is which in the file directory)
S3 storage handlers display endpoint and directory structure in their listed names allowing you to actually tell the difference between various S3 entities.
Your most online stat is ALWAYS being tracked, not just tracked when the stats widget is on a page on the front end!
PM members from the member page!
Member view tweaks including moving the tabs from the center to the left.
PHPInfo link on the support page now fires off in a new tab/window instead of hijacking your ACP session.
Core Software Upgrade Log view. IPS tracks and logs when you update the core software but never presents that information. Now you can see it if you need to review when something may have broken with an upgrade in the past.
Login Page
Add a background image or just change the color.
The login box is totally customizable as well including transparency and the option to add additional text.
IPS icon displayed by default.
Dashboard
Dashboard title now replaced with current online users count or registrations today or registrations this week or custom text.
Add custom text after (or before) the version number.
Optional buttons alongside the dashboard widgets add button. Wipe Caches. Tasks. Admin Log. Moderators Log.
Wipe Caches saves you a trip to the support page - just click and you are done!
Tasks is a quick link to the tasks list where you can manually run any task you need to or spot hung tasks.
Admin and Moderators log buttons are quick links to those pages.
IPS News Dashboard Widget formatted to not waste so much space.
Online Admins widget now with avatars! FYI this widget shows online ACP users, not admins who are online on the front end.
Patch Alert Button
3rd Party Apps and Plugins that use the update push functionality still only indicate updates on the application and plugin pages in the ACP and unless an admin has business on those pages they are rarely seen. Spacious ACP lets you add buttons to the dashboard to handle this. When a 3rd Party app has an update, the button will appear on the dashboard - click it and a dialog will popup showing the the app, when it was updated, and if the app author has provided it, an update button that will take you to the download page to get it. Of course, that is just a link to the item - the user will still need permissions to download it (for example, many times this link just goes to the Invision Marketplace listing)
Invision often pushes out silent patches. These are not announced publicly and are only available if you re-download your copy of the suite from the client area or if you hit the support tool - something isn't working - if a patch is available it will list it there. This doesn't seem ideal so like the 3rd Party update button I've included a button for these silent patches. If a patch is available, the button will appear on the dashboard. Clicking it opens a dialog window listing what the patch addresses and a button to apply it. Although any ACP user will see this information, users will need permissions to apply patches/updates in order for the button to work. Look a screenshot or two above for an example of the patch available button appearing and here is the pop-up:
In both the above cases, if there are no updates, no buttons will appear! Standard permissions apply to the apply patch button so restricted ACP users cannot mess about.
New Dashboard Widgets
Spacious Widgets are flagged with a block "S" in the Add button dropdown list. The downward pointing triangles next to the widget titles can be toggle on or off in Spacious ACP settings. The 90-Day graphs that some widgets have are configurable for fill style, color, line width, etc. They will by default pull whatever color your ACP header is set to.
ACP Journal
The IPS Admin Notes widget has just a single, over-writable block of text and that never seemed good enough for me so I wrote this one. Stored admin notes! Records the note, who wrote it, and when they wrote it. Dashboard widget display a configurable number of them at a time (last three to seven I believe) with few display options available. The full journal is available in the Spacious ACP menu just underneath settings or view button link on the widget itself. Full journal is searchable by entry content as well. No editing or deleting - this functions as a one-way log intentionally.
System Overview
Real-time server load, IPS installation size, IPS database size, memory available (or free), storage space available, options for Community in the Cloud customers, database details including your database engine and character search limits. Graph colors match your chosen ACP header colors with option to override. When memory/server space becomes critical graphs go red! You configure when the memory and server space warnings kick in! Details button for more information - server location map if Google Maps, etc. is enabled. That little blip you see on the right in the diskspace rail in the screenshot above is the size of your local IPS installation (anything within your IPS directory plus your IPS database size) - you get both the actual numeric size and a graphic representation against your drive. At a glance see if your server has been rebooted! Total uptime displayed as well.
The real-time stats update every two seconds and will continue for about 10 minutes of time if you just stay on the dashboard page watching. That 10 minute timeout is intentional so that if you just forget you are logged into the ACP and are on this page, the page will be able to time-out your session. IF I let this go forever and you never leave this page you would never be logged out.
System Errors
Lists the last five system errors so you can actually see what problems are occurring under the hood. Those last five errors are on a look-back basis meaning the five most recent system errors that have occurred between three to seven days ago (configurable). Two errors over the last five days? Those two will display. No errors within that time span will display the "All Systems Go!" look as seen above. Widget will always provide a numeric count of the last 30 days worth of errors though that number will not be totally correct if you have set system error logs to purge less than 30 days. I strongly recommend having this on your dashboard. Just because your system appears to be running smoothly does not mean 3rd Party apps and plugins, or Invision apps even, are not throwing errors. These may be pointers to server problems or bugs that need to be reported. This widget provides direct links to the actual error reports and a button to the full list of system errors. 3rd party developers do not have a built in error reporting system like IPS does right now and we can only fix what we know about. I consider this one absolutely essential and is on every dashboard I use (and some I have access to as well). Nothing better in the world than seeing this widget empty most of the time. Nothing better than logging in and spotting trouble immediately before it becomes a real problem. Can;t hide from it when it greets you on login.
Gallery Overview
Mostly a rework of the default Gallery widget but with better formatting. Note the default widget (and this one) only tracks the storage space of the original images, not all the copies actually made and used by the IPS system - those stats are not saved anywhere. Includes the four newest images along with the four most viewed. Widget is fine wide or side. 90 day graph is configurable on or off as unless your site sees daily Gallery uploads the graph can look pretty barren.
Forum Trends
Tracks graphically 90 days worth of topics started and responses made and combined. Includes live today counts. Also include a ratio-rail so you can easily see if topics are being started but no one is talking... Some basic lifetime counts plus a look at who your recent positive contributors are.
Member Trends
A rail that shows the counts and ratio of your community members. From right to left members active the past seven days, the last eight to ninety days, the last ninety-one days to one year back (not shown in this screen shot). All remaining registered members that have not visited your community in the last year are flagged as inactive. If you are having your members list their birthdays, you can also get a rough median age for your members. Naturally this statistic is not worth all that much as often times members input false birthdays but in large communities this number will probably give you a decent idea of your member age.
Administrators Log / Moderators Log
Most Active Topics Last 3 Days
As stated. Based on topic responses only. Maximum of five listed. Useful for large boards where admins can likely miss where the action is at any given time.
Members Operating Systems and Web Browsers
After sticking it on your dashboard either wait 24 hours for the task to kick in or manually run the task (spacious_userAgents) in the tasks area of the ACP.
Heads Up!
Widgets with Google Charts in them can sometimes render weird when you first drag them onto the dashboard. Just refresh the page.
On install AND upgrades, Spacious tasks are automatically marked as never ran (this behavior is standard for all app tasks as of 4.3). Some widgets rely on pulling saved information that is generated by these tasks. Feel free to manually run any Spacious tasks to spark the process along if you do not feel like waiting 10-15 minutes (or longer for some stats).
In some server/hosting situations some data I try to read for the System Overview widget may not be accessible. Do not buy this if the Server Overview widget is the only thing you are interested in. No refunds will be approved due to some elements of that widget not working correctly on your site. Specifically, you will need allow read access to the /proc directory on Centos/Red Hat/Ubuntu systems and in some cases you may have an Apache setting called open_basedir preventing this. A simple file edit on your server will usually solve this. VestaCP users will need to edit some configuration templates to change this variable.
CIC users will not have access to the System Overview dashboard widget as the AWS infrastructure IPS uses no longer matches out to things like CPU load, memory use, etc.
A Massive Pile of Micro-Changes, Improvements, and Customizations for Invision Community 4.5+, Everything Including as They Say...
Entirely re-written for Invision Community 4.5+ as an application. Inserts most CSS after any Invision application's CSS but before your custom css directory files. That means 3rd-party plugins and your own custom.css file will always take precedence.
You can allow any topic creator to edit their first post in topics within the forums of your choice.
Set both post count and topic count as stats displaying in Forum indexes.
Scrunches down review stars.
Collapses (with optional max-size) embedded images in posts AND displays them in-line. No more massive stacked image posts!
Font Awesome 5 support! Font Awesome 6 support!
Limit attachments allowed per-post
Speed up animation speeds for pop-ups and other elements.
Customize the default error page that displays with a background image, custom text, more!
Full Messenger box warning for users.
Forums Topic and Post embeds customizable! You can make them look really nice...
Sticky Sidebars! (Note this is done with JavaScript but there is native browser support now so this will get updated)
Zalgo text remover!
A hell of a lot more...
NOTE: Calendar stuff is no longer valid with the movement to the Events app and will get pulled in the next release.
2.2.0
------------------------
NEW! Sticky Sidebars!
2.1.0
------------------------
NEW! Zalgo text eliminator!
NEW! Usermenu options to remove separators, section titles, and the achievements block.
2.0.0 (Late-June 2021 Release coinciding with the release of Invision Community 4.6)
------------------------
Updated for 4.6 Compatibility
REMOVED! Lazy Load on userphoto template - IPS has included same natively with 4.6
FIX! Limiting attachments in forum posts was either slightly broke or just slightly
broke on 4.6; patched.
NEW! Recent Status Updates widget now with three possible views AND you can customize
the number of lines output per update - no more three line limit!
TWEAK! for when displaying both topic and post count stats together to add more room
for larger counts
NEW! Remove the icon area from Forum index displays.
NEW! Append <new> badges at the end of forum titles when new content is within in
index view - combine with removed icon area for a clean lean look.
NEW! Above also does the same for link forums and password-protected forums.
1.3.0
------------------------
NEW! Core - Lazy-load option for userphotos
NEW! Forums - Index - Option to hide the circle-dot unread marker on
sub-forums (sub-forum titles remain bolded when unread)
NEW! Forums - Topics - append topic author's user group after author's
name. Plain or formatted.
ADD! A few new language strings to replace hard-coded text in settings.
1.2.0
-------------------------
UPDATE! Altered the breadcrumb hook. Home icon now inserted without
replacing elements, home text removed via JS.
UPDATE! Review stars now use the complete half-star icon instead of the
default half and half-flipped approach.
NEW! FA5 Pro licensed icons supported.
FIX! Reverse Post Order in Topics setting when set to apply to all forums.
FIX! Some sites do not ajax-load new pages of Forum topics, so I had to fix
up the topic post numbering feature to account for that.
UPDATE! Also improved the page numbering feature to work better with custom
themes that have moved the .ipsComment_tools structure to the postContainer
template instead of the post template
KS 1.1.0
-------------------------
UPDATE! Added responsive phone-view to the Forums in-lined image feature,
misc. adjusted CSS.
UPDATE! New JavaScript catch for Forums in-lined images: ANY paragraph
with images that have inline-css styles are skipped.
UPDATE! Sets min-row height for forum rows when do not show statistics on
mobile views is enabled.
UPDATE! Re-worked the Show Only Members on Online Users page. Now just sets
the menu link to default to the members filter. No CSS hiding, all filters,
including guests, still available. Best possible solution.
NEW BY REQUEST! Site terms and conditions option: place in footer, use full
theme instead of minimal. NOTE: These terms and conditions only appear on new
registrations or when users are forced to accept changed terms and conditions.
This KS setting allows them to be viewed at any time.
NEW BY REQUEST! Posts numbered in Forum Topics. Either the actual universal
post number or numerically 1-2-3 per-topic.
KS 1.0.0
-------------------------
CORE:
Compact Star Ratings
Do Not Display Guests on the Online Users Page
Enable Font Awesome 5 Support
Default Search Results Order
Member has Full Messenger Warning
Community Guidelines Display with Full Theme, Not Minimal
Community Privacy Policy Display with Full Theme, Not Minimal
Display a Link to Your Guidelines in the Footer
Adjust Animation Speeds
Remove the Vertical Separators between the Menu Options in Userbar
Replace Create menu option with an Icon
Remove Userbar Member Avatar on Desktop View
Manipulate the Mark Site Read Link - icon or text only, remove, or move to usermenu
Manipulate the Default Stream Link - icon or text only, remove, or move to usermenu
Manipulate the Home Breadcrumb Element - restore icon, display icon and text
Remove the Last Breadcrumb Element
Larger Profile Cover Photo
Customizable Error Page
FORUMS:
Remove the title 'Forums' from the Index Page
Append Category Descriptions Beneath Category Titles
Forum Statistics Displayed - post count, topic count, both
Table View - Do Not Show Forum Statistics on Tablet and Phone Views
Table View - Remove Sub-Forums Indent and Angle Mark
Adjust Grid View Title Size
Force the Forums > Post Feed Widget to Pull Only First Posts
Allow Authors to Always Edit First Initial Posts in Topics - selectable per forum
Remove Topic Location from Date Line
Add a Locked Icon to Locked Topic Titles
Display Posts in Topics in Order of Latest Posts to Oldest Posts in Select
Forums, selectable per forum, see details for explanation/warnings
Topic Activity Blocks - How Many Top Posters to Display
Topic Activity Blocks - How Many Popular Days to Display
Topic Activity Blocks - How Many Image Attachments to Display
Display only the Time of Post Entry - removes the word 'Posted'
Hide the MultiQuote Button
Hide the Quote Link/Button
Change the Quote Link into a Button
Set a Limit on the Number of Attachments per Post - see details for limitations
Float Image Attachments in Posts - collapses attached images side-by-side
instead of stacking them
Customizable Topic Embeds
Customizable Post Embeds
GALLERY:
miniAlbum template tweaks
BLOGS:
Larger Blog Cover Photo
Larger Blog Title Size
Hide the Blog Header on Blog Entries
Adjust Blog Entry Photo Size
CALENDAR:
Squared Edges on Event Listings
Remove "Event Details" Title Text from Event View
Larger Event Cover Photo
Larger Event Title Size
DOWNLOADS:
Customize the Size of the Screenshots Carousel - height and width separately
COMMERCE:
Enlarge Product View - Primary Product Image
Enlarge Product View - Thumb Images
Adjust Product View - Product Title Font Size
Simple no-CPU-impact, full-page snowflakes, gently falling and swaying in the soft wind.
Light-blue-ish.
Install, and they are on for everyone, until you toggle the plugin off in the ACP or uninstall.
If you want all the configurations made available to you and maybe let users toggle it on/off on the front end, make with the hew and cry and I'll grab a beer and code it out but that one will cost you a few bucks (once).
Not mine, I'm just packaging it up for INVCOM 4x. MIT licensed: https://github.com/hcodes/snowflakes
Adds a new widget block with the latest registered members on your board. You can display names with member avatars or just names only. Never displays validating members, only those fully registered and confirmed.
Configure the display settings by editing the widget after you place it on the page:
Format user links according to the group color
Names-only display option
Number of users to show
Choose which user groups will be able to view the block.
This plugin will show on a member's hovercard, for moderators who can view warnings, the restrictions applied to the member.
Will show the following restrictions:
if the member is banned
if the member is restricted from posting
if the member has their content moderated
This will also display the time of each item of the above items if not set as permanent. Hovering over the badges will provide additional information via tooltip.
Not compatible with Awesome Member Hovercards but this functionality IS INCLUDED with Awesome Member Hovercards.
Dev Mode on, Dev Mode off. Dev Mode on, Dev Mode off...
Configurable on/off icons, alter the colors for the "in development mode" flaring on the left of the ACP, etc.
But wait! There is also constants toggling on/off while IN_DEV! The only hitch is you must FIRST add the constants you use/want/need in to the constants.php file manually. A safer, more clean, experience all-around - otherwise I would have to prep every constant available and most of them no-one ever uses. Again, this toggle power is only while you are in Dev Mode. This is a dev tool; not a live site one.
This was the first ACP flip-switch for dev mode. Prior to this plugin you would need to edit constants.php every time you wanted in or out of dev.
And yes, just like the old Marketplace listing said, I was way drunk when I wrote this. But that was the initial version. All of the subsequent releases I've been quite, quite sober.
Probably.
Show a legend of your groups in the Who's Online and Recently Browsing widgets, sorted in the order you specify and linked to the search system. Handy so that people know what those group prefixes and suffixes mean.
You choose which groups appear in the legend, and the order they will appear in, with the plugin settings in the ACP. Group links will carry any group formatting (colors, etc.) you may have set. Clicking the entries in the legend takes users to a list of all members with that group designation.
This version is probably fine with 4.6.x but it's been awhile so try it and disable it if it doesn't work.
Those of you doing serious custom work or jumping into other clients Pages installations to design, patch, change things in templates - especially heavily customized forms - probably want easy access to the database field id numbers. Database category IDs as well.
Here you go.
This plugin will display products from your Invision Community Commerce Store in a widget block using an image carousel.
You can choose to display either New Products or Featured Products and set the groups allowed to view the widget block.
Featured store items are set in the Commerce app and that is where this block will pull from. When you edit a product, go to the store settings tab. The toggle to feature the item on the store index page is the one you want.
New store items are a setting in Commerce that allows you to set the number of days back a product is considered "new" to the store and also the maximum number of items to falg as new. Whatever products fall under those settings will appear in the widget.
Most sites use the featured option as new items don't usually get added into the store on a daily, if not weekly, basis, so even if you set the lookback to 30 days for new, you run the risk of an empty widget.
Requires Invision Community Commerce obviously.
The carousel will not turn on unless you have more products than will fit inside the widget. It also will not magically turn on if you shrink your browser width. The carousel determines itself whether to enable or not when the page is first loaded.
Outside of that, that's pretty much it.
Use this to verify you are making the proper connection to an Invision Community API endpoint. If you need to get an API connection up to speed, this is your tool. It only uses GET calls, no POSTS. And there is no OAuth testing either or anything beyond what the label says: API testing of GETs. Once you have a simple GET call sorted, the rest is on you and should be simple enough now that you have the basics out of the way
You can use this to query the APIs live on your own localhost machine.
You can call from localhost to a live site.
You can call from livesite to livesite. This is a devtool but it it is perfectly safe, and firewalled, for use on livesites where you might need to track down some connection problems.
You can have as many copies of this widget on a page as you like! Test separate individual API calls with each one!
ICAPIT is also fantastic for testing your own API rollouts in your applications if you have never made those yourself before. Set up your application API code, give yourself a key and the proper permissions to it, and just call it from the plugin and see what you get! Not only that but you can look at the response modal to see how the exact call was made at the code level. Nothing fancy here; copy-paste as you need - it's all basic PHP code. Great for when you are needing to READ from the Invision Community API.
Every step of the way, you should either receive the correct JSON response, or a myriad of error responses which will aid you in tracking down your problems. One tab is dedicated to all the possible error responses the Invision Community API puts out internally - no need to go looking for what they mean, they are all right here.
FYI this code is an INTERNAL tool for myself so if you poke under the hood you'll see a LOT of copypasta so leave me alone and you're not my supervisor. It gets the job done quite well.
User MUST be in the administrators group to view this plugin. Do not install it, drag it onto a page with someone who has widget permissions but is not an administrator and expect to see the widget/s. Same if you are not logged in as an administrator.
For each instance of the widget:
Edit the widget's block configuration to enter your API key. API keys displayed in the widget or results modal will only show the first four characters for safety if you are using this in a public setting and someone glances over your shoulder and so on.
Click the Configure API Call button on the widget to configure the actual API call. This is where you will enter the site URL, the API call, and set various options.
Click the Make Call button to make the call. A results modal will display on the screen showing you the results of the call. To make subsequent calls with that particular widget you must either change the Configure API Call settings and save or refresh the page.
If you are encountering problems or spurious returns, make sure to use the direct cURL option in the widget settings (as opposed to the IPS wrappers). This will provide you with the cURL error output which can be invaluable as not all the error responses will be the clean, sanitized, canned IPS API json responses.
As an example, your local dev machine will probably have a self-signed SSL certificate. There is a setting that allows you to disable SSL checks when making an API call, and you will need to have this enabled when you are using this to read APIs on your own localhost.
Don't believe me? What happens if you turn that off and do make those SSL checks on your local machine with the self-signed cert?
Well that "0" is not too helpful for a response. However, I made that call with direct cURL so let's look at that last tab...
There you go.
I can see many avenues for improvement and expansion with this tool but 5x is inbound so I'm content to let this sleeping dog lie and see what's what in a few months.
If you find it useful, I'm glad you did </rattles tip-jar>. Any hitches, questions, and the like, hit the forums.
By the way, I do have a companion to this, a plugin that you install on the server where you are reading the API from, that lets you dump $_SERVER output to the system log when the authorizationHeaders() function is hit, which is only hit when API and OAUTH calls are made to the server. You can set how many minutes it will log these for which gives you enough time to turn this logging on, and then hit the API with ICAPIT (or any other way you like) once or however many times you like, and catch those $_SERVER outputs for debugging. I used this to spot missing or malformed headers, bad encodings of credentials, etc. You are probably in the weeds if you need this (or the server you are doing work on is...) so just give a yell and I can add that tool to the freebie pile (after I dredge it up from the 4.5 dev installation lying dormant somewhere around here...)
Lastly... This plugin does require you to have your server more or less configured correctly. If you half-assed setting up friendly urls in .htaccess or nginx confs, or have made a mess of other things, don't expect this plugin to magically tell you what is wrong.