bit-badger / myweblog Goto Github PK
View Code? Open in Web Editor NEWA lightweight, low-configuration .NET blogging / podcasting platform
Home Page: https://bitbadger.solutions/open-source/myweblog/
License: MIT License
A lightweight, low-configuration .NET blogging / podcasting platform
Home Page: https://bitbadger.solutions/open-source/myweblog/
License: MIT License
#21 ended up breaking a few things in the default theme; fix those in the next release.
The podcast:person
element allows name, role, group, image, and URL to be assigned to each person known to a podcast. It can be attached at the channel or item level. The podcast:valueRecipient
element can be a person or a service and has several attributes; these will likely be the same for people across a podcast, but may need to vary for each episode.
For this issue, create the following (all at the web log level):
podcast:person
attributes, as well as default customKey
, customValue
, type
, and address
values for this person. The person's name is the only required value.role
and group
attributes. (A future issue will add default value recipients.)podcast:person
entries.The data migration for PostgreSQL between v2 and v2.1 is broken. This will be fixed for a v2.1.1 release.
The MyWebLog
executable file is not executable when the Linux distribution package is extracted.
Create a straightforward way to upload images (or other attachments).
The Comment
table does not have a webLogId
index; delete it via post IDs instead.
The Podcasting 2.0 XSD describes the podcast:medium
element, which applies at a channel level. Support this in a similar way to the explicit rating.
The Podcasting 2.0 XSD defines the podcast:chapters
element.
episode_chapter_file
and episode_chapter_type
.episode_chapter_type
is missing..NET's DateTime
type is not ideal for dealing with time zones, parsing, etc. Use it for all data-related date storage; we may still need to convert to DateTime
for display (as DotLiquid knows that type), but the storage and calculation will be more explicit.
This will require migration for SQLite and RethinkDB data stores.
The Podcasting 2.0 XSD defines the podcast:guid
element; implement this as a Guid
property on each feed.
Currently, the only security determination is logged on or not. Establish the following security levels; within this list, each one can also perform the tasks of those above it.
WebLogAdmin
s and Administrator
s can assign their level or below to other users of the current web logAdministrator
permissions; otherwise, assign them WebLogAdmin
permissionsupgrade-user
option that will take a URL base and an e-mail address, and promote that user to Administrator
statusAuthor
can create new posts / pages and edit posts / pages they authored.Editor
can edit posts / pages they did not author, but may not delete them.WebLogAdmin
can delete posts / pages, as well as manage all web log settings (the current "logged on" level)Administrator
will be able to manage themes (#20), and may have other installation-wide controls as they are developed.Add a help
command to the CLI that displays the list of available commands. Also, if an unrecognized command is received, display this same information.
When deployed by default, the application is dependent on configuration placed in front of it to handle rewrites/redirects. While myWebLog supports this in the form of "previous URLs" for posts and pages, long-running sites may need to redirect URLs that do not resolve to current posts or pages. A container (#38) provides even less of an opportunity to configure these outside the application.
Create a rudimentary redirect function that provides a matching string (either plain-text match or regular expression) and a new URL (verbatim or with capture group replacements for regular expressions). Any matches should be redirected permanently.
Implement IData
for PostgreSQL; this will provide a relational data option that does not require write access to the filesystem.
PasswordHasher
for passwords within myWebLog.set-password
CLI function to allow users to set passwords, as the update to rc2 will break their old ones.The Podcasting 2.0 XSD defines the podcast:transcript
element. To implement this:
episode_transcript_url
(supports permalinks), episode_transcript_type
, episode_transcript_language
, and episode_transcript_rel
.url
and type
are both present if either is present.It is pointing to the non-existent "RSS Settings" page; this is now a portion of the overall settings page. Update this link.
When an updated theme is loaded, the existing cache for that theme's templates should be flushed, so that they are loaded fresh on their next required use. (There is a call to do this; it is not working correctly.)
The "Next" button on the page list is not showing up when there are more than 25 pages for a web log.
Building on #5, provide a means for users to specify chapters for the media associated with a post (episode).
/chapters/[permalink]
and produces JSON chapters.podcast:chapters
element for the episode.(There may be other issues created to tackle some of these in bite-sized parts.)
The Liquid templating language specifies that, if a tag starts with {%-
or ends with -%}
, if there is a line break immediately before or after that tag, it will not be preserved. Currently, the custom include_template
tag does not support this, as it's implemented as a regular expression that is replaced when the template is initially read.
Modify the processing for this tag to support the no-new-line options the way other Liquid tags do.
The theme experience within myWebLog can be convoluted, and adds multiple steps to the onboarding experience. To remedy this: (#19 is a prerequisite)
-theme.zip
files in the application root folder, and load those themes on startup, using the name of the file without -theme.zip
as the slug. (Currently, the name of the file without .zip
becomes the slug.)Administrator
users). The admin
theme should not appear in the list of themes..zip
file in the application root; when it is removed, delete it from both places. (Users may not upload admin-theme.zip
.)admin
or default
themes to be deleted.admin-theme.zip
and default-theme.zip
in the application root folder rather than a separate directory.Add functionality to view, restore, and prune revisions for pages and posts.
Provide a way for an Administrator to clear / refresh the various run time caches; currently, refreshing them requires the application to be restarted.
Error messages are not displayed when a theme file that does not end in -theme.zip
is uploaded.
The Podcasting 2.0 XSD defines the podcast:funding
element; add this as a podcast option. (support same-site permalinks)
There are a few fields in the database whose intent has changed, but the name has not. Prior to v2 RC, fix any such names, and take this opportunity to change data and support types' fields to be capitalized, per F# standard naming conventions.
(This will mostly affect the RethinkDB implementation, but ensure that the SQLite mappings also remain correct.)
Issue #2 created a slug for web logs. Make the backup file parameter optional, and if it is missing, use the slug from the web log (which is specified by URL base in the CLI).
This was missed when developing the original SQLite implementation. All FKs need indexes, and ensure the compound indexes in the RethinkDB implementation are migrated to SQLite as appropriate.
htmx v1.8.0 has been released, and fixes a problem with boosted links-with-anchors, which is affecting the Bit Badger Solutions site.
Build and publish a Docker container with each release.
The "add category" form loads a bare component, which replaces the dashboard instead of showing the category page with the Add form populated. The "Add New Category" button on the dashboard should do the latter.
Add support for canonical domain configuration at the application level using BitBadger.AspNetCore.CanonicalDomains.
If a category has subcategories, and that category is deleted, the subcategories become inaccessible.
Modify the deletion process to check for subcategories, and if they exist, update them to the parent category of the category being deleted. Additionally, return a message that tells the user this happened, if any child categories are updated.
There are no queries where these are in a WHERE
clause; change them to TEXT fields in the post/page tables, and store them as JSON. This will save extra queries and JOIN
s.
...but it should!
(Work in conjunction with #9)
There is currently no loading indicator for htmx actions. Without it, the user does not know whether their click worked or not.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.