Jump to content

Scott Allen

Members
  • Joined

  • Last visited

Everything posted by Scott Allen

  1. Okay, we've just discovered the issue -- it was myself and another website Administrator testing this, along with a few who are not (and didn't have issues). Seems that this theme option is invisible to those with unrestricted Administrator accounts, but visible to everyone else in all other member groups. Is this again something we should be asking the developer of the theme about, or is this something in the IPS platform that we can change or set for the Administrator master group members?
  2. Thank you! I wanted to add that we had been testing in Google Chrome (I was anyway) and then a member posted a chat about Cobwebs in the corners that we couldn't see... so I opened the website in another browser (FireFox) and could see the Halloween themed Cobwebs as shown below - wondering who I can contact about this, thought IPS developed the "Brave" theme (if not, how do we contact the developer of that for support of such an issue?) (*EDIT: Found theme developer website, posted question there... thanks again!!)
  3. Hello! I am using IPS Brave Theme v4.6.0 and IPS v4.6.5.1 When I go to edit the Theme to the Events tab where we can set the Holiday/Event and effects such as falling confetti, I am curious about the "Halloween" setting. It seems to do nothing that we can tell. Are we missing something here? What is this supposed to do? We had thought it would be apparent, but maybe we have to actually add our own themed items to takeover when this is set? Any help would be appreciated - just looking for direction and clarity of what this is. Thanks!
  4. Well, we use IPS v4.6+ with mostly default/included systems, and my question was posted here in IPS Client area because it was those systems we were using that were being abused by spammers. I do believe that a possible solution was presented by @Kjell Iver Johansen above: ...have changed this just now, it was set (by default) to allow Guests access to this Contact Us under Applications/System - will give it a week and we'll see if it works. If so, I'm marking that as the solution. Thanks again!
  5. e-mail hosting company?! What are you talking about? These spammers are using the Contact Us form to bypass any moderation and spam this stuff in IPS... This is visible in the AdminCP See image below:
  6. How do I stop this? I have no means to ban someone who is not a website user. There is no way I can see to stop this user from trolling us with spam via your Support Request system. Please help
  7. Not sure - forwarded the question to our SysAdmin. Does it matter if we are using gd or imagemagick? What is the difference? Why does this issue only appear for the Gallery and nowhere else? Is it because image uploads through the Gallery follow different rules for timeout or file sizes?
  8. I've been reading all the posts I can here about this -200 Error. I gather that is an unspecified error pointing to an issue outside IPS that it cannot identify, such as the server software running IPS. But I have verified to the best of my ability that these are correct, wondering if I am getting a false positive here though. The image is a cellphone photograph of a computer, 3.48 MB and 3024x4032 resolution -- when I drag and drop this into a forum post (such as this one) on our website, it uploads and inserts just fine. When I do this within the Gallery, I get the Error -200 and the upload fails every time. This does not happen with smaller image files. I have found that is irrespective of .jpg or .png and both can fail (or succeed if small enough), I have not pinned down the specific size for failure beyond 1000kb - again, all settings are as recommended. The post here suggests that this user was able to add a missing variable declaration and I am wondering if something like this may be required in the case of the Gallery: https://invisioncommunity.com/forums/topic/460118-ipshelpersformupload-field-returns-error-code-200/?tab=comments#comment-2842332 When viewing the browser developer console, for a failed upload, I see the following information: The failed upload on line 107, about 30 lines up from the bottom "setTimeout (async)" occurs. On the networking panel, it shows the extreme time taken to fail: I am curious if the solution noted below is the key to this issue but I do not know how to test or proceed - any help would be appreciated:
  9. Scott Allen replied to Stormlilly's post in a topic in Feedback
    Same here. I wanted options that were not available, so ended up using an open source script and modifying it for our theme. I don't want to keep the actual script in my globalTemplate, tho... Do I need to take the site offline and put it in developer mode to add my own custom JS script file so that I can just use something like this in the globalTemplate? <script src="JS/VgBackToTopButton.js"></script> or can this be done by creating a new .js at: Pages > Page Management > Templates (New > Add Javascript file) And if the answer is 'yes' to the first or second part, can anyone help with what the path to that would be? I read the Guide here, but had questions likely from not knowing if I'm even barking up the right tree. This is outside my wheelhouse, but I've been diving into HTML/CSS/JS this year to make some cool things for our site, and I'm totally willing to learn if anyone can steer me in the right direction here. Much appreciated and thanks for the help!
  10. Scott Allen replied to Stormlilly's post in a topic in Feedback
    Is there a plugin? Because the only one I've seen linked or when I search says it is not updated for 4.3+ I've been trying to make my own, but not exactly familiar with IPS as opposed to old school traditional website structure. I've made a custom HTML and CSS for my theme, but not exactly sure where to implement it so the 'Back to Top' appears globally. Was also playing around with a script that would fade in a 'Back to Top' button when the user scrolls down, but again, not sure how to implement this globally. An old friend said something about putting it "in the main wrapper" but again, does not know IPS and neither do I, on that level.
  11. Hello all!! We love this sidebar block that appears in this one popular forum post in our forums, on the right... "TOP POSTERS IN THIS TOPIC", etc. We wanted to know the details about it, how and when it shows, and maybe even how we can force it to show for any (or all) posts that we want it for. Any info would be much appreciated! Thanks a bunch!
  12. Thank you for your reply Do you happen to know the table? Support are essentially refusing to get involved.
  13. Hello I recently started investigating externally hosting some of our content (images, downloads etc) on soemthing like S3. I started small and it went well. I set the downloads folder to be stored on digital ocean spaces and to move files across. It seems to have moved some and is stuck on others. I now have a notification tell me that task queue has been running for too long and might be misconfigured. Background tasks are slowly building up and attempting to run them manually gets stuck on starting forever. It seems during this time that invisioncommunity software is trying to upload the files and failing. Unfortunately this has left this site in a bit of a weird state. Half the stuff has uploaded, but most of the links have transitioned to the new link, so a lot of things are broken. At this stage, I'd be happy to simply roll back to hosting everything locally and forget this idea. Maybe if I could somehow delete the queue job and set it back to locally. I see the below for various different files every second on system logs. Anyone have any ideas? ------ ------------------------------------ SOCKETS REQUEST: https://vgcdn.nyc3.digitaloceanspaces.com/uploads/monthly_2016_06/576a55f6eac23_FalconBMS4.33.1DeepStrikeTE_zip.64cf8f6d10288309efad9f2d83468e1d ------------------------------------ PUT /uploads/monthly_2016_06/576a55f6eac23_FalconBMS4.33.1DeepStrikeTE_zip.64cf8f6d10288309efad9f2d83468e1d HTTP/1.1 Host: vgcdn.nyc3.digitaloceanspaces.com User-Agent: Invision Community 4 Cache-Control: public, max-age=31536000 Content-Length: 27569 Content-MD5: <removed> Content-Type: application/x-unknown X-Amz-Acl: public-read X-Amz-Content-Sha256: 76c58b003032b80aece60e95e4240cb5a478e7715b9a69565e2015ca7c585505 X-Amz-Date: 20210130T060544Z Authorization: AWS4-HMAC-SHA256 Credential=<removed>,SignedHeaders=cache-control;content-length;content-md5;content-type;host;x-amz-acl;x-amz-content-sha256;x-amz-date,Signature=<removed> Connection: Close PK�������� #0 /var/www/veterans/system/Log/Log.php(176): IPS\_Log::log('\n\n-------------...', 'request') #1 /var/www/veterans/system/Http/Request/Sockets.php(267): IPS\_Log::debug('\n\n-------------...', 'request') #2 /var/www/veterans/system/File/Amazon.php(766): IPS\Http\Request\_Sockets->__call('PUT', Array) #3 /var/www/veterans/system/File/Amazon.php(304): IPS\File\_Amazon::makeRequest('monthly_2016_06...', 'put', Array, NULL, 'PK\x03\x04\x14\x00\x00\x00\x08\x00\xCDQ\xB9H\xEA...', NULL, false, false) #4 /var/www/veterans/system/File/File.php(1257): IPS\File\_Amazon->save() #5 /var/www/veterans/system/File/File.php(1180): IPS\_File->copy(4) #6 /var/www/veterans/system/File/FileSystem.php(220): IPS\_File->move(4) #7 /var/www/veterans/applications/downloads/extensions/core/FileStorage/Files.php(56): IPS\File\_FileSystem->move(4) #8 /var/www/veterans/applications/core/extensions/core/Queue/MoveFiles.php(56): IPS\downloads\extensions\core\FileStorage\_Files->move(16, 4, 1) #9 /var/www/veterans/system/Task/Task.php(47): IPS\core\extensions\core\Queue\_MoveFiles->run(Array, 16) #10 /var/www/veterans/applications/core/modules/admin/system/background.php(87): IPS\_Task::runQueue() #11 /var/www/veterans/system/Helpers/MultipleRedirect/MultipleRedirect.php(92): IPS\core\modules\admin\system\_background->IPS\core\modules\admin\system\{closure}(Array) #12 /var/www/veterans/applications/core/modules/admin/system/background.php(136): IPS\Helpers\_MultipleRedirect->__construct(Object(IPS\Http\Url\Internal), Object(Closure), Object(Closure)) #13 /var/www/veterans/system/Dispatcher/Controller.php(90): IPS\core\modules\admin\system\_background->process() #14 /var/www/veterans/applications/core/modules/admin/system/background.php(42): IPS\Dispatcher\_Controller->execute() #15 /var/www/veterans/system/Dispatcher/Dispatcher.php(152): IPS\core\modules\admin\system\_background->execute() #16 /var/www/veterans/admin/index.php(14): IPS\_Dispatcher->run() #17 {main}
  14. Thank you very much!! Had not made the correlation. Much appreciated!
  15. This purple glow - I cannot find where to change this color anywhere in the AdminCP, or under the IPS Brave Theme settings, and I've checked every page. Someone must have changed it on my team, getting no reply - it was blue yesterday. Trying to get my colors in line after the update to 4.5.x but cannot find this color setting anywhere: Circled the pit I'm talking about, appears on certain header bars like this, chatbox application, etc. Thanks for any help!!
  16. Took another whack it this -- since the rule to 'Hide this block when there are no results to display' would still see events worth displaying, and I want to hide the entire block (including the titlebar) when no 'unlocked/unhidden' events are available, I had to add some logic to the beginning of the block, and not inside it as shown above. Here's what the final draft looks like - and it's working well: {{if !empty( $events ) }} {{foreach $events as $event}} {{if !$event->mapped('locked') AND $event->hidden() === 0}} {{$canShow = true;}} {{endif}} {{endforeach}} {{endif}} {{if ( $canShow ) }} <h3 class='ipsType_reset ipsWidget_title'>Upcoming Unbans</h3> <div class='ipsWidget_inner'> {{if $orientation == 'vertical'}} <div class='ipsPad_half'> {{endif}} {{if !empty( $events ) }} <ul class='ipsDataList ipsDataList_reducedSpacing'> {{foreach $events as $event}} <li class='ipsDataItem ipsClearfix'> <div class='ipsDataItem_icon cCalendar_date_overlay'> {{if $event->nextOccurrence( $today, 'startDate' )}} <time datetime='{$event->nextOccurrence( $today, 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'> <span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%b">{$event->nextOccurrence( $today, 'startDate' )->monthNameShort}</span> <span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%d">{$event->nextOccurrence( $today, 'startDate' )->mday}</span> </time> {{else}} <time datetime='{$event->lastOccurrence( 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'> <span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="%b">{$event->lastOccurrence( 'startDate' )->monthNameShort}</span> <span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="%d">{$event->lastOccurrence( 'startDate' )->mday}</span> </time> {{endif}} </div> <div class='ipsDataItem_main cWidgetComments'> {{if $event->container()->allow_comments && $orientation == 'vertical'}} <div class="ipsCommentCount ipsPos_right {{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'>{expression="$event->comments"}</div> {{endif}} <div class='ipsType_break ipsContained'> <a href="{$event->url()}" title='{lang="view_this_event" sprintf="$event->title"}'>{$event->title}</a> </div> <strong class='ipsType_small'> {{$sameDay = (bool) ( $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) and ( $event->nextOccurrence( $today, 'startDate' ) and $event->nextOccurrence( $today, 'startDate' )->calendarDate() == $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate() ) );}} {{if $event->nextOccurrence( $today, 'startDate' )}} <span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->nextOccurrence( $today, 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->nextOccurrence( $today, 'startDate' )->localeTime( FALSE )} {{endif}}</span> {{if $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) }} {{if $orientation == 'vertical'}}<br>{{endif}} <span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical' and !$sameDay}}<br>{{endif}} {{if !$sameDay}}<span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate()}{{endif}}{{if !$event->all_day}} {$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->localeTime( FALSE )}{{endif}}</span> {{endif}} {{else}} <span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->lastOccurrence( 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->localeTime( FALSE )} </span>{{endif}} {{if $event->lastOccurrence( 'endDate' ) }} {{if $orientation == 'vertical'}}<br>{{endif}} <span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical'}}<br>{{endif}} <span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->lastOccurrence( 'endDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}</span> {{endif}} {{endif}} </strong> <br> {{if $event->container()->allow_comments && $orientation == 'horizontal'}} <span class="{{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'><i class='fa fa-comment'></i> {expression="$event->comments"}</span>&nbsp;&nbsp; {{endif}} {{if $orientation == 'horizontal'}} <div class='ipsType_medium ipsType_richText' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='2 lines' data-ipsTruncate-watch='false'> {$event->truncated()|raw} </div> {{endif}} </div> </li> {{endforeach}} </ul> {{else}} <div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_upcoming_events"}</div> {{endif}} {{if $orientation == 'vertical'}} </div> {{endif}} </div> {{endif}} Thanks again!!
  17. Thank you! That was the example I needed - also finally found the guides, my own fault I had a pop-up blocker that was hiding the element of "More" and the entire upper line with links on this site - I'll be off to the races now!! If anyone crawls this in future wanting to see the wrap-up, here it is: <h3 class='ipsType_reset ipsWidget_title'>Upcoming Unbans</h3> <div class='ipsWidget_inner'> {{if $orientation == 'vertical'}} <div class='ipsPad_half'> {{endif}} {{if !empty( $events ) }} <ul class='ipsDataList ipsDataList_reducedSpacing'> {{foreach $events as $event}} {{if !$event->mapped('locked') AND $event->hidden() === 0}} <li class='ipsDataItem ipsClearfix'> <div class='ipsDataItem_icon cCalendar_date_overlay'> {{if $event->nextOccurrence( $today, 'startDate' )}} <time datetime='{$event->nextOccurrence( $today, 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'> <span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%b">{$event->nextOccurrence( $today, 'startDate' )->monthNameShort}</span> <span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%d">{$event->nextOccurrence( $today, 'startDate' )->mday}</span> </time> {{else}} <time datetime='{$event->lastOccurrence( 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'> <span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="%b">{$event->lastOccurrence( 'startDate' )->monthNameShort}</span> <span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="%d">{$event->lastOccurrence( 'startDate' )->mday}</span> </time> {{endif}} </div> <div class='ipsDataItem_main cWidgetComments'> {{if $event->container()->allow_comments && $orientation == 'vertical'}} <div class="ipsCommentCount ipsPos_right {{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'>{expression="$event->comments"}</div> {{endif}} <div class='ipsType_break ipsContained'> <a href="{$event->url()}" title='{lang="view_this_event" sprintf="$event->title"}'>{$event->title}</a> </div> <strong class='ipsType_small'> {{$sameDay = (bool) ( $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) and ( $event->nextOccurrence( $today, 'startDate' ) and $event->nextOccurrence( $today, 'startDate' )->calendarDate() == $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate() ) );}} {{if $event->nextOccurrence( $today, 'startDate' )}} <span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->nextOccurrence( $today, 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->nextOccurrence( $today, 'startDate' )->localeTime( FALSE )} {{endif}}</span> {{if $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) }} {{if $orientation == 'vertical'}}<br>{{endif}} <span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical' and !$sameDay}}<br>{{endif}} {{if !$sameDay}}<span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate()}{{endif}}{{if !$event->all_day}} {$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->localeTime( FALSE )}{{endif}}</span> {{endif}} {{else}} <span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->lastOccurrence( 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->localeTime( FALSE )} </span>{{endif}} {{if $event->lastOccurrence( 'endDate' ) }} {{if $orientation == 'vertical'}}<br>{{endif}} <span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical'}}<br>{{endif}} <span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->lastOccurrence( 'endDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}</span> {{endif}} {{endif}} </strong> <br> {{if $event->container()->allow_comments && $orientation == 'horizontal'}} <span class="{{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'><i class='fa fa-comment'></i> {expression="$event->comments"}</span>&nbsp;&nbsp; {{endif}} {{if $orientation == 'horizontal'}} <div class='ipsType_medium ipsType_richText' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='2 lines' data-ipsTruncate-watch='false'> {$event->truncated()|raw} </div> {{endif}} </div> </li> {{endif}} {{endforeach}} </ul> {{else}} <div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_upcoming_events"}</div> {{endif}} {{if $orientation == 'vertical'}} </div> {{endif}} </div> Cheers from VETERANS-GAMING!
  18. Hello all! Huge fan - long time listener, first time caller... Pretty new to customizing blocks for specific needs, and wondering if anyone can help me out here. I have a small custom block for Calendar Feed Upcoming Events to notify our Admins of any upcoming 'unban' for banned players on our game server(s), and I successfully modified permissions for it to only show for our Admins groups (or higher) and the to only events within a 3 days... But I am not sure how to modify it to not show any locked or hidden events, so that when we've unbanned a player, we can just lock the event, and it drops from being listed on the block (to save time/prevent other Admins from checking it all day to see if it's done already). Also, after googling, was still not sure where I can find all this info for myself (all the various IPS specific methods/functions/classes I could use to make custom scripts like this from the ground up if desired), so any links would be greatly appreciated - my google-fu may be getting rusty. Here's the code of what I have now - like I said, just want to add in an if-then-else to not show a particular event if it is hidden or if is locked (either, or both - doesn't matter): <h3 class='ipsType_reset ipsWidget_title'>Upcoming Unbans</h3> <div class='ipsWidget_inner'> {{if $orientation == 'vertical'}} <div class='ipsPad_half'> {{endif}} {{if !empty( $events ) }} <ul class='ipsDataList ipsDataList_reducedSpacing'> {{foreach $events as $event}} <li class='ipsDataItem ipsClearfix'> <div class='ipsDataItem_icon cCalendar_date_overlay'> {{if $event->nextOccurrence( $today, 'startDate' )}} <time datetime='{$event->nextOccurrence( $today, 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'> <span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%b">{$event->nextOccurrence( $today, 'startDate' )->monthNameShort}</span> <span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%d">{$event->nextOccurrence( $today, 'startDate' )->mday}</span> </time> {{else}} <time datetime='{$event->lastOccurrence( 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'> <span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="%b">{$event->lastOccurrence( 'startDate' )->monthNameShort}</span> <span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="%d">{$event->lastOccurrence( 'startDate' )->mday}</span> </time> {{endif}} </div> <div class='ipsDataItem_main cWidgetComments'> {{if $event->container()->allow_comments && $orientation == 'vertical'}} <div class="ipsCommentCount ipsPos_right {{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'>{expression="$event->comments"}</div> {{endif}} <div class='ipsType_break ipsContained'> <a href="{$event->url()}" title='{lang="view_this_event" sprintf="$event->title"}'>{$event->title}</a> </div> <strong class='ipsType_small'> {{$sameDay = (bool) ( $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) and ( $event->nextOccurrence( $today, 'startDate' ) and $event->nextOccurrence( $today, 'startDate' )->calendarDate() == $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate() ) );}} {{if $event->nextOccurrence( $today, 'startDate' )}} <span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->nextOccurrence( $today, 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->nextOccurrence( $today, 'startDate' )->localeTime( FALSE )} {{endif}}</span> {{if $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) }} {{if $orientation == 'vertical'}}<br>{{endif}} <span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical' and !$sameDay}}<br>{{endif}} {{if !$sameDay}}<span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate()}{{endif}}{{if !$event->all_day}} {$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->localeTime( FALSE )}{{endif}}</span> {{endif}} {{else}} <span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->lastOccurrence( 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->localeTime( FALSE )} </span>{{endif}} {{if $event->lastOccurrence( 'endDate' ) }} {{if $orientation == 'vertical'}}<br>{{endif}} <span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical'}}<br>{{endif}} <span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->lastOccurrence( 'endDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}</span> {{endif}} {{endif}} </strong> <br> {{if $event->container()->allow_comments && $orientation == 'horizontal'}} <span class="{{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'><i class='fa fa-comment'></i> {expression="$event->comments"}</span>&nbsp;&nbsp; {{endif}} {{if $orientation == 'horizontal'}} <div class='ipsType_medium ipsType_richText' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='2 lines' data-ipsTruncate-watch='false'> {$event->truncated()|raw} </div> {{endif}} </div> </li> {{endforeach}} </ul> {{else}} <div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_upcoming_events"}</div> {{endif}} {{if $orientation == 'vertical'}} </div> {{endif}} </div>