I'm building my first theme with the CSS framework. I'm loving the grid system. There are still tons of styles to add before it replaces Clay's CSS, but it's on it's way. The first theme will be entirely new and then I'll probably go back and convert the current theme. Hopefully in a few weeks I can introduce the new Potter default theme.
I'm back to work on the ClaySS CSS framework. The thing I think that makes this framework different is the way it doesn't just use SASS, it is being built to provide useful styles, but also leaves room for building onto it. Every style has variables for every setting, so it is completely customizable. It will also include all of the styling for Clay, including applications, in a single generated stylesheet.
The way it works is the theme has an scss file that contains all of it's custom CSS and variables and an include to ClaySS. When the css is compiled, it pulls in everything else and overrides whatever it is customizing. This prevents an application from overriding the theme and allows you to quickly update a theme for compatibility. It also allows you to use a single CSS file and not have to link so many stylesheets.
ClaySS also provides many utility styles, which means individual applications won't have as many application-specific styles. Finally, it allows me to build in a modular fashion, which divides everything by type and function. The variables are namespaced modularly as well, so if you identify a style to update, you use a variable following the namespace pattern and shouldn't have to dig to find out what that variable is called.
Once it is further along, I'll write a blog post about using iotaCSS and how I've used it within ClaySS.
I added search filters to the Bible app tonight. I can now filter by Old or New Testament and by Book. It displays the books available in the search results, then you can narrow it from there. I'm happy with it so far.
I added several layout options to the Bible app today. I also added a search, which is extremely accurate. It's coming along nicely, so I should have the first version online soon. It will just be the Bible, without all of the extras, at first. The next version I'll attempt to add the concordance. That part will be difficult, I'm afraid, but will be one of the more useful features for me. Getting excited to share it with the world 😀
I've made a lot of progress on the Bible app. I'm going with a very basic display at first, but it will have very good navigation and will be readable. I'm just not doing anything fancy, because my styling framework will be changing soon. It would be a waste of time to put a lot of effort into using something that will completely change over the next month.
Now that I have the Bible display working, I'll begin working on some study tools to go into it. I'll also be working on a basic search engine for it, with a plan to add precision and related search later.
I have a ton of features I plan for it to have, so even when the web site goes live, there will be fairly frequent updates for a while. A nice side effect is many of the features I'm adding will use new capabilities in Clay itself, such as the search engine.
Around 13 years ago I wrote a Bible module for the Xaraya CMS, I only used it for a year or so and it was lost over time. Thanks to the Internet, I found a copy of it and I'm now converting it into a Clay app.
It's going to be very different this time around, but it will be based on the same database, just with a different focus. There are already tons of online Bibles, my goal with this one is to make an online study Bible. I hope to have the basic Bible online in a couple of weeks and I'll build onto it from there.
I'll post a link once it's online.
I've upgraded the site to Clay 1.1. Everything should be back to normal. If you notice an issue, use the Email Me link to the left and let me know please!
This weekend there will likely be some downtime or at least some display issues on the site for a short period. I'll be upgrading to Clay 1.1, which involves some administrative changes to the site following the upgrade.
I finished the Blocks to Plugins migration in Clay. I haven't noticed very much difference performance wise other than query counts in the database. Plugins are less database intensive, because they use a module for the backend, instead of application APIs.
As of today, nothing in Clay uses the services module, it has all been migrated to Plugins. This week I will remove all of the deprecated pieces and work on the upgrade from 1.0 to 1.1. If all goes well, I'll be working on 1.2 next week, which is the beginning of the frontend changes for the 2.0 milestone. I'm about 2 weeks ahead of schedule for 1.1, so I'll probably save that time to work on some extra stuff at the end of 1.2.
The fun stuff starts with 1.2 😎
I'm almost finished with the blocks to plugins migration in Clay. It has made the Plugins API a little heavier, but with submodules most of the API isn't loaded on a normal page load. Cutting out the blocks API, which depends on the services module will still lighten Clay. Plugins also require only a single DB query, whereas the services module uses the more DB intensive application settings API.
I'm also doing an overhaul of the privileges for plugins and making a new UI interface that gives you a clearer picture of what the privileges assigned to a role actually allow. The Privileges API already had the capability, it just wasn't built into the admin component to show it before.
Finally, I'm building a sandbox mode into the Roles administration that allows an admin to see what is available for a user to see, without seeing the actual content. The sandbox mode will provide the user a layer of privacy, while not hampering site administration.
This is my 300th blog post. I could have made it about something interesting, perhaps, but it's a milestone at least. Clay keeps chugging along.
I've been working to merge blocks into the plugins app and therefore instances and groups will be part of plugins. Blocks will no longer be called blocks, they just fall into the different plugin categories. Groups will become open to any plugin type, whether they require instances or not.
I bounced back and forth trying to decide what to do with the blocks app. I guess the Xaraya dev in me wanted to keep it as a namesake. I eventually decided everything that is hooked internally should be a plugin, so blocks are going away. The whole point of the changes is to allow external hooks and use the services module for those. Moving blocks and the dashboard to plugins also cuts down on how much code is required to run the backend, since services, blocks, and plugins basically do the same thing in different ways.
Groups will work the same way they do now, except they will reference hooks from plugins instead of the blocks tables. This reduces database queries as well. The only difference between calling hooks for a group and an app will be referencing a group instead of an app, therefore groups can be displayed anywhere like before. Like blocks now, plugin instances will be assignable to multiple groups simultaneously.
I'm hoping the merger makes it easier to build apps and plugins, while reducing how many APIs are required to work with. If nothing else, it will reduce the database load and increase efficiency within the code. It also simplifies the privileges table and allows privileges to be implemented more consistently, which is better for security. Finally, it gets rid of the choice of whether something should be a block or a plugin. A lot of work, but I'm already seeing the payoff just from an administrative standpoint.