Skip to content

johanolofsson72/LiquidCore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LiquidCore

A .NET CMS / content framework I wrote between 2007 and 2012. It is a class library that sits between a web front end and a MySQL database and models a site's content as objects: sites, pages, modules, documents, users, groups, and roles. The newest source in the repo is version 4.1 (the assembly is stamped "LiquidCore 4", copyright 2012).

This is old code. It targets .NET Framework 2.0/3.5 and the Visual Studio 2008 solution format, so it will not build with modern dotnet on its own. Treat it as an archive of how I was building content systems back then, not as something you can dotnet run today.

What it does

The core is a small domain layer. You work with content as C# objects and call Save(), and the framework persists them to MySQL. From LiquidCoreTest/Program.cs, the usage looks like this:

LiquidCore.Site site = new LiquidCore.Site();
site.Title = "TestSite1";
site.Save();

LiquidCore.Sites sites = new LiquidCore.Sites();
foreach (LiquidCore.Site s in sites)
    Console.WriteLine(s.Title);

DomainObject (in LiquidCore.CoreLib) is the abstract base for persisted objects and tracks object state through a DomainObjectState enum. On top of that sit the content types and an authorization model.

The database schema (Database.sql) defines the full data model. The main content tables:

  • sit_sites, pag_pages, mod_modules, mde_moduledefinitions — sites, pages, and the modules placed on them
  • doc_documents — documents
  • obd_objectdata — generic object data storage
  • usr_users, grp_groups, rol_roles, ust_usertypes — identity
  • A set of authorized* join tables (apg_*, apr_*, amg_*, amr_*, asg_*, asr_*, adg_*, adr_*, atg_*, atr_*) wiring pages, modules, sites, documents, and tasks to groups and roles
  • lng_language, sta_status — lookup tables

There is also a module aggregation feature: when a module is created, a row goes into an aggregation table so the same module can be reused across several pages. ToDo.txt documents this and is in Swedish.

RSS output is handled by RssBuilder.cs / RssConfigurator.cs, which turn a DataSet/DataTable into an RSS 2.0 XML document. That part is adapted from Felipe Sabino's SimpleRSSBuilder on CodeProject (credited in the source).

Tech stack

  • C# on .NET Framework 2.0 / 3.5
  • MySQL via MySql.Data (an old 1.0.x version is checked in)
  • ICSharpCode.SharpZipLib for compression
  • Visual Studio 2008 (solution format version 10.00)
  • Data access goes through a separate iCDataHandler library (namespace iConsulting.iCDataHandler), which also includes a clsCrypto helper

Project structure

The repo holds a few overlapping snapshots, which is what happens when you commit a working folder years later.

  • LiquidCore1.0/ — the canonical, newest source (version 4.1, ~21k lines in LiquidCore.cs). The LiquidCore class library plus its SQL scripts.
  • LiquidCore/application/ — an older 2008-era snapshot of the same library, plus LiquidCoreTest, a console harness that exercises the API.
  • iCDataHandler/ — the data-access library and its .sln.
  • ConsoleApplication1/ — a near-empty console project (RXServer.cs plus an empty Main).
  • *.sql files — schema (Database.sql), stored-procedure scripts (sp_implementation*.sql), and fixes (sp_fix2.sql, rxdbfix.sql).

You will also find Backup/, _sgbak/, obj/, and bin/ folders, compiled DLLs/PDBs, and a couple of "conflicted copy" files from 2012. Those are build output and version-control leftovers, not part of the design.

Building

If you want to open it, you need the right vintage of tools:

  • Visual Studio 2008 (or a later VS with .NET Framework 2.0/3.5 targeting packs installed)
  • A MySQL server, with the schema from Database.sql and the sp_implementation*.sql scripts loaded
  • The connection details wired up the way iCDataHandler expects (the project references a .dll by a hardcoded absolute HintPath, so references will need fixing on any machine that is not the original)

I have not tried to port it to a current .NET. The HintPath references and the .NET 2.0 target mean a straight dotnet build will not work without rework.

Status

Archived. Last real development was around 2012; the 2024 "init" commit is just when I pushed the old working folder to GitHub. I am keeping it here as a record. It is not maintained and I would not start a new project on it.

Credits, as noted in the source: the CoreLib design borrows from Benzi K. Ahmed's Citrus framework, and the RSS builder is based on Felipe Sabino's SimpleRSSBuilder.

About

An archived .NET Framework 2.0/3.5 CMS/content framework (C#, MySQL) from 2007-2012: a domain-object layer for sites, pages, modules, documents, users, and roles, with RSS 2.0 output.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages