Hi Bill, thank you so much for your interest.  The CMS is roughly based on 
ExponentCMS however with a lot of modifications based on my experience of 
it and trying to design to eliminate its weaknesses.  You are right about 
documentation being key and I would love to welcome you to the project.  I 
am giving you immediate access to the Google Code project on account of 
your enthusiasm, feel free to fill out the wiki in terms of documentation.  
I will briefly give you an outline of the code and feel free to ask for 
information where it is not clear.

Firstly have you managed to successfully deploy the system? I have received 
some comments that people were not able to, but nobody followed up with any 
information regarding their environment so I want to iron that out in case 
I am the only one able to actually run it even though I have it up and 
running on http://www.gae-cms.com (via an AppSpot account) without problem 
so I'm not sure.  Someone alluded to the existence of .svn directories 
being the problem but I have that in my local environment with no problem.

The place to start as with any App Engine project is the app.yaml file.  
Simply put, it defines that compressor.py handle requests to CSS and JS 
files while router.py handles all other requests.

Next let's look at router.py.  The main idea is that it passes on whatever 
request it gets in the path on to the section.py module.  The section 
module will handle the request made and return a string (actually unicode) 
of whatever content was requested within a section which is then returned 
to the client.

Before we examine the section.py module, which is quite critical, let's 
look at the two directories at the root of the project i.e. framework and 
themes.  The themes directory is where any expert on ExponentCMS will 
recognise the influence.  Any subfolder within it is taken as a theme and 
can be applied to a Section.  Each theme can have multiple templates which 
are defined in the themes/_/templates directory.  A template is a Django 
template which should define all of the content within the <body></body> 
tags.  It has access to special variables that are defined in the section 
object that it has access to, and also can call certain functions defined 
in /framework/templatetags/filters.py.  The only actual requirement for a 
template is that it *must* call {{ main|safe }} which will define just the 
main content of the current section.  However it can define HTML tags and 
put Container modules within them which then can house other modules, or it 
can also directly define a module without a Container such as a Text module 
for the footer.  I use the term module here but actually the term we should 
use is Content as module is a Python reserved word.  It can define multiple 
types of Content that sit within the template.  An example of the footer 
content could be:

<div class="ft">
    {{ section|view:"GLOBAL, footer, Text, default"|safe }}
</div>

Here we are passing the view filter function the section object as well as 
saying that we want content of type GLOBAL with the identifier "footer" of 
type Text and view type default.  In short, it means that the footer Text 
Content will be global in scope meaning it is the same content across 
multiple sections, as opposed to LOCAL to a section.  This Text Content has 
default view (there can be multiple views and we can even define the same 
Content having different views applied to it).

Also another key is that a template can include CSS and JS files included 
in its theme directory.  For example:

{{ 
section|yuicss:"cssfonts/cssfonts.css,cssreset/cssreset.css,cssbase/cssbase.css"
 
}}
{{ section|themecss:"base.css" }}

{% if section.mobile_ua %}
    {{ section|themecss:"mobile.css" }}
    {{ section|viewport_content:"width=240, initial-scale=1.0" }}
{% else %}
    {{ section|themecss:"layout.css" }}
    {{ section|yuicss:"cssgrids/cssgrids.css" }}
{% endif %}

Here we are stating that we want to include CSS files from the YUI 
framework cssfonts.css, cssreset.css and cssbase.css.  YUI is the CSS 
framework I have gone with although it is in early stages of this project 
but I just found that it was full featured enough and written in a way that 
complements this CMS (we could always additionally define and include 
jquery for example as a local css file).  YUI however is used by most 
Content views and is the default CSS framwork.  Going back to our snippet, 
we can also notice from our local theme directories CSS files, we are 
including base.css.  Additionally we are saying if it is a mobile client, 
to include the local mobile.css file, otherwise the layout.css and 
cssgrids.css from YUI (essentially used to have multiple columns).

I think I will end my topic of themes here however I will mention that in 
addition to having themes stored locally, a user can actually create and 
manage dynamic themes (meaning those not stored on the local file system) 
following the same syntax I've described via the administration.

The next topic is to discuss Sections, "modules" (Content) and everything 
stored within the framework directory.  I will continue that topic in my 
next post as this is a lot to type without any feedback so please feel free.

Regards,
Imran

On Thursday, July 26, 2012 7:01:21 PM UTC-4, Bill Graham wrote:
>
> I downloaded the project, but I must say it is a challenge to follow. 
>  Most frameworks and CMSs fail to attract a sufficient following to 
> survive, not because of missing functionality, but because of lack of clear 
> and easy to follow documentation.
>
> If you would like, I could take a try at creating a start to 
> documentation, but I need to know a little more about the functionality 
> provided and the architecture.  Anything you could provide that describes 
> the features and structure of GAE-CMS would be a start and I could ask 
> questions as needed and then document what I understood.  You could then 
> review and let me know where changes are needed.
>
> If it is along the lines of an existing CMS, let me know which one and I 
> could build a documentation skeleton based on that CMS.
>
> Bill
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/OO9m7Of87DIJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to