Looking at the many of out assumptions in our code, it is pretty clear that synchronization on your network is crusial.

To make it as easy as possible for administrators to manage their entire network, we want to have one specific plugin that allows for proper synchronization. Here what we need is the same time on all clocks of all the computers in the network.

This is particularly important when dealing with permissions since removing a permission needs to happen, no matter what. This could fail, though, if the clocks on various computers on your network are not properly synchronized.

Note ...

The permissions have been implemented for a little while now and have proven to be working very well even in a rather complicated environment where various new pages are only accessible to a small group of users.

When a user or a page are linked to permission page, the permission gets added recursively. That means that one page and all of its children, children of children, etc. recursively, all get added.

1) Gathering of User Rights

When gathering the user rights, the permissions plugin first determines the user login capability. The user does not need to currently be logged in. That ...

Introduction

The system has to include a way to work on images. Although users could do that on their computer with a tool such as MS-Paint, The Gimp, or Photoshop, most people do not take the time to do that. So an image editor online is more likely to be used for multiple reasons:

  • The image editor can be used to create a set of instructions to re-apply to any number of images; the Core system and themes can offer many such set of instructions by default;
  • Often the only few things to be applied are resizing, flips, and rotations and it takes a longer time to upload a full ...

I just added version 1.5.0 to SourceForge.net. This newer version includes a new function that one can use to convert a URI to lowercase. This is important to call tld() because the URI is going to be compared to top level domain names that are all in lowercase.

The new function is called tld_domain_to_lowercase(). It takes a string as input and returns a copy in lowercase. The function understands encoded URIs and UTF-8 as expected by the standard.

The project also includes a new test to make sure I get all the versions bumped each time I do a new update.

P.S. I published 1.5.1 today ...

The European Union decided that it would be best if websites were to tell you that they are using cookies. This is important for many people who want to protect their freedom.

Unfortunately, without cookies many things cannot be achieved in a website. However, you may have a clear policy that spells out what you do with cookies (i.e. cook them, eat them, market them...) and that way people can decide to use your website further or not.

This is done by displaying a very clear pop-up, most often at the bottom of the screen, which gives the user a way to go to the page describing your cookie ...

csspp 1.0.6 published

Got CSS Preprocessor version 1.0.6 published.

This fixes a crashing problem with the minus operator (the following: "field: -;" crashes version 1.0.5 and earlier.) But that was not the point, just a side effect of writing many more tests.

The new system supports the @return at-command which means user defined functions work.

I wrote the necessary tests to check the system defined external functions. They all get checked. The result is that a couple were moved to internal functions so they would work (unique_id() and percentage() which cannot otherwise be implemented) and I added ...

The CSS Preprocessor adds the capability to write complex expressions and functions to use in your CSS files.

One of the functions you can use is a system function named if. It is used to select one of two expressions as shown here:

if($color = white, 33px, 145px)

This says if $color represents the color white, then use 33px, otherwise use 145px.

This works great in all cases where the true and false expressions are both calculable. If one of the expressions is to generate an error, then the if() function cannot be used. In this case, you want to use the ?: operator instead.

In the ...

Firefox has an AddOn called Reader.

This extension allows viewers to remove all the "crap" from a website and only read the substantial content of a website. For example, the columns on the right, the header and footer, advertising will all be dropped by the AddOn.

The concept should be implemented in our service where we can click a link somewhere to see how such a aread (and certainly a Search Engine) would see the page: plain an simple title / text.

This should help themers dramatically improve on using the correct tags to define the user's content. Also at some point we ...

csspp 1.0.5 published

The first version of csspp which with 100% coverage tests is now out. The .tar.gz is not yet available because SourceForge.net still has a few problems... but you can grab the source from the GIT repository.

The library (and thus command line tool) include support for a very large number of internal functions, variables, user defined functions (without support for the @return yet), nested rules, nested attributes, C/C++ like expressions, arrays, maps, color operations, etc.

The expression support the following types:

  • Integer (numbers without a period)
  • Decimal number
  • ...

Training Matrix

Many companies want to have a way to train their staff. It can be difficult to track down who trained on what document.

The training matrix implementation gives an administrator a way to create training documents on their website (i.e. training pages). Then the training matrix plugin tracks which employee trained on which document on what date.

By default we assume that the page itself is the document, although the training matrix implementation allows for attachments to be created. In that case we can at least force the employee to download the document to make sure they have a copy ...

Snap! Websites
An Open Source CMS System in C++

Contact Us Directly