Today I've been working on how WSN performs, especially with large pages and especially when not using query caching. Specifically, when I was trying to show 132 articles at once on a page at scripts.webmastersite.net/...nistrative-tasks/switches/ it was taking as long as 30 seconds to load. Delving into that, I found several culprits. First, when WSN is configured to only allow one vote per person per listing, there was a query that checks whether the viewer has already voted on a given listing.
The first release of the new year contains a variety of changes. There was a postal code autofill issue. Normally when you enter a postcode WSN automatically fills in the city and state if they haven't been entered yet. Discovered that wasn't working when OpenCage was your geocoding provider, because WSN was looking for the city name in the wrong place. Fixed that. Most of my time was spent on the calendar system, particularly rewriting the event joining system to use a new _eventrsvps table. Added an RSVP caps option and did a lot of work on the calendar templates.
As a last minute Christmas present for you, I've enhanced WSN's advertising system in several ways. First, I've added device and country targeting. Device targeting allows you to set certain ads to only show on mobile or only show on desktop/laptop. This is useful when you have differently sized or differently targeted ad code for phones versus desktop. Country targeting, which depends on IP geolocation being turned on, is useful if you have certain ads or ad networks that are only good for a particular country or set of countries.
10.3.26 brought a whole slew of new mobile fixes/enchancements too numerous to go into detail on, so let's talk about the non-mobile changes. The first change you'll notice is that the release notes are now on permanent display on the front page of the admin. This way, your site automatically updating itself doesn't prevent you from seeing the list of what changed. While doing the mobile stuff, note I moved the delete boxes on the edit listing/category/comment/member/field/help pages to the bottom and made them collapsed by default. This has a dual purpose:
On a phone, your worst enemy is user input that happens to be slightly longer than you expect. The pages you check look fine, but then along comes the submitter who has a really long URL for their listing and suddenly the display of that URL on the listing details page is causing a horizontal scroll on people's phones. Today I've addressed that problem by adding the following lines to the base.css/bootstrapbase.css to be applied only on small screens: .detailedinfo { display: inline-block; word-break: break-word; } .urlarea .thumbshot { float: none;
One of the big annoyances I run into during WSN installations is cookie conflicts. If you only have one installation per domain you never have to worry about this, but I've often got dozens. There's nothing more frustrating than running the setup and then not being able to login to the admin panel because some other installation used the same cookie names from who knows what path, perhaps a global cookie from some other subdomain even. Digging through Chrome settings to remove the cookie to get in to change the cookie names is no fun.
The changes I made a couple weeks ago to the $leaveencoded and $nomemberinfo flags have had more than their share of hard to notice side effects. The latest I've found are the menu manager delete buttons not showing and the manage redirects page acting as if all switches were off when they're not. Hopefully I've caught all the recently-messed-up admin pages now. There was also a problem with the category level selector for the add url list option, caused by having more than one level selector on the same page... I thought I'd fixed it before but apparently not fully until now.
Due mainly to 16 years of legacy, WSN uses tables as the default way to arrange your category and listings layouts. This has the advantage of making it easy to control the number of columns per row (via the settings at Admin -> Settings -> General), but the disadvantages of being considered poor practice and not reflowing easily on mobile devices. To address the mobile problem, a year or two ago I added mobile override options on the mobile settings page.
Someone today found the indent -s in the category level selectors confusingly unexpected. On consideration, the indent only makes sense for non-level selectors. Thus I've added a separate option for level selector option html compared to non-level selector option html, and have removed {CATINDENT} from the level selector one. I've also removed the category selector denied permission option html setting, which was using optgroups for MSIE7 support... it makes more sense these days to simply automatically apply the disabled attribute to the options since all browsers since MSIE8 support it.
Today, I've been working mostly on updating the WSN KB blog theme. That's the theme this blog is based on. The main change I wanted to make was to add a simple subscription button. It's much better for a blog to have a button to click on the front page for members to subscribe to email notifications of all new blog entries, instead of expecting people to edit their profile and set 'Notify of all new blogs' to 'yes'. To do this I had to change the backend to make it possible to subscribe with a click.